@kamod-ch/ui 0.2.1 → 1.1.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/README.md +103 -16
- package/dist/{AlertDialog-ALB541qy.d.ts → AlertDialog-GadhKjPC.d.ts} +1 -1
- package/dist/{DialogContent-CK1t4m4e.d.ts → DialogContent-cQHSRQdT.d.ts} +1 -1
- package/dist/{Drawer-B3pZMn5j.d.ts → Drawer-CdjXZxxK.d.ts} +1 -1
- package/dist/{Sheet-s0xRF22F.d.ts → Sheet-DZ-p-aHY.d.ts} +1 -1
- package/dist/SidebarProvider-Bx7-BdQn.d.ts +160 -0
- package/dist/chunk-24QD2FTA.js +722 -0
- package/dist/chunk-24QD2FTA.js.map +1 -0
- package/dist/{chunk-MJG6UKD4.js → chunk-262EK2XT.js} +9 -17
- package/dist/chunk-262EK2XT.js.map +1 -0
- package/dist/{chunk-7AJT2E2Y.js → chunk-3LIT5GWF.js} +2 -2
- package/dist/chunk-3LIT5GWF.js.map +1 -0
- package/dist/chunk-B47B6KK6.js +59 -0
- package/dist/chunk-B47B6KK6.js.map +1 -0
- package/dist/{chunk-JKXSX67K.js → chunk-EMUPVA2F.js} +4 -4
- package/dist/chunk-EMUPVA2F.js.map +1 -0
- package/dist/{chunk-26CRIZXP.js → chunk-HCTZJYHK.js} +19 -17
- package/dist/chunk-HCTZJYHK.js.map +1 -0
- package/dist/{chunk-4BJJOHZT.js → chunk-HHLQYMPT.js} +3 -3
- package/dist/{chunk-4BJJOHZT.js.map → chunk-HHLQYMPT.js.map} +1 -1
- package/dist/{chunk-YJGECAOZ.js → chunk-IQH3XSOI.js} +4 -4
- package/dist/{chunk-YJGECAOZ.js.map → chunk-IQH3XSOI.js.map} +1 -1
- package/dist/{chunk-LFJF3M6M.js → chunk-JSHUWI3C.js} +3 -3
- package/dist/{chunk-LFJF3M6M.js.map → chunk-JSHUWI3C.js.map} +1 -1
- package/dist/{chunk-2BQ54337.js → chunk-MJQ6R345.js} +2 -2
- package/dist/{chunk-2BQ54337.js.map → chunk-MJQ6R345.js.map} +1 -1
- package/dist/{chunk-PZS2D2QM.js → chunk-NILG56Z7.js} +3 -3
- package/dist/{chunk-PZS2D2QM.js.map → chunk-NILG56Z7.js.map} +1 -1
- package/dist/{chunk-2HZCH73K.js → chunk-STRBBF45.js} +5 -5
- package/dist/chunk-STRBBF45.js.map +1 -0
- package/dist/{chunk-YVALXJRN.js → chunk-TXKPDNRD.js} +7 -8
- package/dist/chunk-TXKPDNRD.js.map +1 -0
- package/dist/{chunk-YTJRKLUR.js → chunk-UARVH66B.js} +4 -4
- package/dist/{chunk-YTJRKLUR.js.map → chunk-UARVH66B.js.map} +1 -1
- package/dist/{chunk-ROKLAZHC.js → chunk-UIA74JVN.js} +3 -3
- package/dist/{chunk-ROKLAZHC.js.map → chunk-UIA74JVN.js.map} +1 -1
- package/dist/{chunk-BQP4UA44.js → chunk-X2YUFNK7.js} +3 -3
- package/dist/{chunk-BQP4UA44.js.map → chunk-X2YUFNK7.js.map} +1 -1
- package/dist/{chunk-3DNIMQX6.js → chunk-XNYAQZIB.js} +15 -9
- package/dist/chunk-XNYAQZIB.js.map +1 -0
- package/dist/components/alert-dialog/index.d.ts +3 -3
- package/dist/components/alert-dialog/index.js +3 -2
- package/dist/components/command/index.js +4 -3
- package/dist/components/context-menu/index.d.ts +1 -1
- package/dist/components/context-menu/index.js +2 -1
- package/dist/components/dialog/index.d.ts +3 -3
- package/dist/components/dialog/index.js +3 -2
- package/dist/components/drawer/index.d.ts +3 -3
- package/dist/components/drawer/index.js +4 -3
- package/dist/components/dropdown/index.js +1 -1
- package/dist/components/hover-card/index.js +1 -1
- package/dist/components/radio-group/index.js +2 -2
- package/dist/components/selectable-card/index.js +2 -2
- package/dist/components/sheet/index.d.ts +3 -3
- package/dist/components/sheet/index.js +4 -3
- package/dist/components/sidebar/index.d.ts +15 -10
- package/dist/components/sidebar/index.js +13 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +18 -17
- package/package.json +15 -12
- package/LICENSE.md +0 -9
- package/dist/SidebarProvider-IAihmyD7.d.ts +0 -46
- package/dist/chunk-26CRIZXP.js.map +0 -1
- package/dist/chunk-2HZCH73K.js.map +0 -1
- package/dist/chunk-3DNIMQX6.js.map +0 -1
- package/dist/chunk-7AJT2E2Y.js.map +0 -1
- package/dist/chunk-JKXSX67K.js.map +0 -1
- package/dist/chunk-MJG6UKD4.js.map +0 -1
- package/dist/chunk-R565SY7K.js +0 -69
- package/dist/chunk-R565SY7K.js.map +0 -1
- package/dist/chunk-YVALXJRN.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { A as Accordion, a as AccordionContent, b as AccordionItem, c as AccordionTrigger } from './Accordion-D1PiNspd.js';
|
|
2
2
|
export { Alert, AlertAction, AlertDescription, AlertTitle, alert } from './components/alert/index.js';
|
|
3
|
-
export { A as AlertDialog, a as AlertDialogAction, b as AlertDialogCancel, c as AlertDialogContent, d as AlertDialogDescription, e as AlertDialogFooter, f as AlertDialogHeader, g as AlertDialogMedia, h as AlertDialogTitle, i as AlertDialogTrigger } from './AlertDialog-
|
|
3
|
+
export { A as AlertDialog, a as AlertDialogAction, b as AlertDialogCancel, c as AlertDialogContent, d as AlertDialogDescription, e as AlertDialogFooter, f as AlertDialogHeader, g as AlertDialogMedia, h as AlertDialogTitle, i as AlertDialogTrigger } from './AlertDialog-GadhKjPC.js';
|
|
4
4
|
export { AspectRatio } from './components/aspect-ratio/index.js';
|
|
5
5
|
export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, avatarRoot } from './components/avatar/index.js';
|
|
6
6
|
export { Badge, BadgeVariants } from './components/badge/index.js';
|
|
@@ -22,9 +22,9 @@ export { D as DatePicker, f as formatDatePickerDisplay } from './DatePicker-AFAY
|
|
|
22
22
|
export { D as Dialog, a as DialogClose, b as DialogTrigger, a as SheetClose, b as SheetTrigger } from './Dialog-BOIteLfe.js';
|
|
23
23
|
export { D as DialogDescription, a as DialogTitle, D as SheetDescription, a as SheetTitle } from './DialogTitle-CerJD0oA.js';
|
|
24
24
|
export { D as DialogFooter, a as DialogHeader } from './DialogHeader-CYT7iUDq.js';
|
|
25
|
-
export { D as DialogContent, a as DialogContentPresentation } from './DialogContent-
|
|
25
|
+
export { D as DialogContent, a as DialogContentPresentation } from './DialogContent-cQHSRQdT.js';
|
|
26
26
|
export { D as Direction, a as DirectionProps, b as DirectionProvider, c as DirectionProviderProps, d as DirectionValue, u as useDirection } from './Direction-25ZOt0gW.js';
|
|
27
|
-
export { D as Drawer, a as DrawerClose, b as DrawerContent, c as DrawerDescription, d as DrawerDirection, e as DrawerFooter, f as DrawerHeader, g as DrawerTitle, h as DrawerTrigger } from './Drawer-
|
|
27
|
+
export { D as Drawer, a as DrawerClose, b as DrawerContent, c as DrawerDescription, d as DrawerDirection, e as DrawerFooter, f as DrawerHeader, g as DrawerTitle, h as DrawerTrigger } from './Drawer-CdjXZxxK.js';
|
|
28
28
|
export { D as Dropdown, a as DropdownCheckboxItem, b as DropdownContent, c as DropdownGroup, d as DropdownItem, e as DropdownLabel, f as DropdownPortal, g as DropdownRadioGroup, h as DropdownRadioItem, i as DropdownSeparator, j as DropdownShortcut, k as DropdownSub, l as DropdownSubContent, m as DropdownSubTrigger, n as DropdownTrigger } from './Dropdown-CVbWVKok.js';
|
|
29
29
|
export { Dropzone, DropzoneFilesList, DropzoneLoadingIndicator, DropzoneUploadIndicator } from './components/dropzone/index.js';
|
|
30
30
|
export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyRootVariants, EmptyTitle, emptyMedia, emptyRoot } from './components/empty/index.js';
|
|
@@ -50,8 +50,8 @@ export { S as ScrollArea, a as ScrollAreaCorner, b as ScrollBar } from './Scroll
|
|
|
50
50
|
export { S as Select, a as SelectContent, b as SelectGroup, c as SelectItem, d as SelectLabel, e as SelectSearch, f as SelectSeparator, g as SelectTrigger, h as SelectValue } from './Select-B_mNVh70.js';
|
|
51
51
|
export { SelectableCard, SelectableCardProps } from './components/selectable-card/index.js';
|
|
52
52
|
export { SeparatorVariants } from './components/separator/index.js';
|
|
53
|
-
export { S as Sheet, a as SheetContent, b as SheetFooter, c as SheetHeader } from './Sheet-
|
|
54
|
-
export { S as Sidebar, a as SidebarContent, b as SidebarFooter, c as
|
|
53
|
+
export { S as Sheet, a as SheetContent, b as SheetFooter, c as SheetHeader } from './Sheet-DZ-p-aHY.js';
|
|
54
|
+
export { S as Sidebar, a as SidebarContent, b as SidebarFooter, c as SidebarGroup, d as SidebarGroupAction, e as SidebarGroupContent, f as SidebarGroupLabel, g as SidebarHeader, h as SidebarInput, i as SidebarInset, j as SidebarMenu, k as SidebarMenuAction, l as SidebarMenuBadge, m as SidebarMenuButton, n as SidebarMenuItem, o as SidebarMenuSkeleton, p as SidebarMenuSub, q as SidebarMenuSubButton, r as SidebarMenuSubItem, s as SidebarProps, t as SidebarProvider, u as SidebarProviderProps, v as SidebarRail, w as SidebarSeparator, x as SidebarTrigger, y as useSidebar } from './SidebarProvider-Bx7-BdQn.js';
|
|
55
55
|
export { Skeleton, SkeletonVariants } from './components/skeleton/index.js';
|
|
56
56
|
export { S as Slider, a as SliderPrimitiveValue, b as SliderProps } from './Slider-BQLMBpYs.js';
|
|
57
57
|
export { S as Sonner, d as dismissSonner, s as sonner } from './sonner-store-Dfdxy8ba.js';
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
export { Toggle } from './chunk-V2MG5Y5F.js';
|
|
2
2
|
export { ToggleGroup, ToggleGroupItem } from './chunk-BYG2ULS3.js';
|
|
3
|
-
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-HTSAUMF5.js';
|
|
4
3
|
export { Typography, typography } from './chunk-ZVAW22GX.js';
|
|
5
4
|
export { Video } from './chunk-6FYSVMH7.js';
|
|
6
5
|
export { Sonner, dismissSonner, sonner } from './chunk-HAAXVB3R.js';
|
|
7
6
|
export { Switch } from './chunk-5KS2VSX2.js';
|
|
8
7
|
export { TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-2KY7P27I.js';
|
|
9
|
-
export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-
|
|
8
|
+
export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-HCTZJYHK.js';
|
|
10
9
|
export { TextareaVariants } from './chunk-Q5IUIA6B.js';
|
|
11
|
-
export { ThemeToggle } from './chunk-
|
|
10
|
+
export { ThemeToggle } from './chunk-262EK2XT.js';
|
|
12
11
|
export { Toaster, useToast } from './chunk-7MITRFPE.js';
|
|
13
12
|
export { ScrollArea, ScrollAreaCorner, ScrollBar } from './chunk-J4DMQV64.js';
|
|
14
13
|
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSearch, SelectSeparator, SelectTrigger, SelectValue } from './chunk-4V3WHQJE.js';
|
|
15
|
-
export { SelectableCard } from './chunk-
|
|
14
|
+
export { SelectableCard } from './chunk-XNYAQZIB.js';
|
|
16
15
|
export { SeparatorVariants } from './chunk-WAPRVVDQ.js';
|
|
17
|
-
|
|
18
|
-
export {
|
|
16
|
+
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar } from './chunk-24QD2FTA.js';
|
|
17
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-HTSAUMF5.js';
|
|
18
|
+
import './chunk-IQH3XSOI.js';
|
|
19
19
|
export { Skeleton, SkeletonVariants } from './chunk-YZLPO4B2.js';
|
|
20
20
|
export { Slider } from './chunk-MD6HHORY.js';
|
|
21
21
|
export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from './chunk-RHNI5UQO.js';
|
|
@@ -25,8 +25,8 @@ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, Pagi
|
|
|
25
25
|
export { PopoverClose, PopoverDescription, PopoverHeader, PopoverTitle, PopoverVariants } from './chunk-OCLVMKVC.js';
|
|
26
26
|
export { Progress } from './chunk-TFLSEEM4.js';
|
|
27
27
|
export { Prose } from './chunk-ZHAGKFSO.js';
|
|
28
|
-
export { RadioGroupItem } from './chunk-
|
|
29
|
-
export { RadioGroup } from './chunk-
|
|
28
|
+
export { RadioGroupItem } from './chunk-STRBBF45.js';
|
|
29
|
+
export { RadioGroup } from './chunk-TXKPDNRD.js';
|
|
30
30
|
export { Image } from './chunk-UXWUFNXY.js';
|
|
31
31
|
export { InputVariants } from './chunk-CMBERB5B.js';
|
|
32
32
|
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, filterOtpValue } from './chunk-QFDTG2ZJ.js';
|
|
@@ -35,21 +35,21 @@ export { Kbd, KbdGroup } from './chunk-ERBGZZ2U.js';
|
|
|
35
35
|
export { LabelVariants } from './chunk-RTIFG4XT.js';
|
|
36
36
|
export { LocaleSegmentGroup } from './chunk-YTHUHPE5.js';
|
|
37
37
|
export { Direction, DirectionProvider, useDirection } from './chunk-BDK7CDEI.js';
|
|
38
|
-
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from './chunk-
|
|
39
|
-
export { Sheet, SheetContent, SheetFooter, SheetHeader } from './chunk-
|
|
40
|
-
export { Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownLabel, DropdownPortal, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownShortcut, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger } from './chunk-
|
|
38
|
+
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from './chunk-UARVH66B.js';
|
|
39
|
+
export { Sheet, SheetContent, SheetFooter, SheetHeader } from './chunk-EMUPVA2F.js';
|
|
40
|
+
export { Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownLabel, DropdownPortal, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownShortcut, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger } from './chunk-3LIT5GWF.js';
|
|
41
41
|
export { Dropzone, DropzoneFilesList, DropzoneLoadingIndicator, DropzoneUploadIndicator } from './chunk-PFV7YIEP.js';
|
|
42
42
|
export { Spinner } from './chunk-NKKMM6CK.js';
|
|
43
43
|
export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, emptyMedia, emptyRoot } from './chunk-3KB54OYF.js';
|
|
44
|
-
export { HoverCard, HoverCardContent, HoverCardTrigger } from './chunk-
|
|
44
|
+
export { HoverCard, HoverCardContent, HoverCardTrigger } from './chunk-MJQ6R345.js';
|
|
45
45
|
export { Chart } from './chunk-GGTDJEE2.js';
|
|
46
46
|
export { Checkbox } from './chunk-LCMPFPBN.js';
|
|
47
47
|
export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-MKG3UAP6.js';
|
|
48
48
|
export { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCommand, ComboboxContent, ComboboxInlineInput, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSelect, ComboboxTrigger, ComboboxValue, useCombobox } from './chunk-PU5J5EPY.js';
|
|
49
|
-
export { CommandDialog, CommandShortcut } from './chunk-
|
|
50
|
-
import './chunk-
|
|
49
|
+
export { CommandDialog, CommandShortcut } from './chunk-NILG56Z7.js';
|
|
50
|
+
import './chunk-X2YUFNK7.js';
|
|
51
51
|
export { CommandEmpty as ComboboxEmpty, CommandGroup as ComboboxGroup, CommandSeparator as ComboboxSeparator, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator } from './chunk-CP55TVOV.js';
|
|
52
|
-
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from './chunk-
|
|
52
|
+
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from './chunk-UIA74JVN.js';
|
|
53
53
|
export { DataTable } from './chunk-X4HPHMYW.js';
|
|
54
54
|
export { Table } from './chunk-CLEC2RMU.js';
|
|
55
55
|
export { DatePicker, formatDatePickerDisplay } from './chunk-7IOAIEIA.js';
|
|
@@ -71,9 +71,10 @@ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader,
|
|
|
71
71
|
export { Carousel, CarouselAutoplayPause, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from './chunk-FIOKWIJP.js';
|
|
72
72
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './chunk-UEGIKBX6.js';
|
|
73
73
|
export { Alert, AlertAction, AlertDescription, AlertTitle, alert } from './chunk-UNWEH4Z6.js';
|
|
74
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogTitle, AlertDialogTrigger } from './chunk-
|
|
74
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogTitle, AlertDialogTrigger } from './chunk-JSHUWI3C.js';
|
|
75
75
|
export { DialogFooter, DialogHeader } from './chunk-5Q4RBIMZ.js';
|
|
76
|
-
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogTitle, DialogTrigger, DialogClose as SheetClose, DialogDescription as SheetDescription, DialogTitle as SheetTitle, DialogTrigger as SheetTrigger } from './chunk-
|
|
76
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogTitle, DialogTrigger, DialogClose as SheetClose, DialogDescription as SheetDescription, DialogTitle as SheetTitle, DialogTrigger as SheetTrigger } from './chunk-HHLQYMPT.js';
|
|
77
|
+
import './chunk-B47B6KK6.js';
|
|
77
78
|
export { Button } from './chunk-5FBD2NTR.js';
|
|
78
79
|
export { createControllableSignal } from './chunk-C7WEQOUA.js';
|
|
79
80
|
export { MODAL_DIALOG_PANEL_OUTSIDE_SLOP_PX, createDismissableLayer, createIdFactory, createRovingFocus, getFocusableElements, isPointerWithinModalDialogPanelSlop, trapFocus } from './chunk-PPYJQNE5.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kamod-ch/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Lightweight Preact + Tailwind UI components: composable primitives you can customize, extend, and ship without a heavy runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"components",
|
|
@@ -316,6 +316,17 @@
|
|
|
316
316
|
"publishConfig": {
|
|
317
317
|
"access": "public"
|
|
318
318
|
},
|
|
319
|
+
"scripts": {
|
|
320
|
+
"prepublishOnly": "node ../../scripts/sync-package-readme.mjs",
|
|
321
|
+
"build": "tsup && cp src/theme.css dist/theme.css",
|
|
322
|
+
"test": "vitest run",
|
|
323
|
+
"test:coverage": "vitest run --coverage",
|
|
324
|
+
"test:watch": "vitest",
|
|
325
|
+
"typecheck": "tsc --noEmit",
|
|
326
|
+
"lint": "oxlint .",
|
|
327
|
+
"publint": "publint",
|
|
328
|
+
"attw": "attw --pack . --profile esm-only --exclude-entrypoints ./theme.css"
|
|
329
|
+
},
|
|
319
330
|
"dependencies": {
|
|
320
331
|
"clsx": "^2.1.1",
|
|
321
332
|
"embla-carousel": "^8.6.0",
|
|
@@ -325,6 +336,7 @@
|
|
|
325
336
|
},
|
|
326
337
|
"devDependencies": {
|
|
327
338
|
"@arethetypeswrong/cli": "^0.18.3",
|
|
339
|
+
"@kamod-ch/themes": "workspace:*",
|
|
328
340
|
"@preact/signals": "^2.9.1",
|
|
329
341
|
"@testing-library/jest-dom": "^6.9.1",
|
|
330
342
|
"@testing-library/preact": "^3.2.4",
|
|
@@ -336,6 +348,7 @@
|
|
|
336
348
|
"vitest": "^4.1.8"
|
|
337
349
|
},
|
|
338
350
|
"peerDependencies": {
|
|
351
|
+
"@kamod-ch/themes": "^0.2.1",
|
|
339
352
|
"@preact/signals": "^2.9.1",
|
|
340
353
|
"preact": "^10.29.2"
|
|
341
354
|
},
|
|
@@ -346,15 +359,5 @@
|
|
|
346
359
|
},
|
|
347
360
|
"engines": {
|
|
348
361
|
"node": ">=20"
|
|
349
|
-
},
|
|
350
|
-
"scripts": {
|
|
351
|
-
"build": "tsup && cp src/theme.css dist/theme.css",
|
|
352
|
-
"test": "vitest run",
|
|
353
|
-
"test:coverage": "vitest run --coverage",
|
|
354
|
-
"test:watch": "vitest",
|
|
355
|
-
"typecheck": "tsc --noEmit",
|
|
356
|
-
"lint": "oxlint .",
|
|
357
|
-
"publint": "publint",
|
|
358
|
-
"attw": "attw --pack . --profile esm-only --exclude-entrypoints ./theme.css"
|
|
359
362
|
}
|
|
360
|
-
}
|
|
363
|
+
}
|
package/LICENSE.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 kamod.ch
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
-
|
|
7
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
-
|
|
9
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import * as preact from 'preact';
|
|
2
|
-
import { JSX, ComponentChildren } from 'preact';
|
|
3
|
-
import { signal } from '@preact/signals';
|
|
4
|
-
|
|
5
|
-
type SidebarInsetProps = JSX.HTMLAttributes<HTMLDivElement> & {
|
|
6
|
-
children?: ComponentChildren;
|
|
7
|
-
};
|
|
8
|
-
declare const SidebarInset: ({ children, ...rest }: SidebarInsetProps) => JSX.Element;
|
|
9
|
-
|
|
10
|
-
type SidebarFooterProps = JSX.HTMLAttributes<HTMLDivElement> & {
|
|
11
|
-
children?: ComponentChildren;
|
|
12
|
-
};
|
|
13
|
-
declare const SidebarFooter: ({ children, ...rest }: SidebarFooterProps) => JSX.Element;
|
|
14
|
-
|
|
15
|
-
type SidebarContentProps = JSX.HTMLAttributes<HTMLDivElement> & {
|
|
16
|
-
children?: ComponentChildren;
|
|
17
|
-
};
|
|
18
|
-
declare const SidebarContent: ({ children, ...rest }: SidebarContentProps) => JSX.Element;
|
|
19
|
-
|
|
20
|
-
type SidebarHeaderProps = JSX.HTMLAttributes<HTMLDivElement> & {
|
|
21
|
-
children?: ComponentChildren;
|
|
22
|
-
};
|
|
23
|
-
declare const SidebarHeader: ({ children, ...rest }: SidebarHeaderProps) => JSX.Element;
|
|
24
|
-
|
|
25
|
-
type SidebarTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
26
|
-
children?: ComponentChildren;
|
|
27
|
-
};
|
|
28
|
-
declare const SidebarTrigger: ({ children, onClick, ...rest }: SidebarTriggerProps) => JSX.Element;
|
|
29
|
-
|
|
30
|
-
type SidebarProps = JSX.HTMLAttributes<HTMLElement> & {
|
|
31
|
-
children?: ComponentChildren;
|
|
32
|
-
};
|
|
33
|
-
declare const Sidebar: ({ children, ...rest }: SidebarProps) => JSX.Element;
|
|
34
|
-
|
|
35
|
-
type SidebarContextValue = {
|
|
36
|
-
open: ReturnType<typeof signal<boolean>>;
|
|
37
|
-
setOpen: (next: boolean) => void;
|
|
38
|
-
};
|
|
39
|
-
declare const useSidebar: () => SidebarContextValue;
|
|
40
|
-
type SidebarProviderProps = {
|
|
41
|
-
defaultOpen?: boolean;
|
|
42
|
-
children?: ComponentChildren;
|
|
43
|
-
};
|
|
44
|
-
declare const SidebarProvider: ({ defaultOpen, children }: SidebarProviderProps) => preact.JSX.Element;
|
|
45
|
-
|
|
46
|
-
export { Sidebar as S, SidebarContent as a, SidebarFooter as b, SidebarHeader as c, SidebarInset as d, SidebarProvider as e, SidebarTrigger as f, type SidebarProviderProps as g, type SidebarProps as h, type SidebarTriggerProps as i, type SidebarHeaderProps as j, type SidebarContentProps as k, type SidebarFooterProps as l, type SidebarInsetProps as m, useSidebar as u };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/tabs/Tabs.tsx","../src/components/tabs/TabsContent.tsx","../src/components/tabs/TabsList.tsx","../src/components/tabs/TabsTrigger.tsx","../src/components/tabs/index.ts"],"names":["jsx"],"mappings":"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","file":"chunk-26CRIZXP.js","sourcesContent":["import { type Signal, useSignal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\n\ntype TabsContextValue = {\n value: Signal<string>;\n setValue: (next: string) => void;\n orientation: \"horizontal\" | \"vertical\";\n baseId: string;\n triggerId: (tabValue: string) => string;\n contentId: (tabValue: string) => string;\n};\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nexport const useTabs = () => {\n const context = useContext(TabsContext);\n if (!context) throw new Error(\"Tabs subcomponents must be used within Tabs\");\n return context;\n};\n\nexport type TabsProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultValue: string;\n syncKey?: string;\n orientation?: \"horizontal\" | \"vertical\";\n children?: ComponentChildren;\n};\n\ntype SyncSubscriber = (nextValue: string) => void;\n\ntype SyncRegistryEntry = {\n value: string;\n subscribers: Set<SyncSubscriber>;\n instancesCount: number;\n};\n\nconst syncRegistry = new Map<string, SyncRegistryEntry>();\n\nconst getOrCreateSyncEntry = (key: string, initialValue: string): SyncRegistryEntry => {\n const existing = syncRegistry.get(key);\n if (existing) return existing;\n\n const created: SyncRegistryEntry = {\n value: initialValue,\n subscribers: new Set<SyncSubscriber>(),\n instancesCount: 0,\n };\n syncRegistry.set(key, created);\n return created;\n};\n\nexport const Tabs = ({\n defaultValue,\n syncKey,\n orientation = \"horizontal\",\n class: className,\n children,\n ...rest\n}: TabsProps) => {\n const value = useSignal(defaultValue);\n const baseId = useMemo(() => createIdFactory(\"tabs\")(), []);\n const triggerId = useMemo(() => (tabValue: string) => `${baseId}-trigger-${tabValue}`, [baseId]);\n const contentId = useMemo(() => (tabValue: string) => `${baseId}-content-${tabValue}`, [baseId]);\n const setValue = (next: string) => {\n if (!syncKey) {\n value.value = next;\n return;\n }\n\n const syncEntry = getOrCreateSyncEntry(syncKey, value.value);\n if (syncEntry.value === next) return;\n\n syncEntry.value = next;\n value.value = next;\n syncEntry.subscribers.forEach((subscriber) => subscriber(next));\n };\n\n useEffect(() => {\n if (!syncKey) return;\n\n const syncEntry = getOrCreateSyncEntry(syncKey, defaultValue);\n syncEntry.instancesCount += 1;\n value.value = syncEntry.value;\n\n const subscriber: SyncSubscriber = (nextValue) => {\n if (value.value === nextValue) return;\n value.value = nextValue;\n };\n syncEntry.subscribers.add(subscriber);\n\n return () => {\n syncEntry.subscribers.delete(subscriber);\n syncEntry.instancesCount -= 1;\n if (syncEntry.instancesCount <= 0) {\n syncRegistry.delete(syncKey);\n }\n };\n }, [defaultValue, syncKey, value]);\n\n return (\n <TabsContext.Provider value={{ value, setValue, orientation, baseId, triggerId, contentId }}>\n <div\n class={cn(\"group/tabs\", className)}\n data-slot=\"tabs\"\n data-orientation={orientation}\n {...rest}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useTabs } from \"./Tabs\";\n\nexport type TabsContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n value: string;\n forceMount?: boolean;\n children?: ComponentChildren;\n};\n\nexport const TabsContent = ({\n value,\n forceMount = false,\n class: className,\n children,\n id: idProp,\n ...rest\n}: TabsContentProps) => {\n const tabs = useTabs();\n const active = tabs.value.value === value;\n const id = idProp ?? tabs.contentId(value);\n const labelledBy = tabs.triggerId(value);\n\n if (!active && !forceMount) return null;\n\n return (\n <div\n role=\"tabpanel\"\n id={id}\n aria-labelledby={labelledBy}\n aria-hidden={!active || undefined}\n data-slot=\"tabs-content\"\n data-state={active ? \"active\" : \"inactive\"}\n class={cn(\n \"mt-2 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className,\n )}\n tabIndex={0}\n hidden={!active && forceMount ? true : undefined}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { useTabs } from \"./Tabs\";\n\nconst tabsList = tv({\n base: [\n \"group/tabs-list inline-flex w-fit items-stretch justify-center gap-0.5 rounded-md bg-muted/80 p-0.5 text-muted-foreground\",\n \"ring-1 ring-inset ring-black/[0.04] dark:ring-white/[0.06]\",\n \"group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=horizontal]/tabs:rounded-full\",\n \"group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col group-data-[orientation=vertical]/tabs:rounded-xl group-data-[orientation=vertical]/tabs:gap-0.5 group-data-[orientation=vertical]/tabs:p-1\",\n ],\n variants: {\n variant: {\n default: \"\",\n line: \"rounded-none gap-1 bg-transparent p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\nexport type TabsListProps = JSX.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof tabsList> & {\n children?: ComponentChildren;\n };\n\nexport const TabsList = ({ variant, class: className, children, ...rest }: TabsListProps) => {\n const tabs = useTabs();\n\n return (\n <div\n role=\"tablist\"\n aria-orientation={tabs.orientation}\n class={cn(tabsList({ variant }), className)}\n data-slot=\"tabs-list\"\n data-variant={variant ?? \"default\"}\n data-orientation={tabs.orientation}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useTabs } from \"./Tabs\";\n\nexport type TabsTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n value: string;\n children?: ComponentChildren;\n};\n\nexport const TabsTrigger = ({\n value,\n class: className,\n children,\n onClick,\n onKeyDown,\n id: idProp,\n ...rest\n}: TabsTriggerProps) => {\n const tabs = useTabs();\n const active = tabs.value.value === value;\n const id = idProp ?? tabs.triggerId(value);\n const controlsId = tabs.contentId(value);\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-controls={controlsId}\n class={cn(\n \"relative inline-flex h-full min-h-0 flex-1 items-center justify-center gap-1.5 border border-transparent px-3 py-1 text-sm whitespace-nowrap text-muted-foreground transition-[color,box-shadow,background-color,font-weight] duration-200 ease-out\",\n \"group-data-[orientation=horizontal]/tabs:rounded-full group-data-[orientation=vertical]/tabs:rounded-md\",\n \"group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start\",\n \"hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:pointer-events-none disabled:opacity-50 dark:hover:text-foreground\",\n \"group-data-[variant=default]/tabs-list:data-[state=inactive]:font-medium\",\n \"group-data-[variant=default]/tabs-list:data-[state=active]:bg-background group-data-[variant=default]/tabs-list:data-[state=active]:font-semibold group-data-[variant=default]/tabs-list:data-[state=active]:text-foreground\",\n \"group-data-[variant=default]/tabs-list:data-[state=active]:shadow-[0_1px_2px_-0.5px_rgb(0_0_0/0.06),0_1px_3px_-1px_rgb(0_0_0/0.08)]\",\n \"dark:group-data-[variant=default]/tabs-list:data-[state=active]:shadow-[0_1px_2px_-0.5px_rgb(0_0_0/0.35)] dark:group-data-[variant=default]/tabs-list:data-[state=active]:ring-1 dark:group-data-[variant=default]/tabs-list:data-[state=active]:ring-white/[0.08]\",\n \"group-data-[variant=line]/tabs-list:rounded-none group-data-[variant=line]/tabs-list:px-0 group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:group-data-[variant=line]/tabs-list:data-[state=active]:ring-0\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:text-foreground\",\n \"dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent\",\n \"dark:group-data-[variant=default]/tabs-list:data-[state=active]:bg-input/30 dark:group-data-[variant=default]/tabs-list:data-[state=active]:text-foreground\",\n \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity\",\n \"group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5\",\n \"group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5\",\n \"group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\",\n className,\n )}\n data-slot=\"tabs-trigger\"\n data-state={active ? \"active\" : \"inactive\"}\n data-active={active ? \"true\" : undefined}\n data-value={value}\n data-orientation={tabs.orientation}\n aria-selected={active}\n tabIndex={active ? 0 : -1}\n onClick={(event) => {\n tabs.setValue(value);\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (![\"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key))\n return;\n\n const tabList = event.currentTarget.closest('[role=\"tablist\"]');\n if (!tabList) return;\n\n const triggers = Array.from(\n tabList.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]:not([disabled])'),\n );\n const currentIndex = triggers.indexOf(event.currentTarget);\n if (currentIndex === -1 || triggers.length === 0) return;\n\n const horizontal = tabs.orientation === \"horizontal\";\n let nextIndex = currentIndex;\n\n if (event.key === \"Home\") nextIndex = 0;\n if (event.key === \"End\") nextIndex = triggers.length - 1;\n if (event.key === \"ArrowRight\" && horizontal)\n nextIndex = (currentIndex + 1) % triggers.length;\n if (event.key === \"ArrowLeft\" && horizontal)\n nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n if (event.key === \"ArrowDown\" && !horizontal)\n nextIndex = (currentIndex + 1) % triggers.length;\n if (event.key === \"ArrowUp\" && !horizontal)\n nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n\n if (nextIndex === currentIndex) return;\n event.preventDefault();\n const next = triggers[nextIndex];\n next.focus();\n const nextValue = next.getAttribute(\"data-value\");\n if (nextValue) tabs.setValue(nextValue);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n};\n","import { Tabs } from \"./Tabs\";\nimport { TabsContent } from \"./TabsContent\";\nimport { TabsList } from \"./TabsList\";\nimport { TabsTrigger } from \"./TabsTrigger\";\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n\nexport default {\n Root: Tabs,\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/radio-group/RadioGroupItem.tsx","../src/components/radio-group/index.ts"],"names":["selected"],"mappings":"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","file":"chunk-2HZCH73K.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { useRadioGroup } from \"./RadioGroup\";\n\nconst itemRoot = tv({\n base: [\n \"flex cursor-pointer items-center gap-3 text-sm leading-none font-medium text-foreground\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n ],\n variants: {\n size: {\n default: \"\",\n sm: \"gap-2 text-xs\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\nconst indicatorBox = tv({\n base: \"relative inline-flex shrink-0 items-center justify-center\",\n variants: {\n size: {\n default: \"size-4\",\n sm: \"size-3.5\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\nconst dotSize = tv({\n base: \"pointer-events-none absolute left-1/2 top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary opacity-0 transition-[opacity,transform] peer-checked:scale-100 peer-checked:opacity-100 scale-75\",\n variants: {\n size: {\n default: \"size-2.5\",\n sm: \"size-2\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\ntype ItemVariants = VariantProps<typeof itemRoot>;\n\nexport type RadioGroupItemProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"name\" | \"class\" | \"size\"\n> &\n ItemVariants & {\n value: string;\n children?: ComponentChildren;\n class?: string;\n };\n\nexport const RadioGroupItem = ({\n value,\n children,\n size,\n class: className,\n onChange,\n disabled,\n ...rest\n}: RadioGroupItemProps) => {\n const group = useRadioGroup();\n const selected = group.controlledValue !== undefined ? group.controlledValue : group.value.value;\n const checked = selected === value;\n\n return (\n <label\n data-slot=\"radio-group-item\"\n data-state={checked ? \"checked\" : \"unchecked\"}\n data-size={size ?? \"default\"}\n class={cn(itemRoot({ size, class: className }))}\n >\n <span class={indicatorBox({ size })}>\n <input\n type=\"radio\"\n data-slot=\"radio-group-input\"\n class=\"peer absolute inset-0 z-20 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n name={group.name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={(event) => {\n group.setValue(value);\n onChange?.(event);\n const el = event.currentTarget as HTMLInputElement;\n const selected =\n group.controlledValue !== undefined ? group.controlledValue : group.value.value;\n el.checked = selected === value;\n }}\n {...rest}\n />\n <span\n aria-hidden\n class={cn(\n \"pointer-events-none absolute inset-0 z-0 flex items-center justify-center rounded-full border border-input bg-background shadow-xs transition-[color,box-shadow]\",\n \"peer-focus-visible:outline-none peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/50\",\n \"peer-disabled:opacity-50\",\n \"peer-checked:border-primary\",\n \"peer-aria-invalid:border-destructive peer-aria-invalid:ring-destructive/20\",\n )}\n />\n <span aria-hidden class={dotSize({ size })} />\n </span>\n {children ? <span data-slot=\"radio-group-label\">{children}</span> : null}\n </label>\n );\n};\n","import { RadioGroup } from \"./RadioGroup\";\nimport { RadioGroupItem } from \"./RadioGroupItem\";\n\nexport { RadioGroup, RadioGroupItem };\n\nexport default {\n Root: RadioGroup,\n Item: RadioGroupItem,\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/selectable-card/SelectableCard.tsx"],"names":[],"mappings":";;;;AAKA,SAAS,+BAAA,GAAkC;AACzC,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,2BAAA;AAAA,MACV,KAAA,EAAM,gPAAA;AAAA,MACN,aAAA,EAAW,IAAA;AAAA,MAEX,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAM,gDAAA,EAAiD;AAAA;AAAA,GAC/D;AAEJ;AAYO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2B;AACzB,EAAA,MAAM,QAAQ,aAAA,EAAc;AAC5B,EAAA,MAAM,WAAW,KAAA,CAAM,eAAA,KAAoB,SAAY,KAAA,CAAM,eAAA,GAAkB,MAAM,KAAA,CAAM,KAAA;AAC3F,EAAA,MAAM,UAAU,QAAA,KAAa,KAAA;AAE7B,EAAA,uBACE,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,YAAA,EAAY,UAAU,SAAA,GAAY,WAAA;AAAA,MAClC,KAAA,EAAO,EAAA;AAAA,QACL,4FAAA;AAAA,QACA,+DAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,OAAA;AAAA,YACL,WAAA,EAAU,uBAAA;AAAA,YACV,KAAA,EAAM,sFAAA;AAAA,YACN,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,KAAA;AAAA,YACA,OAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AACpB,cAAA,QAAA,GAAW,KAAK,CAAA;AAChB,cAAA,MAAM,KAAK,KAAA,CAAM,aAAA;AACjB,cAAA,MAAM,eACJ,KAAA,CAAM,eAAA,KAAoB,SAAY,KAAA,CAAM,eAAA,GAAkB,MAAM,KAAA,CAAM,KAAA;AAC5E,cAAA,EAAA,CAAG,UAAU,YAAA,KAAiB,KAAA;AAAA,YAChC,CAAA;AAAA,YACC,GAAG;AAAA;AAAA,SACN;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAA;AAAA,cACL,uFAAA;AAAA,cACA,UACI,kFAAA,GACA;AAAA,aACN;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,OAAA,uBACE,MAAA,EAAA,EAAK,KAAA,EAAM,gDACV,QAAA,kBAAA,GAAA,CAAC,+BAAA,EAAA,EAAgC,GACnC,CAAA,GACE,IAAA;AAAA,8BACJ,GAAA,CAAC,SAAI,KAAA,EAAO,EAAA,CAAG,WAAW,OAAA,IAAW,MAAM,GAAI,QAAA,EAAS;AAAA;AAAA;AAAA;AAC1D;AAAA;AAAA,GACF;AAEJ","file":"chunk-3DNIMQX6.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useRadioGroup } from \"../radio-group/RadioGroup\";\n\n/** Filled radio appearance: black ring, white field, black dot (reference: selection cards). */\nfunction SelectableCardSelectedIndicator() {\n return (\n <span\n data-slot=\"selectable-card-indicator\"\n class=\"pointer-events-none flex size-[22px] shrink-0 items-center justify-center rounded-full border-[2.5px] border-black bg-white shadow-[0_1px_4px_rgba(0,0,0,0.12)] dark:border-white dark:bg-neutral-950 dark:shadow-[0_1px_5px_rgba(0,0,0,0.45)]\"\n aria-hidden\n >\n <span class=\"size-[9px] rounded-full bg-black dark:bg-white\" />\n </span>\n );\n}\n\nexport type SelectableCardProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"name\" | \"class\" | \"children\"\n> & {\n value: string;\n children?: ComponentChildren;\n class?: string;\n};\n\n/** Card-style radio option for use inside `RadioGroup`. */\nexport const SelectableCard = ({\n value,\n children,\n class: className,\n onChange,\n disabled,\n ...rest\n}: SelectableCardProps) => {\n const group = useRadioGroup();\n const selected = group.controlledValue !== undefined ? group.controlledValue : group.value.value;\n const checked = selected === value;\n\n return (\n <label\n data-slot=\"selectable-card\"\n data-state={checked ? \"checked\" : \"unchecked\"}\n class={cn(\n \"block cursor-pointer rounded-lg outline-none focus-within:outline-none focus-within:ring-0\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n className,\n )}\n >\n <input\n type=\"radio\"\n data-slot=\"selectable-card-input\"\n class=\"peer sr-only outline-none focus:outline-none focus-visible:outline-none focus:ring-0\"\n name={group.name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={(event) => {\n group.setValue(value);\n onChange?.(event);\n const el = event.currentTarget as HTMLInputElement;\n const nextSelected =\n group.controlledValue !== undefined ? group.controlledValue : group.value.value;\n el.checked = nextSelected === value;\n }}\n {...rest}\n />\n <div\n class={cn(\n \"relative rounded-lg border-2 p-3 text-left transition-[border-color,background-color]\",\n checked\n ? \"border-neutral-300 bg-neutral-100 dark:border-neutral-600 dark:bg-neutral-800/70\"\n : \"border-border/35 bg-background hover:border-border/60\",\n )}\n >\n {checked ? (\n <span class=\"pointer-events-none absolute end-2.5 top-2.5\">\n <SelectableCardSelectedIndicator />\n </span>\n ) : null}\n <div class={cn(\"min-w-0\", checked && \"pe-9\")}>{children}</div>\n </div>\n </label>\n );\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dropdown/Dropdown.tsx","../src/components/dropdown/DropdownCheckboxItem.tsx","../src/components/dropdown/DropdownContent.tsx","../src/components/dropdown/DropdownGroup.tsx","../src/components/dropdown/DropdownItem.tsx","../src/components/dropdown/DropdownLabel.tsx","../src/components/dropdown/DropdownPortal.tsx","../src/components/dropdown/dropdown-radio-context.tsx","../src/components/dropdown/DropdownRadioGroup.tsx","../src/components/dropdown/DropdownRadioItem.tsx","../src/components/dropdown/DropdownSeparator.tsx","../src/components/dropdown/DropdownShortcut.tsx","../src/components/dropdown/dropdown-sub-context.tsx","../src/components/dropdown/DropdownSub.tsx","../src/components/dropdown/DropdownSubContent.tsx","../src/components/dropdown/DropdownSubTrigger.tsx","../src/components/dropdown/DropdownTrigger.tsx","../src/components/dropdown/index.ts"],"names":["useMemo","signal","useEffect","jsx","tv","createContext","useContext","useRef","jsxs"],"mappings":"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","file":"chunk-7AJT2E2Y.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { tv } from \"tailwind-variants\";\nimport { createDismissableLayer, createIdFactory } from \"../../lib/interactive\";\n\nexport type DropdownContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n setOpen: (next: boolean) => void;\n triggerId: string;\n contentId: string;\n rootRef: { current: HTMLDivElement | null };\n triggerRef: { current: HTMLElement | null };\n contentRef: { current: HTMLDivElement | null };\n};\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\nconst nextDropdownId = createIdFactory(\"kamod-dropdown\");\n\nexport const useDropdown = () => {\n const context = useContext(DropdownContext);\n if (!context) throw new Error(\"Dropdown subcomponents must be used within Dropdown\");\n return context;\n};\n\nexport const dropdownRoot = tv({\n base: \"relative inline-flex\",\n});\n\nexport type DropdownProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n children?: ComponentChildren;\n};\n\nexport const Dropdown = ({\n defaultOpen = false,\n class: className,\n children,\n ...rest\n}: DropdownProps) => {\n const open = useMemo(() => signal(defaultOpen), []);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const instanceId = useMemo(() => nextDropdownId(), []);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => open.value,\n onDismiss: () => {\n open.value = false;\n },\n });\n return () => layer.dispose();\n }, []);\n\n return (\n <DropdownContext.Provider\n value={{\n open,\n setOpen: (next) => {\n open.value = next;\n },\n triggerId: `${instanceId}-trigger`,\n contentId: `${instanceId}-content`,\n rootRef,\n triggerRef,\n contentRef,\n }}\n >\n <div\n ref={rootRef}\n class={dropdownRoot({ class: className as string | undefined })}\n data-slot=\"dropdown\"\n data-state={open.value ? \"open\" : \"closed\"}\n {...rest}\n >\n {children}\n </div>\n </DropdownContext.Provider>\n );\n};\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useMemo } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropdownCheckboxItemProps = Omit<\n JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\"\n> & {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n children?: ComponentChildren;\n};\n\nexport const DropdownCheckboxItem = ({\n checked: checkedProp,\n defaultChecked = false,\n onCheckedChange,\n class: className,\n children,\n onClick,\n ...rest\n}: DropdownCheckboxItemProps) => {\n const internal = useMemo(() => signal(defaultChecked), []);\n const isControlled = checkedProp !== undefined;\n\n useEffect(() => {\n if (checkedProp !== undefined) {\n internal.value = checkedProp;\n }\n }, [checkedProp, internal]);\n\n const checked = isControlled ? Boolean(checkedProp) : internal.value;\n\n return (\n <button\n type=\"button\"\n role=\"menuitemcheckbox\"\n data-slot=\"dropdown-checkbox-item\"\n aria-checked={checked}\n class={cn(\n \"relative flex w-full cursor-default select-none items-center gap-1 rounded-sm py-0.5 ps-7 pe-1.5 text-sm outline-none transition-colors duration-100\",\n \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !checked;\n if (!isControlled) {\n internal.value = next;\n }\n onCheckedChange?.(next);\n }}\n {...rest}\n >\n <span\n class=\"pointer-events-none absolute start-1.5 flex size-3 items-center justify-center\"\n aria-hidden\n >\n {checked ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-3.5\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n ) : null}\n </span>\n {children}\n </button>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { useDropdown } from \"./Dropdown\";\n\nconst positionBySide = {\n top: \"bottom-full\",\n bottom: \"top-full\",\n left: \"right-full\",\n right: \"left-full\",\n} as const;\n\nconst alignByAxis = {\n vertical: {\n start: \"left-0\",\n center: \"left-1/2 -translate-x-1/2\",\n end: \"right-0\",\n },\n horizontal: {\n start: \"top-0\",\n center: \"top-1/2 -translate-y-1/2\",\n end: \"bottom-0\",\n },\n} as const;\n\nexport const dropdownContent = tv({\n base: [\n // overflow-x visible so DropdownSubContent (absolute start-full) is not clipped; keep vertical scroll for long menus\n \"bg-white text-popover-foreground z-50 flex min-w-[7rem] flex-col gap-0 overflow-x-visible overflow-y-auto rounded-lg p-px shadow-md outline-none ring-1 ring-foreground/10 dark:bg-popover\",\n \"dark:ring-foreground/15\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-100\",\n \"data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-100\",\n \"absolute isolate max-h-96\",\n ],\n variants: {\n side: {\n bottom: \"slide-in-from-top-2\",\n top: \"slide-in-from-bottom-2\",\n right: \"slide-in-from-left-2\",\n left: \"slide-in-from-right-2\",\n },\n },\n defaultVariants: {\n side: \"bottom\",\n },\n});\n\nexport type DropdownContentProps = JSX.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof dropdownContent> & {\n forceMount?: boolean;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n children?: ComponentChildren;\n };\n\nexport const DropdownContent = ({\n forceMount = false,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n class: className,\n style,\n children,\n onKeyDown,\n ...rest\n}: DropdownContentProps) => {\n const dropdown = useDropdown();\n if (!dropdown.open.value && !forceMount) return null;\n\n const isVertical = side === \"top\" || side === \"bottom\";\n const alignClass = isVertical ? alignByAxis.vertical[align] : alignByAxis.horizontal[align];\n const inlineStyle = typeof style === \"object\" && style !== null ? style : undefined;\n const offsetStyle: JSX.CSSProperties =\n side === \"bottom\"\n ? { marginTop: `${sideOffset}px` }\n : side === \"top\"\n ? { marginBottom: `${sideOffset}px` }\n : side === \"right\"\n ? { marginLeft: `${sideOffset}px` }\n : { marginRight: `${sideOffset}px` };\n\n return (\n <div\n ref={(node) => {\n dropdown.contentRef.current = node;\n }}\n id={dropdown.contentId}\n role=\"menu\"\n tabIndex={-1}\n aria-labelledby={dropdown.triggerId}\n data-slot=\"dropdown-content\"\n data-side={side}\n data-align={align}\n data-state={dropdown.open.value ? \"open\" : \"closed\"}\n class={`${positionBySide[side]} ${alignClass} ${dropdownContent({ side, class: className as string | undefined })}`}\n style={inlineStyle ? { ...offsetStyle, ...inlineStyle } : offsetStyle}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n dropdown.setOpen(false);\n dropdown.triggerRef.current?.focus();\n return;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropdownGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropdownGroup = ({ class: className, children, ...rest }: DropdownGroupProps) => (\n <div role=\"group\" data-slot=\"dropdown-group\" class={cn(\"p-1\", className)} {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { useDropdown } from \"./Dropdown\";\n\nexport const dropdownItem = tv({\n base: [\n \"relative flex w-full cursor-default select-none items-center gap-1 rounded-sm px-1 py-0.5 text-sm outline-none transition-colors duration-100 ease-out\",\n \"text-popover-foreground hover:bg-accent hover:text-accent-foreground\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5\",\n ],\n variants: {\n variant: {\n default: \"\",\n destructive:\n \"text-destructive hover:bg-destructive/10 hover:text-destructive focus:bg-destructive/10 focus:text-destructive dark:focus:bg-destructive/20 [&_svg]:text-destructive\",\n },\n inset: {\n true: \"ps-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inset: false,\n },\n});\n\nexport type DropdownItemProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof dropdownItem> & {\n children?: ComponentChildren;\n };\n\nexport const DropdownItem = ({\n inset = false,\n variant = \"default\",\n class: className,\n children,\n onClick,\n ...rest\n}: DropdownItemProps) => {\n const dropdown = useDropdown();\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n data-slot=\"dropdown-item\"\n data-inset={inset ? \"true\" : undefined}\n data-variant={variant}\n class={dropdownItem({ inset, variant, class: className as string | undefined })}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n dropdown.setOpen(false);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropdownLabelProps = JSX.HTMLAttributes<HTMLDivElement> & {\n inset?: boolean;\n children?: ComponentChildren;\n};\n\nexport const DropdownLabel = ({\n inset = false,\n class: className,\n children,\n ...rest\n}: DropdownLabelProps) => (\n <div\n data-slot=\"dropdown-label\"\n data-inset={inset ? \"true\" : undefined}\n class={cn(\n \"text-muted-foreground px-1 py-0.5 text-xs font-semibold\",\n inset && \"ps-6\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\n\n/** No-op wrapper for API parity with shadcn; content stays in the tree (no portal). */\nexport type DropdownPortalProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropdownPortal = ({ children, ...rest }: DropdownPortalProps) => (\n <div data-slot=\"dropdown-portal\" {...rest}>\n {children}\n </div>\n);\n","import { signal } from \"@preact/signals\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\n\nexport type DropdownRadioContextValue = {\n value: ReturnType<typeof signal<string>>;\n setValue: (next: string) => void;\n};\n\nconst DropdownRadioContext = createContext<DropdownRadioContextValue | null>(null);\n\nexport const DropdownRadioProvider = DropdownRadioContext.Provider;\n\nexport const useDropdownRadio = () => {\n const ctx = useContext(DropdownRadioContext);\n if (!ctx) throw new Error(\"DropdownRadioItem must be used within DropdownRadioGroup\");\n return ctx;\n};\n\nexport const useDropdownRadioRoot = (\n defaultValue: string,\n valueProp: string | undefined,\n onValueChange: ((v: string) => void) | undefined,\n): DropdownRadioContextValue => {\n const internal = useMemo(() => signal(valueProp ?? defaultValue), []);\n const controlledRef = useRef(false);\n controlledRef.current = valueProp !== undefined;\n\n useEffect(() => {\n if (valueProp !== undefined) {\n internal.value = valueProp;\n }\n }, [valueProp, internal]);\n\n const onValueChangeRef = useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n return useMemo(\n (): DropdownRadioContextValue => ({\n value: internal,\n setValue: (next: string) => {\n if (!controlledRef.current) {\n internal.value = next;\n }\n onValueChangeRef.current?.(next);\n },\n }),\n [internal],\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { DropdownRadioProvider, useDropdownRadioRoot } from \"./dropdown-radio-context\";\n\nexport type DropdownRadioGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n children?: ComponentChildren;\n};\n\nexport const DropdownRadioGroup = ({\n value,\n defaultValue = \"\",\n onValueChange,\n children,\n ...rest\n}: DropdownRadioGroupProps) => {\n const ctx = useDropdownRadioRoot(defaultValue, value, onValueChange);\n\n return (\n <DropdownRadioProvider value={ctx}>\n <div role=\"group\" data-slot=\"dropdown-radio-group\" {...rest}>\n {children}\n </div>\n </DropdownRadioProvider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useDropdown } from \"./Dropdown\";\nimport { useDropdownRadio } from \"./dropdown-radio-context\";\n\nexport type DropdownRadioItemProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n value: string;\n children?: ComponentChildren;\n};\n\nexport const DropdownRadioItem = ({\n value,\n class: className,\n children,\n onClick,\n ...rest\n}: DropdownRadioItemProps) => {\n const dropdown = useDropdown();\n const radio = useDropdownRadio();\n const selected = radio.value.value === value;\n\n return (\n <button\n type=\"button\"\n role=\"menuitemradio\"\n data-slot=\"dropdown-radio-item\"\n aria-checked={selected}\n class={cn(\n \"relative flex w-full cursor-default select-none items-center gap-1 rounded-sm py-0.5 ps-7 pe-1.5 text-sm outline-none transition-colors duration-100\",\n \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n radio.setValue(value);\n dropdown.setOpen(false);\n }}\n {...rest}\n >\n <span\n class=\"pointer-events-none absolute start-1.5 flex size-3 items-center justify-center\"\n aria-hidden\n >\n {selected ? <span class=\"size-1.5 rounded-full bg-current\" /> : null}\n </span>\n {children}\n </button>\n );\n};\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropdownSeparatorProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const DropdownSeparator = ({ class: className, ...rest }: DropdownSeparatorProps) => (\n <div\n role=\"separator\"\n data-slot=\"dropdown-separator\"\n class={cn(\"bg-border -mx-px my-px h-px\", className)}\n {...rest}\n />\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropdownShortcutProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropdownShortcut = ({\n class: className,\n children,\n ...rest\n}: DropdownShortcutProps) => (\n <span\n data-slot=\"dropdown-shortcut\"\n class={cn(\"text-muted-foreground ms-auto text-xs tracking-widest opacity-70\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useMemo } from \"preact/hooks\";\n\nexport type DropdownSubContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n setOpen: (next: boolean) => void;\n};\n\nconst DropdownSubContext = createContext<DropdownSubContextValue | null>(null);\n\nexport const DropdownSubProvider = ({\n children,\n value,\n}: {\n children: ComponentChildren;\n value: DropdownSubContextValue;\n}) => <DropdownSubContext.Provider value={value}>{children}</DropdownSubContext.Provider>;\n\nexport const useDropdownSub = () => {\n const ctx = useContext(DropdownSubContext);\n if (!ctx) throw new Error(\"Dropdown subcomponents must be used within DropdownSub\");\n return ctx;\n};\n\nexport const useMemoDropdownSub = (): DropdownSubContextValue =>\n useMemo(() => {\n const open = signal(false);\n return {\n open,\n setOpen: (next) => {\n open.value = next;\n },\n };\n }, []);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownSubProvider, useMemoDropdownSub } from \"./dropdown-sub-context\";\n\nexport type DropdownSubProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropdownSub = ({ class: className, children, ...rest }: DropdownSubProps) => {\n const ctx = useMemoDropdownSub();\n\n return (\n <DropdownSubProvider value={ctx}>\n <div\n data-slot=\"dropdown-sub\"\n class={cn(\"relative\", className)}\n onPointerLeave={() => {\n ctx.setOpen(false);\n }}\n {...rest}\n >\n {children}\n </div>\n </DropdownSubProvider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useDropdownSub } from \"./dropdown-sub-context\";\n\nexport type DropdownSubContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n /** `inline-end` (default): opens toward inline end (right in LTR). `inline-start`: toward inline start (left in LTR) — use near the viewport edge to avoid horizontal page scroll. */\n side?: \"inline-end\" | \"inline-start\";\n};\n\nexport const DropdownSubContent = ({\n class: className,\n children,\n onPointerEnter,\n side = \"inline-end\",\n ...rest\n}: DropdownSubContentProps) => {\n const sub = useDropdownSub();\n\n if (!sub.open.value) return null;\n\n const sidePosition =\n side === \"inline-start\"\n ? \"end-full me-0.5 rtl:ms-0.5 rtl:me-0\"\n : \"start-full ms-0.5 rtl:me-0.5 rtl:ms-0\";\n\n return (\n <div\n role=\"menu\"\n data-slot=\"dropdown-sub-content\"\n data-side={side}\n data-state=\"open\"\n class={cn(\n \"absolute top-0 z-50 min-w-[7rem] max-h-[min(24rem,calc(100dvh-2rem))] overflow-x-hidden overflow-y-auto rounded-lg bg-white p-px text-popover-foreground shadow-md outline-none ring-1 ring-foreground/10 dark:bg-popover dark:ring-foreground/15\",\n sidePosition,\n className,\n )}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n sub.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useDropdownSub } from \"./dropdown-sub-context\";\n\nconst ChevronRight = ({ class: className }: { class?: string }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class={cn(\"size-3.5 shrink-0 rtl:rotate-180\", className)}\n aria-hidden\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport type DropdownSubTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropdownSubTrigger = ({\n class: className,\n children,\n onClick,\n onPointerEnter,\n ...rest\n}: DropdownSubTriggerProps) => {\n const sub = useDropdownSub();\n const open = sub.open.value;\n\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n data-slot=\"dropdown-sub-trigger\"\n data-state={open ? \"open\" : \"closed\"}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n class={cn(\n \"flex w-full cursor-default select-none items-center gap-1 rounded-sm px-1 py-0.5 text-start text-sm outline-none transition-colors duration-100\",\n \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n \"[&_svg]:shrink-0\",\n className,\n )}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (e.defaultPrevented) return;\n sub.setOpen(true);\n }}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n sub.setOpen(!open);\n }}\n {...rest}\n >\n {children}\n <ChevronRight class=\"ms-auto\" />\n </button>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { tv } from \"tailwind-variants\";\nimport { useDropdown } from \"./Dropdown\";\n\nexport const dropdownTrigger = tv({\n base: [\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap\",\n \"focus-visible:ring-outline/50 transition-[color,box-shadow] outline-none focus-visible:ring-3\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n \"h-9 px-4 py-2\",\n ],\n});\n\nexport type DropdownTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const DropdownTrigger = ({\n asChild = false,\n class: className,\n children,\n onClick,\n ref: outerRef,\n ...rest\n}: DropdownTriggerProps) => {\n const dropdown = useDropdown();\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n dropdown.setOpen(!dropdown.open.value);\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n id: dropdown.triggerId,\n \"aria-controls\": dropdown.contentId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": dropdown.open.value,\n \"data-slot\": \"dropdown-trigger\",\n \"data-state\": dropdown.open.value ? \"open\" : \"closed\",\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n dropdown.triggerRef.current = node;\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n dropdown.triggerRef.current = node;\n callRef(outerRef, node);\n }}\n id={dropdown.triggerId}\n type=\"button\"\n class={dropdownTrigger({ class: className as string | undefined })}\n data-slot=\"dropdown-trigger\"\n data-state={dropdown.open.value ? \"open\" : \"closed\"}\n aria-controls={dropdown.contentId}\n aria-haspopup=\"menu\"\n aria-expanded={dropdown.open.value}\n onClick={(event) => handleClick(event as unknown as JSX.TargetedMouseEvent<HTMLElement>)}\n {...rest}\n >\n {children}\n </button>\n );\n};\n","import { Dropdown } from \"./Dropdown\";\nimport { DropdownCheckboxItem } from \"./DropdownCheckboxItem\";\nimport { DropdownContent } from \"./DropdownContent\";\nimport { DropdownGroup } from \"./DropdownGroup\";\nimport { DropdownItem } from \"./DropdownItem\";\nimport { DropdownLabel } from \"./DropdownLabel\";\nimport { DropdownPortal } from \"./DropdownPortal\";\nimport { DropdownRadioGroup } from \"./DropdownRadioGroup\";\nimport { DropdownRadioItem } from \"./DropdownRadioItem\";\nimport { DropdownSeparator } from \"./DropdownSeparator\";\nimport { DropdownShortcut } from \"./DropdownShortcut\";\nimport { DropdownSub } from \"./DropdownSub\";\nimport { DropdownSubContent } from \"./DropdownSubContent\";\nimport { DropdownSubTrigger } from \"./DropdownSubTrigger\";\nimport { DropdownTrigger } from \"./DropdownTrigger\";\n\nexport {\n Dropdown,\n DropdownCheckboxItem,\n DropdownContent,\n DropdownGroup,\n DropdownItem,\n DropdownLabel,\n DropdownPortal,\n DropdownRadioGroup,\n DropdownRadioItem,\n DropdownSeparator,\n DropdownShortcut,\n DropdownSub,\n DropdownSubContent,\n DropdownSubTrigger,\n DropdownTrigger,\n};\n\nexport default {\n Root: Dropdown,\n Trigger: DropdownTrigger,\n Content: DropdownContent,\n Item: DropdownItem,\n Label: DropdownLabel,\n Separator: DropdownSeparator,\n Group: DropdownGroup,\n Shortcut: DropdownShortcut,\n Sub: DropdownSub,\n SubTrigger: DropdownSubTrigger,\n SubContent: DropdownSubContent,\n Portal: DropdownPortal,\n CheckboxItem: DropdownCheckboxItem,\n RadioGroup: DropdownRadioGroup,\n RadioItem: DropdownRadioItem,\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/sheet/Sheet.tsx","../src/components/sheet/SheetContent.tsx","../src/components/sheet/SheetFooter.tsx","../src/components/sheet/SheetHeader.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-JKXSX67K.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, type DialogProps } from \"../dialog/Dialog\";\n\nexport type SheetProps = DialogProps & { children?: ComponentChildren };\n\nexport const Sheet = ({ children, lockBodyScroll = true, ...rest }: SheetProps) => (\n <Dialog data-slot=\"sheet\" lockBodyScroll={lockBodyScroll} {...rest}>\n {children}\n </Dialog>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"../dialog/Dialog\";\nimport { dialogViewportBleedClass } from \"../dialog/DialogContent\";\nimport { useModalPanelA11y } from \"../dialog/useModalPanelA11y\";\nimport { SheetClose } from \"./SheetClose\";\n\nexport type SheetContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n side?: \"left\" | \"right\" | \"top\" | \"bottom\";\n forceMount?: boolean;\n showCloseButton?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\nconst sidePanelClass: Record<NonNullable<SheetContentProps[\"side\"]>, string> = {\n right:\n \"inset-y-0 right-0 h-full w-full max-w-md border-l data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right\",\n left: \"inset-y-0 left-0 h-full w-full max-w-md border-r data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left\",\n top: \"inset-x-0 top-0 max-h-[85dvh] h-auto w-full min-w-0 border-b rounded-b-xl data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top\",\n bottom:\n \"inset-x-0 bottom-0 max-h-[85dvh] h-auto w-full min-w-0 border-t rounded-t-xl data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom\",\n};\n\nexport const SheetContent = ({\n side = \"right\",\n showCloseButton = true,\n children,\n class: className,\n forceMount = false,\n \"data-slot\": dataSlot = \"sheet-content\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: SheetContentProps) => {\n const dialog = useDialog();\n const isOpen = dialog.open.value;\n const { panelRef, labelledBy, describedBy } = useModalPanelA11y(isOpen || forceMount);\n if (!isOpen && !forceMount) return null;\n\n const state = isOpen ? \"open\" : \"closed\";\n const isHorizontalEdge = side === \"top\" || side === \"bottom\";\n const edgePadding =\n side === \"top\"\n ? \"px-6 pb-6 pt-[calc(1.5rem+env(safe-area-inset-top,0px))]\"\n : side === \"bottom\"\n ? \"px-6 pt-6 pb-[calc(1.5rem+env(safe-area-inset-bottom,0px))]\"\n : \"p-6\";\n\n const modalA11y = {\n \"aria-labelledby\": ariaLabelledBy ?? labelledBy,\n \"aria-describedby\": ariaDescribedBy ?? describedBy,\n };\n\n const tree = (\n <>\n <div\n aria-hidden=\"true\"\n data-slot=\"sheet-overlay\"\n data-state={state}\n class={cn(\n \"fade-in fade-out\",\n dialogViewportBleedClass,\n \"z-40 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards\",\n )}\n />\n <div\n ref={panelRef}\n {...rest}\n {...modalA11y}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-side={side}\n data-state={state}\n data-slot={dataSlot}\n class={cn(\n \"fixed z-50 flex min-h-0 min-w-0 flex-col gap-4 overflow-y-auto border bg-background shadow-lg outline-none\",\n edgePadding,\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards duration-300\",\n sidePanelClass[side],\n className,\n isHorizontalEdge && \"w-full !max-w-none\",\n )}\n >\n {showCloseButton ? (\n <SheetClose\n data-slot=\"sheet-close\"\n aria-label=\"Close sheet\"\n class={cn(\n \"absolute right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\",\n side === \"top\" ? \"top-[calc(1rem+env(safe-area-inset-top,0px))]\" : \"top-4\",\n )}\n >\n Close\n </SheetClose>\n ) : null}\n {children}\n </div>\n </>\n );\n\n if (typeof document === \"undefined\") return tree;\n return createPortal(tree, document.body);\n};\n","import type { ComponentChildren, JSX } from \"preact\";\n\nexport type SheetFooterProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SheetFooter = ({ children, ...rest }: SheetFooterProps) => (\n <div data-slot=\"sheet-footer\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\n\nexport type SheetHeaderProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SheetHeader = ({ children, ...rest }: SheetHeaderProps) => (\n <div data-slot=\"sheet-header\" {...rest}>\n {children}\n </div>\n);\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/theme-toggle/ThemeToggle.tsx","../src/components/theme-toggle/index.ts"],"names":[],"mappings":"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","file":"chunk-MJG6UKD4.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../button\";\n\nexport type ThemeToggleProps = Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"class\"> & {\n class?: string;\n children?: ComponentChildren;\n};\n\nconst SunIcon = ({ class: className }: { class?: string }) => (\n <svg\n class={cn(\"size-4 shrink-0\", className)}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v2\" />\n <path d=\"M12 20v2\" />\n <path d=\"m4.93 4.93 1.41 1.41\" />\n <path d=\"m17.66 17.66 1.41 1.41\" />\n <path d=\"M2 12h2\" />\n <path d=\"M20 12h2\" />\n <path d=\"m6.34 17.66-1.41 1.41\" />\n <path d=\"m19.07 4.93-1.41 1.41\" />\n </svg>\n);\n\nconst MoonIcon = ({ class: className }: { class?: string }) => (\n <svg\n class={cn(\"size-4 shrink-0\", className)}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n </svg>\n);\n\nconst resolveInitialDarkMode = () => {\n if (typeof window === \"undefined\") return false;\n const stored = window.localStorage.getItem(\"theme\");\n if (stored === \"dark\") return true;\n if (stored === \"light\") return false;\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n};\n\nexport const ThemeToggle = ({ children, onClick, ...rest }: ThemeToggleProps) => {\n const [darkMode, setDarkMode] = useState<boolean>(resolveInitialDarkMode);\n\n useEffect(() => {\n document.documentElement.classList.toggle(\"dark\", darkMode);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(\"theme\", darkMode ? \"dark\" : \"light\");\n }\n }, [darkMode]);\n\n return (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n data-slot=\"theme-toggle\"\n data-state={darkMode ? \"dark\" : \"light\"}\n aria-label={children == null ? (darkMode ? \"Light mode\" : \"Dark mode\") : undefined}\n onClick={(event) => {\n setDarkMode((current) => !current);\n onClick?.(event);\n }}\n {...rest}\n >\n {children ?? (darkMode ? <SunIcon /> : <MoonIcon />)}\n </Button>\n );\n};\n","import { ThemeToggle } from \"./ThemeToggle\";\n\nexport { ThemeToggle };\n\nexport default ThemeToggle;\n"]}
|
package/dist/chunk-R565SY7K.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { signal } from '@preact/signals';
|
|
2
|
-
import { createContext } from 'preact';
|
|
3
|
-
import { useContext, useMemo } from 'preact/hooks';
|
|
4
|
-
import { jsx } from 'preact/jsx-runtime';
|
|
5
|
-
|
|
6
|
-
// src/components/sidebar/SidebarProvider.tsx
|
|
7
|
-
var SidebarContext = createContext(null);
|
|
8
|
-
var useSidebar = () => {
|
|
9
|
-
const context = useContext(SidebarContext);
|
|
10
|
-
if (!context) throw new Error("Sidebar components must be used within SidebarProvider");
|
|
11
|
-
return context;
|
|
12
|
-
};
|
|
13
|
-
var SidebarProvider = ({ defaultOpen = true, children }) => {
|
|
14
|
-
const open = useMemo(() => signal(defaultOpen), []);
|
|
15
|
-
return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: { open, setOpen: (next) => open.value = next }, children });
|
|
16
|
-
};
|
|
17
|
-
var Sidebar = ({ children, ...rest }) => {
|
|
18
|
-
const sidebar = useSidebar();
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
20
|
-
"aside",
|
|
21
|
-
{
|
|
22
|
-
"data-slot": "sidebar",
|
|
23
|
-
"data-state": sidebar.open.value ? "open" : "closed",
|
|
24
|
-
hidden: !sidebar.open.value,
|
|
25
|
-
...rest,
|
|
26
|
-
children
|
|
27
|
-
}
|
|
28
|
-
);
|
|
29
|
-
};
|
|
30
|
-
var SidebarContent = ({ children, ...rest }) => /* @__PURE__ */ jsx("div", { "data-slot": "sidebar-content", ...rest, children });
|
|
31
|
-
var SidebarFooter = ({ children, ...rest }) => /* @__PURE__ */ jsx("div", { "data-slot": "sidebar-footer", ...rest, children });
|
|
32
|
-
var SidebarHeader = ({ children, ...rest }) => /* @__PURE__ */ jsx("div", { "data-slot": "sidebar-header", ...rest, children });
|
|
33
|
-
var SidebarInset = ({ children, ...rest }) => /* @__PURE__ */ jsx("div", { "data-slot": "sidebar-inset", ...rest, children });
|
|
34
|
-
var SidebarTrigger = ({
|
|
35
|
-
children = "Toggle Sidebar",
|
|
36
|
-
onClick,
|
|
37
|
-
...rest
|
|
38
|
-
}) => {
|
|
39
|
-
const sidebar = useSidebar();
|
|
40
|
-
return /* @__PURE__ */ jsx(
|
|
41
|
-
"button",
|
|
42
|
-
{
|
|
43
|
-
type: "button",
|
|
44
|
-
"data-slot": "sidebar-trigger",
|
|
45
|
-
"aria-expanded": sidebar.open.value,
|
|
46
|
-
onClick: (event) => {
|
|
47
|
-
sidebar.setOpen(!sidebar.open.value);
|
|
48
|
-
onClick?.(event);
|
|
49
|
-
},
|
|
50
|
-
...rest,
|
|
51
|
-
children
|
|
52
|
-
}
|
|
53
|
-
);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// src/components/sidebar/index.ts
|
|
57
|
-
var sidebar_default = {
|
|
58
|
-
Provider: SidebarProvider,
|
|
59
|
-
Root: Sidebar,
|
|
60
|
-
Trigger: SidebarTrigger,
|
|
61
|
-
Header: SidebarHeader,
|
|
62
|
-
Content: SidebarContent,
|
|
63
|
-
Footer: SidebarFooter,
|
|
64
|
-
Inset: SidebarInset
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
export { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarInset, SidebarProvider, SidebarTrigger, sidebar_default, useSidebar };
|
|
68
|
-
//# sourceMappingURL=chunk-R565SY7K.js.map
|
|
69
|
-
//# sourceMappingURL=chunk-R565SY7K.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/sidebar/SidebarProvider.tsx","../src/components/sidebar/Sidebar.tsx","../src/components/sidebar/SidebarContent.tsx","../src/components/sidebar/SidebarFooter.tsx","../src/components/sidebar/SidebarHeader.tsx","../src/components/sidebar/SidebarInset.tsx","../src/components/sidebar/SidebarTrigger.tsx","../src/components/sidebar/index.ts"],"names":["jsx"],"mappings":";;;;;;AAUA,IAAM,cAAA,GAAiB,cAA0C,IAAI,CAAA;AAE9D,IAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,OAAA,GAAU,WAAW,cAAc,CAAA;AACzC,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,wDAAwD,CAAA;AACtF,EAAA,OAAO,OAAA;AACT;AAOO,IAAM,kBAAkB,CAAC,EAAE,WAAA,GAAc,IAAA,EAAM,UAAS,KAA4B;AACzF,EAAA,MAAM,OAAO,OAAA,CAAQ,MAAM,OAAO,WAAW,CAAA,EAAG,EAAE,CAAA;AAClD,EAAA,uBACE,GAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,CAAC,IAAA,KAAU,IAAA,CAAK,KAAA,GAAQ,IAAA,IACtE,QAAA,EACH,CAAA;AAEJ;ACzBO,IAAM,UAAU,CAAC,EAAE,QAAA,EAAU,GAAG,MAAK,KAAoB;AAC9D,EAAA,MAAM,UAAU,UAAA,EAAW;AAC3B,EAAA,uBACEA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,SAAA;AAAA,MACV,YAAA,EAAY,OAAA,CAAQ,IAAA,CAAK,KAAA,GAAQ,MAAA,GAAS,QAAA;AAAA,MAC1C,MAAA,EAAQ,CAAC,OAAA,CAAQ,IAAA,CAAK,KAAA;AAAA,MACrB,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;ACXO,IAAM,cAAA,GAAiB,CAAC,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,qBACjDA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,iBAAA,EAAmB,GAAG,MAClC,QAAA,EACH;ACHK,IAAM,aAAA,GAAgB,CAAC,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,qBAChDA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,gBAAA,EAAkB,GAAG,MACjC,QAAA,EACH;ACHK,IAAM,aAAA,GAAgB,CAAC,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,qBAChDA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,gBAAA,EAAkB,GAAG,MACjC,QAAA,EACH;ACHK,IAAM,YAAA,GAAe,CAAC,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,qBAC/CA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,eAAA,EAAiB,GAAG,MAChC,QAAA,EACH;ACFK,IAAM,iBAAiB,CAAC;AAAA,EAC7B,QAAA,GAAW,gBAAA;AAAA,EACX,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2B;AACzB,EAAA,MAAM,UAAU,UAAA,EAAW;AAC3B,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,iBAAA;AAAA,MACV,eAAA,EAAe,QAAQ,IAAA,CAAK,KAAA;AAAA,MAC5B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA;AACnC,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;;;ACRA,IAAO,eAAA,GAAQ;AAAA,EACb,QAAA,EAAU,eAAA;AAAA,EACV,IAAA,EAAM,OAAA;AAAA,EACN,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAO;AACT","file":"chunk-R565SY7K.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useMemo } from \"preact/hooks\";\n\ntype SidebarContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n setOpen: (next: boolean) => void;\n};\n\nconst SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport const useSidebar = () => {\n const context = useContext(SidebarContext);\n if (!context) throw new Error(\"Sidebar components must be used within SidebarProvider\");\n return context;\n};\n\nexport type SidebarProviderProps = {\n defaultOpen?: boolean;\n children?: ComponentChildren;\n};\n\nexport const SidebarProvider = ({ defaultOpen = true, children }: SidebarProviderProps) => {\n const open = useMemo(() => signal(defaultOpen), []);\n return (\n <SidebarContext.Provider value={{ open, setOpen: (next) => (open.value = next) }}>\n {children}\n </SidebarContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useSidebar } from \"./SidebarProvider\";\n\nexport type SidebarProps = JSX.HTMLAttributes<HTMLElement> & { children?: ComponentChildren };\n\nexport const Sidebar = ({ children, ...rest }: SidebarProps) => {\n const sidebar = useSidebar();\n return (\n <aside\n data-slot=\"sidebar\"\n data-state={sidebar.open.value ? \"open\" : \"closed\"}\n hidden={!sidebar.open.value}\n {...rest}\n >\n {children}\n </aside>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\n\nexport type SidebarContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SidebarContent = ({ children, ...rest }: SidebarContentProps) => (\n <div data-slot=\"sidebar-content\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\n\nexport type SidebarFooterProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SidebarFooter = ({ children, ...rest }: SidebarFooterProps) => (\n <div data-slot=\"sidebar-footer\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\n\nexport type SidebarHeaderProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SidebarHeader = ({ children, ...rest }: SidebarHeaderProps) => (\n <div data-slot=\"sidebar-header\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\n\nexport type SidebarInsetProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SidebarInset = ({ children, ...rest }: SidebarInsetProps) => (\n <div data-slot=\"sidebar-inset\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useSidebar } from \"./SidebarProvider\";\n\nexport type SidebarTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ComponentChildren;\n};\n\nexport const SidebarTrigger = ({\n children = \"Toggle Sidebar\",\n onClick,\n ...rest\n}: SidebarTriggerProps) => {\n const sidebar = useSidebar();\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-trigger\"\n aria-expanded={sidebar.open.value}\n onClick={(event) => {\n sidebar.setOpen(!sidebar.open.value);\n onClick?.(event);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n};\n","import { Sidebar } from \"./Sidebar\";\nimport { SidebarContent } from \"./SidebarContent\";\nimport { SidebarFooter } from \"./SidebarFooter\";\nimport { SidebarHeader } from \"./SidebarHeader\";\nimport { SidebarInset } from \"./SidebarInset\";\nimport { SidebarProvider, useSidebar } from \"./SidebarProvider\";\nimport { SidebarTrigger } from \"./SidebarTrigger\";\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarHeader,\n SidebarInset,\n SidebarProvider,\n SidebarTrigger,\n useSidebar,\n};\n\nexport default {\n Provider: SidebarProvider,\n Root: Sidebar,\n Trigger: SidebarTrigger,\n Header: SidebarHeader,\n Content: SidebarContent,\n Footer: SidebarFooter,\n Inset: SidebarInset,\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/radio-group/RadioGroup.tsx"],"names":[],"mappings":";;;;;;AAcA,IAAM,iBAAA,GAAoB,cAA6C,IAAI,CAAA;AAEpE,IAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,OAAA,GAAU,WAAW,iBAAiB,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAC7E,EAAA,OAAO,OAAA;AACT;AAYO,IAAM,aAAa,CAAC;AAAA,EACzB,IAAA,EAAM,QAAA;AAAA,EACN,YAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,aAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAuB;AACrB,EAAA,MAAM,SAAS,KAAA,EAAM;AACrB,EAAA,MAAM,IAAA,GAAO,QAAA,IAAY,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,SAAA;AAAA,IACf,SAAA,KAAc,MAAA,GAAY,SAAA,GAAa,YAAA,IAAgB;AAAA,GACzD;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,QAAA,CAAS,KAAA,GAAQ,SAAA;AAAA,IACnB;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAiB;AACjC,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,QAAA,CAAS,KAAA,GAAQ,IAAA;AAAA,IACnB;AACA,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,iBAAA,CAAkB,QAAA;AAAA,IAAlB;AAAA,MACC,OAAO,EAAE,KAAA,EAAO,UAAU,eAAA,EAAiB,SAAA,EAAW,UAAU,IAAA,EAAK;AAAA,MAErE,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,YAAA,EAAa,WAAA,EAAU,aAAA,EAAc,KAAA,EAAO,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,MACpF,QAAA,EACH;AAAA;AAAA,GACF;AAEJ","file":"chunk-YVALXJRN.js","sourcesContent":["import { type Signal, useSignal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useId } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\n\ntype RadioGroupContextValue = {\n value: Signal<string | null>;\n /** When set, selection follows this prop (controlled); otherwise `value` signal is used. */\n controlledValue: string | undefined;\n setValue: (next: string) => void;\n name: string;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport const useRadioGroup = () => {\n const context = useContext(RadioGroupContext);\n if (!context) throw new Error(\"RadioGroupItem must be used inside RadioGroup\");\n return context;\n};\n\nexport type RadioGroupProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\"> & {\n /** When omitted, a stable unique name is generated (forms can still submit if you add name to inputs manually). */\n name?: string;\n defaultValue?: string;\n value?: string;\n onValueChange?: (next: string) => void;\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const RadioGroup = ({\n name: nameProp,\n defaultValue,\n value: valueProp,\n onValueChange,\n class: className,\n children,\n ...rest\n}: RadioGroupProps) => {\n const autoId = useId();\n const name = nameProp ?? `radio-group-${autoId}`;\n const internal = useSignal<string | null>(\n valueProp !== undefined ? valueProp : (defaultValue ?? null),\n );\n\n useEffect(() => {\n if (valueProp !== undefined) {\n internal.value = valueProp;\n }\n }, [valueProp]);\n\n const setValue = (next: string) => {\n if (valueProp === undefined) {\n internal.value = next;\n }\n onValueChange?.(next);\n };\n\n return (\n <RadioGroupContext.Provider\n value={{ value: internal, controlledValue: valueProp, setValue, name }}\n >\n <div role=\"radiogroup\" data-slot=\"radio-group\" class={cn(\"grid gap-3\", className)} {...rest}>\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n};\n"]}
|