@djangocfg/ui-core 2.1.259 → 2.1.261

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.
Files changed (138) hide show
  1. package/README.md +27 -12
  2. package/package.json +9 -4
  3. package/src/components/{avatar.story.tsx → data/avatar/avatar.story.tsx} +1 -1
  4. package/src/components/{avatar.tsx → data/avatar/index.tsx} +1 -1
  5. package/src/components/{badge.story.tsx → data/badge/badge.story.tsx} +1 -1
  6. package/src/components/{badge.tsx → data/badge/index.tsx} +1 -1
  7. package/src/components/{calendar.story.tsx → data/calendar/calendar.story.tsx} +2 -1
  8. package/src/components/{calendar → data/calendar}/calendar.tsx +2 -2
  9. package/src/components/{calendar → data/calendar}/date-picker.tsx +3 -3
  10. package/src/components/{carousel.story.tsx → data/carousel/carousel.story.tsx} +2 -2
  11. package/src/components/{carousel.tsx → data/carousel/index.tsx} +2 -2
  12. package/src/components/{chart.tsx → data/chart/index.tsx} +1 -1
  13. package/src/components/{progress.tsx → data/progress/index.tsx} +1 -1
  14. package/src/components/{progress.story.tsx → data/progress/progress.story.tsx} +1 -1
  15. package/src/components/{table.tsx → data/table/index.tsx} +1 -1
  16. package/src/components/{table.story.tsx → data/table/table.story.tsx} +2 -2
  17. package/src/components/{toggle.tsx → data/toggle/index.tsx} +1 -1
  18. package/src/components/{toggle.story.tsx → data/toggle/toggle.story.tsx} +1 -1
  19. package/src/components/{toggle-group.tsx → data/toggle-group/index.tsx} +2 -2
  20. package/src/components/{toggle-group.story.tsx → data/toggle-group/toggle-group.story.tsx} +1 -1
  21. package/src/components/{alert.story.tsx → feedback/alert/alert.story.tsx} +1 -1
  22. package/src/components/{alert.tsx → feedback/alert/index.tsx} +1 -1
  23. package/src/components/{empty.story.tsx → feedback/empty/empty.story.tsx} +2 -2
  24. package/src/components/{empty.tsx → feedback/empty/index.tsx} +1 -1
  25. package/src/components/{preloader.tsx → feedback/preloader/index.tsx} +1 -1
  26. package/src/components/{preloader.story.tsx → feedback/preloader/preloader.story.tsx} +1 -1
  27. package/src/components/{sonner.tsx → feedback/sonner/index.tsx} +1 -1
  28. package/src/components/{spinner.tsx → feedback/spinner/index.tsx} +1 -1
  29. package/src/components/{spinner.story.tsx → feedback/spinner/spinner.story.tsx} +1 -1
  30. package/src/components/{button.story.tsx → forms/button/button.story.tsx} +1 -1
  31. package/src/components/{button.tsx → forms/button/index.tsx} +1 -1
  32. package/src/components/{button-download.story.tsx → forms/button-download/button-download.story.tsx} +1 -1
  33. package/src/components/{button-download.tsx → forms/button-download/index.tsx} +3 -3
  34. package/src/components/{button-group.story.tsx → forms/button-group/button-group.story.tsx} +2 -2
  35. package/src/components/{button-group.tsx → forms/button-group/index.tsx} +2 -2
  36. package/src/components/{checkbox.story.tsx → forms/checkbox/checkbox.story.tsx} +2 -2
  37. package/src/components/{checkbox.tsx → forms/checkbox/index.tsx} +1 -1
  38. package/src/components/{field.tsx → forms/field/index.tsx} +3 -3
  39. package/src/components/{form.tsx → forms/form/index.tsx} +2 -2
  40. package/src/components/{input.tsx → forms/input/index.tsx} +2 -2
  41. package/src/components/{input.story.tsx → forms/input/input.story.tsx} +2 -2
  42. package/src/components/{input-group.tsx → forms/input-group/index.tsx} +4 -4
  43. package/src/components/{input-group.story.tsx → forms/input-group/input-group.story.tsx} +2 -2
  44. package/src/components/{input-otp.tsx → forms/input-otp/index.tsx} +1 -1
  45. package/src/components/{input-otp.story.tsx → forms/input-otp/input-otp.story.tsx} +1 -1
  46. package/src/components/{label.tsx → forms/label/index.tsx} +1 -1
  47. package/src/components/{label.story.tsx → forms/label/label.story.tsx} +3 -3
  48. package/src/components/{otp → forms/otp}/index.tsx +2 -2
  49. package/src/components/{phone-input.tsx → forms/phone-input/index.tsx} +4 -4
  50. package/src/components/{radio-group.tsx → forms/radio-group/index.tsx} +1 -1
  51. package/src/components/{radio-group.story.tsx → forms/radio-group/radio-group.story.tsx} +2 -2
  52. package/src/components/{slider.tsx → forms/slider/index.tsx} +2 -2
  53. package/src/components/{slider.story.tsx → forms/slider/slider.story.tsx} +2 -2
  54. package/src/components/{switch.tsx → forms/switch/index.tsx} +1 -1
  55. package/src/components/{switch.story.tsx → forms/switch/switch.story.tsx} +2 -2
  56. package/src/components/{textarea.tsx → forms/textarea/index.tsx} +2 -2
  57. package/src/components/{textarea.story.tsx → forms/textarea/textarea.story.tsx} +2 -2
  58. package/src/components/index.ts +110 -100
  59. package/src/components/{aspect-ratio.story.tsx → layout/aspect-ratio/aspect-ratio.story.tsx} +1 -1
  60. package/src/components/{card.story.tsx → layout/card/card.story.tsx} +4 -4
  61. package/src/components/{card.tsx → layout/card/index.tsx} +1 -1
  62. package/src/components/{resizable.tsx → layout/resizable/index.tsx} +1 -1
  63. package/src/components/{resizable.story.tsx → layout/resizable/resizable.story.tsx} +1 -1
  64. package/src/components/{scroll-area.tsx → layout/scroll-area/index.tsx} +1 -1
  65. package/src/components/{scroll-area.story.tsx → layout/scroll-area/scroll-area.story.tsx} +2 -2
  66. package/src/components/{section.tsx → layout/section/index.tsx} +1 -1
  67. package/src/components/{separator.tsx → layout/separator/index.tsx} +1 -1
  68. package/src/components/{separator.story.tsx → layout/separator/separator.story.tsx} +1 -1
  69. package/src/components/{skeleton.tsx → layout/skeleton/index.tsx} +1 -1
  70. package/src/components/{skeleton.story.tsx → layout/skeleton/skeleton.story.tsx} +1 -1
  71. package/src/components/{sticky.tsx → layout/sticky/index.tsx} +1 -1
  72. package/src/components/{accordion.story.tsx → navigation/accordion/accordion.story.tsx} +1 -1
  73. package/src/components/{accordion.tsx → navigation/accordion/index.tsx} +2 -2
  74. package/src/components/{collapsible.story.tsx → navigation/collapsible/collapsible.story.tsx} +2 -2
  75. package/src/components/{command.story.tsx → navigation/command/command.story.tsx} +2 -2
  76. package/src/components/{command.tsx → navigation/command/index.tsx} +2 -2
  77. package/src/components/{context-menu.story.tsx → navigation/context-menu/context-menu.story.tsx} +1 -1
  78. package/src/components/{context-menu.tsx → navigation/context-menu/index.tsx} +1 -1
  79. package/src/components/{dropdown-menu.story.tsx → navigation/dropdown-menu/dropdown-menu.story.tsx} +2 -2
  80. package/src/components/{dropdown-menu.tsx → navigation/dropdown-menu/index.tsx} +1 -1
  81. package/src/components/{menubar.tsx → navigation/menubar/index.tsx} +1 -1
  82. package/src/components/{menubar.story.tsx → navigation/menubar/menubar.story.tsx} +1 -1
  83. package/src/components/{navigation-menu.tsx → navigation/navigation-menu/index.tsx} +1 -1
  84. package/src/components/{navigation-menu.story.tsx → navigation/navigation-menu/navigation-menu.story.tsx} +2 -2
  85. package/src/components/{tabs.tsx → navigation/tabs/index.tsx} +6 -6
  86. package/src/components/{tabs.story.tsx → navigation/tabs/tabs.story.tsx} +5 -5
  87. package/src/components/{alert-dialog.story.tsx → overlay/alert-dialog/alert-dialog.story.tsx} +2 -2
  88. package/src/components/{alert-dialog.tsx → overlay/alert-dialog/index.tsx} +2 -2
  89. package/src/components/{dialog.story.tsx → overlay/dialog/dialog.story.tsx} +4 -4
  90. package/src/components/{dialog.tsx → overlay/dialog/index.tsx} +1 -1
  91. package/src/components/{drawer.story.tsx → overlay/drawer/drawer.story.tsx} +4 -4
  92. package/src/components/{drawer.tsx → overlay/drawer/index.tsx} +1 -1
  93. package/src/components/{hover-card.story.tsx → overlay/hover-card/hover-card.story.tsx} +3 -3
  94. package/src/components/{hover-card.tsx → overlay/hover-card/index.tsx} +1 -1
  95. package/src/components/{popover.tsx → overlay/popover/index.tsx} +1 -1
  96. package/src/components/{popover.story.tsx → overlay/popover/popover.story.tsx} +4 -4
  97. package/src/components/{responsive-sheet.tsx → overlay/responsive-sheet/index.tsx} +3 -3
  98. package/src/components/{responsive-sheet.story.tsx → overlay/responsive-sheet/responsive-sheet.story.tsx} +4 -4
  99. package/src/components/{sheet.tsx → overlay/sheet/index.tsx} +1 -1
  100. package/src/components/{sheet.story.tsx → overlay/sheet/sheet.story.tsx} +4 -4
  101. package/src/components/{tooltip.tsx → overlay/tooltip/index.tsx} +1 -1
  102. package/src/components/{tooltip.story.tsx → overlay/tooltip/tooltip.story.tsx} +2 -2
  103. package/src/components/select/README.md +272 -0
  104. package/src/components/{combobox.story.tsx → select/combobox.story.tsx} +2 -2
  105. package/src/components/{combobox.tsx → select/combobox.tsx} +50 -8
  106. package/src/components/{country-select.story.tsx → select/country-select.story.tsx} +1 -1
  107. package/src/components/{country-select.tsx → select/country-select.tsx} +8 -8
  108. package/src/components/{multi-select-pro → select}/helpers.tsx +2 -2
  109. package/src/components/select/index.ts +59 -0
  110. package/src/components/{language-select.story.tsx → select/language-select.story.tsx} +1 -1
  111. package/src/components/{language-select.tsx → select/language-select.tsx} +8 -8
  112. package/src/components/{multi-select-pro/async.tsx → select/multi-select-pro-async.tsx} +5 -5
  113. package/src/components/{multi-select-pro/index.tsx → select/multi-select-pro.tsx} +5 -5
  114. package/src/components/{multi-select.story.tsx → select/multi-select.story.tsx} +1 -1
  115. package/src/components/{multi-select.tsx → select/multi-select.tsx} +6 -6
  116. package/src/components/{select.story.tsx → select/select.story.tsx} +2 -2
  117. package/src/components/{select.tsx → select/select.tsx} +25 -7
  118. package/src/components/select/types.ts +57 -0
  119. package/src/components/{copy.story.tsx → specialized/copy/copy.story.tsx} +1 -1
  120. package/src/components/{copy.tsx → specialized/copy/index.tsx} +2 -2
  121. package/src/components/{image-with-fallback.story.tsx → specialized/image-with-fallback/image-with-fallback.story.tsx} +1 -1
  122. package/src/components/{image-with-fallback.tsx → specialized/image-with-fallback/index.tsx} +2 -2
  123. package/src/components/{item.tsx → specialized/item/index.tsx} +2 -2
  124. package/src/components/{kbd.tsx → specialized/kbd/index.tsx} +1 -1
  125. package/src/components/{kbd.story.tsx → specialized/kbd/kbd.story.tsx} +1 -1
  126. package/src/components/{token-icon.tsx → specialized/token-icon/index.tsx} +1 -1
  127. package/src/lib/dialog-service/dialog-service.story.tsx +1 -1
  128. package/src/lib/dialog-service/dialogs/AlertDialogUI.tsx +1 -1
  129. package/src/lib/dialog-service/dialogs/ConfirmDialogUI.tsx +2 -2
  130. package/src/lib/dialog-service/dialogs/PromptDialogUI.tsx +3 -3
  131. package/src/stories/index.ts +28 -0
  132. /package/src/components/{calendar → data/calendar}/index.ts +0 -0
  133. /package/src/components/{otp → forms/otp}/types.ts +0 -0
  134. /package/src/components/{otp → forms/otp}/use-otp-input.ts +0 -0
  135. /package/src/components/{aspect-ratio.tsx → layout/aspect-ratio/index.tsx} +0 -0
  136. /package/src/components/{collapsible.tsx → navigation/collapsible/index.tsx} +0 -0
  137. /package/src/components/{tooltip-provider-safe.tsx → overlay/tooltip/tooltip-provider-safe.tsx} +0 -0
  138. /package/src/components/{portal.tsx → specialized/portal/index.tsx} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { defineStory, useBoolean } from '@djangocfg/playground';
2
- import { RadioGroup, RadioGroupItem } from './radio-group';
3
- import { Label } from './label';
2
+ import { RadioGroup, RadioGroupItem } from '.';
3
+ import { Label } from '../../forms/label';
4
4
 
5
5
  export default defineStory({
6
6
  title: 'Core/Radio Group',
@@ -4,8 +4,8 @@ import * as React from 'react';
4
4
 
5
5
  import * as SliderPrimitive from '@radix-ui/react-slider';
6
6
 
7
- import { useStoredValue, type StorageType, type UseStoredValueOptions } from '../hooks/useStoredValue';
8
- import { cn } from '../lib/utils';
7
+ import { useStoredValue, type StorageType, type UseStoredValueOptions } from '../../../hooks/useStoredValue';
8
+ import { cn } from '../../../lib/utils';
9
9
 
10
10
  export interface SliderProps extends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {
11
11
  /**
@@ -1,7 +1,7 @@
1
1
  import { useState } from 'react';
2
2
  import { defineStory, useBoolean, useNumber } from '@djangocfg/playground';
3
- import { Slider } from './slider';
4
- import { Label } from './label';
3
+ import { Slider } from '.';
4
+ import { Label } from '../../forms/label';
5
5
 
6
6
  export default defineStory({
7
7
  title: 'Core/Slider',
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
 
5
5
  import * as SwitchPrimitives from '@radix-ui/react-switch';
6
6
 
7
- import { cn } from '../lib/utils';
7
+ import { cn } from '../../../lib/utils';
8
8
 
9
9
  const Switch = React.forwardRef<
10
10
  React.ElementRef<typeof SwitchPrimitives.Root>,
@@ -1,7 +1,7 @@
1
1
  import { useState } from 'react';
2
2
  import { defineStory, useBoolean } from '@djangocfg/playground';
3
- import { Switch } from './switch';
4
- import { Label } from './label';
3
+ import { Switch } from '.';
4
+ import { Label } from '../../forms/label';
5
5
 
6
6
  export default defineStory({
7
7
  title: 'Core/Switch',
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
 
3
- import { useStoredValue, type StorageType, type UseStoredValueOptions } from '../hooks/useStoredValue';
4
- import { cn } from '../lib/utils';
3
+ import { useStoredValue, type StorageType, type UseStoredValueOptions } from '../../../hooks/useStoredValue';
4
+ import { cn } from '../../../lib/utils';
5
5
 
6
6
  export interface TextareaProps extends React.ComponentProps<"textarea"> {
7
7
  /**
@@ -1,6 +1,6 @@
1
1
  import { defineStory, useBoolean, useNumber } from '@djangocfg/playground';
2
- import { Textarea } from './textarea';
3
- import { Label } from './label';
2
+ import { Textarea } from '.';
3
+ import { Label } from '../../forms/label';
4
4
 
5
5
  export default defineStory({
6
6
  title: 'Core/Textarea',
@@ -1,113 +1,123 @@
1
1
  "use client";
2
2
 
3
- // Basic Components
4
- export { Button, ButtonLink, buttonVariants } from './button';
5
- export type { ButtonProps, ButtonLinkProps } from './button';
6
- export { Card, CardContent, CardDescription, CardHeader, CardTitle, CardFooter } from './card';
7
- export { Badge } from './badge';
8
- export { Input } from './input';
9
- export { Textarea } from './textarea';
10
- export { Label } from './label';
11
- export { Section, SectionHeader } from './section';
12
- export { ImageWithFallback } from './image-with-fallback';
3
+ // ─────────────────────────────────────────────────────────────────────────────
4
+ // Forms
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ export { Button, ButtonLink, buttonVariants } from './forms/button';
7
+ export type { ButtonProps, ButtonLinkProps } from './forms/button';
8
+ export { Input } from './forms/input';
9
+ export { Textarea } from './forms/textarea';
10
+ export { Label } from './forms/label';
11
+ export { Checkbox } from './forms/checkbox';
12
+ export { RadioGroup, RadioGroupItem } from './forms/radio-group';
13
+ export { Switch } from './forms/switch';
14
+ export { Slider } from './forms/slider';
15
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants } from './forms/button-group';
16
+ export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField } from './forms/form';
17
+ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea } from './forms/input-group';
18
+ export { InputOTP, InputOTPGroup, InputOTPSlot } from './forms/input-otp';
19
+ export { PhoneInput } from './forms/phone-input';
20
+ export type { PhoneInputProps } from './forms/phone-input';
21
+ export { OTPInput, InputOTPSeparator, useSmartOTP } from './forms/otp';
22
+ export type { SmartOTPProps as OTPInputProps, OTPValidationMode, OTPPasteBehavior, OTPValidator } from './forms/otp/types';
23
+ export { ButtonGroup as ButtonGroupComponent } from './forms/button-group';
24
+ export { DownloadButton } from './forms/button-download';
25
+ export type { DownloadButtonProps } from './forms/button-download';
13
26
 
14
- // Form Components
15
- export { Checkbox } from './checkbox';
16
- export { RadioGroup, RadioGroupItem } from './radio-group';
17
- export { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select';
18
- export { Combobox } from './combobox';
19
- export type { ComboboxOption, ComboboxProps } from './combobox';
20
- export { MultiSelect } from './multi-select';
21
- export type { MultiSelectOption, MultiSelectProps } from './multi-select';
22
- export { MultiSelectPro } from './multi-select-pro';
23
- export type { MultiSelectProOption, MultiSelectProGroup, MultiSelectProProps, MultiSelectProRef, AnimationConfig, ResponsiveConfig } from './multi-select-pro';
24
- export { CountrySelect, getEmojiFlag } from './country-select';
25
- export type { CountrySelectProps, CountrySelectVariant, CountryOption, TCountryCode } from './country-select';
26
- export { LanguageSelect, getLanguageFlag, LANGUAGE_TO_COUNTRY } from './language-select';
27
- export type { LanguageSelectProps, LanguageSelectVariant, LanguageOption, TLanguageCode } from './language-select';
28
- export { MultiSelectProAsync } from './multi-select-pro/async';
29
- export type { MultiSelectProAsyncProps } from './multi-select-pro/async';
30
- export { Switch } from './switch';
31
- export { Slider } from './slider';
32
- export { InputOTP, InputOTPGroup, InputOTPSlot } from './input-otp';
33
- export { OTPInput, InputOTPSeparator, useSmartOTP } from './otp';
34
- export type { SmartOTPProps as OTPInputProps, OTPValidationMode, OTPPasteBehavior, OTPValidator } from './otp/types';
27
+ // ─────────────────────────────────────────────────────────────────────────────
28
+ // Field (advanced form layout)
29
+ // ─────────────────────────────────────────────────────────────────────────────
30
+ export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle } from './forms/field';
35
31
 
36
- // Layout Components
37
- export { Separator } from './separator';
38
- export { Skeleton } from './skeleton';
39
- export { AspectRatio } from './aspect-ratio';
40
- export { ScrollArea, ScrollBar } from './scroll-area';
41
- export type { ScrollAreaHandle, ScrollAreaProps, ScrollAreaOrientation } from './scroll-area';
42
- export { ResizableHandle, ResizablePanel, ResizablePanelGroup, useResizableDragging } from './resizable';
43
- export type { ResizableHandleProps, ImperativePanelHandle } from './resizable';
44
- export { Sticky } from './sticky';
45
- export { Portal } from './portal';
46
- export type { PortalProps } from './portal';
32
+ // ─────────────────────────────────────────────────────────────────────────────
33
+ // Select Components (existing folder - untouched)
34
+ // ─────────────────────────────────────────────────────────────────────────────
35
+ export * from './select';
47
36
 
48
- // Overlay Components
49
- export { Dialog, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription } from './dialog';
50
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from './alert-dialog';
51
- export { Popover, PopoverContent, PopoverTrigger, PopoverAnchor, PopoverArrow } from './popover';
52
- export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription } from './sheet';
53
- export { Drawer, DrawerTrigger, DrawerClose, DrawerContent, DrawerHeader, DrawerFooter, DrawerTitle, DrawerDescription } from './drawer';
54
- export { ResponsiveSheet, ResponsiveSheetContent, ResponsiveSheetHeader, ResponsiveSheetTitle, ResponsiveSheetDescription, ResponsiveSheetFooter } from './responsive-sheet';
55
- export { HoverCard, HoverCardContent, HoverCardTrigger } from './hover-card';
56
- export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';
37
+ // ─────────────────────────────────────────────────────────────────────────────
38
+ // Overlay
39
+ // ─────────────────────────────────────────────────────────────────────────────
40
+ export { Dialog, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription } from './overlay/dialog';
41
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from './overlay/alert-dialog';
42
+ export { Popover, PopoverContent, PopoverTrigger, PopoverAnchor, PopoverArrow } from './overlay/popover';
43
+ export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription } from './overlay/sheet';
44
+ export { Drawer, DrawerTrigger, DrawerClose, DrawerContent, DrawerHeader, DrawerFooter, DrawerTitle, DrawerDescription } from './overlay/drawer';
45
+ export { ResponsiveSheet, ResponsiveSheetContent, ResponsiveSheetHeader, ResponsiveSheetTitle, ResponsiveSheetDescription, ResponsiveSheetFooter } from './overlay/responsive-sheet';
46
+ export { HoverCard, HoverCardContent, HoverCardTrigger } from './overlay/hover-card';
47
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './overlay/tooltip';
57
48
 
58
- // Data Display Components
59
- export { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from './table';
60
- export { Tabs, TabsContent, TabsList, TabsTrigger } from './tabs';
61
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './accordion';
62
- export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './collapsible';
63
- export { Progress } from './progress';
64
- export { Avatar, AvatarFallback, AvatarImage } from './avatar';
65
- export { Calendar, CalendarDayButton } from './calendar';
66
- export { DatePicker, DateRangePicker } from './calendar';
67
- export type { DatePickerProps, DateRangePickerProps, DateRange } from './calendar';
68
- export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from './carousel';
69
- export type { CarouselApi } from './carousel';
70
- export { TokenIcon, getAllTokenSymbols, searchTokens, getTokensByCategory } from './token-icon';
71
- export type { TokenIconProps, TokenSymbol, TokenCategory } from './token-icon';
49
+ // ─────────────────────────────────────────────────────────────────────────────
50
+ // Navigation
51
+ // ─────────────────────────────────────────────────────────────────────────────
52
+ export { navigationMenuTriggerStyle, NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport } from './navigation/navigation-menu';
53
+ export { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarSeparator, MenubarLabel, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarPortal, MenubarSubContent, MenubarSubTrigger, MenubarGroup, MenubarSub, MenubarShortcut } from './navigation/menubar';
54
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup } from './navigation/dropdown-menu';
55
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from './navigation/context-menu';
56
+ export { Tabs, TabsContent, TabsList, TabsTrigger } from './navigation/tabs';
57
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './navigation/accordion';
58
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './navigation/collapsible';
59
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from './navigation/command';
72
60
 
73
- // Chart Components
74
- export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle } from './chart';
61
+ // ─────────────────────────────────────────────────────────────────────────────
62
+ // Layout
63
+ // ─────────────────────────────────────────────────────────────────────────────
64
+ export { Card, CardContent, CardDescription, CardHeader, CardTitle, CardFooter } from './layout/card';
65
+ export { Separator } from './layout/separator';
66
+ export { Skeleton } from './layout/skeleton';
67
+ export { AspectRatio } from './layout/aspect-ratio';
68
+ export { ScrollArea, ScrollBar } from './layout/scroll-area';
69
+ export type { ScrollAreaHandle, ScrollAreaProps, ScrollAreaOrientation } from './layout/scroll-area';
70
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup, useResizableDragging } from './layout/resizable';
71
+ export type { ResizableHandleProps, ImperativePanelHandle } from './layout/resizable';
72
+ export { Sticky } from './layout/sticky';
73
+ export { Section, SectionHeader } from './layout/section';
74
+
75
+ // ─────────────────────────────────────────────────────────────────────────────
76
+ // Data Display
77
+ // ─────────────────────────────────────────────────────────────────────────────
78
+ export { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from './data/table';
79
+ export { Badge } from './data/badge';
80
+ export { Avatar, AvatarFallback, AvatarImage } from './data/avatar';
81
+ export { Progress } from './data/progress';
82
+ export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from './data/carousel';
83
+ export type { CarouselApi } from './data/carousel';
84
+ export { Calendar, CalendarDayButton } from './data/calendar';
85
+ export { DatePicker, DateRangePicker } from './data/calendar';
86
+ export type { DatePickerProps, DateRangePickerProps, DateRange } from './data/calendar';
87
+ export { Toggle } from './data/toggle';
88
+ export { ToggleGroup, ToggleGroupItem } from './data/toggle-group';
75
89
 
76
- // Interactive Components
77
- export { Toggle } from './toggle';
78
- export { ToggleGroup, ToggleGroupItem } from './toggle-group';
79
- export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from './command';
80
- export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from './context-menu';
81
- export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup } from './dropdown-menu';
90
+ // ─────────────────────────────────────────────────────────────────────────────
91
+ // Chart Components
92
+ // ─────────────────────────────────────────────────────────────────────────────
93
+ export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle } from './data/chart';
82
94
 
83
- // Feedback Components
84
- export { Alert, AlertDescription, AlertTitle } from './alert';
95
+ // ─────────────────────────────────────────────────────────────────────────────
96
+ // Feedback
97
+ // ─────────────────────────────────────────────────────────────────────────────
98
+ export { Alert, AlertDescription, AlertTitle } from './feedback/alert';
99
+ export { Spinner } from './feedback/spinner';
100
+ export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia } from './feedback/empty';
101
+ export { Preloader, PreloaderSkeleton } from './feedback/preloader';
102
+ export type { PreloaderProps, PreloaderSkeletonProps } from './feedback/preloader';
103
+ export { Toaster } from './feedback/sonner';
85
104
 
86
- // Form Components
87
- export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField } from './form';
88
- export { ButtonGroup } from './button-group';
89
- export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia } from './empty';
90
- export { Spinner } from './spinner';
91
- export { Preloader, PreloaderSkeleton } from './preloader';
92
- export type { PreloaderProps, PreloaderSkeletonProps } from './preloader';
93
- export { Kbd, KbdGroup } from './kbd';
94
- export type { KbdProps, KbdSize } from './kbd';
95
- export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea } from './input-group';
96
- export { Item, ItemMedia, ItemContent, ItemActions, ItemGroup, ItemSeparator, ItemTitle, ItemDescription, ItemHeader, ItemFooter } from './item';
97
- export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle } from './field';
105
+ // ─────────────────────────────────────────────────────────────────────────────
106
+ // Specialized
107
+ // ─────────────────────────────────────────────────────────────────────────────
108
+ export { Kbd, KbdGroup } from './specialized/kbd';
109
+ export type { KbdProps, KbdSize } from './specialized/kbd';
110
+ export { CopyButton, CopyField } from './specialized/copy';
111
+ export type { CopyButtonProps, CopyFieldProps } from './specialized/copy';
112
+ export { TokenIcon, getAllTokenSymbols, searchTokens, getTokensByCategory } from './specialized/token-icon';
113
+ export type { TokenIconProps, TokenSymbol, TokenCategory } from './specialized/token-icon';
114
+ export { Item, ItemMedia, ItemContent, ItemActions, ItemGroup, ItemSeparator, ItemTitle, ItemDescription, ItemHeader, ItemFooter } from './specialized/item';
115
+ export { Portal } from './specialized/portal';
116
+ export type { PortalProps } from './specialized/portal';
117
+ export { ImageWithFallback } from './specialized/image-with-fallback';
98
118
 
99
- // Effects / Background
119
+ // ─────────────────────────────────────────────────────────────────────────────
120
+ // Effects
121
+ // ─────────────────────────────────────────────────────────────────────────────
100
122
  export { GlowBackground } from './effects';
101
123
  export type { GlowBackgroundProps } from './effects';
102
-
103
- export { CopyButton, CopyField } from './copy';
104
- export type { CopyButtonProps, CopyFieldProps } from './copy';
105
- export { DownloadButton } from './button-download';
106
- export type { DownloadButtonProps } from './button-download';
107
-
108
- // Additional Components
109
- export { Toaster } from './sonner';
110
- export { PhoneInput } from './phone-input';
111
- export type { PhoneInputProps } from './phone-input';
112
- export { navigationMenuTriggerStyle, NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport } from './navigation-menu';
113
- export { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarSeparator, MenubarLabel, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarPortal, MenubarSubContent, MenubarSubTrigger, MenubarGroup, MenubarSub, MenubarShortcut } from './menubar';
@@ -1,5 +1,5 @@
1
1
  import { defineStory, useSelect } from '@djangocfg/playground';
2
- import { AspectRatio } from './aspect-ratio';
2
+ import { AspectRatio } from '.';
3
3
 
4
4
  export default defineStory({
5
5
  title: 'Core/Aspect Ratio',
@@ -1,8 +1,8 @@
1
1
  import { defineStory } from '@djangocfg/playground';
2
- import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from './card';
3
- import { Button } from './button';
4
- import { Input } from './input';
5
- import { Label } from './label';
2
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '.';
3
+ import { Button } from '../../forms/button';
4
+ import { Input } from '../../forms/input';
5
+ import { Label } from '../../forms/label';
6
6
 
7
7
  export default defineStory({
8
8
  title: 'Core/Card',
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- import { cn } from '../lib/utils';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
5
  const Card = React.forwardRef<
6
6
  HTMLDivElement,
@@ -4,7 +4,7 @@ import * as ResizablePrimitive from 'react-resizable-panels';
4
4
 
5
5
  import { DragHandleDots2Icon } from '@radix-ui/react-icons';
6
6
 
7
- import { cn } from '../lib/utils';
7
+ import { cn } from '../../../lib/utils';
8
8
 
9
9
  // Context to share dragging state across panel group
10
10
  const ResizableDraggingContext = React.createContext<{
@@ -1,5 +1,5 @@
1
1
  import { defineStory } from '@djangocfg/playground';
2
- import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from './resizable';
2
+ import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '.';
3
3
 
4
4
  export default defineStory({
5
5
  title: 'Core/Resizable',
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
 
5
5
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
6
6
 
7
- import { cn } from '../lib/utils';
7
+ import { cn } from '../../../lib/utils';
8
8
 
9
9
  /**
10
10
  * ScrollArea imperative handle for programmatic control
@@ -1,6 +1,6 @@
1
1
  import { defineStory } from '@djangocfg/playground';
2
- import { ScrollArea, ScrollBar } from './scroll-area';
3
- import { Separator } from './separator';
2
+ import { ScrollArea, ScrollBar } from '.';
3
+ import { Separator } from '../../layout/separator';
4
4
 
5
5
  export default defineStory({
6
6
  title: 'Core/Scroll Area',
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
 
3
- import { cn } from '../lib/utils';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
5
  interface SectionProps {
6
6
  children: ReactNode;
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
 
5
5
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
6
6
 
7
- import { cn } from '../lib/utils';
7
+ import { cn } from '../../../lib/utils';
8
8
 
9
9
  const Separator = React.forwardRef<
10
10
  React.ElementRef<typeof SeparatorPrimitive.Root>,
@@ -1,5 +1,5 @@
1
1
  import { defineStory } from '@djangocfg/playground';
2
- import { Separator } from './separator';
2
+ import { Separator } from '.';
3
3
 
4
4
  export default defineStory({
5
5
  title: 'Core/Separator',
@@ -1,4 +1,4 @@
1
- import { cn } from '../lib/utils';
1
+ import { cn } from '../../../lib/utils';
2
2
 
3
3
  function Skeleton({
4
4
  className,
@@ -1,5 +1,5 @@
1
1
  import { defineStory } from '@djangocfg/playground';
2
- import { Skeleton } from './skeleton';
2
+ import { Skeleton } from '.';
3
3
 
4
4
  export default defineStory({
5
5
  title: 'Core/Skeleton',
@@ -35,7 +35,7 @@
35
35
  import * as React from 'react';
36
36
  import StickyBox from 'react-sticky-box';
37
37
 
38
- import { useIsMobile } from '../hooks/useMobile';
38
+ import { useIsMobile } from '../../../hooks/useMobile';
39
39
 
40
40
  export interface StickyProps extends React.HTMLAttributes<HTMLDivElement> {
41
41
  /** Stick to bottom instead of top */
@@ -1,5 +1,5 @@
1
1
  import { defineStory } from '@djangocfg/playground';
2
- import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './accordion';
2
+ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '.';
3
3
 
4
4
  export default defineStory({
5
5
  title: 'Core/Accordion',
@@ -5,8 +5,8 @@ import * as React from 'react';
5
5
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
6
6
  import { ChevronDownIcon } from '@radix-ui/react-icons';
7
7
 
8
- import { useStoredValue, type StorageType, type UseStoredValueOptions } from '../hooks/useStoredValue';
9
- import { cn } from '../lib/utils';
8
+ import { useStoredValue, type StorageType, type UseStoredValueOptions } from '../../../hooks/useStoredValue';
9
+ import { cn } from '../../../lib/utils';
10
10
 
11
11
  type AccordionSingleProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root> & {
12
12
  type: 'single'
@@ -1,7 +1,7 @@
1
1
  import { useState } from 'react';
2
2
  import { defineStory } from '@djangocfg/playground';
3
- import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './collapsible';
4
- import { Button } from './button';
3
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '.';
4
+ import { Button } from '../../forms/button';
5
5
  import { ChevronsUpDown } from 'lucide-react';
6
6
 
7
7
  export default defineStory({
@@ -9,9 +9,9 @@ import {
9
9
  CommandList,
10
10
  CommandSeparator,
11
11
  CommandShortcut,
12
- } from './command';
12
+ } from '.';
13
13
  import { useState } from 'react';
14
- import { Button } from './button';
14
+ import { Button } from '../../forms/button';
15
15
  import { Calendar, Smile, Calculator, User, CreditCard, Settings } from 'lucide-react';
16
16
 
17
17
  export default defineStory({
@@ -6,8 +6,8 @@ import * as React from 'react';
6
6
  import { DialogProps} from '@radix-ui/react-dialog';
7
7
  import { MagnifyingGlassIcon } from '@radix-ui/react-icons';
8
8
 
9
- import { cn } from '../lib/utils';
10
- import { Dialog, DialogContent } from './dialog';
9
+ import { cn } from '../../../lib/utils';
10
+ import { Dialog, DialogContent } from '../../overlay/dialog';
11
11
 
12
12
  const Command = React.forwardRef<
13
13
  React.ElementRef<typeof CommandPrimitive>,
@@ -14,7 +14,7 @@ import {
14
14
  ContextMenuRadioGroup,
15
15
  ContextMenuRadioItem,
16
16
  ContextMenuLabel,
17
- } from './context-menu';
17
+ } from '.';
18
18
 
19
19
  export default defineStory({
20
20
  title: 'Core/ContextMenu',
@@ -5,7 +5,7 @@ import * as React from 'react';
5
5
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
6
6
  import { CheckIcon, ChevronRightIcon, DotFilledIcon } from '@radix-ui/react-icons';
7
7
 
8
- import { cn } from '../lib/utils';
8
+ import { cn } from '../../../lib/utils';
9
9
 
10
10
  const ContextMenu = ContextMenuPrimitive.Root
11
11
 
@@ -14,8 +14,8 @@ import {
14
14
  DropdownMenuSubContent,
15
15
  DropdownMenuSubTrigger,
16
16
  DropdownMenuRadioGroup,
17
- } from './dropdown-menu';
18
- import { Button } from './button';
17
+ } from '.';
18
+ import { Button } from '../../forms/button';
19
19
  import { useState } from 'react';
20
20
  import {
21
21
  User,
@@ -3,7 +3,7 @@
3
3
  import { Check, ChevronRight, Circle } from 'lucide-react';
4
4
  import * as React from 'react';
5
5
 
6
- import { cn } from '../lib';
6
+ import { cn } from '../../../lib';
7
7
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
8
8
 
9
9
  const DropdownMenu = DropdownMenuPrimitive.Root
@@ -3,7 +3,7 @@
3
3
  import { Check, ChevronRight, Circle } from 'lucide-react';
4
4
  import * as React from 'react';
5
5
 
6
- import { cn } from '../lib';
6
+ import { cn } from '../../../lib';
7
7
  import * as MenubarPrimitive from '@radix-ui/react-menubar';
8
8
 
9
9
  function MenubarMenu({
@@ -14,7 +14,7 @@ import {
14
14
  MenubarCheckboxItem,
15
15
  MenubarRadioGroup,
16
16
  MenubarRadioItem,
17
- } from './menubar';
17
+ } from '.';
18
18
 
19
19
  export default defineStory({
20
20
  title: 'Core/Menubar',
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority';
4
4
  import { ChevronDown } from 'lucide-react';
5
5
  import * as React from 'react';
6
6
 
7
- import { cn } from '../lib';
7
+ import { cn } from '../../../lib';
8
8
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
9
9
 
10
10
  const NavigationMenu = React.forwardRef<
@@ -7,8 +7,8 @@ import {
7
7
  NavigationMenuContent,
8
8
  NavigationMenuLink,
9
9
  navigationMenuTriggerStyle,
10
- } from './navigation-menu';
11
- import { cn } from '../lib';
10
+ } from '.';
11
+ import { cn } from '../../../lib';
12
12
 
13
13
  export default defineStory({
14
14
  title: 'Core/NavigationMenu',
@@ -5,13 +5,13 @@ import * as React from 'react';
5
5
 
6
6
  import * as TabsPrimitive from '@radix-ui/react-tabs';
7
7
 
8
- import { useIsMobile } from '../hooks';
9
- import { useStoredValue, type StorageType } from '../hooks/useStoredValue';
8
+ import { useIsMobile } from '../../../hooks';
9
+ import { useStoredValue, type StorageType } from '../../../hooks/useStoredValue';
10
10
  import { useAppT } from '@djangocfg/i18n';
11
- import { cn } from '../lib/utils';
12
- import { Button } from './button';
13
- import { ScrollArea, ScrollBar } from './scroll-area';
14
- import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from './sheet';
11
+ import { cn } from '../../../lib/utils';
12
+ import { Button } from '../../forms/button';
13
+ import { ScrollArea, ScrollBar } from '../../layout/scroll-area';
14
+ import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from '../../overlay/sheet';
15
15
 
16
16
  // ─────────────────────────────────────────────────────────────────────────
17
17
  // Tabs Root with Mobile Sheet Support