@exsto/ds 0.0.1-rc.13 → 0.0.1-rc.15

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 (184) hide show
  1. package/dist/date-picker.js +1 -344
  2. package/dist/index.js +75 -4513
  3. package/dist/rich-text-editor.js +3 -904
  4. package/dist/source-hash.txt +1 -1
  5. package/dist/styles.css +9 -8
  6. package/dist/ui/src/components/edyn/animated-number/animated-number.js +108 -0
  7. package/dist/ui/src/components/edyn/animated-number/animated-number.js.map +1 -0
  8. package/dist/ui/src/components/edyn/audio-player/audio-player.js +86 -0
  9. package/dist/ui/src/components/edyn/audio-player/audio-player.js.map +1 -0
  10. package/dist/ui/src/components/edyn/date-picker/date-picker.js +250 -0
  11. package/dist/ui/src/components/edyn/date-picker/date-picker.js.map +1 -0
  12. package/dist/ui/src/components/edyn/date-picker/date-text.js +105 -0
  13. package/dist/ui/src/components/edyn/date-picker/date-text.js.map +1 -0
  14. package/dist/ui/src/components/edyn/date-range-picker/date-range-picker.js +59 -0
  15. package/dist/ui/src/components/edyn/date-range-picker/date-range-picker.js.map +1 -0
  16. package/dist/ui/src/components/edyn/initials-avatar/initials-avatar.js +86 -0
  17. package/dist/ui/src/components/edyn/initials-avatar/initials-avatar.js.map +1 -0
  18. package/dist/ui/src/components/edyn/multi-select/multi-select.js +332 -0
  19. package/dist/ui/src/components/edyn/multi-select/multi-select.js.map +1 -0
  20. package/dist/ui/src/components/edyn/progress-line/progress-line.js +100 -0
  21. package/dist/ui/src/components/edyn/progress-line/progress-line.js.map +1 -0
  22. package/dist/ui/src/components/edyn/rich-text-content/allow-list.js +37 -0
  23. package/dist/ui/src/components/edyn/rich-text-content/allow-list.js.map +1 -0
  24. package/dist/ui/src/components/edyn/rich-text-content/rich-text-content.js +124 -0
  25. package/dist/ui/src/components/edyn/rich-text-content/rich-text-content.js.map +1 -0
  26. package/dist/ui/src/components/edyn/rich-text-editor/extensions.js +124 -0
  27. package/dist/ui/src/components/edyn/rich-text-editor/extensions.js.map +1 -0
  28. package/dist/ui/src/components/edyn/rich-text-editor/mention-list.js +232 -0
  29. package/dist/ui/src/components/edyn/rich-text-editor/mention-list.js.map +1 -0
  30. package/dist/ui/src/components/edyn/rich-text-editor/rich-text-editor.js +244 -0
  31. package/dist/ui/src/components/edyn/rich-text-editor/rich-text-editor.js.map +1 -0
  32. package/dist/ui/src/components/edyn/rich-text-editor/serialize.js +55 -0
  33. package/dist/ui/src/components/edyn/rich-text-editor/serialize.js.map +1 -0
  34. package/dist/ui/src/components/edyn/rich-text-editor/sync.js +34 -0
  35. package/dist/ui/src/components/edyn/rich-text-editor/sync.js.map +1 -0
  36. package/dist/ui/src/components/edyn/rich-text-editor/toolbar.js +235 -0
  37. package/dist/ui/src/components/edyn/rich-text-editor/toolbar.js.map +1 -0
  38. package/dist/ui/src/components/edyn/rich-text-editor/types.js +26 -0
  39. package/dist/ui/src/components/edyn/rich-text-editor/types.js.map +1 -0
  40. package/dist/ui/src/components/edyn/video-player/video-player.js +132 -0
  41. package/dist/ui/src/components/edyn/video-player/video-player.js.map +1 -0
  42. package/dist/ui/src/components/ui/accordion/accordion.js +83 -0
  43. package/dist/ui/src/components/ui/accordion/accordion.js.map +1 -0
  44. package/dist/ui/src/components/ui/alert/alert.js +47 -0
  45. package/dist/ui/src/components/ui/alert/alert.js.map +1 -0
  46. package/dist/ui/src/components/ui/alert-dialog/alert-dialog.js +95 -0
  47. package/dist/ui/src/components/ui/alert-dialog/alert-dialog.js.map +1 -0
  48. package/dist/ui/src/components/ui/aspect-ratio/aspect-ratio.js +15 -0
  49. package/dist/ui/src/components/ui/aspect-ratio/aspect-ratio.js.map +1 -0
  50. package/dist/ui/src/components/ui/attachment/attachment.js +105 -0
  51. package/dist/ui/src/components/ui/attachment/attachment.js.map +1 -0
  52. package/dist/ui/src/components/ui/avatar/avatar.js +51 -0
  53. package/dist/ui/src/components/ui/avatar/avatar.js.map +1 -0
  54. package/dist/ui/src/components/ui/badge/badge.js +47 -0
  55. package/dist/ui/src/components/ui/badge/badge.js.map +1 -0
  56. package/dist/ui/src/components/ui/breadcrumb/breadcrumb.js +73 -0
  57. package/dist/ui/src/components/ui/breadcrumb/breadcrumb.js.map +1 -0
  58. package/dist/ui/src/components/ui/bubble/bubble.js +74 -0
  59. package/dist/ui/src/components/ui/bubble/bubble.js.map +1 -0
  60. package/dist/{chunks/input-syWxjY2U.js → ui/src/components/ui/button/button.js} +3 -82
  61. package/dist/ui/src/components/ui/button/button.js.map +1 -0
  62. package/dist/ui/src/components/ui/button-group/button-group.js +37 -0
  63. package/dist/ui/src/components/ui/button-group/button-group.js.map +1 -0
  64. package/dist/{chunks/date-range-picker-CWVcHgy2.js → ui/src/components/ui/calendar/calendar.js} +6 -100
  65. package/dist/ui/src/components/ui/calendar/calendar.js.map +1 -0
  66. package/dist/ui/src/components/ui/card/card.js +57 -0
  67. package/dist/ui/src/components/ui/card/card.js.map +1 -0
  68. package/dist/ui/src/components/ui/carousel/carousel.js +136 -0
  69. package/dist/ui/src/components/ui/carousel/carousel.js.map +1 -0
  70. package/dist/ui/src/components/ui/chart/chart.js +168 -0
  71. package/dist/ui/src/components/ui/chart/chart.js.map +1 -0
  72. package/dist/ui/src/components/ui/checkbox/checkbox.js +21 -0
  73. package/dist/ui/src/components/ui/checkbox/checkbox.js.map +1 -0
  74. package/dist/ui/src/components/ui/collapsible/collapsible.js +26 -0
  75. package/dist/ui/src/components/ui/collapsible/collapsible.js.map +1 -0
  76. package/dist/ui/src/components/ui/combobox/combobox.js +85 -0
  77. package/dist/ui/src/components/ui/combobox/combobox.js.map +1 -0
  78. package/dist/ui/src/components/ui/command/command.js +118 -0
  79. package/dist/ui/src/components/ui/command/command.js.map +1 -0
  80. package/dist/ui/src/components/ui/context-menu/context-menu.js +134 -0
  81. package/dist/ui/src/components/ui/context-menu/context-menu.js.map +1 -0
  82. package/dist/ui/src/components/ui/dialog/dialog.js +92 -0
  83. package/dist/ui/src/components/ui/dialog/dialog.js.map +1 -0
  84. package/dist/ui/src/components/ui/direction/direction.js +2 -0
  85. package/dist/ui/src/components/ui/drawer/drawer.js +86 -0
  86. package/dist/ui/src/components/ui/drawer/drawer.js.map +1 -0
  87. package/dist/ui/src/components/ui/dropdown-menu/dropdown-menu.js +160 -0
  88. package/dist/ui/src/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
  89. package/dist/ui/src/components/ui/empty/empty.js +61 -0
  90. package/dist/ui/src/components/ui/empty/empty.js.map +1 -0
  91. package/dist/ui/src/components/ui/field/field.js +36 -0
  92. package/dist/ui/src/components/ui/field/field.js.map +1 -0
  93. package/dist/ui/src/components/ui/hover-card/hover-card.js +38 -0
  94. package/dist/ui/src/components/ui/hover-card/hover-card.js.map +1 -0
  95. package/dist/ui/src/components/ui/indicator/indicator.js +79 -0
  96. package/dist/ui/src/components/ui/indicator/indicator.js.map +1 -0
  97. package/dist/ui/src/components/ui/input/input.js +16 -0
  98. package/dist/ui/src/components/ui/input/input.js.map +1 -0
  99. package/dist/ui/src/components/ui/input-group/input-group.js +77 -0
  100. package/dist/ui/src/components/ui/input-group/input-group.js.map +1 -0
  101. package/dist/ui/src/components/ui/input-otp/input-otp.js +48 -0
  102. package/dist/ui/src/components/ui/input-otp/input-otp.js.map +1 -0
  103. package/dist/ui/src/components/ui/item/item.js +122 -0
  104. package/dist/ui/src/components/ui/item/item.js.map +1 -0
  105. package/dist/ui/src/components/ui/kbd/kbd.js +21 -0
  106. package/dist/ui/src/components/ui/kbd/kbd.js.map +1 -0
  107. package/dist/ui/src/components/ui/label/label.js +14 -0
  108. package/dist/ui/src/components/ui/label/label.js.map +1 -0
  109. package/dist/ui/src/components/ui/marker/marker.js +44 -0
  110. package/dist/ui/src/components/ui/marker/marker.js.map +1 -0
  111. package/dist/ui/src/components/ui/menubar/menubar.js +137 -0
  112. package/dist/ui/src/components/ui/menubar/menubar.js.map +1 -0
  113. package/dist/ui/src/components/ui/message/message.js +50 -0
  114. package/dist/ui/src/components/ui/message/message.js.map +1 -0
  115. package/dist/ui/src/components/ui/message-scroller/message-scroller.js +61 -0
  116. package/dist/ui/src/components/ui/message-scroller/message-scroller.js.map +1 -0
  117. package/dist/ui/src/components/ui/native-select/native-select.js +39 -0
  118. package/dist/ui/src/components/ui/native-select/native-select.js.map +1 -0
  119. package/dist/ui/src/components/ui/navigation-menu/navigation-menu.js +84 -0
  120. package/dist/ui/src/components/ui/navigation-menu/navigation-menu.js.map +1 -0
  121. package/dist/ui/src/components/ui/pagination/pagination.js +104 -0
  122. package/dist/ui/src/components/ui/pagination/pagination.js.map +1 -0
  123. package/dist/ui/src/components/ui/popover/popover.js +56 -0
  124. package/dist/ui/src/components/ui/popover/popover.js.map +1 -0
  125. package/dist/ui/src/components/ui/progress/progress.js +70 -0
  126. package/dist/ui/src/components/ui/progress/progress.js.map +1 -0
  127. package/dist/ui/src/components/ui/questionnaire/questionnaire.js +171 -0
  128. package/dist/ui/src/components/ui/questionnaire/questionnaire.js.map +1 -0
  129. package/dist/ui/src/components/ui/radio-group/radio-group.js +29 -0
  130. package/dist/ui/src/components/ui/radio-group/radio-group.js.map +1 -0
  131. package/dist/ui/src/components/ui/resizable/resizable.js +29 -0
  132. package/dist/ui/src/components/ui/resizable/resizable.js.map +1 -0
  133. package/dist/ui/src/components/ui/scroll-area/scroll-area.js +119 -0
  134. package/dist/ui/src/components/ui/scroll-area/scroll-area.js.map +1 -0
  135. package/dist/ui/src/components/ui/select/select.js +99 -0
  136. package/dist/ui/src/components/ui/select/select.js.map +1 -0
  137. package/dist/ui/src/components/ui/separator/separator.js +30 -0
  138. package/dist/ui/src/components/ui/separator/separator.js.map +1 -0
  139. package/dist/ui/src/components/ui/sheet/sheet.js +89 -0
  140. package/dist/ui/src/components/ui/sheet/sheet.js.map +1 -0
  141. package/dist/ui/src/components/ui/sidebar/sidebar.js +383 -0
  142. package/dist/ui/src/components/ui/sidebar/sidebar.js.map +1 -0
  143. package/dist/ui/src/components/ui/skeleton/skeleton.js +14 -0
  144. package/dist/ui/src/components/ui/skeleton/skeleton.js.map +1 -0
  145. package/dist/ui/src/components/ui/slider/slider.js +49 -0
  146. package/dist/ui/src/components/ui/slider/slider.js.map +1 -0
  147. package/dist/ui/src/components/ui/spinner/spinner.js +28 -0
  148. package/dist/ui/src/components/ui/spinner/spinner.js.map +1 -0
  149. package/dist/ui/src/components/ui/switch/switch.js +20 -0
  150. package/dist/ui/src/components/ui/switch/switch.js.map +1 -0
  151. package/dist/ui/src/components/ui/table/table.js +68 -0
  152. package/dist/ui/src/components/ui/table/table.js.map +1 -0
  153. package/dist/ui/src/components/ui/tabs/tabs.js +50 -0
  154. package/dist/ui/src/components/ui/tabs/tabs.js.map +1 -0
  155. package/dist/ui/src/components/ui/textarea/textarea.js +14 -0
  156. package/dist/ui/src/components/ui/textarea/textarea.js.map +1 -0
  157. package/dist/ui/src/components/ui/toast/toast.js +124 -0
  158. package/dist/ui/src/components/ui/toast/toast.js.map +1 -0
  159. package/dist/ui/src/components/ui/toggle/toggle.js +37 -0
  160. package/dist/ui/src/components/ui/toggle/toggle.js.map +1 -0
  161. package/dist/ui/src/components/ui/toggle-group/toggle-group.js +56 -0
  162. package/dist/ui/src/components/ui/toggle-group/toggle-group.js.map +1 -0
  163. package/dist/ui/src/components/ui/tooltip/tooltip.js +42 -0
  164. package/dist/ui/src/components/ui/tooltip/tooltip.js.map +1 -0
  165. package/dist/ui/src/hooks/use-media-player.js +140 -0
  166. package/dist/ui/src/hooks/use-media-player.js.map +1 -0
  167. package/dist/ui/src/hooks/use-merged-refs.js +18 -0
  168. package/dist/ui/src/hooks/use-merged-refs.js.map +1 -0
  169. package/dist/ui/src/hooks/use-mobile.js +20 -0
  170. package/dist/ui/src/hooks/use-mobile.js.map +1 -0
  171. package/dist/ui/src/lib/first-weekday.js +34 -0
  172. package/dist/ui/src/lib/first-weekday.js.map +1 -0
  173. package/dist/ui/src/lib/popup-list.js +26 -0
  174. package/dist/ui/src/lib/popup-list.js.map +1 -0
  175. package/dist/ui/src/lib/utils.js +21 -0
  176. package/dist/ui/src/lib/utils.js.map +1 -0
  177. package/package.json +1 -1
  178. package/dist/chunks/date-range-picker-CWVcHgy2.js.map +0 -1
  179. package/dist/chunks/input-syWxjY2U.js.map +0 -1
  180. package/dist/chunks/toggle-Bxg8P-61.js +0 -490
  181. package/dist/chunks/toggle-Bxg8P-61.js.map +0 -1
  182. package/dist/date-picker.js.map +0 -1
  183. package/dist/index.js.map +0 -1
  184. package/dist/rich-text-editor.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.js","names":[],"sources":["../../../../../../../ui/src/components/ui/sidebar/sidebar.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { useIsMobile } from '@edyn/ui/hooks/use-mobile';\nimport { cn } from '@edyn/ui/lib/utils';\nimport { IconLayoutSidebar } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { Button } from '../button';\nimport { Input } from '../input';\nimport { Separator } from '../separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '../sheet';\nimport { Skeleton } from '../skeleton';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype TSidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<TSidebarContextProps | null>(null);\n\nexport const useSidebar = () => {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n};\n\nexport const SidebarProvider = ({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n // biome-ignore lint/suspicious/noDocumentCookie: match shadcn's synchronous, broadly supported persistence contract.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<TSidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n );\n};\n\nexport const Sidebar = ({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 motion-reduce:transition-none ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n 'fixed inset-y-0 top-(--sidebar-top) z-10 hidden h-[calc(100svh-var(--sidebar-top))] w-(--sidebar-width) transition-[left,right,width] duration-200 motion-reduce:transition-none ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport const SidebarTrigger = ({ className, onClick, ...props }: React.ComponentProps<typeof Button>) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <IconLayoutSidebar />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n};\n\nexport const SidebarRail = ({ className, ...props }: React.ComponentProps<'button'>) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 transition-all motion-reduce:transition-none ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const SidebarInset = ({ className, ...props }: React.ComponentProps<'main'>) => {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const SidebarInput = ({ className, ...props }: React.ComponentProps<typeof Input>) => {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('h-8 w-full bg-background shadow-none', className)} {...props} />;\n};\n\nexport const SidebarHeader = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n};\n\nexport const SidebarFooter = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n};\n\nexport const SidebarSeparator = ({ className, ...props }: React.ComponentProps<typeof Separator>) => {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n};\n\nexport const SidebarContent = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n data-focus=\"inset\"\n className={cn('no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n};\n\nexport const SidebarGroup = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n};\n\nexport const SidebarGroupLabel = ({ className, render, ...props }: useRender.ComponentProps<'div'> & React.ComponentProps<'div'>) => {\n return useRender({\n defaultTagName: 'div',\n props: mergeProps<'div'>(\n {\n className: cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 motion-reduce:transition-none ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: 'sidebar-group-label',\n sidebar: 'group-label',\n },\n });\n};\n\nexport const SidebarGroupAction = ({ className, render, ...props }: useRender.ComponentProps<'button'> & React.ComponentProps<'button'>) => {\n return useRender({\n defaultTagName: 'button',\n props: mergeProps<'button'>(\n {\n className: cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform motion-reduce:transition-none group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: 'sidebar-group-action',\n sidebar: 'group-action',\n },\n });\n};\n\nexport const SidebarGroupContent = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n};\n\nexport const SidebarMenu = ({ className, ...props }: React.ComponentProps<'ul'>) => {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-0', className)} {...props} />;\n};\n\nexport const SidebarMenuItem = ({ className, ...props }: React.ComponentProps<'li'>) => {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n};\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] motion-reduce:transition-none group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport const SidebarMenuButton = ({\n render,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: useRender.ComponentProps<'button'> &\n React.ComponentProps<'button'> & {\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>) => {\n const { isMobile, state } = useSidebar();\n const comp = useRender({\n defaultTagName: 'button',\n props: mergeProps<'button'>(\n {\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n props,\n ),\n render: !tooltip ? render : <TooltipTrigger render={render} />,\n state: {\n slot: 'sidebar-menu-button',\n sidebar: 'menu-button',\n size,\n active: isActive,\n },\n });\n\n if (!tooltip) {\n return comp;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n {comp}\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n};\n\nexport const SidebarMenuAction = ({\n className,\n render,\n showOnHover = false,\n ...props\n}: useRender.ComponentProps<'button'> &\n React.ComponentProps<'button'> & {\n showOnHover?: boolean;\n }) => {\n return useRender({\n defaultTagName: 'button',\n props: mergeProps<'button'>(\n {\n className: cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform motion-reduce:transition-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0',\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: 'sidebar-menu-action',\n sidebar: 'menu-action',\n },\n });\n};\n\nexport const SidebarMenuBadge = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const SidebarMenuSkeleton = ({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) => {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n });\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n};\n\nexport const SidebarMenuSub = ({ className, ...props }: React.ComponentProps<'ul'>) => {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const SidebarMenuSubItem = ({ className, ...props }: React.ComponentProps<'li'>) => {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n};\n\nexport const SidebarMenuSubButton = ({\n render,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: useRender.ComponentProps<'a'> &\n React.ComponentProps<'a'> & {\n size?: 'sm' | 'md';\n isActive?: boolean;\n }) => {\n return useRender({\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: 'sidebar-menu-sub-button',\n sidebar: 'menu-sub-button',\n size,\n active: isActive,\n },\n });\n};\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region ../ui/src/components/ui/skeleton/skeleton.tsx
4
+ var Skeleton = ({ className, ...props }) => {
5
+ return /* @__PURE__ */ jsx("div", {
6
+ "data-slot": "skeleton",
7
+ className: cn("animate-pulse rounded-md bg-muted motion-reduce:animate-none", className),
8
+ ...props
9
+ });
10
+ };
11
+ //#endregion
12
+ export { Skeleton };
13
+
14
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../../../../../../../ui/src/components/ui/skeleton/skeleton.tsx"],"sourcesContent":["import { cn } from '@edyn/ui/lib/utils';\n\nexport const Skeleton = ({ className, ...props }: React.ComponentProps<'div'>) => {\n return <div data-slot=\"skeleton\" className={cn('animate-pulse rounded-md bg-muted motion-reduce:animate-none', className)} {...props} />;\n};\n"],"mappings":";;;AAEA,IAAa,YAAY,EAAE,WAAW,GAAG,YAAyC;CAChF,OAAO,oBAAC,OAAD;EAAK,aAAU;EAAW,WAAW,GAAG,gEAAgE,SAAS;EAAG,GAAI;CAAQ,CAAA;AACzI"}
@@ -0,0 +1,49 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Slider } from "@base-ui/react/slider";
4
+ //#region ../ui/src/components/ui/slider/slider.tsx
5
+ var Slider$1 = ({ className, value, defaultValue, min, max, step, disabled, onValueChange, onValueCommitted, name, minStepsBetweenValues, "aria-label": ariaLabel, ...props }) => {
6
+ const thumbValues = Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [value ?? defaultValue ?? min ?? 0];
7
+ const thumbs = Array.from({ length: thumbValues.length }, (_, index) => ({
8
+ id: `thumb-${index}`,
9
+ index
10
+ }));
11
+ return /* @__PURE__ */ jsx(Slider.Root, {
12
+ "data-slot": "slider",
13
+ className: cn("relative flex w-full touch-none items-center", className),
14
+ value,
15
+ defaultValue,
16
+ min,
17
+ max,
18
+ step,
19
+ disabled,
20
+ onValueChange,
21
+ onValueCommitted,
22
+ name,
23
+ minStepsBetweenValues,
24
+ thumbAlignment: "edge",
25
+ "aria-label": ariaLabel,
26
+ ...props,
27
+ children: /* @__PURE__ */ jsxs(Slider.Control, {
28
+ "data-slot": "slider-control",
29
+ className: "relative flex w-full cursor-pointer touch-none items-center py-3 data-disabled:cursor-not-allowed data-disabled:opacity-50",
30
+ children: [/* @__PURE__ */ jsx(Slider.Track, {
31
+ "data-slot": "slider-track",
32
+ className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted",
33
+ children: /* @__PURE__ */ jsx(Slider.Indicator, {
34
+ "data-slot": "slider-indicator",
35
+ className: "absolute h-full bg-primary"
36
+ })
37
+ }), thumbs.map((thumb) => /* @__PURE__ */ jsx(Slider.Thumb, {
38
+ index: thumb.index,
39
+ getAriaLabel: ariaLabel ? () => thumbValues.length > 1 ? `${ariaLabel} ${thumb.index + 1}` : ariaLabel : void 0,
40
+ "data-slot": "slider-thumb",
41
+ className: "relative block size-4 shrink-0 rounded-full border border-primary/50 bg-background shadow-sm outline-none transition-colors after:absolute after:-inset-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 data-disabled:pointer-events-none data-disabled:opacity-50"
42
+ }, thumb.id))]
43
+ })
44
+ });
45
+ };
46
+ //#endregion
47
+ export { Slider$1 as Slider };
48
+
49
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.js","names":[],"sources":["../../../../../../../ui/src/components/ui/slider/slider.tsx"],"sourcesContent":["import { Slider as SliderPrimitive } from '@base-ui/react/slider';\n\nimport { cn } from '@edyn/ui/lib/utils';\n\nexport type TSliderValue = number | readonly number[];\n\nexport interface ISliderProps<TValue extends TSliderValue = number> {\n value?: TValue;\n defaultValue?: TValue;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n onValueChange?: (value: TValue extends number ? number : TValue, eventDetails: SliderPrimitive.Root.ChangeEventDetails) => void;\n onValueCommitted?: (value: TValue extends number ? number : TValue, eventDetails: SliderPrimitive.Root.CommitEventDetails) => void;\n className?: string;\n name?: string;\n minStepsBetweenValues?: number;\n 'aria-label'?: string;\n}\n\nexport const Slider = <TValue extends TSliderValue = number>({\n className,\n value,\n defaultValue,\n min,\n max,\n step,\n disabled,\n onValueChange,\n onValueCommitted,\n name,\n minStepsBetweenValues,\n 'aria-label': ariaLabel,\n ...props\n}: ISliderProps<TValue>) => {\n const thumbValues = Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [value ?? defaultValue ?? min ?? 0];\n const thumbs = Array.from({ length: thumbValues.length }, (_, index) => ({ id: `thumb-${index}`, index }));\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n className={cn('relative flex w-full touch-none items-center', className)}\n value={value as never}\n defaultValue={defaultValue as never}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n onValueChange={onValueChange as never}\n onValueCommitted={onValueCommitted as never}\n name={name}\n minStepsBetweenValues={minStepsBetweenValues}\n thumbAlignment=\"edge\"\n aria-label={ariaLabel}\n {...(props as object)}\n >\n <SliderPrimitive.Control\n data-slot=\"slider-control\"\n className=\"relative flex w-full cursor-pointer touch-none items-center py-3 data-disabled:cursor-not-allowed data-disabled:opacity-50\"\n >\n <SliderPrimitive.Track data-slot=\"slider-track\" className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted\">\n <SliderPrimitive.Indicator data-slot=\"slider-indicator\" className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n {thumbs.map((thumb) => (\n <SliderPrimitive.Thumb\n key={thumb.id}\n index={thumb.index}\n getAriaLabel={ariaLabel ? () => (thumbValues.length > 1 ? `${ariaLabel} ${thumb.index + 1}` : ariaLabel) : undefined}\n data-slot=\"slider-thumb\"\n className=\"relative block size-4 shrink-0 rounded-full border border-primary/50 bg-background shadow-sm outline-none transition-colors after:absolute after:-inset-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 data-disabled:pointer-events-none data-disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n );\n};\n"],"mappings":";;;;AAqBA,IAAa,YAAgD,EAC3D,WACA,OACA,cACA,KACA,KACA,MACA,UACA,eACA,kBACA,MACA,uBACA,cAAc,WACd,GAAG,YACuB;CAC1B,MAAM,cAAc,MAAM,QAAQ,KAAK,IAAI,QAAQ,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,SAAS,gBAAgB,OAAO,CAAC;CAClI,MAAM,SAAS,MAAM,KAAK,EAAE,QAAQ,YAAY,OAAO,IAAI,GAAG,WAAW;EAAE,IAAI,SAAS;EAAS;CAAM,EAAE;CAEzG,OACE,oBAAC,OAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GAAG,gDAAgD,SAAS;EAChE;EACO;EACT;EACA;EACC;EACI;EACK;EACG;EACZ;EACiB;EACvB,gBAAe;EACf,cAAY;EACZ,GAAK;EAEL,UAAA,qBAAC,OAAgB,SAAjB;GACE,aAAU;GACV,WAAU;GAFZ,UAAA,CAIE,oBAAC,OAAgB,OAAjB;IAAuB,aAAU;IAAe,WAAU;IACxD,UAAA,oBAAC,OAAgB,WAAjB;KAA2B,aAAU;KAAmB,WAAU;IAA8B,CAAA;GAC3E,CAAA,GACtB,OAAO,KAAK,UACX,oBAAC,OAAgB,OAAjB;IAEE,OAAO,MAAM;IACb,cAAc,kBAAmB,YAAY,SAAS,IAAI,GAAG,UAAU,GAAG,MAAM,QAAQ,MAAM,YAAa,KAAA;IAC3G,aAAU;IACV,WAAU;GACX,GALM,MAAM,EAKZ,CACF,CACsB;;CACL,CAAA;AAE1B"}
@@ -0,0 +1,28 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { IconLoader } from "@tabler/icons-react";
5
+ //#region ../ui/src/components/ui/spinner/spinner.tsx
6
+ var spinnerVariants = cva("animate-spin motion-reduce:animate-none", {
7
+ variants: { size: {
8
+ xs: "size-3",
9
+ sm: "size-4",
10
+ default: "size-5",
11
+ lg: "size-6",
12
+ xl: "size-8"
13
+ } },
14
+ defaultVariants: { size: "default" }
15
+ });
16
+ var Spinner = ({ className, size = "default", ...props }) => {
17
+ return /* @__PURE__ */ jsx(IconLoader, {
18
+ "data-slot": "spinner",
19
+ role: "status",
20
+ "aria-label": "Loading",
21
+ className: cn(spinnerVariants({ size }), className),
22
+ ...props
23
+ });
24
+ };
25
+ //#endregion
26
+ export { Spinner, spinnerVariants };
27
+
28
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../../../../../../ui/src/components/ui/spinner/spinner.tsx"],"sourcesContent":["import { cn } from '@edyn/ui/lib/utils';\nimport { IconLoader } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nexport const spinnerVariants = cva('animate-spin motion-reduce:animate-none', {\n variants: {\n size: {\n xs: 'size-3',\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n xl: 'size-8',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nexport const Spinner = ({ className, size = 'default', ...props }: React.ComponentProps<'svg'> & VariantProps<typeof spinnerVariants>) => {\n return <IconLoader data-slot=\"spinner\" role=\"status\" aria-label=\"Loading\" className={cn(spinnerVariants({ size }), className)} {...props} />;\n};\n"],"mappings":";;;;;AAIA,IAAa,kBAAkB,IAAI,2CAA2C;CAC5E,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,UACR;AACF,CAAC;AAED,IAAa,WAAW,EAAE,WAAW,OAAO,WAAW,GAAG,YAAgF;CACxI,OAAO,oBAAC,YAAD;EAAY,aAAU;EAAU,MAAK;EAAS,cAAW;EAAU,WAAW,GAAG,gBAAgB,EAAE,KAAK,CAAC,GAAG,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC7I"}
@@ -0,0 +1,20 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Switch } from "@base-ui/react/switch";
4
+ //#region ../ui/src/components/ui/switch/switch.tsx
5
+ var Switch$1 = ({ className, size = "default", ...props }) => {
6
+ return /* @__PURE__ */ jsx(Switch.Root, {
7
+ "data-slot": "switch",
8
+ "data-size": size,
9
+ className: cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all motion-reduce:transition-none outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-4.5 data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", className),
10
+ ...props,
11
+ children: /* @__PURE__ */ jsx(Switch.Thumb, {
12
+ "data-slot": "switch-thumb",
13
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform motion-reduce:transition-none group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"
14
+ })
15
+ });
16
+ };
17
+ //#endregion
18
+ export { Switch$1 as Switch };
19
+
20
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","names":[],"sources":["../../../../../../../ui/src/components/ui/switch/switch.tsx"],"sourcesContent":["import { Switch as SwitchPrimitive } from '@base-ui/react/switch';\n\nimport { cn } from '@edyn/ui/lib/utils';\n\nexport const Switch = ({\n className,\n size = 'default',\n ...props\n}: SwitchPrimitive.Root.Props & {\n size?: 'sm' | 'default';\n}) => {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all motion-reduce:transition-none outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-4.5 data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform motion-reduce:transition-none group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n );\n};\n"],"mappings":";;;;AAIA,IAAa,YAAU,EACrB,WACA,OAAO,WACP,GAAG,YAGC;CACJ,OACE,oBAAC,OAAgB,MAAjB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT,mqBACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,OAAgB,OAAjB;GACE,aAAU;GACV,WAAU;EACX,CAAA;CACmB,CAAA;AAE1B"}
@@ -0,0 +1,68 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region ../ui/src/components/ui/table/table.tsx
4
+ var Table = ({ className, containerClassName, ...props }) => {
5
+ return /* @__PURE__ */ jsx("div", {
6
+ "data-slot": "table-container",
7
+ "data-focus": "inset",
8
+ className: cn("relative w-full overflow-x-auto", containerClassName),
9
+ children: /* @__PURE__ */ jsx("table", {
10
+ "data-slot": "table",
11
+ className: cn("w-full caption-bottom text-sm", className),
12
+ ...props
13
+ })
14
+ });
15
+ };
16
+ var TableHeader = ({ className, ...props }) => {
17
+ return /* @__PURE__ */ jsx("thead", {
18
+ "data-slot": "table-header",
19
+ className: cn("[&_tr]:border-b", className),
20
+ ...props
21
+ });
22
+ };
23
+ var TableBody = ({ className, ...props }) => {
24
+ return /* @__PURE__ */ jsx("tbody", {
25
+ "data-slot": "table-body",
26
+ className: cn("[&_tr:last-child]:border-0", className),
27
+ ...props
28
+ });
29
+ };
30
+ var TableFooter = ({ className, ...props }) => {
31
+ return /* @__PURE__ */ jsx("tfoot", {
32
+ "data-slot": "table-footer",
33
+ className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className),
34
+ ...props
35
+ });
36
+ };
37
+ var TableRow = ({ className, ...props }) => {
38
+ return /* @__PURE__ */ jsx("tr", {
39
+ "data-slot": "table-row",
40
+ className: cn("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className),
41
+ ...props
42
+ });
43
+ };
44
+ var TableHead = ({ className, ...props }) => {
45
+ return /* @__PURE__ */ jsx("th", {
46
+ "data-slot": "table-head",
47
+ className: cn("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0", className),
48
+ ...props
49
+ });
50
+ };
51
+ var TableCell = ({ className, ...props }) => {
52
+ return /* @__PURE__ */ jsx("td", {
53
+ "data-slot": "table-cell",
54
+ className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
55
+ ...props
56
+ });
57
+ };
58
+ var TableCaption = ({ className, ...props }) => {
59
+ return /* @__PURE__ */ jsx("caption", {
60
+ "data-slot": "table-caption",
61
+ className: cn("mt-4 text-sm text-muted-foreground", className),
62
+ ...props
63
+ });
64
+ };
65
+ //#endregion
66
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
67
+
68
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","names":[],"sources":["../../../../../../../ui/src/components/ui/table/table.tsx"],"sourcesContent":["import { cn } from '@edyn/ui/lib/utils';\nimport type * as React from 'react';\n\nexport interface ITableProps extends React.ComponentProps<'table'> {\n /**\n * The box around the table, which scrolls it sideways. `overflow-visible` turns that scroll off, for a table whose page or\n * parent scrolls it, or whose sticky header would otherwise stick to this box instead of that one.\n */\n containerClassName?: string;\n}\n\nexport const Table = ({ className, containerClassName, ...props }: ITableProps) => {\n return (\n <div data-slot=\"table-container\" data-focus=\"inset\" className={cn('relative w-full overflow-x-auto', containerClassName)}>\n <table data-slot=\"table\" className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n );\n};\n\nexport const TableHeader = ({ className, ...props }: React.ComponentProps<'thead'>) => {\n return <thead data-slot=\"table-header\" className={cn('[&_tr]:border-b', className)} {...props} />;\n};\n\nexport const TableBody = ({ className, ...props }: React.ComponentProps<'tbody'>) => {\n return <tbody data-slot=\"table-body\" className={cn('[&_tr:last-child]:border-0', className)} {...props} />;\n};\n\nexport const TableFooter = ({ className, ...props }: React.ComponentProps<'tfoot'>) => {\n return <tfoot data-slot=\"table-footer\" className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)} {...props} />;\n};\n\nexport const TableRow = ({ className, ...props }: React.ComponentProps<'tr'>) => {\n return (\n <tr data-slot=\"table-row\" className={cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', className)} {...props} />\n );\n};\n\nexport const TableHead = ({ className, ...props }: React.ComponentProps<'th'>) => {\n return (\n <th\n data-slot=\"table-head\"\n className={cn('h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n );\n};\n\nexport const TableCell = ({ className, ...props }: React.ComponentProps<'td'>) => {\n return <td data-slot=\"table-cell\" className={cn('p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0', className)} {...props} />;\n};\n\nexport const TableCaption = ({ className, ...props }: React.ComponentProps<'caption'>) => {\n return <caption data-slot=\"table-caption\" className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />;\n};\n"],"mappings":";;;AAWA,IAAa,SAAS,EAAE,WAAW,oBAAoB,GAAG,YAAyB;CACjF,OACE,oBAAC,OAAD;EAAK,aAAU;EAAkB,cAAW;EAAQ,WAAW,GAAG,mCAAmC,kBAAkB;EACrH,UAAA,oBAAC,SAAD;GAAO,aAAU;GAAQ,WAAW,GAAG,iCAAiC,SAAS;GAAG,GAAI;EAAQ,CAAA;CAC7F,CAAA;AAET;AAEA,IAAa,eAAe,EAAE,WAAW,GAAG,YAA2C;CACrF,OAAO,oBAAC,SAAD;EAAO,aAAU;EAAe,WAAW,GAAG,mBAAmB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAClG;AAEA,IAAa,aAAa,EAAE,WAAW,GAAG,YAA2C;CACnF,OAAO,oBAAC,SAAD;EAAO,aAAU;EAAa,WAAW,GAAG,8BAA8B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC3G;AAEA,IAAa,eAAe,EAAE,WAAW,GAAG,YAA2C;CACrF,OAAO,oBAAC,SAAD;EAAO,aAAU;EAAe,WAAW,GAAG,2DAA2D,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC1I;AAEA,IAAa,YAAY,EAAE,WAAW,GAAG,YAAwC;CAC/E,OACE,oBAAC,MAAD;EAAI,aAAU;EAAY,WAAW,GAAG,+EAA+E,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnJ;AAEA,IAAa,aAAa,EAAE,WAAW,GAAG,YAAwC;CAChF,OACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GAAG,gHAAgH,SAAS;EACvI,GAAI;CACL,CAAA;AAEL;AAEA,IAAa,aAAa,EAAE,WAAW,GAAG,YAAwC;CAChF,OAAO,oBAAC,MAAD;EAAI,aAAU;EAAa,WAAW,GAAG,oEAAoE,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC9I;AAEA,IAAa,gBAAgB,EAAE,WAAW,GAAG,YAA6C;CACxF,OAAO,oBAAC,WAAD;EAAS,aAAU;EAAgB,WAAW,GAAG,sCAAsC,SAAS;EAAG,GAAI;CAAQ,CAAA;AACxH"}
@@ -0,0 +1,50 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { Tabs } from "@base-ui/react/tabs";
5
+ //#region ../ui/src/components/ui/tabs/tabs.tsx
6
+ var Tabs$1 = ({ value, defaultValue, onValueChange, className, orientation = "horizontal", children, ...props }) => /* @__PURE__ */ jsx(Tabs.Root, {
7
+ "data-slot": "tabs",
8
+ ...props,
9
+ "data-orientation": orientation,
10
+ value,
11
+ defaultValue,
12
+ orientation,
13
+ onValueChange: (next) => {
14
+ onValueChange?.(String(next));
15
+ },
16
+ className: cn("group/tabs flex w-full gap-2 data-[orientation=horizontal]:flex-col", className),
17
+ children
18
+ });
19
+ var tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-8 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none", {
20
+ variants: { variant: {
21
+ default: "bg-muted",
22
+ line: "gap-1 bg-transparent"
23
+ } },
24
+ defaultVariants: { variant: "default" }
25
+ });
26
+ var TabsList = ({ className, variant = "default", children, ...props }) => /* @__PURE__ */ jsx(Tabs.List, {
27
+ "data-slot": "tabs-list",
28
+ ...props,
29
+ "data-variant": variant,
30
+ className: cn(tabsListVariants({ variant }), className),
31
+ children
32
+ });
33
+ var TabsTrigger = ({ value, disabled, className, children, ...props }) => /* @__PURE__ */ jsx(Tabs.Tab, {
34
+ ...props,
35
+ value,
36
+ disabled,
37
+ className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity 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 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 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className),
38
+ children
39
+ });
40
+ var TabsContent = ({ value, keepMounted = false, className, children, ...props }) => /* @__PURE__ */ jsx(Tabs.Panel, {
41
+ ...props,
42
+ value,
43
+ keepMounted,
44
+ className: cn("flex-1 text-sm outline-none", className),
45
+ children
46
+ });
47
+ //#endregion
48
+ export { Tabs$1 as Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };
49
+
50
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../../../../../ui/src/components/ui/tabs/tabs.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cn } from '@edyn/ui/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nexport interface ITabsProps extends Omit<BaseTabs.Root.Props, 'value' | 'defaultValue' | 'onValueChange' | 'className' | 'orientation' | 'children'> {\n /** Controlled selected tab. Provide with `onValueChange`. */\n value?: string;\n /** Uncontrolled initial tab. Use this when the component should own its state. */\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n className?: string;\n orientation?: 'horizontal' | 'vertical';\n children: React.ReactNode;\n}\n\nexport const Tabs = ({ value, defaultValue, onValueChange, className, orientation = 'horizontal', children, ...props }: ITabsProps) => (\n <BaseTabs.Root\n data-slot=\"tabs\"\n {...props}\n data-orientation={orientation}\n value={value}\n defaultValue={defaultValue}\n orientation={orientation}\n onValueChange={(next) => {\n onValueChange?.(String(next));\n }}\n className={cn('group/tabs flex w-full gap-2 data-[orientation=horizontal]:flex-col', className)}\n >\n {children}\n </BaseTabs.Root>\n);\n\nexport const tabsListVariants = cva(\n 'group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-8 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none',\n {\n variants: {\n variant: {\n default: 'bg-muted',\n line: 'gap-1 bg-transparent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface ITabsListProps extends VariantProps<typeof tabsListVariants>, Omit<BaseTabs.List.Props, 'className' | 'children'> {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TabsList = ({ className, variant = 'default', children, ...props }: ITabsListProps) => (\n <BaseTabs.List data-slot=\"tabs-list\" {...props} data-variant={variant} className={cn(tabsListVariants({ variant }), className)}>\n {children}\n </BaseTabs.List>\n);\n\nexport interface ITabsTriggerProps extends Omit<BaseTabs.Tab.Props, 'value' | 'disabled' | 'className' | 'children'> {\n value: string;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TabsTrigger = ({ value, disabled, className, children, ...props }: ITabsTriggerProps) => (\n <BaseTabs.Tab\n {...props}\n value={value}\n disabled={disabled}\n className={cn(\n 'relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_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-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent',\n 'data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground',\n 'after:absolute after:bg-foreground after:opacity-0 after:transition-opacity 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 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 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',\n className,\n )}\n >\n {children}\n </BaseTabs.Tab>\n);\n\nexport interface ITabsContentProps extends Omit<BaseTabs.Panel.Props, 'value' | 'keepMounted' | 'className' | 'children'> {\n value: string;\n keepMounted?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TabsContent = ({ value, keepMounted = false, className, children, ...props }: ITabsContentProps) => (\n <BaseTabs.Panel {...props} value={value} keepMounted={keepMounted} className={cn('flex-1 text-sm outline-none', className)}>\n {children}\n </BaseTabs.Panel>\n);\n"],"mappings":";;;;;AAgBA,IAAa,UAAQ,EAAE,OAAO,cAAc,eAAe,WAAW,cAAc,cAAc,UAAU,GAAG,YAC7G,oBAAC,KAAS,MAAV;CACE,aAAU;CACV,GAAI;CACJ,oBAAkB;CACX;CACO;CACD;CACb,gBAAgB,SAAS;EACvB,gBAAgB,OAAO,IAAI,CAAC;CAC9B;CACA,WAAW,GAAG,uEAAuE,SAAS;CAE7F;AACY,CAAA;AAGjB,IAAa,mBAAmB,IAC9B,qRACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAOA,IAAa,YAAY,EAAE,WAAW,UAAU,WAAW,UAAU,GAAG,YACtE,oBAAC,KAAS,MAAV;CAAe,aAAU;CAAY,GAAI;CAAO,gBAAc;CAAS,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;CAC1H;AACY,CAAA;AAUjB,IAAa,eAAe,EAAE,OAAO,UAAU,WAAW,UAAU,GAAG,YACrE,oBAAC,KAAS,KAAV;CACE,GAAI;CACG;CACG;CACV,WAAW,GACT,2vBACA,iQACA,qJACA,4dACA,SACF;CAEC;AACW,CAAA;AAUhB,IAAa,eAAe,EAAE,OAAO,cAAc,OAAO,WAAW,UAAU,GAAG,YAChF,oBAAC,KAAS,OAAV;CAAgB,GAAI;CAAc;CAAoB;CAAa,WAAW,GAAG,+BAA+B,SAAS;CACtH;AACa,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region ../ui/src/components/ui/textarea/textarea.tsx
4
+ var Textarea = ({ className, ...props }) => {
5
+ return /* @__PURE__ */ jsx("textarea", {
6
+ "data-slot": "textarea",
7
+ className: cn("block min-h-16 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1.5 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 field-sizing-content resize-y md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className),
8
+ ...props
9
+ });
10
+ };
11
+ //#endregion
12
+ export { Textarea };
13
+
14
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","names":[],"sources":["../../../../../../../ui/src/components/ui/textarea/textarea.tsx"],"sourcesContent":["import { cn } from '@edyn/ui/lib/utils';\nimport type * as React from 'react';\n\nexport const Textarea = ({ className, ...props }: React.ComponentProps<'textarea'>) => {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'block min-h-16 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1.5 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 field-sizing-content resize-y md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',\n className,\n )}\n {...props}\n />\n );\n};\n"],"mappings":";;;AAGA,IAAa,YAAY,EAAE,WAAW,GAAG,YAA8C;CACrF,OACE,oBAAC,YAAD;EACE,aAAU;EACV,WAAW,GACT,2kBACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,124 @@
1
+ "use client";
2
+ import { cn } from "../../../lib/utils.js";
3
+ import { Button } from "../button/button.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { IconAlertOctagon, IconAlertTriangle, IconCircleCheck, IconInfoCircle, IconLoader, IconX } from "@tabler/icons-react";
6
+ import { Toast } from "@base-ui/react/toast";
7
+ //#region ../ui/src/components/ui/toast/toast.tsx
8
+ var toast = Toast.createToastManager();
9
+ var ToastProvider = ({ ...props }) => {
10
+ return /* @__PURE__ */ jsx(Toast.Provider, { ...props });
11
+ };
12
+ var ToastPortal = ({ ...props }) => {
13
+ return /* @__PURE__ */ jsx(Toast.Portal, {
14
+ "data-slot": "toast-portal",
15
+ ...props
16
+ });
17
+ };
18
+ var ToastViewport = ({ className, ...props }) => {
19
+ return /* @__PURE__ */ jsx(Toast.Viewport, {
20
+ "data-slot": "toast-viewport",
21
+ className: cn("pointer-events-none fixed inset-x-4 bottom-4 z-50 mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full", className),
22
+ ...props
23
+ });
24
+ };
25
+ var Toast$1 = ({ className, ...props }) => {
26
+ return /* @__PURE__ */ jsx(Toast.Root, {
27
+ "data-slot": "toast",
28
+ className: cn("group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl border bg-popover text-popover-foreground shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50", "[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]", "h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms] motion-reduce:transition-none", "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']", "data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]", "data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]", "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]", "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]", "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]", "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]", "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]", "data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]", "data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]", "data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]", "data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]", className),
29
+ ...props
30
+ });
31
+ };
32
+ var ToastContent = ({ className, ...props }) => {
33
+ return /* @__PURE__ */ jsx(Toast.Content, {
34
+ "data-slot": "toast-content",
35
+ className: cn("flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none data-behind:opacity-0 data-expanded:opacity-100", className),
36
+ ...props
37
+ });
38
+ };
39
+ var ToastTitle = ({ className, ...props }) => {
40
+ return /* @__PURE__ */ jsx(Toast.Title, {
41
+ "data-slot": "toast-title",
42
+ className: cn("text-sm font-medium", className),
43
+ ...props
44
+ });
45
+ };
46
+ var ToastDescription = ({ className, ...props }) => {
47
+ return /* @__PURE__ */ jsx(Toast.Description, {
48
+ "data-slot": "toast-description",
49
+ className: cn("text-sm text-muted-foreground", className),
50
+ ...props
51
+ });
52
+ };
53
+ var ToastAction = ({ className, render = /* @__PURE__ */ jsx(Button, {
54
+ variant: "outline",
55
+ size: "sm"
56
+ }), ...props }) => {
57
+ return /* @__PURE__ */ jsx(Toast.Action, {
58
+ "data-slot": "toast-action",
59
+ render,
60
+ className: cn("shrink-0", className),
61
+ ...props
62
+ });
63
+ };
64
+ var ToastClose = ({ className, children, render = /* @__PURE__ */ jsx(Button, {
65
+ variant: "ghost",
66
+ size: "icon-sm"
67
+ }), ...props }) => {
68
+ return /* @__PURE__ */ jsx(Toast.Close, {
69
+ "data-slot": "toast-close",
70
+ "aria-label": "Close toast",
71
+ render,
72
+ className: cn("relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground", className),
73
+ ...props,
74
+ children: children ?? /* @__PURE__ */ jsx(IconX, { "aria-hidden": "true" })
75
+ });
76
+ };
77
+ var ToastIcon = ({ type }) => {
78
+ let icon = null;
79
+ if (type === "success") icon = /* @__PURE__ */ jsx(IconCircleCheck, { "aria-hidden": "true" });
80
+ if (type === "info") icon = /* @__PURE__ */ jsx(IconInfoCircle, { "aria-hidden": "true" });
81
+ if (type === "warning") icon = /* @__PURE__ */ jsx(IconAlertTriangle, { "aria-hidden": "true" });
82
+ if (type === "error") icon = /* @__PURE__ */ jsx(IconAlertOctagon, {
83
+ className: "text-destructive",
84
+ "aria-hidden": "true"
85
+ });
86
+ if (type === "loading") icon = /* @__PURE__ */ jsx(IconLoader, {
87
+ className: "animate-spin motion-reduce:animate-none",
88
+ "aria-hidden": "true"
89
+ });
90
+ if (!icon) return null;
91
+ return /* @__PURE__ */ jsx("span", {
92
+ "data-slot": "toast-icon",
93
+ className: "shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
94
+ children: icon
95
+ });
96
+ };
97
+ var ToastList = () => {
98
+ const { toasts } = Toast.useToastManager();
99
+ return toasts.map((toastItem) => /* @__PURE__ */ jsx(Toast$1, {
100
+ toast: toastItem,
101
+ children: /* @__PURE__ */ jsxs(ToastContent, { children: [
102
+ /* @__PURE__ */ jsx(ToastIcon, { type: toastItem.type }),
103
+ /* @__PURE__ */ jsxs("div", {
104
+ className: "flex min-w-0 flex-1 flex-col gap-1",
105
+ children: [/* @__PURE__ */ jsx(ToastTitle, {}), /* @__PURE__ */ jsx(ToastDescription, {})]
106
+ }),
107
+ /* @__PURE__ */ jsx(ToastAction, {}),
108
+ /* @__PURE__ */ jsx(ToastClose, {})
109
+ ] })
110
+ }, toastItem.id));
111
+ };
112
+ var Toaster = ({ children, toastManager = toast, ...props }) => {
113
+ return /* @__PURE__ */ jsxs(ToastProvider, {
114
+ toastManager,
115
+ ...props,
116
+ children: [children, /* @__PURE__ */ jsx(ToastPortal, { children: /* @__PURE__ */ jsx(ToastViewport, { children: /* @__PURE__ */ jsx(ToastList, {}) }) })]
117
+ });
118
+ };
119
+ var createToastManager = Toast.createToastManager;
120
+ var useToastManager = Toast.useToastManager;
121
+ //#endregion
122
+ export { Toast$1 as Toast, ToastAction, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastProvider, ToastTitle, ToastViewport, Toaster, createToastManager, toast, useToastManager };
123
+
124
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","names":[],"sources":["../../../../../../../ui/src/components/ui/toast/toast.tsx"],"sourcesContent":["'use client';\n\nimport { Toast as ToastPrimitive } from '@base-ui/react/toast';\nimport { cn } from '@edyn/ui/lib/utils';\nimport { IconAlertOctagon, IconAlertTriangle, IconCircleCheck, IconInfoCircle, IconLoader, IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { Button } from '../button';\n\nexport const toast = ToastPrimitive.createToastManager();\n\nexport const ToastProvider = ({ ...props }: ToastPrimitive.Provider.Props) => {\n return <ToastPrimitive.Provider {...props} />;\n};\n\nexport const ToastPortal = ({ ...props }: ToastPrimitive.Portal.Props) => {\n return <ToastPrimitive.Portal data-slot=\"toast-portal\" {...props} />;\n};\n\nexport const ToastViewport = ({ className, ...props }: ToastPrimitive.Viewport.Props) => {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn(\n 'pointer-events-none fixed inset-x-4 bottom-4 z-50 mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const Toast = ({ className, ...props }: ToastPrimitive.Root.Props) => {\n return (\n <ToastPrimitive.Root\n data-slot=\"toast\"\n className={cn(\n 'group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl border bg-popover text-popover-foreground shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n '[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]',\n 'h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms] motion-reduce:transition-none',\n \"after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n 'data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]',\n 'data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]',\n '[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]',\n 'data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]',\n 'data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const ToastContent = ({ className, ...props }: ToastPrimitive.Content.Props) => {\n return (\n <ToastPrimitive.Content\n data-slot=\"toast-content\"\n className={cn(\n 'flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none data-behind:opacity-0 data-expanded:opacity-100',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const ToastTitle = ({ className, ...props }: ToastPrimitive.Title.Props) => {\n return <ToastPrimitive.Title data-slot=\"toast-title\" className={cn('text-sm font-medium', className)} {...props} />;\n};\n\nexport const ToastDescription = ({ className, ...props }: ToastPrimitive.Description.Props) => {\n return <ToastPrimitive.Description data-slot=\"toast-description\" className={cn('text-sm text-muted-foreground', className)} {...props} />;\n};\n\nexport const ToastAction = ({ className, render = <Button variant=\"outline\" size=\"sm\" />, ...props }: ToastPrimitive.Action.Props) => {\n return <ToastPrimitive.Action data-slot=\"toast-action\" render={render} className={cn('shrink-0', className)} {...props} />;\n};\n\nexport const ToastClose = ({ className, children, render = <Button variant=\"ghost\" size=\"icon-sm\" />, ...props }: ToastPrimitive.Close.Props) => {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label=\"Close toast\"\n render={render}\n className={cn(\"relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground\", className)}\n {...props}\n >\n {children ?? <IconX aria-hidden=\"true\" />}\n </ToastPrimitive.Close>\n );\n};\n\nconst ToastIcon = ({ type }: { type: string | undefined }) => {\n let icon: React.ReactNode = null;\n\n if (type === 'success') {\n icon = <IconCircleCheck aria-hidden=\"true\" />;\n }\n\n if (type === 'info') {\n icon = <IconInfoCircle aria-hidden=\"true\" />;\n }\n\n if (type === 'warning') {\n icon = <IconAlertTriangle aria-hidden=\"true\" />;\n }\n\n if (type === 'error') {\n icon = <IconAlertOctagon className=\"text-destructive\" aria-hidden=\"true\" />;\n }\n\n if (type === 'loading') {\n icon = <IconLoader className=\"animate-spin motion-reduce:animate-none\" aria-hidden=\"true\" />;\n }\n\n if (!icon) {\n return null;\n }\n\n return (\n <span data-slot=\"toast-icon\" className=\"shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\">\n {icon}\n </span>\n );\n};\n\nconst ToastList = () => {\n const { toasts } = ToastPrimitive.useToastManager();\n\n return toasts.map((toastItem) => (\n <Toast key={toastItem.id} toast={toastItem}>\n <ToastContent>\n <ToastIcon type={toastItem.type} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <ToastTitle />\n <ToastDescription />\n </div>\n <ToastAction />\n <ToastClose />\n </ToastContent>\n </Toast>\n ));\n};\n\nexport const Toaster = ({ children, toastManager = toast, ...props }: ToastPrimitive.Provider.Props) => {\n return (\n <ToastProvider toastManager={toastManager} {...props}>\n {children}\n <ToastPortal>\n <ToastViewport>\n <ToastList />\n </ToastViewport>\n </ToastPortal>\n </ToastProvider>\n );\n};\n\nexport const createToastManager = ToastPrimitive.createToastManager;\nexport const useToastManager = ToastPrimitive.useToastManager;\n"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { Toggle } from "@base-ui/react/toggle";
5
+ //#region ../ui/src/components/ui/toggle/toggle.tsx
6
+ var toggleVariants = cva("inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-pressed:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4", {
7
+ variants: {
8
+ variant: {
9
+ default: "bg-transparent hover:bg-muted hover:text-foreground data-pressed:bg-muted",
10
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground data-pressed:bg-muted dark:border-input dark:bg-input/30 dark:hover:bg-input/50"
11
+ },
12
+ size: {
13
+ sm: "h-7 px-2.5 text-[0.8rem]",
14
+ default: "h-8 px-2.5",
15
+ lg: "h-9 px-3"
16
+ }
17
+ },
18
+ defaultVariants: {
19
+ variant: "default",
20
+ size: "default"
21
+ }
22
+ });
23
+ var Toggle$1 = ({ className, variant = "default", size = "default", ...props }) => {
24
+ return /* @__PURE__ */ jsx(Toggle, {
25
+ "data-slot": "toggle",
26
+ className: cn(toggleVariants({
27
+ variant,
28
+ size,
29
+ className
30
+ })),
31
+ ...props
32
+ });
33
+ };
34
+ //#endregion
35
+ export { Toggle$1 as Toggle, toggleVariants };
36
+
37
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","names":[],"sources":["../../../../../../../ui/src/components/ui/toggle/toggle.tsx"],"sourcesContent":["import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { cn } from '@edyn/ui/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nexport const toggleVariants = cva(\n 'inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-pressed:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4',\n {\n variants: {\n variant: {\n default: 'bg-transparent hover:bg-muted hover:text-foreground data-pressed:bg-muted',\n outline:\n 'border-border bg-background hover:bg-muted hover:text-foreground data-pressed:bg-muted dark:border-input dark:bg-input/30 dark:hover:bg-input/50',\n },\n size: {\n sm: 'h-7 px-2.5 text-[0.8rem]',\n default: 'h-8 px-2.5',\n lg: 'h-9 px-3',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport type TToggleVariants = VariantProps<typeof toggleVariants>;\n\nexport const Toggle = <Value extends string>({\n className,\n variant = 'default',\n size = 'default',\n ...props\n}: TogglePrimitive.Props<Value> & TToggleVariants) => {\n return <TogglePrimitive data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />;\n};\n"],"mappings":";;;;;AAIA,IAAa,iBAAiB,IAC5B,0aACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SACE;EACJ;EACA,MAAM;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;AAIA,IAAa,YAAgC,EAC3C,WACA,UAAU,WACV,OAAO,WACP,GAAG,YACiD;CACpD,OAAO,oBAAC,QAAD;EAAiB,aAAU;EAAS,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EAAG,GAAI;CAAQ,CAAA;AACtH"}