@foxui/core 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/components/accordion/accordion-content.svelte +22 -0
- package/dist/components/accordion/accordion-content.svelte.d.ts +4 -0
- package/dist/components/accordion/accordion-item.svelte +35 -0
- package/dist/components/accordion/accordion-item.svelte.d.ts +9 -0
- package/dist/components/accordion/accordion-trigger.svelte +40 -0
- package/dist/components/accordion/accordion-trigger.svelte.d.ts +7 -0
- package/dist/components/accordion/index.d.ts +6 -0
- package/dist/components/accordion/index.js +6 -0
- package/dist/components/alert/alert-description.svelte +16 -0
- package/dist/components/alert/alert-description.svelte.d.ts +5 -0
- package/dist/components/alert/alert-title.svelte +25 -0
- package/dist/components/alert/alert-title.svelte.d.ts +8 -0
- package/dist/components/alert/alert.svelte +122 -0
- package/dist/components/alert/alert.svelte.d.ts +79 -0
- package/dist/components/alert/index.d.ts +5 -0
- package/dist/components/alert/index.js +5 -0
- package/dist/components/avatar/Avatar.svelte +73 -0
- package/dist/components/avatar/Avatar.svelte.d.ts +14 -0
- package/dist/components/avatar/AvatarGroup.svelte +43 -0
- package/dist/components/avatar/AvatarGroup.svelte.d.ts +16 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar/index.js +3 -0
- package/dist/components/badge/Badge.svelte +80 -0
- package/dist/components/badge/Badge.svelte.d.ts +100 -0
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/box/Box.svelte +23 -0
- package/dist/components/box/Box.svelte.d.ts +5 -0
- package/dist/components/box/index.d.ts +1 -0
- package/dist/components/box/index.js +1 -0
- package/dist/components/button/Button.svelte +103 -0
- package/dist/components/button/Button.svelte.d.ts +110 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/card/ImageCard.svelte +62 -0
- package/dist/components/card/ImageCard.svelte.d.ts +12 -0
- package/dist/components/card/index.d.ts +1 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/chat-bubble/ChatBubble.svelte +96 -0
- package/dist/components/chat-bubble/ChatBubble.svelte.d.ts +95 -0
- package/dist/components/chat-bubble/index.d.ts +1 -0
- package/dist/components/chat-bubble/index.js +1 -0
- package/dist/components/checkbox/checkbox.svelte +91 -0
- package/dist/components/checkbox/checkbox.svelte.d.ts +42 -0
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/copy-code-button/AddCopyCodeButtons.svelte +35 -0
- package/dist/components/copy-code-button/AddCopyCodeButtons.svelte.d.ts +6 -0
- package/dist/components/copy-code-button/CopyCodeButton.svelte +69 -0
- package/dist/components/copy-code-button/CopyCodeButton.svelte.d.ts +7 -0
- package/dist/components/copy-code-button/index.d.ts +2 -0
- package/dist/components/copy-code-button/index.js +2 -0
- package/dist/components/head/Head.svelte +49 -0
- package/dist/components/head/Head.svelte.d.ts +10 -0
- package/dist/components/head/index.d.ts +1 -0
- package/dist/components/head/index.js +1 -0
- package/dist/components/heading/Heading.svelte +24 -0
- package/dist/components/heading/Heading.svelte.d.ts +8 -0
- package/dist/components/heading/Subheading.svelte +24 -0
- package/dist/components/heading/Subheading.svelte.d.ts +8 -0
- package/dist/components/heading/index.d.ts +3 -0
- package/dist/components/heading/index.js +3 -0
- package/dist/components/image/Image.svelte +80 -0
- package/dist/components/image/Image.svelte.d.ts +12 -0
- package/dist/components/image/index.d.ts +2 -0
- package/dist/components/image/index.js +1 -0
- package/dist/components/image-container/ImageContainer.svelte +15 -0
- package/dist/components/image-container/ImageContainer.svelte.d.ts +4 -0
- package/dist/components/image-container/index.d.ts +1 -0
- package/dist/components/image-container/index.js +1 -0
- package/dist/components/index.d.ts +34 -0
- package/dist/components/index.js +34 -0
- package/dist/components/input/Input.svelte +60 -0
- package/dist/components/input/Input.svelte.d.ts +46 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.js +2 -0
- package/dist/components/label/Label.svelte +19 -0
- package/dist/components/label/Label.svelte.d.ts +4 -0
- package/dist/components/label/index.d.ts +1 -0
- package/dist/components/label/index.js +1 -0
- package/dist/components/modal/Modal.svelte +167 -0
- package/dist/components/modal/Modal.svelte.d.ts +33 -0
- package/dist/components/modal/index.d.ts +2 -0
- package/dist/components/modal/index.js +1 -0
- package/dist/components/navbar/Navbar.svelte +63 -0
- package/dist/components/navbar/Navbar.svelte.d.ts +8 -0
- package/dist/components/navbar/index.d.ts +1 -0
- package/dist/components/navbar/index.js +1 -0
- package/dist/components/number-input/NumberInput.svelte +201 -0
- package/dist/components/number-input/NumberInput.svelte.d.ts +98 -0
- package/dist/components/number-input/index.d.ts +2 -0
- package/dist/components/number-input/index.js +1 -0
- package/dist/components/paragraph/Paragraph.svelte +20 -0
- package/dist/components/paragraph/Paragraph.svelte.d.ts +5 -0
- package/dist/components/paragraph/index.d.ts +2 -0
- package/dist/components/paragraph/index.js +2 -0
- package/dist/components/popover/Popover.svelte +63 -0
- package/dist/components/popover/Popover.svelte.d.ts +14 -0
- package/dist/components/popover/index.d.ts +8 -0
- package/dist/components/popover/index.js +7 -0
- package/dist/components/popover/popover-content.svelte +28 -0
- package/dist/components/popover/popover-content.svelte.d.ts +7 -0
- package/dist/components/prose/Prose.svelte +107 -0
- package/dist/components/prose/Prose.svelte.d.ts +35 -0
- package/dist/components/prose/ProseCopyButton.svelte +12 -0
- package/dist/components/prose/ProseCopyButton.svelte.d.ts +8 -0
- package/dist/components/prose/index.d.ts +4 -0
- package/dist/components/prose/index.js +2 -0
- package/dist/components/scroll-area/BodyScrollArea.svelte +3 -0
- package/dist/components/scroll-area/BodyScrollArea.svelte.d.ts +19 -0
- package/dist/components/scroll-area/ScrollArea.svelte +71 -0
- package/dist/components/scroll-area/ScrollArea.svelte.d.ts +8 -0
- package/dist/components/scroll-area/index.d.ts +1 -0
- package/dist/components/scroll-area/index.js +1 -0
- package/dist/components/scroll-area/style.css +41 -0
- package/dist/components/select/Select.svelte +88 -0
- package/dist/components/select/Select.svelte.d.ts +13 -0
- package/dist/components/select/SelectChildren.svelte +29 -0
- package/dist/components/select/SelectChildren.svelte.d.ts +8 -0
- package/dist/components/select/SelectItem.svelte +31 -0
- package/dist/components/select/SelectItem.svelte.d.ts +4 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/index.js +3 -0
- package/dist/components/select-2/Select.svelte +46 -0
- package/dist/components/select-2/Select.svelte.d.ts +12 -0
- package/dist/components/select-2/index.d.ts +1 -0
- package/dist/components/select-2/index.js +1 -0
- package/dist/components/sidebar/Sidebar.svelte +69 -0
- package/dist/components/sidebar/Sidebar.svelte.d.ts +9 -0
- package/dist/components/sidebar/index.d.ts +1 -0
- package/dist/components/sidebar/index.js +1 -0
- package/dist/components/slider/Slider.svelte +65 -0
- package/dist/components/slider/Slider.svelte.d.ts +4 -0
- package/dist/components/slider/SliderNumber.svelte +40 -0
- package/dist/components/slider/SliderNumber.svelte.d.ts +4 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/index.js +3 -0
- package/dist/components/sonner/Toaster.svelte +73 -0
- package/dist/components/sonner/Toaster.svelte.d.ts +10 -0
- package/dist/components/sonner/index.d.ts +2 -0
- package/dist/components/sonner/index.js +2 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/switch/switch.svelte +27 -0
- package/dist/components/switch/switch.svelte.d.ts +4 -0
- package/dist/components/tabs/TabItem.svelte +56 -0
- package/dist/components/tabs/TabItem.svelte.d.ts +9 -0
- package/dist/components/tabs/Tabs.svelte +29 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +12 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/textarea/index.d.ts +19 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/textarea/textarea.svelte +57 -0
- package/dist/components/textarea/textarea.svelte.d.ts +47 -0
- package/dist/components/theme-toggle/ThemeToggle.svelte +105 -0
- package/dist/components/theme-toggle/ThemeToggle.svelte.d.ts +7 -0
- package/dist/components/theme-toggle/index.d.ts +2 -0
- package/dist/components/theme-toggle/index.js +2 -0
- package/dist/components/toggle/index.d.ts +3 -0
- package/dist/components/toggle/index.js +3 -0
- package/dist/components/toggle/toggle.svelte +49 -0
- package/dist/components/toggle/toggle.svelte.d.ts +40 -0
- package/dist/components/toggle-group/index.d.ts +3 -0
- package/dist/components/toggle-group/index.js +3 -0
- package/dist/components/toggle-group/toggle-group-item.svelte +30 -0
- package/dist/components/toggle-group/toggle-group-item.svelte.d.ts +6 -0
- package/dist/components/toggle-group/toggle-group.svelte +41 -0
- package/dist/components/toggle-group/toggle-group.svelte.d.ts +8 -0
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/components/tooltip/index.js +9 -0
- package/dist/components/tooltip/tooltip-content.svelte +21 -0
- package/dist/components/tooltip/tooltip-content.svelte.d.ts +4 -0
- package/dist/components/tooltip/tooltip.svelte +62 -0
- package/dist/components/tooltip/tooltip.svelte.d.ts +12 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/types.d.ts +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +5 -0
- package/package.json +82 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Toaster as SonnerToaster } from 'svelte-sonner';
|
|
3
|
+
|
|
4
|
+
const colorClasses = {
|
|
5
|
+
blue: 'bg-blue-200/50 dark:bg-blue-950/50 text-blue-600 [&_.title]:text-blue-800 [&_.description]:text-blue-700 dark:text-blue-500 border-blue-700/20 dark:border-blue-500/20 dark:[&_.title]:text-blue-300 dark:[&_.description]:text-blue-400',
|
|
6
|
+
red: 'bg-red-200/50 dark:bg-red-950/50 text-red-600 [&_.title]:text-red-800 [&_.description]:text-red-700 dark:text-red-500 border-red-700/20 dark:border-red-500/20 dark:[&_.title]:text-red-300 dark:[&_.description]:text-red-400',
|
|
7
|
+
yellow:
|
|
8
|
+
'bg-yellow-200/50 dark:bg-yellow-950/50 text-yellow-600 [&_.title]:text-yellow-800 [&_.description]:text-yellow-700 dark:text-yellow-500 border-yellow-700/20 dark:border-yellow-500/20 dark:[&_.title]:text-yellow-300 dark:[&_.description]:text-yellow-400',
|
|
9
|
+
green:
|
|
10
|
+
'bg-green-200/50 dark:bg-green-950/50 text-green-600 [&_.title]:text-green-800 [&_.description]:text-green-700 dark:text-green-500 border-green-700/20 dark:border-green-500/20 dark:[&_.title]:text-green-300 dark:[&_.description]:text-green-400',
|
|
11
|
+
indigo:
|
|
12
|
+
'bg-indigo-200/50 dark:bg-indigo-950/50 text-indigo-600 [&_.title]:text-indigo-800 [&_.description]:text-indigo-700 dark:text-indigo-500 border-indigo-700/20 dark:border-indigo-500/20 dark:[&_.title]:text-indigo-300 dark:[&_.description]:text-indigo-400',
|
|
13
|
+
purple:
|
|
14
|
+
'bg-purple-200/50 dark:bg-purple-950/50 text-purple-600 [&_.title]:text-purple-800 [&_.description]:text-purple-700 dark:text-purple-500 border-purple-700/20 dark:border-purple-500/20 dark:[&_.title]:text-purple-300 dark:[&_.description]:text-purple-400',
|
|
15
|
+
pink: 'bg-pink-200/50 dark:bg-pink-950/50 text-pink-600 [&_.title]:text-pink-800 [&_.description]:text-pink-700 dark:text-pink-500 border-pink-700/20 dark:border-pink-500/20 dark:[&_.title]:text-pink-300 dark:[&_.description]:text-pink-400',
|
|
16
|
+
orange:
|
|
17
|
+
'bg-orange-200/50 dark:bg-orange-950/50 text-orange-600 [&_.title]:text-orange-800 [&_.description]:text-orange-700 dark:text-orange-500 border-orange-700/20 dark:border-orange-500/20 dark:[&_.title]:text-orange-300 dark:[&_.description]:text-orange-400',
|
|
18
|
+
teal: 'bg-teal-200/50 dark:bg-teal-950/50 text-teal-600 [&_.title]:text-teal-800 [&_.description]:text-teal-700 dark:text-teal-500 border-teal-700/20 dark:border-teal-500/20 dark:[&_.title]:text-teal-300 dark:[&_.description]:text-teal-400',
|
|
19
|
+
emerald:
|
|
20
|
+
'bg-emerald-200/50 dark:bg-emerald-950/50 text-emerald-600 [&_.title]:text-emerald-800 [&_.description]:text-emerald-700 dark:text-emerald-500 border-emerald-700/20 dark:border-emerald-500/20 dark:[&_.title]:text-emerald-300 dark:[&_.description]:text-emerald-400',
|
|
21
|
+
lime: 'bg-lime-200/50 dark:bg-lime-950/50 text-lime-600 [&_.title]:text-lime-800 [&_.description]:text-lime-700 dark:text-lime-500 border-lime-700/20 dark:border-lime-500/20 dark:[&_.title]:text-lime-300 dark:[&_.description]:text-lime-400',
|
|
22
|
+
cyan: 'bg-cyan-200/50 dark:bg-cyan-950/50 text-cyan-600 [&_.title]:text-cyan-800 [&_.description]:text-cyan-700 dark:text-cyan-500 border-cyan-700/20 dark:border-cyan-500/20 dark:[&_.title]:text-cyan-300 dark:[&_.description]:text-cyan-400',
|
|
23
|
+
sky: 'bg-sky-200/50 dark:bg-sky-950/50 text-sky-600 [&_.title]:text-sky-800 [&_.description]:text-sky-700 dark:text-sky-500 border-sky-700/20 dark:border-sky-500/20 dark:[&_.title]:text-sky-300 dark:[&_.description]:text-sky-400',
|
|
24
|
+
rose: 'bg-rose-200/50 dark:bg-rose-950/50 text-rose-600 [&_.title]:text-rose-800 [&_.description]:text-rose-700 dark:text-rose-500 border-rose-700/20 dark:border-rose-500/20 dark:[&_.title]:text-rose-300 dark:[&_.description]:text-rose-400',
|
|
25
|
+
amber:
|
|
26
|
+
'bg-amber-200/50 dark:bg-amber-950/50 text-amber-600 [&_.title]:text-amber-800 [&_.description]:text-amber-700 dark:text-amber-500 border-amber-700/20 dark:border-amber-500/20 dark:[&_.title]:text-amber-300 dark:[&_.description]:text-amber-400',
|
|
27
|
+
violet:
|
|
28
|
+
'bg-violet-200/50 dark:bg-violet-950/50 text-violet-600 [&_.title]:text-violet-800 [&_.description]:text-violet-700 dark:text-violet-500 border-violet-700/20 dark:border-violet-500/20 dark:[&_.title]:text-violet-300 dark:[&_.description]:text-violet-400',
|
|
29
|
+
fuchsia:
|
|
30
|
+
'bg-fuchsia-200/50 dark:bg-fuchsia-950/50 text-fuchsia-600 [&_.title]:text-fuchsia-800 [&_.description]:text-fuchsia-700 dark:text-fuchsia-500 border-fuchsia-700/20 dark:border-fuchsia-500/20 dark:[&_.title]:text-fuchsia-300 dark:[&_.description]:text-fuchsia-400',
|
|
31
|
+
base: 'bg-base-50/80 border-base-200 dark:bg-base-900/50 dark:border-base-800 [&_.title]:text-base-900 dark:[&_.title]:text-base-50 [&_.description]:text-base-800 dark:[&_.description]:text-base-100',
|
|
32
|
+
accent:
|
|
33
|
+
'bg-accent-200/50 dark:bg-accent-950/50 text-accent-600 [&_.title]:text-accent-800 [&_.description]:text-accent-700 dark:text-accent-500 border-accent-700/20 dark:border-accent-500/20 dark:[&_.title]:text-accent-300 dark:[&_.description]:text-accent-400'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
type Colors = keyof typeof colorClasses;
|
|
37
|
+
|
|
38
|
+
const {
|
|
39
|
+
colors = {
|
|
40
|
+
default: 'accent',
|
|
41
|
+
success: 'green',
|
|
42
|
+
error: 'red',
|
|
43
|
+
info: 'blue'
|
|
44
|
+
}
|
|
45
|
+
}: {
|
|
46
|
+
colors?: {
|
|
47
|
+
default?: Colors;
|
|
48
|
+
success?: Colors;
|
|
49
|
+
error?: Colors;
|
|
50
|
+
info?: Colors;
|
|
51
|
+
};
|
|
52
|
+
} = $props();
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<SonnerToaster
|
|
56
|
+
toastOptions={{
|
|
57
|
+
unstyled: true,
|
|
58
|
+
classes: {
|
|
59
|
+
toast:
|
|
60
|
+
'group toast min-w-12 w-fit sm:min-w-64 backdrop-blur-lg border rounded-2xl p-4 flex items-center gap-2 sm:fixed sm:bottom-4 sm:right-0 mx-2',
|
|
61
|
+
title: 'text-base title',
|
|
62
|
+
description: 'text-xs mt-1 description',
|
|
63
|
+
|
|
64
|
+
default: colorClasses[colors?.default ?? 'accent'],
|
|
65
|
+
loading: colorClasses[colors?.default ?? 'accent'],
|
|
66
|
+
|
|
67
|
+
success: colorClasses[colors?.success ?? 'green'],
|
|
68
|
+
error: colorClasses[colors?.error ?? 'red'],
|
|
69
|
+
info: colorClasses[colors?.info ?? 'blue']
|
|
70
|
+
}
|
|
71
|
+
}}
|
|
72
|
+
position="bottom-right"
|
|
73
|
+
/>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const Toaster: import("svelte").Component<{
|
|
2
|
+
colors?: {
|
|
3
|
+
default?: "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose" | "base" | "accent";
|
|
4
|
+
success?: "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose" | "base" | "accent";
|
|
5
|
+
error?: "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose" | "base" | "accent";
|
|
6
|
+
info?: "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose" | "base" | "accent";
|
|
7
|
+
};
|
|
8
|
+
}, {}, "">;
|
|
9
|
+
type Toaster = ReturnType<typeof Toaster>;
|
|
10
|
+
export default Toaster;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Switch as SwitchPrimitive, type WithoutChildrenOrChild } from 'bits-ui';
|
|
3
|
+
import { cn } from '../../utils';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
ref = $bindable(null),
|
|
7
|
+
class: className,
|
|
8
|
+
checked = $bindable(false),
|
|
9
|
+
...restProps
|
|
10
|
+
}: WithoutChildrenOrChild<SwitchPrimitive.RootProps> = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<SwitchPrimitive.Root
|
|
14
|
+
bind:ref
|
|
15
|
+
bind:checked
|
|
16
|
+
class={cn(
|
|
17
|
+
'data-[state=checked]:bg-accent-500/30 dark:data-[state=checked]:bg-accent-500/20 data-[state=checked]:border-accent-500/30 data-[state=unchecked]:bg-base-500/20 data-[state=unchecked]:border-base-400/30 peer focus-visible:outline-base-900 dark:focus-visible:outline-base-100 inline-flex h-6 w-10.5 shrink-0 cursor-pointer items-center rounded-full border transition-all hover:scale-105 focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:scale-100',
|
|
18
|
+
className
|
|
19
|
+
)}
|
|
20
|
+
{...restProps}
|
|
21
|
+
>
|
|
22
|
+
<SwitchPrimitive.Thumb
|
|
23
|
+
class={cn(
|
|
24
|
+
'bg-base-500 data-[state=checked]:bg-accent-600 dark:bg-base-600 dark:data-[state=checked]:bg-accent-500 pointer-events-none block size-5 rounded-full shadow-lg ring-0 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 motion-safe:transition-transform'
|
|
25
|
+
)}
|
|
26
|
+
/>
|
|
27
|
+
</SwitchPrimitive.Root>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import { fade } from 'svelte/transition';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
href,
|
|
7
|
+
isActive,
|
|
8
|
+
onclick,
|
|
9
|
+
name
|
|
10
|
+
}: {
|
|
11
|
+
name: string;
|
|
12
|
+
href?: string;
|
|
13
|
+
isActive?: boolean;
|
|
14
|
+
onclick?: () => void;
|
|
15
|
+
} = $props();
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
{#snippet content()}
|
|
19
|
+
<div
|
|
20
|
+
class={cn(
|
|
21
|
+
'relative block cursor-pointer px-3 py-2.5 transition duration-200',
|
|
22
|
+
isActive
|
|
23
|
+
? 'text-accent-500 dark:text-accent-400'
|
|
24
|
+
: 'hover:text-accent-500 dark:hover:text-accent-400'
|
|
25
|
+
)}
|
|
26
|
+
>
|
|
27
|
+
{name}
|
|
28
|
+
{#if isActive}
|
|
29
|
+
<span
|
|
30
|
+
transition:fade
|
|
31
|
+
class="from-accent-500/0 via-accent-500/40 to-accent-500/0 dark:from-accent-400/0 dark:via-accent-400/40 dark:to-accent-400/0 absolute inset-x-1 bottom-px h-px bg-gradient-to-r"
|
|
32
|
+
></span>
|
|
33
|
+
{/if}
|
|
34
|
+
</div>
|
|
35
|
+
{/snippet}
|
|
36
|
+
|
|
37
|
+
<li>
|
|
38
|
+
{#if href}
|
|
39
|
+
<a {href}>
|
|
40
|
+
{@render content()}
|
|
41
|
+
</a>
|
|
42
|
+
{:else if onclick}
|
|
43
|
+
<button
|
|
44
|
+
type="button"
|
|
45
|
+
onclick={() => {
|
|
46
|
+
onclick?.();
|
|
47
|
+
}}
|
|
48
|
+
>
|
|
49
|
+
{@render content()}
|
|
50
|
+
</button>
|
|
51
|
+
{:else}
|
|
52
|
+
<div>
|
|
53
|
+
{@render content()}
|
|
54
|
+
</div>
|
|
55
|
+
{/if}
|
|
56
|
+
</li>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '../../utils';
|
|
3
|
+
import TabItem from './TabItem.svelte';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
items,
|
|
7
|
+
active,
|
|
8
|
+
class: className
|
|
9
|
+
}: {
|
|
10
|
+
items: {
|
|
11
|
+
name: string;
|
|
12
|
+
href?: string;
|
|
13
|
+
onclick?: () => void;
|
|
14
|
+
}[];
|
|
15
|
+
active: string;
|
|
16
|
+
class?: string;
|
|
17
|
+
} = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<ul class={cn('not-prose text-base-800 dark:text-base-200 flex flex-wrap px-3 text-sm font-medium', className)}>
|
|
21
|
+
{#each items as item}
|
|
22
|
+
<TabItem
|
|
23
|
+
href={item.href}
|
|
24
|
+
isActive={active == item.name}
|
|
25
|
+
name={item.name}
|
|
26
|
+
onclick={item.onclick}
|
|
27
|
+
/>
|
|
28
|
+
{/each}
|
|
29
|
+
</ul>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
items: {
|
|
3
|
+
name: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
onclick?: () => void;
|
|
6
|
+
}[];
|
|
7
|
+
active: string;
|
|
8
|
+
class?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const Tabs: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type Tabs = ReturnType<typeof Tabs>;
|
|
12
|
+
export default Tabs;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Root from './textarea.svelte';
|
|
2
|
+
type FormTextareaEvent<T extends Event = Event> = T & {
|
|
3
|
+
currentTarget: EventTarget & HTMLTextAreaElement;
|
|
4
|
+
};
|
|
5
|
+
type TextareaEvents = {
|
|
6
|
+
blur: FormTextareaEvent<FocusEvent>;
|
|
7
|
+
change: FormTextareaEvent<Event>;
|
|
8
|
+
click: FormTextareaEvent<MouseEvent>;
|
|
9
|
+
focus: FormTextareaEvent<FocusEvent>;
|
|
10
|
+
keydown: FormTextareaEvent<KeyboardEvent>;
|
|
11
|
+
keypress: FormTextareaEvent<KeyboardEvent>;
|
|
12
|
+
keyup: FormTextareaEvent<KeyboardEvent>;
|
|
13
|
+
mouseover: FormTextareaEvent<MouseEvent>;
|
|
14
|
+
mouseenter: FormTextareaEvent<MouseEvent>;
|
|
15
|
+
mouseleave: FormTextareaEvent<MouseEvent>;
|
|
16
|
+
paste: FormTextareaEvent<ClipboardEvent>;
|
|
17
|
+
input: FormTextareaEvent<InputEvent>;
|
|
18
|
+
};
|
|
19
|
+
export { Root as Textarea, type TextareaEvents, type FormTextareaEvent };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { WithElementRef, WithoutChildren } from 'bits-ui';
|
|
3
|
+
import { type VariantProps, tv } from 'tailwind-variants';
|
|
4
|
+
import { cn } from '../../utils';
|
|
5
|
+
|
|
6
|
+
import type { HTMLTextareaAttributes } from 'svelte/elements';
|
|
7
|
+
|
|
8
|
+
export const inputVariants = tv({
|
|
9
|
+
base: 'focus:ring-2 ring-1 resize-none ring-inset border-0 focus:transition-transform rounded-2xl text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed duration-300 active:duration-100',
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
primary:
|
|
13
|
+
'focus:ring-accent-500 dark:focus:ring-accent-500 ring-accent-500/30 dark:ring-accent-500/20 bg-accent-400/5 dark:bg-accent-600/5 text-accent-700 dark:text-accent-400 placeholder:text-accent-700/70 dark:placeholder:text-accent-400/70',
|
|
14
|
+
secondary:
|
|
15
|
+
'focus:ring-base-800 dark:focus:ring-base-200 bg-base-100/50 dark:bg-base-900/50 text-base-900 dark:text-base-50 ring-base-200 dark:ring-base-800'
|
|
16
|
+
},
|
|
17
|
+
sizeVariant: {
|
|
18
|
+
default: 'px-3 py-1.5 text-base min-h-[80px]',
|
|
19
|
+
sm: 'px-3 text-xs py-1.5 font-base min-h-[60px]',
|
|
20
|
+
lg: 'px-4 text-lg py-2 font-semibold min-h-[100px]'
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: {
|
|
24
|
+
variant: 'primary',
|
|
25
|
+
sizeVariant: 'default'
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export type InputVariant = VariantProps<typeof inputVariants>['variant'];
|
|
30
|
+
export type InputSize = VariantProps<typeof inputVariants>['sizeVariant'];
|
|
31
|
+
|
|
32
|
+
export type InputProps = WithElementRef<HTMLTextareaAttributes> & {
|
|
33
|
+
variant?: InputVariant;
|
|
34
|
+
sizeVariant?: InputSize;
|
|
35
|
+
};
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<script lang="ts">
|
|
39
|
+
let {
|
|
40
|
+
ref = $bindable(null),
|
|
41
|
+
value = $bindable(),
|
|
42
|
+
class: className,
|
|
43
|
+
variant = 'primary',
|
|
44
|
+
sizeVariant = 'default',
|
|
45
|
+
...restProps
|
|
46
|
+
}: WithoutChildren<WithElementRef<HTMLTextareaAttributes>> & {
|
|
47
|
+
variant?: InputVariant;
|
|
48
|
+
sizeVariant?: InputSize;
|
|
49
|
+
} = $props();
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
<textarea
|
|
53
|
+
bind:this={ref}
|
|
54
|
+
class={cn(inputVariants({ variant, sizeVariant }), className)}
|
|
55
|
+
bind:value
|
|
56
|
+
{...restProps}
|
|
57
|
+
></textarea>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { WithElementRef, WithoutChildren } from 'bits-ui';
|
|
2
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
3
|
+
import type { HTMLTextareaAttributes } from 'svelte/elements';
|
|
4
|
+
export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
5
|
+
variant: {
|
|
6
|
+
primary: string;
|
|
7
|
+
secondary: string;
|
|
8
|
+
};
|
|
9
|
+
sizeVariant: {
|
|
10
|
+
default: string;
|
|
11
|
+
sm: string;
|
|
12
|
+
lg: string;
|
|
13
|
+
};
|
|
14
|
+
}, undefined, "focus:ring-2 ring-1 resize-none ring-inset border-0 focus:transition-transform rounded-2xl text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed duration-300 active:duration-100", {
|
|
15
|
+
variant: {
|
|
16
|
+
primary: string;
|
|
17
|
+
secondary: string;
|
|
18
|
+
};
|
|
19
|
+
sizeVariant: {
|
|
20
|
+
default: string;
|
|
21
|
+
sm: string;
|
|
22
|
+
lg: string;
|
|
23
|
+
};
|
|
24
|
+
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
25
|
+
variant: {
|
|
26
|
+
primary: string;
|
|
27
|
+
secondary: string;
|
|
28
|
+
};
|
|
29
|
+
sizeVariant: {
|
|
30
|
+
default: string;
|
|
31
|
+
sm: string;
|
|
32
|
+
lg: string;
|
|
33
|
+
};
|
|
34
|
+
}, undefined, "focus:ring-2 ring-1 resize-none ring-inset border-0 focus:transition-transform rounded-2xl text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed duration-300 active:duration-100", unknown, unknown, undefined>>;
|
|
35
|
+
export type InputVariant = VariantProps<typeof inputVariants>['variant'];
|
|
36
|
+
export type InputSize = VariantProps<typeof inputVariants>['sizeVariant'];
|
|
37
|
+
export type InputProps = WithElementRef<HTMLTextareaAttributes> & {
|
|
38
|
+
variant?: InputVariant;
|
|
39
|
+
sizeVariant?: InputSize;
|
|
40
|
+
};
|
|
41
|
+
type $$ComponentProps = WithoutChildren<WithElementRef<HTMLTextareaAttributes>> & {
|
|
42
|
+
variant?: InputVariant;
|
|
43
|
+
sizeVariant?: InputSize;
|
|
44
|
+
};
|
|
45
|
+
declare const Textarea: import("svelte").Component<$$ComponentProps, {}, "ref" | "value">;
|
|
46
|
+
type Textarea = ReturnType<typeof Textarea>;
|
|
47
|
+
export default Textarea;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
export const theme = $state({
|
|
3
|
+
dark: false
|
|
4
|
+
});
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<script lang="ts">
|
|
8
|
+
import { onMount } from 'svelte';
|
|
9
|
+
import { Button, type ButtonProps } from '../button';
|
|
10
|
+
import { cn } from '../../utils';
|
|
11
|
+
|
|
12
|
+
onMount(() => {
|
|
13
|
+
// load from local storage
|
|
14
|
+
const savedDarkMode = localStorage.getItem('darkMode');
|
|
15
|
+
if (savedDarkMode) {
|
|
16
|
+
theme.dark = JSON.parse(savedDarkMode);
|
|
17
|
+
} else {
|
|
18
|
+
// prefers color scheme?
|
|
19
|
+
theme.dark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// remove local storage
|
|
23
|
+
// localStorage.removeItem("darkMode");
|
|
24
|
+
setTheme(theme.dark);
|
|
25
|
+
|
|
26
|
+
// recommended method for newer browsers: specify event-type as first argument
|
|
27
|
+
window
|
|
28
|
+
.matchMedia('(prefers-color-scheme: dark)')
|
|
29
|
+
.addEventListener('change', (e) => e.matches && toggleTheme());
|
|
30
|
+
|
|
31
|
+
window
|
|
32
|
+
.matchMedia('(prefers-color-scheme: light)')
|
|
33
|
+
.addEventListener('change', (e) => e.matches && toggleTheme());
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
function setTheme(dark: Boolean) {
|
|
37
|
+
var root = document.getElementsByTagName('html')[0];
|
|
38
|
+
|
|
39
|
+
if (dark) {
|
|
40
|
+
root.classList.add('dark');
|
|
41
|
+
} else {
|
|
42
|
+
root.classList.remove('dark');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function toggleTheme() {
|
|
47
|
+
theme.dark = !theme.dark;
|
|
48
|
+
// save to local storage
|
|
49
|
+
localStorage.setItem('darkMode', JSON.stringify(theme.dark));
|
|
50
|
+
setTheme(theme.dark);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
let { class: className, ref = $bindable(null), ...restProps }: ButtonProps = $props();
|
|
54
|
+
</script>
|
|
55
|
+
|
|
56
|
+
<Button
|
|
57
|
+
variant="link"
|
|
58
|
+
onclick={toggleTheme}
|
|
59
|
+
class={cn(
|
|
60
|
+
'theme-toggle focus-visible:outline-base-900 dark:focus-visible:outline-base-100 flex items-center justify-center rounded-2xl focus-visible:outline-2',
|
|
61
|
+
className
|
|
62
|
+
)}
|
|
63
|
+
bind:ref
|
|
64
|
+
{...restProps}
|
|
65
|
+
size="icon"
|
|
66
|
+
>
|
|
67
|
+
<svg
|
|
68
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
69
|
+
fill="none"
|
|
70
|
+
viewBox="0 0 24 24"
|
|
71
|
+
stroke-width="1.5"
|
|
72
|
+
stroke="currentColor"
|
|
73
|
+
class="size-5! block transition-colors duration-500 dark:hidden"
|
|
74
|
+
>
|
|
75
|
+
<path
|
|
76
|
+
stroke-linecap="round"
|
|
77
|
+
stroke-linejoin="round"
|
|
78
|
+
d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z"
|
|
79
|
+
/>
|
|
80
|
+
</svg>
|
|
81
|
+
<svg
|
|
82
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
83
|
+
fill="none"
|
|
84
|
+
viewBox="0 0 24 24"
|
|
85
|
+
stroke-width="1.5"
|
|
86
|
+
stroke="currentColor"
|
|
87
|
+
class="size-5! hidden transition-colors duration-500 dark:block dark:text-white"
|
|
88
|
+
>
|
|
89
|
+
<path
|
|
90
|
+
stroke-linecap="round"
|
|
91
|
+
stroke-linejoin="round"
|
|
92
|
+
d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"
|
|
93
|
+
/>
|
|
94
|
+
</svg>
|
|
95
|
+
|
|
96
|
+
<span class="sr-only">Toggle theme</span>
|
|
97
|
+
</Button>
|
|
98
|
+
|
|
99
|
+
<noscript>
|
|
100
|
+
<style>
|
|
101
|
+
.theme-toggle {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
</style>
|
|
105
|
+
</noscript>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
|
+
|
|
4
|
+
export const toggleVariants = tv({
|
|
5
|
+
base: 'text-base-900 dark:text-base-100 hover:bg-base-200/50 dark:hover:bg-base-800/50 dark:hover:text-base-50 hover:text-base-950 data-[state=on]:bg-accent-400/40 dark:data-[state=on]:bg-accent-500/15 dark:data-[state=on]:text-accent-300 data-[state=on]:text-accent-950 inline-flex items-center justify-center gap-2 rounded-2xl text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: 'bg-base-200/20 dark:bg-base-800/20'
|
|
9
|
+
},
|
|
10
|
+
size: {
|
|
11
|
+
default: 'h-10 min-w-10 px-3 [&_svg]:size-4',
|
|
12
|
+
sm: 'h-9 min-w-9 px-2.5 [&_svg]:size-3.5',
|
|
13
|
+
lg: 'h-11 min-w-11 px-4 [&_svg]:size-5',
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
variant: 'default',
|
|
18
|
+
size: 'default'
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export type ToggleVariant = VariantProps<typeof toggleVariants>['variant'];
|
|
23
|
+
export type ToggleSize = VariantProps<typeof toggleVariants>['size'];
|
|
24
|
+
export type ToggleVariants = VariantProps<typeof toggleVariants>;
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<script lang="ts">
|
|
28
|
+
import { Toggle as TogglePrimitive } from 'bits-ui';
|
|
29
|
+
import { cn } from '../../utils';
|
|
30
|
+
|
|
31
|
+
let {
|
|
32
|
+
ref = $bindable(null),
|
|
33
|
+
pressed = $bindable(false),
|
|
34
|
+
class: className,
|
|
35
|
+
size = 'default',
|
|
36
|
+
variant = 'default',
|
|
37
|
+
...restProps
|
|
38
|
+
}: TogglePrimitive.RootProps & {
|
|
39
|
+
variant?: ToggleVariant;
|
|
40
|
+
size?: ToggleSize;
|
|
41
|
+
} = $props();
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<TogglePrimitive.Root
|
|
45
|
+
bind:ref
|
|
46
|
+
bind:pressed
|
|
47
|
+
class={cn(toggleVariants({ variant, size }), className)}
|
|
48
|
+
{...restProps}
|
|
49
|
+
/>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
export declare const toggleVariants: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
variant: {
|
|
4
|
+
default: string;
|
|
5
|
+
};
|
|
6
|
+
size: {
|
|
7
|
+
default: string;
|
|
8
|
+
sm: string;
|
|
9
|
+
lg: string;
|
|
10
|
+
};
|
|
11
|
+
}, undefined, "text-base-900 dark:text-base-100 hover:bg-base-200/50 dark:hover:bg-base-800/50 dark:hover:text-base-50 hover:text-base-950 data-[state=on]:bg-accent-400/40 dark:data-[state=on]:bg-accent-500/15 dark:data-[state=on]:text-accent-300 data-[state=on]:text-accent-950 inline-flex items-center justify-center gap-2 rounded-2xl text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
12
|
+
variant: {
|
|
13
|
+
default: string;
|
|
14
|
+
};
|
|
15
|
+
size: {
|
|
16
|
+
default: string;
|
|
17
|
+
sm: string;
|
|
18
|
+
lg: string;
|
|
19
|
+
};
|
|
20
|
+
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
21
|
+
variant: {
|
|
22
|
+
default: string;
|
|
23
|
+
};
|
|
24
|
+
size: {
|
|
25
|
+
default: string;
|
|
26
|
+
sm: string;
|
|
27
|
+
lg: string;
|
|
28
|
+
};
|
|
29
|
+
}, undefined, "text-base-900 dark:text-base-100 hover:bg-base-200/50 dark:hover:bg-base-800/50 dark:hover:text-base-50 hover:text-base-950 data-[state=on]:bg-accent-400/40 dark:data-[state=on]:bg-accent-500/15 dark:data-[state=on]:text-accent-300 data-[state=on]:text-accent-950 inline-flex items-center justify-center gap-2 rounded-2xl text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", unknown, unknown, undefined>>;
|
|
30
|
+
export type ToggleVariant = VariantProps<typeof toggleVariants>['variant'];
|
|
31
|
+
export type ToggleSize = VariantProps<typeof toggleVariants>['size'];
|
|
32
|
+
export type ToggleVariants = VariantProps<typeof toggleVariants>;
|
|
33
|
+
import { Toggle as TogglePrimitive } from 'bits-ui';
|
|
34
|
+
type $$ComponentProps = TogglePrimitive.RootProps & {
|
|
35
|
+
variant?: ToggleVariant;
|
|
36
|
+
size?: ToggleSize;
|
|
37
|
+
};
|
|
38
|
+
declare const Toggle: import("svelte").Component<$$ComponentProps, {}, "ref" | "pressed">;
|
|
39
|
+
type Toggle = ReturnType<typeof Toggle>;
|
|
40
|
+
export default Toggle;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { ToggleGroup as ToggleGroupPrimitive } from "bits-ui";
|
|
3
|
+
import { getToggleGroupCtx } from "./toggle-group.svelte";
|
|
4
|
+
import { cn } from "../../utils";
|
|
5
|
+
import { type ToggleVariants, toggleVariants } from "../toggle/";
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
ref = $bindable(null),
|
|
9
|
+
value = $bindable(),
|
|
10
|
+
class: className,
|
|
11
|
+
size,
|
|
12
|
+
variant,
|
|
13
|
+
...restProps
|
|
14
|
+
}: ToggleGroupPrimitive.ItemProps & ToggleVariants = $props();
|
|
15
|
+
|
|
16
|
+
const ctx = getToggleGroupCtx();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<ToggleGroupPrimitive.Item
|
|
20
|
+
bind:ref
|
|
21
|
+
class={cn(
|
|
22
|
+
toggleVariants({
|
|
23
|
+
variant: ctx.variant || variant,
|
|
24
|
+
size: ctx.size || size,
|
|
25
|
+
}),
|
|
26
|
+
className
|
|
27
|
+
)}
|
|
28
|
+
{value}
|
|
29
|
+
{...restProps}
|
|
30
|
+
/>
|