add provider

This commit is contained in:
xion 2025-04-06 01:46:48 +08:00
parent 967c2f94f2
commit 82cc4dab87
3 changed files with 55 additions and 3 deletions

View File

@ -1,7 +1,8 @@
import { useRef } from 'react';
import { useEffect, useRef, useState } from 'react';
import Draggable from 'react-draggable';
import { clsxMerge } from '../clsx';
import { Resizable } from 're-resizable';
import { X } from 'lucide-react';
type DragModalProps = {
title?: React.ReactNode;
@ -63,3 +64,40 @@ export const DragModal = (props: DragModalProps) => {
</Draggable>
);
};
type DragModalTitleProps = {
title?: React.ReactNode;
className?: string;
onClose?: () => void;
children?: React.ReactNode;
};
export const DragModalTitle = (props: DragModalTitleProps) => {
return (
<div className={clsxMerge('flex flex-row items-center justify-between', props.className)}>
<div className='text-sm font-medium text-gray-700'>
{props.title}
{props.children}
</div>
<X className='w-4 h-4 text-gray-500 cursor-pointer' onClick={props.onClose} />
</div>
);
};
export const getComputedHeight = () => {
const height = window.innerHeight;
const width = window.innerWidth;
return { height, width };
};
export const useComputedHeight = () => {
const [computedHeight, setComputedHeight] = useState({
height: 0,
width: 0,
});
useEffect(() => {
const height = window.innerHeight;
const width = window.innerWidth;
setComputedHeight({ height, width });
}, []);
return computedHeight;
};

View File

@ -8,8 +8,9 @@ type TagsInputProps = {
placeholder?: string;
label?: any;
showLabel?: boolean;
options?: string[];
};
export const TagsInput = ({ value, onChange, placeholder = '', label = '', showLabel = false }: TagsInputProps) => {
export const TagsInput = ({ value, onChange, placeholder = '', label = '', showLabel = false, options = [] }: TagsInputProps) => {
const [tags, setTags] = useState<string[]>(value);
useEffect(() => {
setTags(value);
@ -21,7 +22,7 @@ export const TagsInput = ({ value, onChange, placeholder = '', label = '', showL
<Autocomplete
multiple
freeSolo
options={[]}
options={options || []}
value={tags}
onChange={(event, newValue) => {
// setTags(newValue as string[]);

13
src/theme/Provider.tsx Normal file
View File

@ -0,0 +1,13 @@
import { ToastContainer } from 'react-toastify';
type ToastProviderProps = {
children?: React.ReactNode;
};
export const ToastProvider = ({ children }: ToastProviderProps) => {
return (
<>
{children}
<ToastContainer />
</>
);
};