@alkimi.org/ui-kit 0.12.6 → 0.13.1

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 (207) hide show
  1. package/dist/COMPONENTS.md +222 -2
  2. package/dist/{chunk-3TLCOZ5R.js → chunk-24EJLBGD.js} +2 -2
  3. package/dist/chunk-24EJLBGD.js.map +1 -0
  4. package/dist/chunk-372VUZFE.js.map +1 -1
  5. package/dist/chunk-3BVMHDYA.js.map +1 -1
  6. package/dist/{chunk-GRXC46JC.js → chunk-3DUPSGEY.js} +2 -2
  7. package/dist/chunk-3DUPSGEY.js.map +1 -0
  8. package/dist/{chunk-DMMKR6TY.js → chunk-3N5K4X23.js} +2 -2
  9. package/dist/chunk-3N5K4X23.js.map +1 -0
  10. package/dist/chunk-3PEPOFYU.js.map +1 -1
  11. package/dist/{chunk-DATWXRPT.mjs → chunk-4DRIPZWE.mjs} +2 -2
  12. package/dist/{chunk-BV7RXRSL.js → chunk-53P3PXF7.js} +2 -2
  13. package/dist/chunk-53P3PXF7.js.map +1 -0
  14. package/dist/chunk-5L5DM2X5.js.map +1 -1
  15. package/dist/chunk-5X26XR44.js.map +1 -1
  16. package/dist/chunk-73MWZSJI.js +3 -0
  17. package/dist/chunk-73MWZSJI.js.map +1 -0
  18. package/dist/chunk-7SOZ6MOV.js.map +1 -1
  19. package/dist/chunk-ALSJLUSL.js +3 -0
  20. package/dist/chunk-ALSJLUSL.js.map +1 -0
  21. package/dist/chunk-C4GUY2JQ.js +3 -0
  22. package/dist/chunk-C4GUY2JQ.js.map +1 -0
  23. package/dist/chunk-CT2CRYC2.js.map +1 -1
  24. package/dist/chunk-DEWWZMYC.js.map +1 -1
  25. package/dist/chunk-EBNJXPHG.js.map +1 -1
  26. package/dist/{chunk-UAUSYTY4.mjs → chunk-EDOMXQSZ.mjs} +2 -2
  27. package/dist/{chunk-UAUSYTY4.mjs.map → chunk-EDOMXQSZ.mjs.map} +1 -1
  28. package/dist/chunk-EIM5R7AJ.js.map +1 -1
  29. package/dist/chunk-EJTY2ABY.js.map +1 -1
  30. package/dist/{chunk-QMJVRGPB.mjs → chunk-EOFZPG26.mjs} +2 -2
  31. package/dist/{chunk-QMJVRGPB.mjs.map → chunk-EOFZPG26.mjs.map} +1 -1
  32. package/dist/chunk-ETE5IUMO.js +3 -0
  33. package/dist/chunk-ETE5IUMO.js.map +1 -0
  34. package/dist/chunk-FUYXCJOQ.js.map +1 -1
  35. package/dist/chunk-I5INE4KG.js.map +1 -1
  36. package/dist/{chunk-RKRTEMMZ.js → chunk-IJRJBDSO.js} +2 -2
  37. package/dist/chunk-IJRJBDSO.js.map +1 -0
  38. package/dist/{chunk-XQILGD5B.js → chunk-IJVB2BVO.js} +2 -2
  39. package/dist/chunk-IJVB2BVO.js.map +1 -0
  40. package/dist/{chunk-DKMCJGI4.mjs → chunk-JD2CTTZW.mjs} +2 -2
  41. package/dist/chunk-JOEQLSHD.js +32 -0
  42. package/dist/chunk-JOEQLSHD.js.map +1 -0
  43. package/dist/{chunk-PD43W3YN.mjs → chunk-JYA3425I.mjs} +2 -2
  44. package/dist/chunk-KN2ZJ5E6.mjs +3 -0
  45. package/dist/chunk-KN2ZJ5E6.mjs.map +1 -0
  46. package/dist/{chunk-574USYNO.mjs → chunk-MKZJL4AD.mjs} +2 -2
  47. package/dist/{chunk-574USYNO.mjs.map → chunk-MKZJL4AD.mjs.map} +1 -1
  48. package/dist/{chunk-DHHZMQ72.js → chunk-NCBOTFZQ.js} +2 -2
  49. package/dist/chunk-NCBOTFZQ.js.map +1 -0
  50. package/dist/chunk-NHM7DO42.mjs +3 -0
  51. package/dist/chunk-NHM7DO42.mjs.map +1 -0
  52. package/dist/chunk-OLF2HLRF.mjs +3 -0
  53. package/dist/chunk-OLF2HLRF.mjs.map +1 -0
  54. package/dist/chunk-QOEM7ZRV.mjs +3 -0
  55. package/dist/chunk-QOEM7ZRV.mjs.map +1 -0
  56. package/dist/{chunk-BLHKJHNV.mjs → chunk-QZKQORLQ.mjs} +2 -2
  57. package/dist/chunk-QZKQORLQ.mjs.map +1 -0
  58. package/dist/chunk-RJMIOBXZ.js.map +1 -1
  59. package/dist/chunk-RRAIGAHU.js.map +1 -1
  60. package/dist/{chunk-KLU33CJI.mjs → chunk-RUEPYIWM.mjs} +2 -2
  61. package/dist/{chunk-7J2ETVGK.js → chunk-SPGHRCUD.js} +2 -2
  62. package/dist/chunk-SPGHRCUD.js.map +1 -0
  63. package/dist/chunk-TDMRUCR6.js.map +1 -1
  64. package/dist/chunk-TUADTU4Z.mjs +32 -0
  65. package/dist/chunk-TUADTU4Z.mjs.map +1 -0
  66. package/dist/chunk-UJZP6L4S.js.map +1 -1
  67. package/dist/chunk-ULIOO55I.js.map +1 -1
  68. package/dist/chunk-UNR6ATUH.js.map +1 -1
  69. package/dist/chunk-UW73WIQU.js +3 -0
  70. package/dist/chunk-UW73WIQU.js.map +1 -0
  71. package/dist/chunk-VBPIXXIA.js.map +1 -1
  72. package/dist/chunk-VGPTOLNX.mjs +3 -0
  73. package/dist/chunk-VGPTOLNX.mjs.map +1 -0
  74. package/dist/chunk-WFD523CV.js.map +1 -1
  75. package/dist/chunk-WYRD4UAK.js.map +1 -1
  76. package/dist/{chunk-USPGZYMV.js → chunk-XUVA7BXG.js} +2 -2
  77. package/dist/chunk-XUVA7BXG.js.map +1 -0
  78. package/dist/chunk-XVF3OJWZ.js +3 -0
  79. package/dist/chunk-XVF3OJWZ.js.map +1 -0
  80. package/dist/chunk-XY6RUEAT.mjs +3 -0
  81. package/dist/chunk-XY6RUEAT.mjs.map +1 -0
  82. package/dist/chunk-XYO4VLMF.js.map +1 -1
  83. package/dist/{chunk-LQMOWEA7.js → chunk-YE7OOLWB.js} +2 -2
  84. package/dist/chunk-YE7OOLWB.js.map +1 -0
  85. package/dist/{chunk-TYRJ7CQV.mjs → chunk-YIVVQTGD.mjs} +2 -2
  86. package/dist/chunk-YSIF7HA3.mjs +3 -0
  87. package/dist/chunk-YSIF7HA3.mjs.map +1 -0
  88. package/dist/chunk-Z5V4P3EC.js.map +1 -1
  89. package/dist/components/GeometricFluidGrid.js.map +1 -1
  90. package/dist/components/GlitchLink.js.map +1 -1
  91. package/dist/components/PixelLoad.js.map +1 -1
  92. package/dist/components/TextDecoder.js.map +1 -1
  93. package/dist/components/accordion.js.map +1 -1
  94. package/dist/components/avatar.js.map +1 -1
  95. package/dist/components/breadcrumb.js +2 -2
  96. package/dist/components/breadcrumb.js.map +1 -1
  97. package/dist/components/breadcrumb.mjs +1 -1
  98. package/dist/components/breadcrumb.mjs.map +1 -1
  99. package/dist/components/button.d.mts +2 -2
  100. package/dist/components/button.d.ts +2 -2
  101. package/dist/components/button.js +1 -1
  102. package/dist/components/button.js.map +1 -1
  103. package/dist/components/button.mjs +1 -1
  104. package/dist/components/calendar.js +1 -1
  105. package/dist/components/calendar.js.map +1 -1
  106. package/dist/components/calendar.mjs +1 -1
  107. package/dist/components/card.js +2 -31
  108. package/dist/components/card.js.map +1 -1
  109. package/dist/components/card.mjs +1 -30
  110. package/dist/components/card.mjs.map +1 -1
  111. package/dist/components/checkbox.js.map +1 -1
  112. package/dist/components/combobox.d.mts +19 -2
  113. package/dist/components/combobox.d.ts +19 -2
  114. package/dist/components/combobox.js +1 -1
  115. package/dist/components/combobox.js.map +1 -1
  116. package/dist/components/combobox.mjs +1 -1
  117. package/dist/components/command.d.mts +1 -1
  118. package/dist/components/command.d.ts +1 -1
  119. package/dist/components/command.js +1 -1
  120. package/dist/components/command.js.map +1 -1
  121. package/dist/components/command.mjs +1 -1
  122. package/dist/components/date-picker.js +1 -1
  123. package/dist/components/date-picker.js.map +1 -1
  124. package/dist/components/date-picker.mjs +1 -1
  125. package/dist/components/date-range-picker.js +1 -1
  126. package/dist/components/date-range-picker.js.map +1 -1
  127. package/dist/components/date-range-picker.mjs +1 -1
  128. package/dist/components/dialog.js +1 -1
  129. package/dist/components/dialog.js.map +1 -1
  130. package/dist/components/dialog.mjs +1 -1
  131. package/dist/components/drawer.js +1 -1
  132. package/dist/components/drawer.js.map +1 -1
  133. package/dist/components/drawer.mjs +1 -1
  134. package/dist/components/dropdown-menu.js.map +1 -1
  135. package/dist/components/field.js.map +1 -1
  136. package/dist/components/file-upload.js +1 -1
  137. package/dist/components/file-upload.js.map +1 -1
  138. package/dist/components/file-upload.mjs +1 -1
  139. package/dist/components/input.js +1 -1
  140. package/dist/components/input.js.map +1 -1
  141. package/dist/components/input.mjs +1 -1
  142. package/dist/components/label.js.map +1 -1
  143. package/dist/components/popover.js.map +1 -1
  144. package/dist/components/progress.js +2 -2
  145. package/dist/components/progress.js.map +1 -1
  146. package/dist/components/progress.mjs +1 -1
  147. package/dist/components/progress.mjs.map +1 -1
  148. package/dist/components/radio-group.js.map +1 -1
  149. package/dist/components/scroll-area.js.map +1 -1
  150. package/dist/components/separator.js.map +1 -1
  151. package/dist/components/sheet.js.map +1 -1
  152. package/dist/components/sidebar.js +1 -1
  153. package/dist/components/sidebar.js.map +1 -1
  154. package/dist/components/sidebar.mjs +1 -1
  155. package/dist/components/skeleton.js.map +1 -1
  156. package/dist/components/slider.js +2 -2
  157. package/dist/components/slider.js.map +1 -1
  158. package/dist/components/slider.mjs +1 -1
  159. package/dist/components/slider.mjs.map +1 -1
  160. package/dist/components/switch.js +2 -2
  161. package/dist/components/switch.js.map +1 -1
  162. package/dist/components/switch.mjs +1 -1
  163. package/dist/components/switch.mjs.map +1 -1
  164. package/dist/components/table.js.map +1 -1
  165. package/dist/components/tabs.js.map +1 -1
  166. package/dist/components/textarea.js.map +1 -1
  167. package/dist/components/toast.js.map +1 -1
  168. package/dist/components/tooltip.js.map +1 -1
  169. package/dist/components/tree-select.js +1 -1
  170. package/dist/components/tree-select.js.map +1 -1
  171. package/dist/components/tree-select.mjs +1 -1
  172. package/dist/index.css +1 -1
  173. package/dist/index.css.map +1 -1
  174. package/dist/index.d.mts +9 -1
  175. package/dist/index.d.ts +9 -1
  176. package/dist/index.js +1 -1
  177. package/dist/index.js.map +1 -1
  178. package/dist/index.mjs +1 -1
  179. package/dist/styles.css +1 -1
  180. package/dist/styles.css.map +1 -1
  181. package/package.json +1 -1
  182. package/dist/chunk-3TLCOZ5R.js.map +0 -1
  183. package/dist/chunk-4UISHS25.mjs +0 -3
  184. package/dist/chunk-4UISHS25.mjs.map +0 -1
  185. package/dist/chunk-7FUNOEYE.mjs +0 -3
  186. package/dist/chunk-7FUNOEYE.mjs.map +0 -1
  187. package/dist/chunk-7J2ETVGK.js.map +0 -1
  188. package/dist/chunk-BLHKJHNV.mjs.map +0 -1
  189. package/dist/chunk-BV7RXRSL.js.map +0 -1
  190. package/dist/chunk-DHHZMQ72.js.map +0 -1
  191. package/dist/chunk-DMMKR6TY.js.map +0 -1
  192. package/dist/chunk-GRXC46JC.js.map +0 -1
  193. package/dist/chunk-K4GMCVHO.js +0 -3
  194. package/dist/chunk-K4GMCVHO.js.map +0 -1
  195. package/dist/chunk-LQMOWEA7.js.map +0 -1
  196. package/dist/chunk-NEOUFWZN.mjs +0 -3
  197. package/dist/chunk-NEOUFWZN.mjs.map +0 -1
  198. package/dist/chunk-ODXDXJ72.js +0 -3
  199. package/dist/chunk-ODXDXJ72.js.map +0 -1
  200. package/dist/chunk-RKRTEMMZ.js.map +0 -1
  201. package/dist/chunk-USPGZYMV.js.map +0 -1
  202. package/dist/chunk-XQILGD5B.js.map +0 -1
  203. /package/dist/{chunk-DATWXRPT.mjs.map → chunk-4DRIPZWE.mjs.map} +0 -0
  204. /package/dist/{chunk-DKMCJGI4.mjs.map → chunk-JD2CTTZW.mjs.map} +0 -0
  205. /package/dist/{chunk-PD43W3YN.mjs.map → chunk-JYA3425I.mjs.map} +0 -0
  206. /package/dist/{chunk-KLU33CJI.mjs.map → chunk-RUEPYIWM.mjs.map} +0 -0
  207. /package/dist/{chunk-TYRJ7CQV.mjs.map → chunk-YIVVQTGD.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-3N5K4X23.js","../src/components/sidebar.tsx"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SIDEBAR_BANNER_HEIGHT","SidebarContext","SidebarMobileContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","bannerHeightProp","className","style","children","props","ref","openMobile","setOpenMobile","isFullyOpen","setIsFullyOpen","isAnimating","setIsAnimating","bannerVisible","setBannerVisible","_open","_setOpen","open","setOpen","value","openState"],"mappings":"AAAA,+8BAAY;AACZ,sDAA4D,sDAAwC,sDAAoE,sDAAwC,sDAAwC,sDAA+C,sDAAwC,uECCxT,iDACF,kEACkB,2CACJ,+CAuNrB,IAlMRA,EAAAA,CAAsB,eAAA,CACtBC,EAAAA,CAAyB,IAAA,CAAU,EAAA,CAAK,CAAA,CACxCC,EAAAA,CAAgB,UAAA,CAChBC,EAAAA,CAAuB,OAAA,CACvBC,EAAAA,CAAqB,sBAAA,CACrBC,EAAAA,CAA4B,GAAA,CAC5BC,EAAAA,CAAwB,MAAA,CAkBxBC,EAAAA,CAAuB,CAAA,CAAA,aAAA,CAA0C,IAAI,CAAA,CACrEC,EAAAA,CAA6B,CAAA,CAAA,aAAA,CAAc,CAAA,CAAK,CAAA,CAEtD,SAASC,CAAAA,CAAAA,CAAa,CACpB,IAAMC,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAAWH,EAAc,CAAA,CAC/C,EAAA,CAAI,CAACG,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAAA,CAGrE,OAAOA,CACT,CAEA,IAAMC,EAAAA,CAAwB,CAAA,CAAA,UAAA,CAS5B,CACE,CACE,WAAA,CAAAC,CAAAA,CAAc,CAAA,CAAA,CACd,IAAA,CAAMC,CAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,YAAA,CAAcC,CAAAA,CAAmBT,EAAAA,CACjC,SAAA,CAAAU,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,CAAAA,CAAAA,EACG,CACH,GAAM,CAACC,CAAAA,CAAYC,CAAa,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAClD,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAASZ,CAAW,CAAA,CAC1D,CAACa,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CACpD,CAACC,CAAAA,CAAeC,CAAgB,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAExD,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAU,CAAA,CAAA,QAAA,CAASlB,CAAW,CAAA,CAC9CmB,CAAAA,kBAAOlB,CAAAA,SAAYgB,GAAAA,CACnBG,CAAAA,CAAgB,CAAA,CAAA,WAAA,CACnBC,CAAAA,EAAmD,CAClD,IAAMC,CAAAA,CAAY,OAAOD,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMF,CAAI,CAAA,CAAIE,CAAAA,CAC1DnB,CAAAA,CACFA,CAAAA,CAAYoB,CAAS,CAAA,CAErBJ,CAAAA,CAASI,CAAS,CAAA,CAGpB,QAAA,CAAS,MAAA,CAAS,CAAA,EAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-3N5K4X23.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeft, X, Menu } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/button\"\nimport { Input } from \"@/components/input\"\nimport { Separator } from \"@/components/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\"\nimport { Skeleton } from \"@/components/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16.75rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"23rem\"\nconst SIDEBAR_WIDTH_ICON = \"calc(3rem + 0.75rem)\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\nconst SIDEBAR_BANNER_HEIGHT = \"55px\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n isOpen: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n toggleSidebar: () => void\n toggleMobileSidebar: () => void\n setIsFullyOpen: (open: boolean) => void\n isAnimating: boolean\n setIsAnimating: (animating: boolean) => void\n isBannerClosing: boolean\n bannerVisible: boolean\n setBannerVisible: (visible: boolean) => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\nconst SidebarMobileContext = React.createContext(false)\n\nfunction 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\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n bannerHeight?: string\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n bannerHeight: bannerHeightProp = SIDEBAR_BANNER_HEIGHT,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const [openMobile, setOpenMobile] = React.useState(false)\n const [isFullyOpen, setIsFullyOpen] = React.useState(defaultOpen)\n const [isAnimating, setIsAnimating] = React.useState(false)\n const [bannerVisible, setBannerVisible] = React.useState(false)\n\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 document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n const toggleSidebar = React.useCallback(() => {\n setOpen((open) => !open)\n }, [setOpen])\n\n const toggleMobileSidebar = React.useCallback(() => {\n const mdBreakpoint = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--breakpoint-md\")\n .trim()\n if (\n mdBreakpoint &&\n window.matchMedia(`(min-width: ${mdBreakpoint})`).matches\n ) {\n return\n }\n setOpenMobile((open) => !open)\n }, [setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const previousBannerChildrenRef = React.useRef<React.ReactNode[]>([])\n\n // Separate banner children (SidebarBanner) from layout children (Sidebar, SidebarInset)\n const childArray = React.Children.toArray(children)\n const bannerChildren = childArray.filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as React.FC & { displayName?: string })?.displayName ===\n \"SidebarBanner\"\n )\n const layoutChildren = childArray.filter(\n (child) =>\n !React.isValidElement(child) ||\n (child.type as React.FC & { displayName?: string })?.displayName !==\n \"SidebarBanner\"\n )\n\n // Store previous banner children for closing animation\n if (bannerChildren.length > 0 && bannerVisible) {\n previousBannerChildrenRef.current = bannerChildren\n }\n\n const hasBannerSlot = bannerChildren.length > 0\n const hasBanner = hasBannerSlot && bannerVisible\n const isClosing =\n !hasBanner && previousBannerChildrenRef.current.length > 0\n const displayBanner = hasBannerSlot\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n isOpen: isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isBannerClosing: isClosing,\n bannerVisible,\n setBannerVisible,\n }),\n [\n state,\n isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isClosing,\n bannerVisible,\n ]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n \"--sidebar-top\": hasBanner ? bannerHeightProp : \"0px\",\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n displayBanner && \"flex-col\",\n className\n )}\n ref={ref}\n {...props}\n >\n {displayBanner ? (\n <>\n <div\n className=\"relative overflow-hidden transition-[height] duration-200 ease-linear\"\n style={\n {\n height: hasBanner ? bannerHeightProp : \"0px\",\n } as React.CSSProperties\n }\n >\n <div\n className=\"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full\"\n style={{ height: bannerHeightProp }}\n data-state={hasBanner ? \"open\" : \"closed\"}\n onTransitionEnd={() => {\n if (isClosing) {\n previousBannerChildrenRef.current = []\n }\n }}\n >\n {bannerChildren}\n </div>\n </div>\n <div className=\"flex flex-1\">{layoutChildren}</div>\n </>\n ) : (\n children\n )}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst SidebarBanner = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"banner\"\n className={cn(\"w-full\", className)}\n {...props}\n />\n )\n})\nSidebarBanner.displayName = \"SidebarBanner\"\n\nconst Sidebar = React.forwardRef<\n HTMLElement,\n React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const {\n state,\n openMobile,\n setOpenMobile,\n setIsFullyOpen,\n setIsAnimating,\n isBannerClosing,\n } = useSidebar()\n const sidebarRef = React.useRef<HTMLDivElement>(null)\n const isFirstRenderRef = React.useRef(true)\n\n // Track when the sidebar animation completes\n React.useEffect(() => {\n const sidebar = sidebarRef.current\n if (!sidebar) return\n\n // On first render, set isFullyOpen immediately without waiting for animation\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n return\n }\n\n // Mark as animating when state changes\n setIsAnimating(true)\n\n // Fallback timeout in case transitionend doesn't fire\n const fallbackTimeout = setTimeout(() => {\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }, 300) // Slightly longer than the 200ms transition duration\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n // Only respond to transitions on the sidebar itself, not children\n if (event.target !== sidebar) return\n\n // Check if we're transitioning width, left, or right properties\n if (\n event.propertyName === \"left\" ||\n event.propertyName === \"right\" ||\n event.propertyName === \"width\"\n ) {\n clearTimeout(fallbackTimeout)\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }\n }\n\n sidebar.addEventListener(\"transitionend\", handleTransitionEnd)\n return () => {\n sidebar.removeEventListener(\"transitionend\", handleTransitionEnd)\n clearTimeout(fallbackTimeout)\n }\n }, [state, setIsFullyOpen, setIsAnimating])\n\n if (collapsible === \"none\") {\n return (\n <aside\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </aside>\n )\n }\n\n return (\n <>\n {/* Mobile Sheet - visible only on mobile (< md) */}\n <Sheet open={openMobile} onOpenChange={setOpenMobile}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n width: SIDEBAR_WIDTH_MOBILE,\n maxWidth: 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 <SidebarMobileContext.Provider value={true}>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SidebarMobileContext.Provider>\n </SheetContent>\n </Sheet>\n\n {/* Desktop Sidebar - visible only on desktop (md+) */}\n <aside\n ref={ref}\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 >\n {/* Spacer to reserve horizontal space */}\n <div\n className={cn(\n \"w-(--sidebar-width) transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\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 {/* Fixed sidebar */}\n <div\n ref={sidebarRef}\n data-banner-closing={isBannerClosing}\n className={cn(\n \"fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width,top,height] duration-200 ease-linear md:flex\",\n \"top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\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)\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n <div className=\"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0\">\n {children}\n </div>\n </div>\n </div>\n </aside>\n </>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, toggleMobileSidebar, openMobile } = useSidebar()\n\n return (\n <>\n {/* Mobile trigger - visible below md */}\n <Button\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n \"md:hidden bg-transparent hover:bg-transparent\",\n className\n )}\n onClick={(event) => {\n onClick?.(event)\n toggleMobileSidebar()\n }}\n {...props}\n >\n {openMobile ? (\n <span\n className={cn(\n buttonVariants({ variant: \"secondary\", size: \"icon\" })\n )}\n >\n <X size={16} />\n </span>\n ) : (\n <span\n className={cn(buttonVariants({ variant: \"outline\", size: \"icon\" }))}\n >\n <Menu size={16} />\n </span>\n )}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n\n {/* Desktop trigger - visible at md+ */}\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"hidden md:inline-flex h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <span className=\"rounded-full p-2\">\n <PanelLeft size={16} />\n </span>\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n </>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-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 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\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 group-data-[collapsible=offcanvas]:hover: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})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.memo(\n React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-w-0 w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n }\n )\n)\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showTrigger?: boolean\n }\n>(({ className, showTrigger = false, children, ...props }, ref) => {\n const { state } = useSidebar()\n const isMobile = React.useContext(SidebarMobileContext)\n\n const isCollapsed = state === \"collapsed\" && !isMobile\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex w-full gap-2 p-2 items-center\",\n isCollapsed\n ? \"justify-center items-center\"\n : \"justify-between items-start\",\n className\n )}\n {...props}\n >\n {!isCollapsed && (\n <div className=\"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden\">\n <div className=\"whitespace-nowrap\">{children}</div>\n </div>\n )}\n\n {showTrigger && <SidebarTrigger />}\n </div>\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n \"group-data-[collapsible=icon]:p-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] 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 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"bg-sidebar 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\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\"}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\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 && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\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})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\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\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\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 outline-none ring-sidebar-ring 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 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarBanner,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-3PEPOFYU.js","../src/components/GeometricFluidGrid.tsx"],"names":["GAP","BASE_SIZE","MAX_SIZE","getFalloff","dist","radius","val","AnchoredBlob","anchorConfig","__publicField","nodeCount","i","r","ox","oy","dx","dy","k","ax","ay","wx","wy","node","maxDist","g","snap","v","rawCx","rawCy","cx","cy","isVert","len","thickness","TrailBlob","x","y","count","GeometricFluidGrid","variant","canvasRef","useRef","useEffect","canvas","ctx","animationFrameId","orbs","trail","mouse","initWorld","w","h","resize","rect","newW","newH","handleMouseMove","e","draw","orb","renderList","allGlitches","o","isGlitching","size","totalInfluence","nearby","entity","localInf","nx","ny","b","alpha","resizeObserver","jsx","GeometricFluidGrid_default"],"mappings":"AAAA,qFAAY;AACZ,sDAAuC,8BCAE,+CA+erC,IA5eEA,CAAAA,CAAM,EAAA,CACNC,CAAAA,CAAY,CAAA,CACZC,CAAAA,CAAW,CAAA,CA4BXC,CAAAA,CAAa,CAACC,CAAAA,CAAcC,CAAAA,CAAAA,EAA2B,CAC3D,EAAA,CAAID,CAAAA,CAAOC,CAAAA,CAAQ,CACjB,IAAMC,CAAAA,CAAM,CAAA,CAAIF,CAAAA,CAAOC,CAAAA,CACvB,OAAOC,CAAAA,CAAMA,CAAAA,CAAAA,CAAO,CAAA,CAAI,CAAA,CAAIA,CAAAA,CAC9B,CACA,OAAO,CACT,CAAA,CAGMC,CAAAA,CAAN,KAAmB,CAqBjB,WAAA,CAAYC,CAAAA,CAAwC,CAnBpDC,gCAAAA,IAAA,CAAA,GAAA,CAAY,CAAA,CAAA,CACZA,gCAAAA,IAAA,CAAA,GAAA,CAAY,CAAA,CAAA,CAGZA,gCAAAA,IAAA,CAAA,SAAA,CAAkB,CAAA,CAAA,CAClBA,gCAAAA,IAAA,CAAA,SAAA,CAAkB,CAAA,CAAA,CAGlBA,gCAAAA,IAAA,CAAA,IAAA,CAAa,CAAA,CAAA,CACbA,gCAAAA,IAAA,CAAA,IAAA,CAAa,CAAA,CAAA,CAGbA,gCAAAA,IAAA,CAAA,OAAA,CAAgB,CAAC,CAAA,CAAA,CACjBA,gCAAAA,IAAA,CAAA,SAAA,CAAkB,CAAA,CAAA,CAGlBA,gCAAAA,IAAA,CAAA,aAAA,CAA4B,CAAC,CAAA,CAAA,CAC7BA,gCAAAA,IAAA,CAAA,UAAA,CAAmB,GAAA,CAAA,CAGjB,IAAA,CAAK,OAAA,CAAUD,CAAAA,CAAa,CAAA,CAC5B,IAAA,CAAK,OAAA,CAAUA,CAAAA,CAAa,CAAA,CAC5B,IAAA,CAAK,CAAA,CAAI,IAAA,CAAK,OAAA,CACd,IAAA,CAAK,CAAA,CAAI,IAAA,CAAK,OAAA,CACd,IAAA,CAAK,IAAA,CAAK,CACZ,CAEA,IAAA,CAAA,CAAO,CAEL,IAAA,CAAK,KAAA,CAAQ,CAAC,CAAA,CACd,IAAME,CAAAA,CAAY,CAAA,CAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,CAAC,CAAA,CAElD,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAID,CAAAA,CAAWC,CAAAA,EAAAA,CAAK,CAElC,IAAMC,CAAAA,CAAI,EAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAEzBC,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAC7BC,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAEnC,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CACd,OAAA,CAASD,CAAAA,CACT,OAAA,CAASC,CAAAA,CACT,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAC5B,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAC5B,MAAA,CAAQF,CAAAA,CACR,CAAA,CAAG,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,GACrB,CAAC,CACH,CAEA,IAAA,CAAK,OAAA,CAAU,CACjB,CAEA,MAAA,CAAA,CAAS,CAEP,IAAMG,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,CAAA,CACzBC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,CAAA,CAGzBC,CAAAA,CAAI,IAAA,CACJC,CAAAA,CAAKH,CAAAA,CAAKE,CAAAA,CACVE,CAAAA,CAAKH,CAAAA,CAAKC,CAAAA,CAGVG,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,GAAA,CAC7BC,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,GAAA,CAmCnC,EAAA,CAjCA,IAAA,CAAK,EAAA,EAAMH,CAAAA,CAAKE,CAAAA,CAChB,IAAA,CAAK,EAAA,EAAMD,CAAAA,CAAKE,CAAAA,CAEhB,IAAA,CAAK,EAAA,EAAM,GAAA,CACX,IAAA,CAAK,EAAA,EAAM,GAAA,CAEX,IAAA,CAAK,CAAA,EAAK,IAAA,CAAK,EAAA,CACf,IAAA,CAAK,CAAA,EAAK,IAAA,CAAK,EAAA,CAGf,IAAA,CAAK,KAAA,CAAM,OAAA,CAASC,CAAAA,EAAS,CAE3BA,CAAAA,CAAK,CAAA,EAAK,IAAA,CAGVA,CAAAA,CAAK,OAAA,EAAW,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAK,CAAC,CAAA,CAAI,EAAA,CAAMA,CAAAA,CAAK,EAAA,CAC9CA,CAAAA,CAAK,OAAA,EAAW,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAK,CAAA,CAAI,EAAG,CAAA,CAAI,EAAA,CAAMA,CAAAA,CAAK,EAAA,CAGpD,IAAMC,CAAAA,CAAU,EAAA,CAAA,CACZD,CAAAA,CAAK,OAAA,CAAUC,CAAAA,EAAWD,CAAAA,CAAK,OAAA,CAAU,CAACC,CAAAA,CAAAA,EAAAA,CAASD,CAAAA,CAAK,EAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAC9DA,CAAAA,CAAK,OAAA,CAAUC,CAAAA,EAAWD,CAAAA,CAAK,OAAA,CAAU,CAACC,CAAAA,CAAAA,EAAAA,CAASD,CAAAA,CAAK,EAAA,EAAM,CAAA,CAAA,CAAA,CAGlEA,CAAAA,CAAK,MAAA,EAAU,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAK,CAAA,CAAI,CAAC,CAAA,CAAI,EACxC,CAAC,CAAA,CAID,IAAA,CAAK,WAAA,CAAc,IAAA,CAAK,WAAA,CAAY,MAAA,CAAQE,CAAAA,EAAMA,CAAAA,CAAE,IAAA,CAAO,CAAC,CAAA,CAC5D,IAAA,CAAK,WAAA,CAAY,OAAA,CAASA,CAAAA,EAAMA,CAAAA,CAAE,IAAA,EAAM,CAAA,CAGpC,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,GAAA,CAAM,CAKxB,IAAMC,CAAAA,CAAQC,CAAAA,EACZ,IAAA,CAAK,KAAA,CAAA,CAAOA,CAAAA,CAAI1B,CAAAA,CAAM,CAAA,CAAA,CAAKA,CAAG,CAAA,CAAIA,CAAAA,CAAMA,CAAAA,CAAM,CAAA,CAE1C2B,CAAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CACzCC,CAAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAEzCC,CAAAA,CAAKJ,CAAAA,CAAKE,CAAK,CAAA,CACfG,CAAAA,CAAKL,CAAAA,CAAKG,CAAK,CAAA,CAIrB,EAAA,CAAA,CAFa,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAM,MAAA,CAAS,KAAA,CAAA,GAE/B,MAAA,CAAQ,CACnB,IAAMG,CAAAA,CAAS,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAEzBC,CAAAA,CAAM,EAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAI3BC,CAAAA,CAAY,CAAA,CAElB,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,CACpB,CAAA,CAAGF,CAAAA,CAASF,CAAAA,CAAKI,CAAAA,CAAY,CAAA,CAAIJ,CAAAA,CAAKG,CAAAA,CAAM,CAAA,CAC5C,CAAA,CAAGD,CAAAA,CAASD,CAAAA,CAAKE,CAAAA,CAAM,CAAA,CAAIF,CAAAA,CAAKG,CAAAA,CAAY,CAAA,CAC5C,CAAA,CAAGF,CAAAA,CAASE,CAAAA,CAAYD,CAAAA,CACxB,CAAA,CAAGD,CAAAA,CAASC,CAAAA,CAAMC,CAAAA,CAClB,IAAA,CAAM,CAAA,CAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAC5B,CAAC,CACH,CAAA,KAKE,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,CACpB,CAAA,CAAGJ,CAAAA,CAAK,CAAA,CAAO,CAAA,CACf,CAAA,CAAGC,CAAAA,CAAK,CAAA,CAAO,CAAA,CACf,CAAA,CAAG,CAAA,CACH,CAAA,CAAG,CAAA,CACH,IAAA,CAAM,CAAA,CAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAC5B,CAAC,CAEL,CACF,CACF,CAAA,CAEMI,CAAAA,CAAN,KAAgB,CAQd,WAAA,CAAYC,CAAAA,CAAWC,CAAAA,CAAW,CAPlC3B,gCAAAA,IAAA,CAAA,GAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,GAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,SAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,OAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,OAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,UAAA,CAAmB,EAAA,CAAA,CAGjB,IAAA,CAAK,CAAA,CAAI0B,CAAAA,CACT,IAAA,CAAK,CAAA,CAAIC,CAAAA,CACT,IAAA,CAAK,OAAA,CAAU,EAAA,CACf,IAAA,CAAK,KAAA,CAAQ,GAAA,CAEb,IAAA,CAAK,KAAA,CAAQ,CAAC,CAAA,CACd,IAAMC,CAAAA,CAAQ,CAAA,CACd,GAAA,CAAA,IAAS1B,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI0B,CAAAA,CAAO1B,CAAAA,EAAAA,CACzB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CACd,OAAA,CAAA,CAAU,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CACjC,OAAA,CAAA,CAAU,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CACjC,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,CAAA,CAC5B,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,CAAA,CAC5B,MAAA,CAAQ,CAAA,CAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAC5B,CAAA,CAAG,CACL,CAAC,CAEL,CAEA,MAAA,CAAA,CAAS,CACP,IAAA,CAAK,OAAA,EAAW,IAAA,CAAK,KAAA,CACrB,IAAA,CAAK,KAAA,CAAM,OAAA,CAASW,CAAAA,EAAS,CAC3BA,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,EAAA,CACrBA,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,EAAA,CACrBA,CAAAA,CAAK,MAAA,EAAU,GACjB,CAAC,CACH,CACF,CAAA,CAMMgB,CAAAA,CAAwD,CAAC,CAC7D,OAAA,CAAAC,CAAAA,CAAU,UACZ,CAAA,CAAA,EAAM,CACJ,IAAMC,CAAAA,CAAYC,2BAAAA,IAA8B,CAAA,CAEhD,OAAAC,8BAAAA,CAAU,CAAA,EAAM,CACd,IAAMC,CAAAA,CAASH,CAAAA,CAAU,OAAA,CACzB,EAAA,CAAI,CAACG,CAAAA,CAAQ,MAAA,CAEb,IAAMC,CAAAA,CAAMD,CAAAA,CAAO,UAAA,CAAW,IAAI,CAAA,CAClC,EAAA,CAAI,CAACC,CAAAA,CAAK,MAAA,CAEV,IAAIC,CAAAA,CACAC,CAAAA,CAAuB,CAAC,CAAA,CACxBC,CAAAA,CAAqB,CAAC,CAAA,CACtBC,CAAAA,CAAoB,CAAE,CAAA,CAAG,CAAA,GAAA,CAAO,CAAA,CAAG,CAAA,GAAA,CAAO,KAAA,CAAO,CAAA,GAAA,CAAO,KAAA,CAAO,CAAA,GAAM,CAAA,CAEnEC,CAAAA,CAAY,CAAA,CAAA,EAAM,CACtBH,CAAAA,CAAO,CAAC,CAAA,CACR,IAAMI,CAAAA,CAAIP,CAAAA,CAAO,KAAA,CACXQ,CAAAA,CAAIR,CAAAA,CAAO,MAAA,CAGjBG,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAIA,CAAAA,CAAI,GAAA,CACX,CAAA,CAAGC,CAAAA,CAAI,GACT,CAAC,CACH,CAAA,CAGAL,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAI,EAAA,CACP,CAAA,CAAGC,CAAAA,CAAI,EACT,CAAC,CACH,CAAA,CAGAL,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAI,GAAA,CAAO,EAAA,CACd,CAAA,CAAGC,CAAAA,CAAIA,CAAAA,CAAI,GACb,CAAC,CACH,CAAA,CAGAL,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAIA,CAAAA,CAAI,GAAA,CAAO,EAAA,CAClB,CAAA,CAAGC,CAAAA,CAAIA,CAAAA,CAAI,GAAA,CAAO,EACpB,CAAC,CACH,CACF,CAAA,CAEMC,CAAAA,CAAS,CAAA,CAAA,EAAM,CACnB,IAAMC,CAAAA,CAAOV,CAAAA,CAAO,qBAAA,CAAsB,CAAA,CACpCW,CAAAA,CAAOD,CAAAA,CAAK,KAAA,CACZE,CAAAA,CAAOF,CAAAA,CAAK,MAAA,CAGdC,CAAAA,GAAS,CAAA,EAAKC,CAAAA,GAAS,CAAA,EAGvBZ,CAAAA,CAAO,KAAA,GAAUW,CAAAA,EAAQX,CAAAA,CAAO,MAAA,GAAWY,CAAAA,EAAAA,CAE/CZ,CAAAA,CAAO,KAAA,CAAQW,CAAAA,CACfX,CAAAA,CAAO,MAAA,CAASY,CAAAA,CAChBN,CAAAA,CAAU,CAAA,CACZ,CAAA,CAEMO,CAAAA,CAAmBC,CAAAA,EAAkB,CACzC,IAAMJ,CAAAA,CAAOV,CAAAA,CAAO,qBAAA,CAAsB,CAAA,CAC1CK,CAAAA,CAAM,CAAA,CAAIS,CAAAA,CAAE,OAAA,CAAUJ,CAAAA,CAAK,IAAA,CAC3BL,CAAAA,CAAM,CAAA,CAAIS,CAAAA,CAAE,OAAA,CAAUJ,CAAAA,CAAK,GAAA,CAEvBL,CAAAA,CAAM,KAAA,GAAU,CAAA,GAAA,EAAA,CAClBA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CACpBA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CAAA,CAGtB,IAAMjC,CAAAA,CAAKiC,CAAAA,CAAM,CAAA,CAAIA,CAAAA,CAAM,KAAA,CACrBhC,CAAAA,CAAKgC,CAAAA,CAAM,CAAA,CAAIA,CAAAA,CAAM,KAAA,CACd,IAAA,CAAK,IAAA,CAAKjC,CAAAA,CAAKA,CAAAA,CAAKC,CAAAA,CAAKA,CAAE,CAAA,CAE7B,EAAA,EAAA,CACT+B,CAAAA,CAAM,IAAA,CAAK,IAAIb,CAAAA,CAAUc,CAAAA,CAAM,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA,CAC1CA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CACpBA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CAExB,CAAA,CAEMU,CAAAA,CAAO,CAAA,CAAA,EAAM,CACjB,IAAMR,CAAAA,CAAIP,CAAAA,CAAO,KAAA,CACXQ,CAAAA,CAAIR,CAAAA,CAAO,MAAA,CAOjB,EAAA,CAJAC,CAAAA,CAAI,SAAA,CAAY,SAAA,CAChBA,CAAAA,CAAI,QAAA,CAAS,CAAA,CAAG,CAAA,CAAGM,CAAAA,CAAGC,CAAC,CAAA,CAGnBZ,CAAAA,GAAY,QAAA,CAAU,CACxB,GAAA,CAAA,IAASJ,CAAAA,CAAInC,CAAAA,CAAM,CAAA,CAAGmC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKnC,CAAAA,CAChC,GAAA,CAAA,IAASoC,CAAAA,CAAIpC,CAAAA,CAAM,CAAA,CAAGoC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKpC,CAAAA,CAChC4C,CAAAA,CAAI,SAAA,CAAY,qBAAA,CAChBA,CAAAA,CAAI,QAAA,CAAST,CAAAA,CAAI,EAAA,CAAKC,CAAAA,CAAI,EAAA,CAAK,CAAA,CAAG,CAAC,CAAA,CAGvC,MACF,CAIAU,CAAAA,CAAK,OAAA,CAASa,CAAAA,EAAQA,CAAAA,CAAI,MAAA,CAAO,CAAC,CAAA,CAClC,GAAA,CAAA,IAAShD,CAAAA,CAAIoC,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAGpC,CAAAA,EAAK,CAAA,CAAGA,CAAAA,EAAAA,CACrCoC,CAAAA,CAAMpC,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,CACZoC,CAAAA,CAAMpC,CAAC,CAAA,CAAE,OAAA,EAAW,CAAA,EAAGoC,CAAAA,CAAM,MAAA,CAAOpC,CAAAA,CAAG,CAAC,CAAA,CAG9C,IAAMiD,CAAAA,CAAa,CAAC,GAAGd,CAAAA,CAAM,GAAGC,CAAK,CAAA,CAI/Bc,CAAAA,CAA4B,CAAC,CAAA,CACnCf,CAAAA,CAAK,OAAA,CAASgB,CAAAA,EAAMD,CAAAA,CAAY,IAAA,CAAK,GAAGC,CAAAA,CAAE,WAAW,CAAC,CAAA,CAEtD,GAAA,CAAA,IAAS3B,CAAAA,CAAInC,CAAAA,CAAM,CAAA,CAAGmC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKnC,CAAAA,CAChC,GAAA,CAAA,IAASoC,CAAAA,CAAIpC,CAAAA,CAAM,CAAA,CAAGoC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKpC,CAAAA,CAAK,CAGrC,IAAI+D,CAAAA,CAAc,CAAA,CAAA,CAClB,GAAA,CAAA,IAAWvC,EAAAA,GAAKqC,CAAAA,CAEd,EAAA,CAAI1B,CAAAA,EAAKX,CAAAA,CAAE,CAAA,EAAKW,CAAAA,EAAKX,CAAAA,CAAE,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAKY,CAAAA,EAAKZ,CAAAA,CAAE,CAAA,EAAKY,CAAAA,EAAKZ,CAAAA,CAAE,CAAA,CAAIA,CAAAA,CAAE,CAAA,CAAG,CAC5DuC,CAAAA,CAAc,CAAA,CAAA,CACd,KACF,CAGF,EAAA,CAAIA,CAAAA,CAAa,CAMf,EAAA,CAHAnB,CAAAA,CAAI,SAAA,CAAY,2BAAA,CAGZ,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAK,CACvB,IAAMoB,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAM9D,CAAAA,CAAW,EAAA,CAAMD,CAAAA,CAAY,CAAA,CAChE2C,CAAAA,CAAI,SAAA,CAAU,CAAA,CACdA,CAAAA,CAAI,GAAA,CAAIT,CAAAA,CAAGC,CAAAA,CAAG4B,CAAAA,CAAO,CAAA,CAAG,CAAA,CAAG,IAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CACtCpB,CAAAA,CAAI,IAAA,CAAK,CACX,CACA,QACF,CAGA,IAAIqB,CAAAA,CAAiB,CAAA,CAGjBC,CAAAA,CAAS,CAAA,CAAA,CACb,GAAA,CAAA,IAAWC,EAAAA,GAAUP,CAAAA,CACnB,EAAA,CACE,IAAA,CAAK,GAAA,CAAIzB,CAAAA,CAAIgC,CAAAA,CAAO,CAAC,CAAA,CAAIA,CAAAA,CAAO,QAAA,EAChC,IAAA,CAAK,GAAA,CAAI/B,CAAAA,CAAI+B,CAAAA,CAAO,CAAC,CAAA,CAAIA,CAAAA,CAAO,QAAA,CAChC,CACAD,CAAAA,CAAS,CAAA,CAAA,CACT,KACF,CAGF,EAAA,CAAI,CAACA,CAAAA,CAAQ,CAEXtB,CAAAA,CAAI,SAAA,CAAY,qBAAA,CAChBA,CAAAA,CAAI,QAAA,CAAST,CAAAA,CAAI,EAAA,CAAKC,CAAAA,CAAI,EAAA,CAAK,CAAA,CAAG,CAAC,CAAA,CACnC,QACF,CAGA,GAAA,CAAA,IAAW+B,EAAAA,GAAUP,CAAAA,CAAY,CAC/B,IAAM7C,CAAAA,CAAKoB,CAAAA,CAAIgC,CAAAA,CAAO,CAAA,CAChBnD,CAAAA,CAAKoB,CAAAA,CAAI+B,CAAAA,CAAO,CAAA,CAEtB,EAAA,CACE,IAAA,CAAK,GAAA,CAAIpD,CAAE,CAAA,CAAIoD,CAAAA,CAAO,QAAA,EACtB,IAAA,CAAK,GAAA,CAAInD,CAAE,CAAA,CAAImD,CAAAA,CAAO,QAAA,CAEtB,QAAA,CAEF,IAAIC,CAAAA,CAAW,CAAA,CACf,GAAA,CAAA,IAAW9C,EAAAA,GAAQ6C,CAAAA,CAAO,KAAA,CAAO,CAC/B,IAAME,CAAAA,CAAKtD,CAAAA,CAAKO,CAAAA,CAAK,OAAA,CACfgD,CAAAA,CAAKtD,CAAAA,CAAKM,CAAAA,CAAK,OAAA,CACflB,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAKiE,CAAAA,CAAKA,CAAAA,CAAKC,CAAAA,CAAKA,CAAE,CAAA,CACxCF,CAAAA,EAAYjE,CAAAA,CAAWC,CAAAA,CAAMkB,CAAAA,CAAK,MAAM,CAC1C,CACI8C,CAAAA,CAAW,CAAA,EAAA,CAAGA,CAAAA,CAAW,CAAA,CAAA,CAC7BH,CAAAA,EAAkBG,CAAAA,CAAWD,CAAAA,CAAO,OACtC,CAKA,EAAA,CAHIF,CAAAA,CAAiB,CAAA,EAAA,CAAGA,CAAAA,CAAiB,CAAA,CAAA,CAGrCA,CAAAA,CAAiB,GAAA,CAAM,CAUzB,IAAMrD,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAS,CAAA,EAAA,CAAmBqD,CAAc,CAAA,CACzDzC,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAS,CAAA,EAAA,CAAmByC,CAAc,CAAA,CACzDM,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAS,CAAA,EAAA,CAAmBN,CAAc,CAAA,CAEzDO,CAAAA,CAAQP,CAAAA,CAAiB,EAAA,CACzBD,CAAAA,CAAO/D,CAAAA,CAAYgE,CAAAA,CAAAA,CAAkB/D,CAAAA,CAAWD,CAAAA,CAAAA,CAEtD2C,CAAAA,CAAI,SAAA,CAAY,CAAA,KAAA,EAAQhC,CAAC,CAAA,EAAA,EAAKY,CAAC,CAAA,EAAA,EAAK+C,CAAC,CAAA,EAAA,EAAKC,CAAK,CAAA,CAAA,CAAA,CAC/C5B,CAAAA,CAAI,SAAA,CAAU,CAAA,CACdA,CAAAA,CAAI,GAAA,CAAIT,CAAAA,CAAGC,CAAAA,CAAG4B,CAAAA,CAAO,CAAA,CAAG,CAAA,CAAG,IAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CACtCpB,CAAAA,CAAI,IAAA,CAAK,CACX,CAAA,KACEA,CAAAA,CAAI,SAAA,CAAY,qBAAA,CAChBA,CAAAA,CAAI,QAAA,CAAST,CAAAA,CAAI,EAAA,CAAKC,CAAAA,CAAI,EAAA,CAAK,CAAA,CAAG,CAAC,CAEvC,CAGFS,CAAAA,CAAmB,qBAAA,CAAsBa,CAAI,CAC/C,CAAA,CAIMe,CAAAA,CAAiB,IAAI,cAAA,CAAe,CAAA,CAAA,EAAM,CAC9CrB,CAAAA,CAAO,CAAA,CAGHb,CAAAA,GAAY,QAAA,EACdmB,CAAAA,CAAK,CAET,CAAC,CAAA,CACD,OAAAe,CAAAA,CAAe,OAAA,CAAQ9B,CAAM,CAAA,CAEzBJ,CAAAA,GAAY,UAAA,EACd,MAAA,CAAO,gBAAA,CAAiB,WAAA,CAAaiB,CAAe,CAAA,CAGtDJ,CAAAA,CAAO,CAAA,CACPM,CAAAA,CAAK,CAAA,CAEE,CAAA,CAAA,EAAM,CACXe,CAAAA,CAAe,UAAA,CAAW,CAAA,CACtBlC,CAAAA,GAAY,UAAA,EACd,MAAA,CAAO,mBAAA,CAAoB,WAAA,CAAaiB,CAAe,CAAA,CAEzD,oBAAA,CAAqBX,CAAgB,CACvC,CACF,CAAA,CAAG,CAACN,CAAO,CAAC,CAAA,CAGVmC,6BAAAA,QAAC,CAAA,CACC,GAAA,CAAKlC,CAAAA,CACL,SAAA,CAAU,wDAAA,CACZ,CAEJ,CAAA,CAEOmC,CAAAA,aAAQrC,CAAAA,CAAAA,cAAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-3PEPOFYU.js","sourcesContent":[null,"\"use client\"\nimport React, { useEffect, useRef } from \"react\"\n\n// --- CONFIGURATION ---\nconst GAP = 17\nconst BASE_SIZE = 1\nconst MAX_SIZE = 5\n\n// --- TYPES ---\ninterface Node {\n offsetX: number\n offsetY: number\n vx: number\n vy: number\n radius: number\n t: number\n}\n\ninterface GlitchZone {\n x: number\n y: number\n w: number\n h: number\n life: number\n}\n\ninterface MouseState {\n x: number\n y: number\n lastX: number\n lastY: number\n}\n\n// --- MATH HELPERS ---\nconst getFalloff = (dist: number, radius: number): number => {\n if (dist < radius) {\n const val = 1 - dist / radius\n return val * val * (3 - 2 * val)\n }\n return 0\n}\n\n// --- CLASSES ---\nclass AnchoredBlob {\n // Current Position\n x: number = 0\n y: number = 0\n\n // Anchor Position (Home base)\n anchorX: number = 0\n anchorY: number = 0\n\n // Movement\n vx: number = 0\n vy: number = 0\n\n // Appearance\n nodes: Node[] = []\n opacity: number = 0\n\n // Glitch State\n glitchZones: GlitchZone[] = []\n maxReach: number = 180\n\n constructor(anchorConfig: { x: number; y: number }) {\n this.anchorX = anchorConfig.x\n this.anchorY = anchorConfig.y\n this.x = this.anchorX\n this.y = this.anchorY\n this.init()\n }\n\n init() {\n // 1. Create Internal Nodes (The \"Blob\" composition)\n this.nodes = []\n const nodeCount = 3 + Math.floor(Math.random() * 3) // 3 to 5 nodes\n\n for (let i = 0; i < nodeCount; i++) {\n // Significantly smaller radius (15-40px) to reduce central bulk\n const r = 15 + Math.random() * 25\n // Wider initial spread\n const ox = (Math.random() - 0.5) * 60\n const oy = (Math.random() - 0.5) * 60\n\n this.nodes.push({\n offsetX: ox,\n offsetY: oy,\n vx: (Math.random() - 0.5) * 0.1, // Slower internal movement (was 0.4)\n vy: (Math.random() - 0.5) * 0.1,\n radius: r,\n t: Math.random() * 100,\n })\n }\n\n this.opacity = 1\n }\n\n update() {\n // --- 1. Tethered Movement Logic ---\n const dx = this.anchorX - this.x\n const dy = this.anchorY - this.y\n\n // Spring constant (very loose)\n const k = 0.0005\n const ax = dx * k\n const ay = dy * k\n\n // Random wandering force - Reduced significantly for slower drift\n const wx = (Math.random() - 0.5) * 0.01 // was 0.05\n const wy = (Math.random() - 0.5) * 0.01 // was 0.05\n\n this.vx += ax + wx\n this.vy += ay + wy\n\n this.vx *= 0.96\n this.vy *= 0.96\n\n this.x += this.vx\n this.y += this.vy\n\n // --- 2. Internal Node Animation ---\n this.nodes.forEach((node) => {\n // Slow down time step\n node.t += 0.005 // was 0.02\n\n // Slower oscillation and movement\n node.offsetX += Math.sin(node.t) * 0.1 + node.vx // amp was 0.4\n node.offsetY += Math.cos(node.t * 0.9) * 0.1 + node.vy\n\n // Constrain to \"nucleus\"\n const maxDist = 70\n if (node.offsetX > maxDist || node.offsetX < -maxDist) node.vx *= -1\n if (node.offsetY > maxDist || node.offsetY < -maxDist) node.vy *= -1\n\n // Pulse size\n node.radius += Math.sin(node.t * 2) * 0.1\n })\n\n // --- 3. Manage Glitch Zones ---\n // Remove dead glitches\n this.glitchZones = this.glitchZones.filter((g) => g.life > 0)\n this.glitchZones.forEach((g) => g.life--)\n\n // Randomly spawn new glitches\n if (Math.random() < 0.03) {\n // 3% chance per frame\n const spread = 80\n\n // Snap random positions to exact grid points to ensure clean lines\n const snap = (v: number) =>\n Math.round((v - GAP / 2) / GAP) * GAP + GAP / 2\n\n const rawCx = this.x + (Math.random() - 0.5) * spread\n const rawCy = this.y + (Math.random() - 0.5) * spread\n\n const cx = snap(rawCx)\n const cy = snap(rawCy)\n\n const type = Math.random() > 0.6 ? \"line\" : \"dot\"\n\n if (type === \"line\") {\n const isVert = Math.random() > 0.5\n // Medium length: 40-120px\n const len = 40 + Math.random() * 80\n\n // Thickness is essentially zero (just a sliver) centered on the grid line\n // to guarantee we only pick up exactly one row/column of dots\n const thickness = 2\n\n this.glitchZones.push({\n x: isVert ? cx - thickness / 2 : cx - len / 2,\n y: isVert ? cy - len / 2 : cy - thickness / 2,\n w: isVert ? thickness : len,\n h: isVert ? len : thickness,\n life: 8 + Math.random() * 12,\n })\n } else {\n // Single dot\n // Box just large enough to catch one grid point\n const size = 4\n\n this.glitchZones.push({\n x: cx - size / 2,\n y: cy - size / 2,\n w: size,\n h: size,\n life: 6 + Math.random() * 10,\n })\n }\n }\n }\n}\n\nclass TrailBlob {\n x: number\n y: number\n opacity: number\n decay: number\n nodes: Node[]\n maxReach: number = 60\n\n constructor(x: number, y: number) {\n this.x = x\n this.y = y\n this.opacity = 0.8\n this.decay = 0.03\n\n this.nodes = []\n const count = 2\n for (let i = 0; i < count; i++) {\n this.nodes.push({\n offsetX: (Math.random() - 0.5) * 10,\n offsetY: (Math.random() - 0.5) * 10,\n vx: (Math.random() - 0.5) * 1,\n vy: (Math.random() - 0.5) * 1,\n radius: 5 + Math.random() * 10,\n t: 0,\n })\n }\n }\n\n update() {\n this.opacity -= this.decay\n this.nodes.forEach((node) => {\n node.offsetX += node.vx\n node.offsetY += node.vy\n node.radius *= 0.95\n })\n }\n}\n\ninterface GeometricFluidGridProps {\n variant?: \"animated\" | \"static\"\n}\n\nconst GeometricFluidGrid: React.FC<GeometricFluidGridProps> = ({\n variant = \"animated\",\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n let animationFrameId: number\n let orbs: AnchoredBlob[] = []\n let trail: TrailBlob[] = []\n let mouse: MouseState = { x: -1000, y: -1000, lastX: -1000, lastY: -1000 }\n\n const initWorld = () => {\n orbs = []\n const w = canvas.width\n const h = canvas.height\n\n // 1. Top Right\n orbs.push(\n new AnchoredBlob({\n x: w - w * 0.15,\n y: h * 0.15,\n })\n )\n\n // 2. ~40% from top and ~40% from left\n orbs.push(\n new AnchoredBlob({\n x: w * 0.4,\n y: h * 0.4,\n })\n )\n\n // 3. Bottom Left\n orbs.push(\n new AnchoredBlob({\n x: w * 0.05 + 50,\n y: h - h * 0.15,\n })\n )\n\n // 4. Bottom Right\n orbs.push(\n new AnchoredBlob({\n x: w - w * 0.05 - 50,\n y: h - h * 0.05 - 50,\n })\n )\n }\n\n const resize = () => {\n const rect = canvas.getBoundingClientRect()\n const newW = rect.width\n const newH = rect.height\n\n // Skip if the element has no size (e.g. during a layout transition)\n if (newW === 0 || newH === 0) return\n\n // Skip if size hasn't actually changed\n if (canvas.width === newW && canvas.height === newH) return\n\n canvas.width = newW\n canvas.height = newH\n initWorld()\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = canvas.getBoundingClientRect()\n mouse.x = e.clientX - rect.left\n mouse.y = e.clientY - rect.top\n\n if (mouse.lastX === -1000) {\n mouse.lastX = mouse.x\n mouse.lastY = mouse.y\n }\n\n const dx = mouse.x - mouse.lastX\n const dy = mouse.y - mouse.lastY\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n if (dist > 20) {\n trail.push(new TrailBlob(mouse.x, mouse.y))\n mouse.lastX = mouse.x\n mouse.lastY = mouse.y\n }\n }\n\n const draw = () => {\n const w = canvas.width\n const h = canvas.height\n\n // Clear Screen\n ctx.fillStyle = \"#050505\"\n ctx.fillRect(0, 0, w, h)\n\n // Static variant: just render uniform dots\n if (variant === \"static\") {\n for (let x = GAP / 2; x < w; x += GAP) {\n for (let y = GAP / 2; y < h; y += GAP) {\n ctx.fillStyle = \"rgba(47, 47, 47, 1)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n }\n }\n return // No animation loop for static variant\n }\n\n // Animated variant: update and render with animations\n // Update Logic\n orbs.forEach((orb) => orb.update())\n for (let i = trail.length - 1; i >= 0; i--) {\n trail[i].update()\n if (trail[i].opacity <= 0) trail.splice(i, 1)\n }\n\n const renderList = [...orbs, ...trail]\n\n // Collect all glitch zones for easier checking inside the loop\n // We flat map them to a simple array to iterate quickly\n const allGlitches: GlitchZone[] = []\n orbs.forEach((o) => allGlitches.push(...o.glitchZones))\n\n for (let x = GAP / 2; x < w; x += GAP) {\n for (let y = GAP / 2; y < h; y += GAP) {\n // --- GLITCH CHECK ---\n // Check if this specific grid dot is inside a glitch zone\n let isGlitching = false\n for (const g of allGlitches) {\n // Simple AABB check\n if (x >= g.x && x <= g.x + g.w && y >= g.y && y <= g.y + g.h) {\n isGlitching = true\n break\n }\n }\n\n if (isGlitching) {\n // Glitched Dot: Bright\n // We use the grid itself to manifest the glitch\n ctx.fillStyle = \"rgba(182, 243, 191, 0.95)\"\n\n // Randomly skip some dots in the glitch line for a \"broken\" look\n if (Math.random() > 0.1) {\n const size = Math.random() > 0.5 ? MAX_SIZE * 0.7 : BASE_SIZE * 2\n ctx.beginPath()\n ctx.arc(x, y, size / 2, 0, Math.PI * 2)\n ctx.fill()\n }\n continue // Skip standard influence calculation for this dot\n }\n\n // --- STANDARD INFLUENCE CHECK ---\n let totalInfluence = 0\n\n // Optimization: Is near blob?\n let nearby = false\n for (const entity of renderList) {\n if (\n Math.abs(x - entity.x) < entity.maxReach &&\n Math.abs(y - entity.y) < entity.maxReach\n ) {\n nearby = true\n break\n }\n }\n\n if (!nearby) {\n // Passive Background Dot\n ctx.fillStyle = \"rgba(47, 47, 47, 1)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n continue\n }\n\n // Calculate Influence\n for (const entity of renderList) {\n const dx = x - entity.x\n const dy = y - entity.y\n\n if (\n Math.abs(dx) > entity.maxReach ||\n Math.abs(dy) > entity.maxReach\n )\n continue\n\n let localInf = 0\n for (const node of entity.nodes) {\n const nx = dx - node.offsetX\n const ny = dy - node.offsetY\n const dist = Math.sqrt(nx * nx + ny * ny)\n localInf += getFalloff(dist, node.radius)\n }\n if (localInf > 1) localInf = 1\n totalInfluence += localInf * entity.opacity\n }\n\n if (totalInfluence > 1) totalInfluence = 1\n\n // Draw Cell\n if (totalInfluence > 0.01) {\n // Gradient: White (Edge) to Green (#B6F3BF - Center)\n const edgeR = 255,\n centerR = 182\n const edgeG = 255,\n centerG = 243\n const edgeB = 255,\n centerB = 191\n\n // Interpolate from White (0 influence) to Green (1 influence)\n const r = Math.floor(edgeR + (centerR - edgeR) * totalInfluence)\n const g = Math.floor(edgeG + (centerG - edgeG) * totalInfluence)\n const b = Math.floor(edgeB + (centerB - edgeB) * totalInfluence)\n\n const alpha = totalInfluence * 0.5\n const size = BASE_SIZE + totalInfluence * (MAX_SIZE - BASE_SIZE)\n\n ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${alpha})`\n ctx.beginPath()\n ctx.arc(x, y, size / 2, 0, Math.PI * 2)\n ctx.fill()\n } else {\n ctx.fillStyle = \"rgba(47, 47, 47, 1)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n }\n }\n }\n\n animationFrameId = requestAnimationFrame(draw)\n }\n\n // Use ResizeObserver to detect element-level size changes\n // (catches CSS breakpoints, container queries, layout shifts — not just window resize)\n const resizeObserver = new ResizeObserver(() => {\n resize()\n // For the static variant, draw() returns early without scheduling\n // another frame, so we must explicitly redraw after a resize.\n if (variant === \"static\") {\n draw()\n }\n })\n resizeObserver.observe(canvas)\n\n if (variant === \"animated\") {\n window.addEventListener(\"mousemove\", handleMouseMove)\n }\n\n resize()\n draw()\n\n return () => {\n resizeObserver.disconnect()\n if (variant === \"animated\") {\n window.removeEventListener(\"mousemove\", handleMouseMove)\n }\n cancelAnimationFrame(animationFrameId)\n }\n }, [variant])\n\n return (\n <canvas\n ref={canvasRef}\n className=\"fixed inset-0 -z-999 w-full h-full pointer-events-none\"\n />\n )\n}\n\nexport default GeometricFluidGrid\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-3PEPOFYU.js","../src/components/GeometricFluidGrid.tsx"],"names":["GAP","BASE_SIZE","MAX_SIZE","getFalloff","dist","radius","val","AnchoredBlob","anchorConfig","__publicField","nodeCount","i","r","ox","oy","dx","dy","k","ax","ay","wx","wy","node","maxDist","g","snap","v","rawCx","rawCy","cx","cy","isVert","len","thickness","TrailBlob","x","y","count","GeometricFluidGrid","variant","canvasRef","useRef","useEffect","canvas","ctx","animationFrameId","orbs","trail","mouse","initWorld","w","h","resize","rect","newW","newH","handleMouseMove","e","draw","orb","renderList","allGlitches","o","isGlitching","size","totalInfluence","nearby","entity","localInf","nx","ny","b","alpha","resizeObserver","jsx","GeometricFluidGrid_default"],"mappings":"AAAA,qFAAY;AACZ,sDAAuC,8BCAE,+CA+erC,IA5eEA,CAAAA,CAAM,EAAA,CACNC,CAAAA,CAAY,CAAA,CACZC,CAAAA,CAAW,CAAA,CA4BXC,CAAAA,CAAa,CAACC,CAAAA,CAAcC,CAAAA,CAAAA,EAA2B,CAC3D,EAAA,CAAID,CAAAA,CAAOC,CAAAA,CAAQ,CACjB,IAAMC,CAAAA,CAAM,CAAA,CAAIF,CAAAA,CAAOC,CAAAA,CACvB,OAAOC,CAAAA,CAAMA,CAAAA,CAAAA,CAAO,CAAA,CAAI,CAAA,CAAIA,CAAAA,CAC9B,CACA,OAAO,CACT,CAAA,CAGMC,CAAAA,CAAN,KAAmB,CAqBjB,WAAA,CAAYC,CAAAA,CAAwC,CAnBpDC,gCAAAA,IAAA,CAAA,GAAA,CAAY,CAAA,CAAA,CACZA,gCAAAA,IAAA,CAAA,GAAA,CAAY,CAAA,CAAA,CAGZA,gCAAAA,IAAA,CAAA,SAAA,CAAkB,CAAA,CAAA,CAClBA,gCAAAA,IAAA,CAAA,SAAA,CAAkB,CAAA,CAAA,CAGlBA,gCAAAA,IAAA,CAAA,IAAA,CAAa,CAAA,CAAA,CACbA,gCAAAA,IAAA,CAAA,IAAA,CAAa,CAAA,CAAA,CAGbA,gCAAAA,IAAA,CAAA,OAAA,CAAgB,CAAC,CAAA,CAAA,CACjBA,gCAAAA,IAAA,CAAA,SAAA,CAAkB,CAAA,CAAA,CAGlBA,gCAAAA,IAAA,CAAA,aAAA,CAA4B,CAAC,CAAA,CAAA,CAC7BA,gCAAAA,IAAA,CAAA,UAAA,CAAmB,GAAA,CAAA,CAGjB,IAAA,CAAK,OAAA,CAAUD,CAAAA,CAAa,CAAA,CAC5B,IAAA,CAAK,OAAA,CAAUA,CAAAA,CAAa,CAAA,CAC5B,IAAA,CAAK,CAAA,CAAI,IAAA,CAAK,OAAA,CACd,IAAA,CAAK,CAAA,CAAI,IAAA,CAAK,OAAA,CACd,IAAA,CAAK,IAAA,CAAK,CACZ,CAEA,IAAA,CAAA,CAAO,CAEL,IAAA,CAAK,KAAA,CAAQ,CAAC,CAAA,CACd,IAAME,CAAAA,CAAY,CAAA,CAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,CAAC,CAAA,CAElD,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAID,CAAAA,CAAWC,CAAAA,EAAAA,CAAK,CAElC,IAAMC,CAAAA,CAAI,EAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAEzBC,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAC7BC,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAEnC,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CACd,OAAA,CAASD,CAAAA,CACT,OAAA,CAASC,CAAAA,CACT,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAC5B,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAC5B,MAAA,CAAQF,CAAAA,CACR,CAAA,CAAG,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,GACrB,CAAC,CACH,CAEA,IAAA,CAAK,OAAA,CAAU,CACjB,CAEA,MAAA,CAAA,CAAS,CAEP,IAAMG,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,CAAA,CACzBC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,CAAA,CAGzBC,CAAAA,CAAI,IAAA,CACJC,CAAAA,CAAKH,CAAAA,CAAKE,CAAAA,CACVE,CAAAA,CAAKH,CAAAA,CAAKC,CAAAA,CAGVG,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,GAAA,CAC7BC,CAAAA,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,GAAA,CAmCnC,EAAA,CAjCA,IAAA,CAAK,EAAA,EAAMH,CAAAA,CAAKE,CAAAA,CAChB,IAAA,CAAK,EAAA,EAAMD,CAAAA,CAAKE,CAAAA,CAEhB,IAAA,CAAK,EAAA,EAAM,GAAA,CACX,IAAA,CAAK,EAAA,EAAM,GAAA,CAEX,IAAA,CAAK,CAAA,EAAK,IAAA,CAAK,EAAA,CACf,IAAA,CAAK,CAAA,EAAK,IAAA,CAAK,EAAA,CAGf,IAAA,CAAK,KAAA,CAAM,OAAA,CAASC,CAAAA,EAAS,CAE3BA,CAAAA,CAAK,CAAA,EAAK,IAAA,CAGVA,CAAAA,CAAK,OAAA,EAAW,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAK,CAAC,CAAA,CAAI,EAAA,CAAMA,CAAAA,CAAK,EAAA,CAC9CA,CAAAA,CAAK,OAAA,EAAW,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAK,CAAA,CAAI,EAAG,CAAA,CAAI,EAAA,CAAMA,CAAAA,CAAK,EAAA,CAGpD,IAAMC,CAAAA,CAAU,EAAA,CAAA,CACZD,CAAAA,CAAK,OAAA,CAAUC,CAAAA,EAAWD,CAAAA,CAAK,OAAA,CAAU,CAACC,CAAAA,CAAAA,EAAAA,CAASD,CAAAA,CAAK,EAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAC9DA,CAAAA,CAAK,OAAA,CAAUC,CAAAA,EAAWD,CAAAA,CAAK,OAAA,CAAU,CAACC,CAAAA,CAAAA,EAAAA,CAASD,CAAAA,CAAK,EAAA,EAAM,CAAA,CAAA,CAAA,CAGlEA,CAAAA,CAAK,MAAA,EAAU,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAK,CAAA,CAAI,CAAC,CAAA,CAAI,EACxC,CAAC,CAAA,CAID,IAAA,CAAK,WAAA,CAAc,IAAA,CAAK,WAAA,CAAY,MAAA,CAAQE,CAAAA,EAAMA,CAAAA,CAAE,IAAA,CAAO,CAAC,CAAA,CAC5D,IAAA,CAAK,WAAA,CAAY,OAAA,CAASA,CAAAA,EAAMA,CAAAA,CAAE,IAAA,EAAM,CAAA,CAGpC,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,GAAA,CAAM,CAKxB,IAAMC,CAAAA,CAAQC,CAAAA,EACZ,IAAA,CAAK,KAAA,CAAA,CAAOA,CAAAA,CAAI1B,CAAAA,CAAM,CAAA,CAAA,CAAKA,CAAG,CAAA,CAAIA,CAAAA,CAAMA,CAAAA,CAAM,CAAA,CAE1C2B,CAAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CACzCC,CAAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CAEzCC,CAAAA,CAAKJ,CAAAA,CAAKE,CAAK,CAAA,CACfG,CAAAA,CAAKL,CAAAA,CAAKG,CAAK,CAAA,CAIrB,EAAA,CAAA,CAFa,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAM,MAAA,CAAS,KAAA,CAAA,GAE/B,MAAA,CAAQ,CACnB,IAAMG,CAAAA,CAAS,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAEzBC,CAAAA,CAAM,EAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAI3BC,CAAAA,CAAY,CAAA,CAElB,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,CACpB,CAAA,CAAGF,CAAAA,CAASF,CAAAA,CAAKI,CAAAA,CAAY,CAAA,CAAIJ,CAAAA,CAAKG,CAAAA,CAAM,CAAA,CAC5C,CAAA,CAAGD,CAAAA,CAASD,CAAAA,CAAKE,CAAAA,CAAM,CAAA,CAAIF,CAAAA,CAAKG,CAAAA,CAAY,CAAA,CAC5C,CAAA,CAAGF,CAAAA,CAASE,CAAAA,CAAYD,CAAAA,CACxB,CAAA,CAAGD,CAAAA,CAASC,CAAAA,CAAMC,CAAAA,CAClB,IAAA,CAAM,CAAA,CAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAC5B,CAAC,CACH,CAAA,KAKE,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,CACpB,CAAA,CAAGJ,CAAAA,CAAK,CAAA,CAAO,CAAA,CACf,CAAA,CAAGC,CAAAA,CAAK,CAAA,CAAO,CAAA,CACf,CAAA,CAAG,CAAA,CACH,CAAA,CAAG,CAAA,CACH,IAAA,CAAM,CAAA,CAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAC5B,CAAC,CAEL,CACF,CACF,CAAA,CAEMI,CAAAA,CAAN,KAAgB,CAQd,WAAA,CAAYC,CAAAA,CAAWC,CAAAA,CAAW,CAPlC3B,gCAAAA,IAAA,CAAA,GAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,GAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,SAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,OAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,OAAA,CAAA,CACAA,gCAAAA,IAAA,CAAA,UAAA,CAAmB,EAAA,CAAA,CAGjB,IAAA,CAAK,CAAA,CAAI0B,CAAAA,CACT,IAAA,CAAK,CAAA,CAAIC,CAAAA,CACT,IAAA,CAAK,OAAA,CAAU,EAAA,CACf,IAAA,CAAK,KAAA,CAAQ,GAAA,CAEb,IAAA,CAAK,KAAA,CAAQ,CAAC,CAAA,CACd,IAAMC,CAAAA,CAAQ,CAAA,CACd,GAAA,CAAA,IAAS1B,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI0B,CAAAA,CAAO1B,CAAAA,EAAAA,CACzB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CACd,OAAA,CAAA,CAAU,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CACjC,OAAA,CAAA,CAAU,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,EAAA,CACjC,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,CAAA,CAC5B,EAAA,CAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAA,CAAO,CAAA,CAC5B,MAAA,CAAQ,CAAA,CAAI,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAC5B,CAAA,CAAG,CACL,CAAC,CAEL,CAEA,MAAA,CAAA,CAAS,CACP,IAAA,CAAK,OAAA,EAAW,IAAA,CAAK,KAAA,CACrB,IAAA,CAAK,KAAA,CAAM,OAAA,CAASW,CAAAA,EAAS,CAC3BA,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,EAAA,CACrBA,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,EAAA,CACrBA,CAAAA,CAAK,MAAA,EAAU,GACjB,CAAC,CACH,CACF,CAAA,CAMMgB,CAAAA,CAAwD,CAAC,CAC7D,OAAA,CAAAC,CAAAA,CAAU,UACZ,CAAA,CAAA,EAAM,CACJ,IAAMC,CAAAA,CAAYC,2BAAAA,IAA8B,CAAA,CAEhD,OAAAC,8BAAAA,CAAU,CAAA,EAAM,CACd,IAAMC,CAAAA,CAASH,CAAAA,CAAU,OAAA,CACzB,EAAA,CAAI,CAACG,CAAAA,CAAQ,MAAA,CAEb,IAAMC,CAAAA,CAAMD,CAAAA,CAAO,UAAA,CAAW,IAAI,CAAA,CAClC,EAAA,CAAI,CAACC,CAAAA,CAAK,MAAA,CAEV,IAAIC,CAAAA,CACAC,CAAAA,CAAuB,CAAC,CAAA,CACxBC,CAAAA,CAAqB,CAAC,CAAA,CACtBC,CAAAA,CAAoB,CAAE,CAAA,CAAG,CAAA,GAAA,CAAO,CAAA,CAAG,CAAA,GAAA,CAAO,KAAA,CAAO,CAAA,GAAA,CAAO,KAAA,CAAO,CAAA,GAAM,CAAA,CAEnEC,CAAAA,CAAY,CAAA,CAAA,EAAM,CACtBH,CAAAA,CAAO,CAAC,CAAA,CACR,IAAMI,CAAAA,CAAIP,CAAAA,CAAO,KAAA,CACXQ,CAAAA,CAAIR,CAAAA,CAAO,MAAA,CAGjBG,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAIA,CAAAA,CAAI,GAAA,CACX,CAAA,CAAGC,CAAAA,CAAI,GACT,CAAC,CACH,CAAA,CAGAL,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAI,EAAA,CACP,CAAA,CAAGC,CAAAA,CAAI,EACT,CAAC,CACH,CAAA,CAGAL,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAI,GAAA,CAAO,EAAA,CACd,CAAA,CAAGC,CAAAA,CAAIA,CAAAA,CAAI,GACb,CAAC,CACH,CAAA,CAGAL,CAAAA,CAAK,IAAA,CACH,IAAIvC,CAAAA,CAAa,CACf,CAAA,CAAG2C,CAAAA,CAAIA,CAAAA,CAAI,GAAA,CAAO,EAAA,CAClB,CAAA,CAAGC,CAAAA,CAAIA,CAAAA,CAAI,GAAA,CAAO,EACpB,CAAC,CACH,CACF,CAAA,CAEMC,CAAAA,CAAS,CAAA,CAAA,EAAM,CACnB,IAAMC,CAAAA,CAAOV,CAAAA,CAAO,qBAAA,CAAsB,CAAA,CACpCW,CAAAA,CAAOD,CAAAA,CAAK,KAAA,CACZE,CAAAA,CAAOF,CAAAA,CAAK,MAAA,CAGdC,CAAAA,GAAS,CAAA,EAAKC,CAAAA,GAAS,CAAA,EAGvBZ,CAAAA,CAAO,KAAA,GAAUW,CAAAA,EAAQX,CAAAA,CAAO,MAAA,GAAWY,CAAAA,EAAAA,CAE/CZ,CAAAA,CAAO,KAAA,CAAQW,CAAAA,CACfX,CAAAA,CAAO,MAAA,CAASY,CAAAA,CAChBN,CAAAA,CAAU,CAAA,CACZ,CAAA,CAEMO,CAAAA,CAAmBC,CAAAA,EAAkB,CACzC,IAAMJ,CAAAA,CAAOV,CAAAA,CAAO,qBAAA,CAAsB,CAAA,CAC1CK,CAAAA,CAAM,CAAA,CAAIS,CAAAA,CAAE,OAAA,CAAUJ,CAAAA,CAAK,IAAA,CAC3BL,CAAAA,CAAM,CAAA,CAAIS,CAAAA,CAAE,OAAA,CAAUJ,CAAAA,CAAK,GAAA,CAEvBL,CAAAA,CAAM,KAAA,GAAU,CAAA,GAAA,EAAA,CAClBA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CACpBA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CAAA,CAGtB,IAAMjC,CAAAA,CAAKiC,CAAAA,CAAM,CAAA,CAAIA,CAAAA,CAAM,KAAA,CACrBhC,CAAAA,CAAKgC,CAAAA,CAAM,CAAA,CAAIA,CAAAA,CAAM,KAAA,CACd,IAAA,CAAK,IAAA,CAAKjC,CAAAA,CAAKA,CAAAA,CAAKC,CAAAA,CAAKA,CAAE,CAAA,CAE7B,EAAA,EAAA,CACT+B,CAAAA,CAAM,IAAA,CAAK,IAAIb,CAAAA,CAAUc,CAAAA,CAAM,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA,CAC1CA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CACpBA,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,CAAA,CAExB,CAAA,CAEMU,CAAAA,CAAO,CAAA,CAAA,EAAM,CACjB,IAAMR,CAAAA,CAAIP,CAAAA,CAAO,KAAA,CACXQ,CAAAA,CAAIR,CAAAA,CAAO,MAAA,CAOjB,EAAA,CAJAC,CAAAA,CAAI,SAAA,CAAY,SAAA,CAChBA,CAAAA,CAAI,QAAA,CAAS,CAAA,CAAG,CAAA,CAAGM,CAAAA,CAAGC,CAAC,CAAA,CAGnBZ,CAAAA,GAAY,QAAA,CAAU,CACxB,GAAA,CAAA,IAASJ,CAAAA,CAAInC,CAAAA,CAAM,CAAA,CAAGmC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKnC,CAAAA,CAChC,GAAA,CAAA,IAASoC,CAAAA,CAAIpC,CAAAA,CAAM,CAAA,CAAGoC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKpC,CAAAA,CAChC4C,CAAAA,CAAI,SAAA,CAAY,qBAAA,CAChBA,CAAAA,CAAI,QAAA,CAAST,CAAAA,CAAI,EAAA,CAAKC,CAAAA,CAAI,EAAA,CAAK,CAAA,CAAG,CAAC,CAAA,CAGvC,MACF,CAIAU,CAAAA,CAAK,OAAA,CAASa,CAAAA,EAAQA,CAAAA,CAAI,MAAA,CAAO,CAAC,CAAA,CAClC,GAAA,CAAA,IAAShD,CAAAA,CAAIoC,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAGpC,CAAAA,EAAK,CAAA,CAAGA,CAAAA,EAAAA,CACrCoC,CAAAA,CAAMpC,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,CACZoC,CAAAA,CAAMpC,CAAC,CAAA,CAAE,OAAA,EAAW,CAAA,EAAGoC,CAAAA,CAAM,MAAA,CAAOpC,CAAAA,CAAG,CAAC,CAAA,CAG9C,IAAMiD,CAAAA,CAAa,CAAC,GAAGd,CAAAA,CAAM,GAAGC,CAAK,CAAA,CAI/Bc,CAAAA,CAA4B,CAAC,CAAA,CACnCf,CAAAA,CAAK,OAAA,CAASgB,CAAAA,EAAMD,CAAAA,CAAY,IAAA,CAAK,GAAGC,CAAAA,CAAE,WAAW,CAAC,CAAA,CAEtD,GAAA,CAAA,IAAS3B,CAAAA,CAAInC,CAAAA,CAAM,CAAA,CAAGmC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKnC,CAAAA,CAChC,GAAA,CAAA,IAASoC,CAAAA,CAAIpC,CAAAA,CAAM,CAAA,CAAGoC,CAAAA,CAAIe,CAAAA,CAAGf,CAAAA,EAAKpC,CAAAA,CAAK,CAGrC,IAAI+D,CAAAA,CAAc,CAAA,CAAA,CAClB,GAAA,CAAA,IAAWvC,EAAAA,GAAKqC,CAAAA,CAEd,EAAA,CAAI1B,CAAAA,EAAKX,CAAAA,CAAE,CAAA,EAAKW,CAAAA,EAAKX,CAAAA,CAAE,CAAA,CAAIA,CAAAA,CAAE,CAAA,EAAKY,CAAAA,EAAKZ,CAAAA,CAAE,CAAA,EAAKY,CAAAA,EAAKZ,CAAAA,CAAE,CAAA,CAAIA,CAAAA,CAAE,CAAA,CAAG,CAC5DuC,CAAAA,CAAc,CAAA,CAAA,CACd,KACF,CAGF,EAAA,CAAIA,CAAAA,CAAa,CAMf,EAAA,CAHAnB,CAAAA,CAAI,SAAA,CAAY,2BAAA,CAGZ,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAK,CACvB,IAAMoB,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,EAAA,CAAM9D,CAAAA,CAAW,EAAA,CAAMD,CAAAA,CAAY,CAAA,CAChE2C,CAAAA,CAAI,SAAA,CAAU,CAAA,CACdA,CAAAA,CAAI,GAAA,CAAIT,CAAAA,CAAGC,CAAAA,CAAG4B,CAAAA,CAAO,CAAA,CAAG,CAAA,CAAG,IAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CACtCpB,CAAAA,CAAI,IAAA,CAAK,CACX,CACA,QACF,CAGA,IAAIqB,CAAAA,CAAiB,CAAA,CAGjBC,CAAAA,CAAS,CAAA,CAAA,CACb,GAAA,CAAA,IAAWC,EAAAA,GAAUP,CAAAA,CACnB,EAAA,CACE,IAAA,CAAK,GAAA,CAAIzB,CAAAA,CAAIgC,CAAAA,CAAO,CAAC,CAAA,CAAIA,CAAAA,CAAO,QAAA,EAChC,IAAA,CAAK,GAAA,CAAI/B,CAAAA,CAAI+B,CAAAA,CAAO,CAAC,CAAA,CAAIA,CAAAA,CAAO,QAAA,CAChC,CACAD,CAAAA,CAAS,CAAA,CAAA,CACT,KACF,CAGF,EAAA,CAAI,CAACA,CAAAA,CAAQ,CAEXtB,CAAAA,CAAI,SAAA,CAAY,qBAAA,CAChBA,CAAAA,CAAI,QAAA,CAAST,CAAAA,CAAI,EAAA,CAAKC,CAAAA,CAAI,EAAA,CAAK,CAAA,CAAG,CAAC,CAAA,CACnC,QACF,CAGA,GAAA,CAAA,IAAW+B,EAAAA,GAAUP,CAAAA,CAAY,CAC/B,IAAM7C,CAAAA,CAAKoB,CAAAA,CAAIgC,CAAAA,CAAO,CAAA,CAChBnD,CAAAA,CAAKoB,CAAAA,CAAI+B,CAAAA,CAAO,CAAA,CAEtB,EAAA,CACE,IAAA,CAAK,GAAA,CAAIpD,CAAE,CAAA,CAAIoD,CAAAA,CAAO,QAAA,EACtB,IAAA,CAAK,GAAA,CAAInD,CAAE,CAAA,CAAImD,CAAAA,CAAO,QAAA,CAEtB,QAAA,CAEF,IAAIC,CAAAA,CAAW,CAAA,CACf,GAAA,CAAA,IAAW9C,EAAAA,GAAQ6C,CAAAA,CAAO,KAAA,CAAO,CAC/B,IAAME,CAAAA,CAAKtD,CAAAA,CAAKO,CAAAA,CAAK,OAAA,CACfgD,CAAAA,CAAKtD,CAAAA,CAAKM,CAAAA,CAAK,OAAA,CACflB,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAKiE,CAAAA,CAAKA,CAAAA,CAAKC,CAAAA,CAAKA,CAAE,CAAA,CACxCF,CAAAA,EAAYjE,CAAAA,CAAWC,CAAAA,CAAMkB,CAAAA,CAAK,MAAM,CAC1C,CACI8C,CAAAA,CAAW,CAAA,EAAA,CAAGA,CAAAA,CAAW,CAAA,CAAA,CAC7BH,CAAAA,EAAkBG,CAAAA,CAAWD,CAAAA,CAAO,OACtC,CAKA,EAAA,CAHIF,CAAAA,CAAiB,CAAA,EAAA,CAAGA,CAAAA,CAAiB,CAAA,CAAA,CAGrCA,CAAAA,CAAiB,GAAA,CAAM,CAUzB,IAAMrD,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAS,CAAA,EAAA,CAAmBqD,CAAc,CAAA,CACzDzC,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAS,CAAA,EAAA,CAAmByC,CAAc,CAAA,CACzDM,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAS,CAAA,EAAA,CAAmBN,CAAc,CAAA,CAEzDO,CAAAA,CAAQP,CAAAA,CAAiB,EAAA,CACzBD,CAAAA,CAAO/D,CAAAA,CAAYgE,CAAAA,CAAAA,CAAkB/D,CAAAA,CAAWD,CAAAA,CAAAA,CAEtD2C,CAAAA,CAAI,SAAA,CAAY,CAAA,KAAA,EAAQhC,CAAC,CAAA,EAAA,EAAKY,CAAC,CAAA,EAAA,EAAK+C,CAAC,CAAA,EAAA,EAAKC,CAAK,CAAA,CAAA,CAAA,CAC/C5B,CAAAA,CAAI,SAAA,CAAU,CAAA,CACdA,CAAAA,CAAI,GAAA,CAAIT,CAAAA,CAAGC,CAAAA,CAAG4B,CAAAA,CAAO,CAAA,CAAG,CAAA,CAAG,IAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CACtCpB,CAAAA,CAAI,IAAA,CAAK,CACX,CAAA,KACEA,CAAAA,CAAI,SAAA,CAAY,qBAAA,CAChBA,CAAAA,CAAI,QAAA,CAAST,CAAAA,CAAI,EAAA,CAAKC,CAAAA,CAAI,EAAA,CAAK,CAAA,CAAG,CAAC,CAEvC,CAGFS,CAAAA,CAAmB,qBAAA,CAAsBa,CAAI,CAC/C,CAAA,CAIMe,CAAAA,CAAiB,IAAI,cAAA,CAAe,CAAA,CAAA,EAAM,CAC9CrB,CAAAA,CAAO,CAAA,CAGHb,CAAAA,GAAY,QAAA,EACdmB,CAAAA,CAAK,CAET,CAAC,CAAA,CACD,OAAAe,CAAAA,CAAe,OAAA,CAAQ9B,CAAM,CAAA,CAEzBJ,CAAAA,GAAY,UAAA,EACd,MAAA,CAAO,gBAAA,CAAiB,WAAA,CAAaiB,CAAe,CAAA,CAGtDJ,CAAAA,CAAO,CAAA,CACPM,CAAAA,CAAK,CAAA,CAEE,CAAA,CAAA,EAAM,CACXe,CAAAA,CAAe,UAAA,CAAW,CAAA,CACtBlC,CAAAA,GAAY,UAAA,EACd,MAAA,CAAO,mBAAA,CAAoB,WAAA,CAAaiB,CAAe,CAAA,CAEzD,oBAAA,CAAqBX,CAAgB,CACvC,CACF,CAAA,CAAG,CAACN,CAAO,CAAC,CAAA,CAGVmC,6BAAAA,QAAC,CAAA,CACC,GAAA,CAAKlC,CAAAA,CACL,SAAA,CAAU,wDAAA,CACZ,CAEJ,CAAA,CAEOmC,CAAAA,aAAQrC,CAAAA,CAAAA,cAAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-3PEPOFYU.js","sourcesContent":[null,"\"use client\"\nimport React, { useEffect, useRef } from \"react\"\n\n// --- CONFIGURATION ---\nconst GAP = 17\nconst BASE_SIZE = 1\nconst MAX_SIZE = 5\n\n// --- TYPES ---\ninterface Node {\n offsetX: number\n offsetY: number\n vx: number\n vy: number\n radius: number\n t: number\n}\n\ninterface GlitchZone {\n x: number\n y: number\n w: number\n h: number\n life: number\n}\n\ninterface MouseState {\n x: number\n y: number\n lastX: number\n lastY: number\n}\n\n// --- MATH HELPERS ---\nconst getFalloff = (dist: number, radius: number): number => {\n if (dist < radius) {\n const val = 1 - dist / radius\n return val * val * (3 - 2 * val)\n }\n return 0\n}\n\n// --- CLASSES ---\nclass AnchoredBlob {\n // Current Position\n x: number = 0\n y: number = 0\n\n // Anchor Position (Home base)\n anchorX: number = 0\n anchorY: number = 0\n\n // Movement\n vx: number = 0\n vy: number = 0\n\n // Appearance\n nodes: Node[] = []\n opacity: number = 0\n\n // Glitch State\n glitchZones: GlitchZone[] = []\n maxReach: number = 180\n\n constructor(anchorConfig: { x: number; y: number }) {\n this.anchorX = anchorConfig.x\n this.anchorY = anchorConfig.y\n this.x = this.anchorX\n this.y = this.anchorY\n this.init()\n }\n\n init() {\n // 1. Create Internal Nodes (The \"Blob\" composition)\n this.nodes = []\n const nodeCount = 3 + Math.floor(Math.random() * 3) // 3 to 5 nodes\n\n for (let i = 0; i < nodeCount; i++) {\n // Significantly smaller radius (15-40px) to reduce central bulk\n const r = 15 + Math.random() * 25\n // Wider initial spread\n const ox = (Math.random() - 0.5) * 60\n const oy = (Math.random() - 0.5) * 60\n\n this.nodes.push({\n offsetX: ox,\n offsetY: oy,\n vx: (Math.random() - 0.5) * 0.1, // Slower internal movement (was 0.4)\n vy: (Math.random() - 0.5) * 0.1,\n radius: r,\n t: Math.random() * 100,\n })\n }\n\n this.opacity = 1\n }\n\n update() {\n // --- 1. Tethered Movement Logic ---\n const dx = this.anchorX - this.x\n const dy = this.anchorY - this.y\n\n // Spring constant (very loose)\n const k = 0.0005\n const ax = dx * k\n const ay = dy * k\n\n // Random wandering force - Reduced significantly for slower drift\n const wx = (Math.random() - 0.5) * 0.01 // was 0.05\n const wy = (Math.random() - 0.5) * 0.01 // was 0.05\n\n this.vx += ax + wx\n this.vy += ay + wy\n\n this.vx *= 0.96\n this.vy *= 0.96\n\n this.x += this.vx\n this.y += this.vy\n\n // --- 2. Internal Node Animation ---\n this.nodes.forEach((node) => {\n // Slow down time step\n node.t += 0.005 // was 0.02\n\n // Slower oscillation and movement\n node.offsetX += Math.sin(node.t) * 0.1 + node.vx // amp was 0.4\n node.offsetY += Math.cos(node.t * 0.9) * 0.1 + node.vy\n\n // Constrain to \"nucleus\"\n const maxDist = 70\n if (node.offsetX > maxDist || node.offsetX < -maxDist) node.vx *= -1\n if (node.offsetY > maxDist || node.offsetY < -maxDist) node.vy *= -1\n\n // Pulse size\n node.radius += Math.sin(node.t * 2) * 0.1\n })\n\n // --- 3. Manage Glitch Zones ---\n // Remove dead glitches\n this.glitchZones = this.glitchZones.filter((g) => g.life > 0)\n this.glitchZones.forEach((g) => g.life--)\n\n // Randomly spawn new glitches\n if (Math.random() < 0.03) {\n // 3% chance per frame\n const spread = 80\n\n // Snap random positions to exact grid points to ensure clean lines\n const snap = (v: number) =>\n Math.round((v - GAP / 2) / GAP) * GAP + GAP / 2\n\n const rawCx = this.x + (Math.random() - 0.5) * spread\n const rawCy = this.y + (Math.random() - 0.5) * spread\n\n const cx = snap(rawCx)\n const cy = snap(rawCy)\n\n const type = Math.random() > 0.6 ? \"line\" : \"dot\"\n\n if (type === \"line\") {\n const isVert = Math.random() > 0.5\n // Medium length: 40-120px\n const len = 40 + Math.random() * 80\n\n // Thickness is essentially zero (just a sliver) centered on the grid line\n // to guarantee we only pick up exactly one row/column of dots\n const thickness = 2\n\n this.glitchZones.push({\n x: isVert ? cx - thickness / 2 : cx - len / 2,\n y: isVert ? cy - len / 2 : cy - thickness / 2,\n w: isVert ? thickness : len,\n h: isVert ? len : thickness,\n life: 8 + Math.random() * 12,\n })\n } else {\n // Single dot\n // Box just large enough to catch one grid point\n const size = 4\n\n this.glitchZones.push({\n x: cx - size / 2,\n y: cy - size / 2,\n w: size,\n h: size,\n life: 6 + Math.random() * 10,\n })\n }\n }\n }\n}\n\nclass TrailBlob {\n x: number\n y: number\n opacity: number\n decay: number\n nodes: Node[]\n maxReach: number = 60\n\n constructor(x: number, y: number) {\n this.x = x\n this.y = y\n this.opacity = 0.8\n this.decay = 0.03\n\n this.nodes = []\n const count = 2\n for (let i = 0; i < count; i++) {\n this.nodes.push({\n offsetX: (Math.random() - 0.5) * 10,\n offsetY: (Math.random() - 0.5) * 10,\n vx: (Math.random() - 0.5) * 1,\n vy: (Math.random() - 0.5) * 1,\n radius: 5 + Math.random() * 10,\n t: 0,\n })\n }\n }\n\n update() {\n this.opacity -= this.decay\n this.nodes.forEach((node) => {\n node.offsetX += node.vx\n node.offsetY += node.vy\n node.radius *= 0.95\n })\n }\n}\n\ninterface GeometricFluidGridProps {\n variant?: \"animated\" | \"static\"\n}\n\nconst GeometricFluidGrid: React.FC<GeometricFluidGridProps> = ({\n variant = \"animated\",\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n let animationFrameId: number\n let orbs: AnchoredBlob[] = []\n let trail: TrailBlob[] = []\n let mouse: MouseState = { x: -1000, y: -1000, lastX: -1000, lastY: -1000 }\n\n const initWorld = () => {\n orbs = []\n const w = canvas.width\n const h = canvas.height\n\n // 1. Top Right\n orbs.push(\n new AnchoredBlob({\n x: w - w * 0.15,\n y: h * 0.15,\n })\n )\n\n // 2. ~40% from top and ~40% from left\n orbs.push(\n new AnchoredBlob({\n x: w * 0.4,\n y: h * 0.4,\n })\n )\n\n // 3. Bottom Left\n orbs.push(\n new AnchoredBlob({\n x: w * 0.05 + 50,\n y: h - h * 0.15,\n })\n )\n\n // 4. Bottom Right\n orbs.push(\n new AnchoredBlob({\n x: w - w * 0.05 - 50,\n y: h - h * 0.05 - 50,\n })\n )\n }\n\n const resize = () => {\n const rect = canvas.getBoundingClientRect()\n const newW = rect.width\n const newH = rect.height\n\n // Skip if the element has no size (e.g. during a layout transition)\n if (newW === 0 || newH === 0) return\n\n // Skip if size hasn't actually changed\n if (canvas.width === newW && canvas.height === newH) return\n\n canvas.width = newW\n canvas.height = newH\n initWorld()\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n const rect = canvas.getBoundingClientRect()\n mouse.x = e.clientX - rect.left\n mouse.y = e.clientY - rect.top\n\n if (mouse.lastX === -1000) {\n mouse.lastX = mouse.x\n mouse.lastY = mouse.y\n }\n\n const dx = mouse.x - mouse.lastX\n const dy = mouse.y - mouse.lastY\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n if (dist > 20) {\n trail.push(new TrailBlob(mouse.x, mouse.y))\n mouse.lastX = mouse.x\n mouse.lastY = mouse.y\n }\n }\n\n const draw = () => {\n const w = canvas.width\n const h = canvas.height\n\n // Clear Screen\n ctx.fillStyle = \"#050505\"\n ctx.fillRect(0, 0, w, h)\n\n // Static variant: just render uniform dots\n if (variant === \"static\") {\n for (let x = GAP / 2; x < w; x += GAP) {\n for (let y = GAP / 2; y < h; y += GAP) {\n ctx.fillStyle = \"rgba(47, 47, 47, 1)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n }\n }\n return // No animation loop for static variant\n }\n\n // Animated variant: update and render with animations\n // Update Logic\n orbs.forEach((orb) => orb.update())\n for (let i = trail.length - 1; i >= 0; i--) {\n trail[i].update()\n if (trail[i].opacity <= 0) trail.splice(i, 1)\n }\n\n const renderList = [...orbs, ...trail]\n\n // Collect all glitch zones for easier checking inside the loop\n // We flat map them to a simple array to iterate quickly\n const allGlitches: GlitchZone[] = []\n orbs.forEach((o) => allGlitches.push(...o.glitchZones))\n\n for (let x = GAP / 2; x < w; x += GAP) {\n for (let y = GAP / 2; y < h; y += GAP) {\n // --- GLITCH CHECK ---\n // Check if this specific grid dot is inside a glitch zone\n let isGlitching = false\n for (const g of allGlitches) {\n // Simple AABB check\n if (x >= g.x && x <= g.x + g.w && y >= g.y && y <= g.y + g.h) {\n isGlitching = true\n break\n }\n }\n\n if (isGlitching) {\n // Glitched Dot: Bright\n // We use the grid itself to manifest the glitch\n ctx.fillStyle = \"rgba(182, 243, 191, 0.95)\"\n\n // Randomly skip some dots in the glitch line for a \"broken\" look\n if (Math.random() > 0.1) {\n const size = Math.random() > 0.5 ? MAX_SIZE * 0.7 : BASE_SIZE * 2\n ctx.beginPath()\n ctx.arc(x, y, size / 2, 0, Math.PI * 2)\n ctx.fill()\n }\n continue // Skip standard influence calculation for this dot\n }\n\n // --- STANDARD INFLUENCE CHECK ---\n let totalInfluence = 0\n\n // Optimization: Is near blob?\n let nearby = false\n for (const entity of renderList) {\n if (\n Math.abs(x - entity.x) < entity.maxReach &&\n Math.abs(y - entity.y) < entity.maxReach\n ) {\n nearby = true\n break\n }\n }\n\n if (!nearby) {\n // Passive Background Dot\n ctx.fillStyle = \"rgba(47, 47, 47, 1)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n continue\n }\n\n // Calculate Influence\n for (const entity of renderList) {\n const dx = x - entity.x\n const dy = y - entity.y\n\n if (\n Math.abs(dx) > entity.maxReach ||\n Math.abs(dy) > entity.maxReach\n )\n continue\n\n let localInf = 0\n for (const node of entity.nodes) {\n const nx = dx - node.offsetX\n const ny = dy - node.offsetY\n const dist = Math.sqrt(nx * nx + ny * ny)\n localInf += getFalloff(dist, node.radius)\n }\n if (localInf > 1) localInf = 1\n totalInfluence += localInf * entity.opacity\n }\n\n if (totalInfluence > 1) totalInfluence = 1\n\n // Draw Cell\n if (totalInfluence > 0.01) {\n // Gradient: White (Edge) to Green (#B6F3BF - Center)\n const edgeR = 255,\n centerR = 182\n const edgeG = 255,\n centerG = 243\n const edgeB = 255,\n centerB = 191\n\n // Interpolate from White (0 influence) to Green (1 influence)\n const r = Math.floor(edgeR + (centerR - edgeR) * totalInfluence)\n const g = Math.floor(edgeG + (centerG - edgeG) * totalInfluence)\n const b = Math.floor(edgeB + (centerB - edgeB) * totalInfluence)\n\n const alpha = totalInfluence * 0.5\n const size = BASE_SIZE + totalInfluence * (MAX_SIZE - BASE_SIZE)\n\n ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${alpha})`\n ctx.beginPath()\n ctx.arc(x, y, size / 2, 0, Math.PI * 2)\n ctx.fill()\n } else {\n ctx.fillStyle = \"rgba(47, 47, 47, 1)\"\n ctx.fillRect(x - 0.5, y - 0.5, 1, 1)\n }\n }\n }\n\n animationFrameId = requestAnimationFrame(draw)\n }\n\n // Use ResizeObserver to detect element-level size changes\n // (catches CSS breakpoints, container queries, layout shifts — not just window resize)\n const resizeObserver = new ResizeObserver(() => {\n resize()\n // For the static variant, draw() returns early without scheduling\n // another frame, so we must explicitly redraw after a resize.\n if (variant === \"static\") {\n draw()\n }\n })\n resizeObserver.observe(canvas)\n\n if (variant === \"animated\") {\n window.addEventListener(\"mousemove\", handleMouseMove)\n }\n\n resize()\n draw()\n\n return () => {\n resizeObserver.disconnect()\n if (variant === \"animated\") {\n window.removeEventListener(\"mousemove\", handleMouseMove)\n }\n cancelAnimationFrame(animationFrameId)\n }\n }, [variant])\n\n return (\n <canvas\n ref={canvasRef}\n className=\"fixed inset-0 -z-999 w-full h-full pointer-events-none\"\n />\n )\n}\n\nexport default GeometricFluidGrid\n"]}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a as i,f as n}from"./chunk-KLU33CJI.mjs";import{a as r}from"./chunk-S5TKCF6T.mjs";import*as d from"react";import{Command as o}from"cmdk";import{Search as s}from"lucide-react";import{jsx as m,jsxs as C}from"react/jsx-runtime";var p=d.forwardRef(({className:e,...t},a)=>m(o,{ref:a,className:r("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...t}));p.displayName=o.displayName;var P=({children:e,...t})=>m(i,{...t,children:m(n,{className:"overflow-hidden p-0 shadow-lg",children:m(p,{className:"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",children:e})})}),c=d.forwardRef(({className:e,...t},a)=>C("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[m(s,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),m(o.Input,{ref:a,className:r("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...t})]}));c.displayName=o.Input.displayName;var f=d.forwardRef(({className:e,...t},a)=>m(o.List,{ref:a,className:r("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...t}));f.displayName=o.List.displayName;var l=d.forwardRef((e,t)=>m(o.Empty,{ref:t,className:"py-6 text-center text-sm",...e}));l.displayName=o.Empty.displayName;var u=d.forwardRef(({className:e,...t},a)=>m(o.Group,{ref:a,className:r("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...t}));u.displayName=o.Group.displayName;var y=d.forwardRef(({className:e,...t},a)=>m(o.Separator,{ref:a,className:r("-mx-1 h-px bg-border",e),...t}));y.displayName=o.Separator.displayName;var g=d.forwardRef(({className:e,...t},a)=>m(o.Item,{ref:a,className:r("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-muted aria-selected:text-secondary-foreground active:opacity-50 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 truncate",e),...t}));g.displayName=o.Item.displayName;var R=({className:e,...t})=>m("span",{className:r("ml-auto text-xs tracking-widest text-muted-foreground",e),...t});R.displayName="CommandShortcut";export{p as a,P as b,c,f as d,l as e,u as f,y as g,g as h,R as i};
3
- //# sourceMappingURL=chunk-DATWXRPT.mjs.map
2
+ import{a as i,f as n}from"./chunk-RUEPYIWM.mjs";import{a as r}from"./chunk-S5TKCF6T.mjs";import*as d from"react";import{Command as o}from"cmdk";import{Search as s}from"lucide-react";import{jsx as m,jsxs as C}from"react/jsx-runtime";var p=d.forwardRef(({className:e,...t},a)=>m(o,{ref:a,className:r("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...t}));p.displayName=o.displayName;var P=({children:e,...t})=>m(i,{...t,children:m(n,{className:"overflow-hidden p-0 shadow-lg",children:m(p,{className:"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",children:e})})}),c=d.forwardRef(({className:e,...t},a)=>C("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[m(s,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),m(o.Input,{ref:a,className:r("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...t})]}));c.displayName=o.Input.displayName;var f=d.forwardRef(({className:e,...t},a)=>m(o.List,{ref:a,className:r("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...t}));f.displayName=o.List.displayName;var l=d.forwardRef((e,t)=>m(o.Empty,{ref:t,className:"py-6 text-center text-sm",...e}));l.displayName=o.Empty.displayName;var u=d.forwardRef(({className:e,...t},a)=>m(o.Group,{ref:a,className:r("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...t}));u.displayName=o.Group.displayName;var y=d.forwardRef(({className:e,...t},a)=>m(o.Separator,{ref:a,className:r("-mx-1 h-px bg-border",e),...t}));y.displayName=o.Separator.displayName;var g=d.forwardRef(({className:e,...t},a)=>m(o.Item,{ref:a,className:r("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-muted aria-selected:text-secondary-foreground active:opacity-50 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 truncate",e),...t}));g.displayName=o.Item.displayName;var R=({className:e,...t})=>m("span",{className:r("ml-auto text-xs tracking-widest text-muted-foreground",e),...t});R.displayName="CommandShortcut";export{p as a,P as b,c,f as d,l as e,u as f,y as g,g as h,R as i};
3
+ //# sourceMappingURL=chunk-4DRIPZWE.mjs.map
@@ -1,3 +1,3 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
- var _chunk3BVMHDYAjs = require('./chunk-3BVMHDYA.js');var _chunkXQILGD5Bjs = require('./chunk-XQILGD5B.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var i = _interopRequireWildcard(_react);var _reactdialog = require('@radix-ui/react-dialog'); var e = _interopRequireWildcard(_reactdialog);var _vaul = require('vaul');var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var y=i.createContext({}),b= exports.a =({children:a,open:o,onOpenChange:n,...s})=>{let[p,c]=i.useState(!1),f=o!==void 0,m=f?o:p,r=f?n:R=>{c(R)};return _jsxruntime.jsx.call(void 0, e.Root,{open:m,onOpenChange:r,...s,children:_jsxruntime.jsx.call(void 0, y.Provider,{value:{open:m,onOpenChange:r},children:a})})};b.displayName="Dialog";var M=e.Trigger,P= exports.c =e.Portal,L= exports.d =e.Close,C= exports.e =i.forwardRef(({className:a,...o},n)=>_jsxruntime.jsx.call(void 0, e.Overlay,{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...o}));C.displayName=e.Overlay.displayName;var x=i.forwardRef(({className:a,children:o,showCloseButton:n=!0,closeOnOverlayClick:s=!0,...p},c)=>{let f=_chunk3BVMHDYAjs.a.call(void 0, "md"),m=i.useContext(y);return f?_jsxruntime.jsxs.call(void 0, P,{children:[_jsxruntime.jsx.call(void 0, C,{}),_jsxruntime.jsxs.call(void 0, e.Content,{ref:c,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-3xl overflow-auto",a),onPointerDownOutside:r=>{s||r.preventDefault()},onEscapeKeyDown:r=>{s||r.preventDefault()},...p,children:[o,n&&_jsxruntime.jsx.call(void 0, e.Close,{asChild:!0,children:_jsxruntime.jsxs.call(void 0, _chunkXQILGD5Bjs.b,{variant:"secondary",size:"icon",className:"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none",children:[_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-4 w-4"}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Close"})]})})]})]}):_jsxruntime.jsx.call(void 0, P,{children:_jsxruntime.jsx.call(void 0, _vaul.Drawer.Root,{open:m.open,onOpenChange:m.onOpenChange,dismissible:s,children:_jsxruntime.jsxs.call(void 0, _vaul.Drawer.Portal,{children:[_jsxruntime.jsx.call(void 0, _vaul.Drawer.Overlay,{className:"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm"}),_jsxruntime.jsxs.call(void 0, _vaul.Drawer.Content,{ref:c,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed inset-x-0 bottom-0 z-50 mt-24 flex flex-col rounded-t-3xl border border-border bg-background shadow-lg outline-none",a),"aria-describedby":void 0,onPointerDownOutside:r=>{s||r.preventDefault()},onEscapeKeyDown:r=>{s||r.preventDefault()},...p,children:[_jsxruntime.jsx.call(void 0, "div",{className:"mx-auto mt-2 h-2 w-[100px] rounded-full bg-muted"}),n&&_jsxruntime.jsxs.call(void 0, _chunkXQILGD5Bjs.b,{variant:"secondary",size:"icon",onClick:()=>_optionalChain([m, 'access', _ => _.onOpenChange, 'optionalCall', _2 => _2(!1)]),className:"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none",children:[_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-4 w-4"}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Close"})]}),_jsxruntime.jsx.call(void 0, "div",{children:o})]})]})})})});x.displayName=e.Content.displayName;var N=({className:a,...o})=>_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col space-y-1.5 text-left md:text-center",a),...o});N.displayName="DialogHeader";var w=({className:a,...o})=>_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...o});w.displayName="DialogFooter";var h=i.forwardRef(({className:a,...o},n)=>_jsxruntime.jsx.call(void 0, e.Title,{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "text-lg font-semibold leading-none tracking-tight",a),...o}));h.displayName=e.Title.displayName;var T=i.forwardRef(({className:a,...o},n)=>_jsxruntime.jsx.call(void 0, e.Description,{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "text-sm text-muted-foreground",a),...o}));T.displayName=e.Description.displayName;exports.a = b; exports.b = M; exports.c = P; exports.d = L; exports.e = C; exports.f = x; exports.g = N; exports.h = w; exports.i = h; exports.j = T;
3
- //# sourceMappingURL=chunk-BV7RXRSL.js.map
2
+ var _chunk3BVMHDYAjs = require('./chunk-3BVMHDYA.js');var _chunkIJVB2BVOjs = require('./chunk-IJVB2BVO.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var i = _interopRequireWildcard(_react);var _reactdialog = require('@radix-ui/react-dialog'); var e = _interopRequireWildcard(_reactdialog);var _vaul = require('vaul');var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var y=i.createContext({}),b= exports.a =({children:a,open:o,onOpenChange:n,...s})=>{let[p,c]=i.useState(!1),f=o!==void 0,m=f?o:p,r=f?n:R=>{c(R)};return _jsxruntime.jsx.call(void 0, e.Root,{open:m,onOpenChange:r,...s,children:_jsxruntime.jsx.call(void 0, y.Provider,{value:{open:m,onOpenChange:r},children:a})})};b.displayName="Dialog";var M=e.Trigger,P= exports.c =e.Portal,L= exports.d =e.Close,C= exports.e =i.forwardRef(({className:a,...o},n)=>_jsxruntime.jsx.call(void 0, e.Overlay,{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...o}));C.displayName=e.Overlay.displayName;var x=i.forwardRef(({className:a,children:o,showCloseButton:n=!0,closeOnOverlayClick:s=!0,...p},c)=>{let f=_chunk3BVMHDYAjs.a.call(void 0, "md"),m=i.useContext(y);return f?_jsxruntime.jsxs.call(void 0, P,{children:[_jsxruntime.jsx.call(void 0, C,{}),_jsxruntime.jsxs.call(void 0, e.Content,{ref:c,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-3xl overflow-auto",a),onPointerDownOutside:r=>{s||r.preventDefault()},onEscapeKeyDown:r=>{s||r.preventDefault()},...p,children:[o,n&&_jsxruntime.jsx.call(void 0, e.Close,{asChild:!0,children:_jsxruntime.jsxs.call(void 0, _chunkIJVB2BVOjs.b,{variant:"secondary",size:"icon",className:"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none",children:[_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-4 w-4"}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Close"})]})})]})]}):_jsxruntime.jsx.call(void 0, P,{children:_jsxruntime.jsx.call(void 0, _vaul.Drawer.Root,{open:m.open,onOpenChange:m.onOpenChange,dismissible:s,children:_jsxruntime.jsxs.call(void 0, _vaul.Drawer.Portal,{children:[_jsxruntime.jsx.call(void 0, _vaul.Drawer.Overlay,{className:"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm"}),_jsxruntime.jsxs.call(void 0, _vaul.Drawer.Content,{ref:c,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed inset-x-0 bottom-0 z-50 mt-24 flex flex-col rounded-t-3xl border border-border bg-background shadow-lg outline-none",a),"aria-describedby":void 0,onPointerDownOutside:r=>{s||r.preventDefault()},onEscapeKeyDown:r=>{s||r.preventDefault()},...p,children:[_jsxruntime.jsx.call(void 0, "div",{className:"mx-auto mt-2 h-2 w-[100px] rounded-full bg-muted"}),n&&_jsxruntime.jsxs.call(void 0, _chunkIJVB2BVOjs.b,{variant:"secondary",size:"icon",onClick:()=>_optionalChain([m, 'access', _ => _.onOpenChange, 'optionalCall', _2 => _2(!1)]),className:"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none",children:[_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-4 w-4"}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Close"})]}),_jsxruntime.jsx.call(void 0, "div",{children:o})]})]})})})});x.displayName=e.Content.displayName;var N=({className:a,...o})=>_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col space-y-1.5 text-left md:text-center",a),...o});N.displayName="DialogHeader";var w=({className:a,...o})=>_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...o});w.displayName="DialogFooter";var h=i.forwardRef(({className:a,...o},n)=>_jsxruntime.jsx.call(void 0, e.Title,{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "text-lg font-semibold leading-none tracking-tight",a),...o}));h.displayName=e.Title.displayName;var T=i.forwardRef(({className:a,...o},n)=>_jsxruntime.jsx.call(void 0, e.Description,{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "text-sm text-muted-foreground",a),...o}));T.displayName=e.Description.displayName;exports.a = b; exports.b = M; exports.c = P; exports.d = L; exports.e = C; exports.f = x; exports.g = N; exports.h = w; exports.i = h; exports.j = T;
3
+ //# sourceMappingURL=chunk-53P3PXF7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-53P3PXF7.js","../src/components/dialog.tsx"],"names":["DialogContentContext","Dialog","children","controlledOpen","controlledOnOpenChange","props","internalOpen","setInternalOpen","isControlled","open","onOpenChange","newOpen","jsx","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","ref","cn","DialogContent","showCloseButton","closeOnOverlayClick","isDesktop","useMediaQuery","context","jsxs","e","Button","X","DrawerPrimitive","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":"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","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-53P3PXF7.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"./button\"\nimport { useMediaQuery } from \"@/lib/use-media-query\"\n\ninterface DialogContentContextValue {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nconst DialogContentContext = React.createContext<DialogContentContextValue>({})\n\nconst Dialog = ({\n children,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) => {\n // Use internal state when Dialog is uncontrolled\n const [internalOpen, setInternalOpen] = React.useState(false)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n const onOpenChange = isControlled\n ? controlledOnOpenChange\n : (newOpen: boolean) => {\n setInternalOpen(newOpen)\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange} {...props}>\n <DialogContentContext.Provider value={{ open, onOpenChange }}>\n {children}\n </DialogContentContext.Provider>\n </DialogPrimitive.Root>\n )\n}\nDialog.displayName = \"Dialog\"\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n closeOnOverlayClick?: boolean\n }\n>(\n (\n {\n className,\n children,\n showCloseButton = true,\n closeOnOverlayClick = true,\n ...props\n },\n ref\n ) => {\n const isDesktop = useMediaQuery(\"md\")\n const context = React.useContext(DialogContentContext)\n\n if (!isDesktop) {\n // Mobile: Render as bottom drawer\n return (\n <DialogPortal>\n <DrawerPrimitive.Root\n open={context.open}\n onOpenChange={context.onOpenChange}\n dismissible={closeOnOverlayClick}\n >\n <DrawerPrimitive.Portal>\n <DrawerPrimitive.Overlay className=\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\" />\n <DrawerPrimitive.Content\n ref={ref as any}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex flex-col rounded-t-3xl border border-border bg-background shadow-lg outline-none\",\n className\n )}\n aria-describedby={undefined}\n onPointerDownOutside={(e) => {\n if (!closeOnOverlayClick) {\n e.preventDefault()\n }\n }}\n onEscapeKeyDown={(e) => {\n if (!closeOnOverlayClick) {\n e.preventDefault()\n }\n }}\n {...props}\n >\n <div className=\"mx-auto mt-2 h-2 w-[100px] rounded-full bg-muted\" />\n {showCloseButton && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n onClick={() => context.onOpenChange?.(false)}\n className=\"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Button>\n )}\n <div>{children}</div>\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n </DialogPortal>\n )\n }\n\n // Desktop: Render as centered dialog\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-3xl overflow-auto\",\n className\n )}\n onPointerDownOutside={(e) => {\n if (!closeOnOverlayClick) {\n e.preventDefault()\n }\n }}\n onEscapeKeyDown={(e) => {\n if (!closeOnOverlayClick) {\n e.preventDefault()\n }\n }}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className=\"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n }\n)\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-left md:text-center\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-5L5DM2X5.js","../src/components/skeleton.tsx"],"names":["Skeleton","className","props","jsx","cn"],"mappings":"AAAA,qFAAY;AACZ,sDAAuC,+CCMnC,SALKA,CAAAA,CAAS,CAChB,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAyC,CACvC,OACEC,6BAAAA,KAAC,CAAA,CACC,SAAA,CAAWC,gCAAAA,mCAAG,CAAqCH,CAAS,CAAA,CAC3D,GAAGC,CAAAA,CACN,CAEJ,CAAA,cAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-5L5DM2X5.js","sourcesContent":[null,"import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-5L5DM2X5.js","../src/components/skeleton.tsx"],"names":["Skeleton","className","props","jsx","cn"],"mappings":"AAAA,qFAAY;AACZ,sDAAuC,+CCMnC,SALKA,CAAAA,CAAS,CAChB,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAyC,CACvC,OACEC,6BAAAA,KAAC,CAAA,CACC,SAAA,CAAWC,gCAAAA,mCAAG,CAAqCH,CAAS,CAAA,CAC3D,GAAGC,CAAAA,CACN,CAEJ,CAAA,cAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-5L5DM2X5.js","sourcesContent":[null,"import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-5X26XR44.js","../src/components/table.tsx"],"names":["TableContext","roundedMap","stickyFirstColumnStyles","stickyActionColumnStyles","Table","className","stickyFirstColumn","rounded","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","isClickable","actionIcon","children","iconComponent","Eye","MoreVertical","jsxs","TableCell","TableHead","isSticky","TableCellAction","onClick","asChild","handleClick","e","childOnClick","TableCaption"],"mappings":"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","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-5X26XR44.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Eye, MoreVertical } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ninterface TableContextValue {\n stickyFirstColumn?: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue>({})\n\nexport interface TableProps extends React.ComponentProps<\"table\"> {\n stickyFirstColumn?: boolean\n rounded?: \"default\" | \"sm\"\n}\n\nconst roundedMap = {\n default: \"rounded-3xl\",\n sm: \"rounded-2xl\",\n} as const\n\n// Sticky first column (rows without action icon)\nconst stickyFirstColumnStyles =\n \"[&_tr:not([data-has-action-column])>th:first-child]:sticky [&_tr:not([data-has-action-column])>th:first-child]:left-0 [&_tr:not([data-has-action-column])>th:first-child]:z-10 [&_tr:not([data-has-action-column])>th:first-child]:bg-background [&_tr:not([data-has-action-column])>th:first-child]:after:absolute [&_tr:not([data-has-action-column])>th:first-child]:after:right-0 [&_tr:not([data-has-action-column])>th:first-child]:after:top-0 [&_tr:not([data-has-action-column])>th:first-child]:after:h-full [&_tr:not([data-has-action-column])>th:first-child]:after:w-px [&_tr:not([data-has-action-column])>th:first-child]:after:bg-border [&_tr:not([data-has-action-column])>td:first-child]:sticky [&_tr:not([data-has-action-column])>td:first-child]:left-0 [&_tr:not([data-has-action-column])>td:first-child]:z-10 [&_tr:not([data-has-action-column])>td:first-child]:bg-background [&_tr:not([data-has-action-column])>td:first-child]:after:absolute [&_tr:not([data-has-action-column])>td:first-child]:after:right-0 [&_tr:not([data-has-action-column])>td:first-child]:after:top-0 [&_tr:not([data-has-action-column])>td:first-child]:after:h-full [&_tr:not([data-has-action-column])>td:first-child]:after:w-px [&_tr:not([data-has-action-column])>td:first-child]:after:bg-border [&_tbody_tr:not([data-has-action-column]):hover>td:first-child]:bg-muted\"\n\n// Sticky first two columns (rows with action icon): icon at left-0, data column at left-12\nconst stickyActionColumnStyles =\n \"[&_tr[data-has-action-column]>*:first-child]:sticky [&_tr[data-has-action-column]>*:first-child]:left-0 [&_tr[data-has-action-column]>*:first-child]:z-10 [&_tr[data-has-action-column]>*:first-child]:bg-background [&_tr[data-has-action-column]>*:first-child]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:sticky [&_tr[data-has-action-column]>*:nth-child(2)]:left-12 [&_tr[data-has-action-column]>*:nth-child(2)]:z-10 [&_tr[data-has-action-column]>*:nth-child(2)]:bg-background [&_tr[data-has-action-column]>*:nth-child(2)]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:after:absolute [&_tr[data-has-action-column]>*:nth-child(2)]:after:right-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:top-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:h-full [&_tr[data-has-action-column]>*:nth-child(2)]:after:w-px [&_tr[data-has-action-column]>*:nth-child(2)]:after:bg-border [&_tbody_tr[data-has-action-column]:hover>td:first-child]:bg-muted [&_tbody_tr[data-has-action-column]:hover>td:nth-child(2)]:bg-muted\"\n\nfunction Table({ className, stickyFirstColumn, rounded = \"default\", ...props }: TableProps) {\n return (\n <TableContext.Provider value={{ stickyFirstColumn }}>\n <div\n data-slot=\"table-container\"\n className={cn(\n \"relative bg-background w-full overflow-x-auto border border-border\",\n roundedMap[rounded],\n stickyFirstColumn && stickyFirstColumnStyles,\n stickyFirstColumn && stickyActionColumnStyles\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n </TableContext.Provider>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b text-secondary-text\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableRowProps extends React.ComponentProps<\"tr\"> {\n isClickable?: boolean\n actionIcon?: \"eye\" | \"more\" | null\n}\n\nfunction TableRow({\n className,\n isClickable,\n actionIcon,\n children,\n ...props\n}: TableRowProps) {\n const iconComponent =\n actionIcon === \"eye\" ? (\n <Eye className=\"h-4 w-4\" />\n ) : actionIcon === \"more\" ? (\n <MoreVertical className=\"h-4 w-4\" />\n ) : null\n\n return (\n <tr\n data-slot=\"table-row\"\n data-has-action-column={actionIcon !== undefined ? \"\" : undefined}\n className={cn(\n \"border-b border-border/50 transition-colors\",\n isClickable && \"cursor-pointer hover:bg-muted/50\",\n className\n )}\n {...props}\n >\n {actionIcon !== undefined && (\n <TableCell className=\"w-12\">{iconComponent}</TableCell>\n )}\n {children}\n </tr>\n )\n}\n\nexport interface TableHeadProps extends React.ComponentProps<\"th\"> {\n isSticky?: boolean\n}\n\nfunction TableHead({ className, isSticky, ...props }: TableHeadProps) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-secondary-text h-10 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellProps extends React.ComponentProps<\"td\"> {\n isSticky?: boolean\n}\n\nfunction TableCell({ className, isSticky, ...props }: TableCellProps) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellActionProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean\n}\n\nfunction TableCellAction({\n className,\n onClick,\n children,\n asChild = false,\n ...props\n}: TableCellActionProps) {\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n onClick?.(e)\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n className?: string\n }>,\n {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n const childOnClick = (\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n }>\n ).props.onClick\n childOnClick?.(e)\n },\n className: cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:bg-muted/50 hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n (children as React.ReactElement<{ className?: string }>).props\n .className,\n className\n ),\n }\n )\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"table-cell-action\"\n className={cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n className\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCellAction,\n TableCaption,\n}\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-5X26XR44.js","../src/components/table.tsx"],"names":["TableContext","roundedMap","stickyFirstColumnStyles","stickyActionColumnStyles","Table","className","stickyFirstColumn","rounded","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","isClickable","actionIcon","children","iconComponent","Eye","MoreVertical","jsxs","TableCell","TableHead","isSticky","TableCellAction","onClick","asChild","handleClick","e","childOnClick","TableCaption"],"mappings":"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","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-5X26XR44.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Eye, MoreVertical } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ninterface TableContextValue {\n stickyFirstColumn?: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue>({})\n\nexport interface TableProps extends React.ComponentProps<\"table\"> {\n stickyFirstColumn?: boolean\n rounded?: \"default\" | \"sm\"\n}\n\nconst roundedMap = {\n default: \"rounded-3xl\",\n sm: \"rounded-2xl\",\n} as const\n\n// Sticky first column (rows without action icon)\nconst stickyFirstColumnStyles =\n \"[&_tr:not([data-has-action-column])>th:first-child]:sticky [&_tr:not([data-has-action-column])>th:first-child]:left-0 [&_tr:not([data-has-action-column])>th:first-child]:z-10 [&_tr:not([data-has-action-column])>th:first-child]:bg-background [&_tr:not([data-has-action-column])>th:first-child]:after:absolute [&_tr:not([data-has-action-column])>th:first-child]:after:right-0 [&_tr:not([data-has-action-column])>th:first-child]:after:top-0 [&_tr:not([data-has-action-column])>th:first-child]:after:h-full [&_tr:not([data-has-action-column])>th:first-child]:after:w-px [&_tr:not([data-has-action-column])>th:first-child]:after:bg-border [&_tr:not([data-has-action-column])>td:first-child]:sticky [&_tr:not([data-has-action-column])>td:first-child]:left-0 [&_tr:not([data-has-action-column])>td:first-child]:z-10 [&_tr:not([data-has-action-column])>td:first-child]:bg-background [&_tr:not([data-has-action-column])>td:first-child]:after:absolute [&_tr:not([data-has-action-column])>td:first-child]:after:right-0 [&_tr:not([data-has-action-column])>td:first-child]:after:top-0 [&_tr:not([data-has-action-column])>td:first-child]:after:h-full [&_tr:not([data-has-action-column])>td:first-child]:after:w-px [&_tr:not([data-has-action-column])>td:first-child]:after:bg-border [&_tbody_tr:not([data-has-action-column]):hover>td:first-child]:bg-muted\"\n\n// Sticky first two columns (rows with action icon): icon at left-0, data column at left-12\nconst stickyActionColumnStyles =\n \"[&_tr[data-has-action-column]>*:first-child]:sticky [&_tr[data-has-action-column]>*:first-child]:left-0 [&_tr[data-has-action-column]>*:first-child]:z-10 [&_tr[data-has-action-column]>*:first-child]:bg-background [&_tr[data-has-action-column]>*:first-child]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:sticky [&_tr[data-has-action-column]>*:nth-child(2)]:left-12 [&_tr[data-has-action-column]>*:nth-child(2)]:z-10 [&_tr[data-has-action-column]>*:nth-child(2)]:bg-background [&_tr[data-has-action-column]>*:nth-child(2)]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:after:absolute [&_tr[data-has-action-column]>*:nth-child(2)]:after:right-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:top-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:h-full [&_tr[data-has-action-column]>*:nth-child(2)]:after:w-px [&_tr[data-has-action-column]>*:nth-child(2)]:after:bg-border [&_tbody_tr[data-has-action-column]:hover>td:first-child]:bg-muted [&_tbody_tr[data-has-action-column]:hover>td:nth-child(2)]:bg-muted\"\n\nfunction Table({ className, stickyFirstColumn, rounded = \"default\", ...props }: TableProps) {\n return (\n <TableContext.Provider value={{ stickyFirstColumn }}>\n <div\n data-slot=\"table-container\"\n className={cn(\n \"relative bg-background w-full overflow-x-auto border border-border\",\n roundedMap[rounded],\n stickyFirstColumn && stickyFirstColumnStyles,\n stickyFirstColumn && stickyActionColumnStyles\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n </TableContext.Provider>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b text-secondary-text\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableRowProps extends React.ComponentProps<\"tr\"> {\n isClickable?: boolean\n actionIcon?: \"eye\" | \"more\" | null\n}\n\nfunction TableRow({\n className,\n isClickable,\n actionIcon,\n children,\n ...props\n}: TableRowProps) {\n const iconComponent =\n actionIcon === \"eye\" ? (\n <Eye className=\"h-4 w-4\" />\n ) : actionIcon === \"more\" ? (\n <MoreVertical className=\"h-4 w-4\" />\n ) : null\n\n return (\n <tr\n data-slot=\"table-row\"\n data-has-action-column={actionIcon !== undefined ? \"\" : undefined}\n className={cn(\n \"border-b border-border/50 transition-colors\",\n isClickable && \"cursor-pointer hover:bg-muted/50\",\n className\n )}\n {...props}\n >\n {actionIcon !== undefined && (\n <TableCell className=\"w-12\">{iconComponent}</TableCell>\n )}\n {children}\n </tr>\n )\n}\n\nexport interface TableHeadProps extends React.ComponentProps<\"th\"> {\n isSticky?: boolean\n}\n\nfunction TableHead({ className, isSticky, ...props }: TableHeadProps) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-secondary-text h-10 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellProps extends React.ComponentProps<\"td\"> {\n isSticky?: boolean\n}\n\nfunction TableCell({ className, isSticky, ...props }: TableCellProps) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellActionProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean\n}\n\nfunction TableCellAction({\n className,\n onClick,\n children,\n asChild = false,\n ...props\n}: TableCellActionProps) {\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n onClick?.(e)\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n className?: string\n }>,\n {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n const childOnClick = (\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n }>\n ).props.onClick\n childOnClick?.(e)\n },\n className: cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:bg-muted/50 hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n (children as React.ReactElement<{ className?: string }>).props\n .className,\n className\n ),\n }\n )\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"table-cell-action\"\n className={cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n className\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCellAction,\n TableCaption,\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
+ var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var s = _interopRequireWildcard(_react);var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var i=s.forwardRef(({...a},e)=>_jsxruntime.jsx.call(void 0, "nav",{ref:e,"aria-label":"breadcrumb",...a}));i.displayName="Breadcrumb";var l=s.forwardRef(({className:a,...e},r)=>_jsxruntime.jsx.call(void 0, "ol",{ref:r,className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-wrap items-center gap-1.5 break-words text-sm text-secondary-text sm:gap-2.5",a),...e}));l.displayName="BreadcrumbList";var p=s.forwardRef(({className:a,...e},r)=>_jsxruntime.jsx.call(void 0, "li",{ref:r,className:_chunkFUYXCJOQjs.a.call(void 0, "inline-flex items-center gap-1.5",a),...e}));p.displayName="BreadcrumbItem";var d=s.forwardRef(({asChild:a,className:e,...r},n)=>_jsxruntime.jsx.call(void 0, "a",{ref:n,className:_chunkFUYXCJOQjs.a.call(void 0, "transition-colors hover:text-hover-link active:opacity-50",e),...r}));d.displayName="BreadcrumbLink";var f=s.forwardRef(({className:a,...e},r)=>_jsxruntime.jsx.call(void 0, "span",{ref:r,role:"link","aria-disabled":"true","aria-current":"page",className:_chunkFUYXCJOQjs.a.call(void 0, "font-normal text-primary-accent",a),...e}));f.displayName="BreadcrumbPage";var R=({children:a,className:e,...r})=>_jsxruntime.jsx.call(void 0, "li",{role:"presentation","aria-hidden":"true",className:_chunkFUYXCJOQjs.a.call(void 0, "[&>svg]:size-3.5",e),...r,children:_nullishCoalesce(a, () => (_jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight,{})))});R.displayName="BreadcrumbSeparator";var u=({className:a,...e})=>_jsxruntime.jsxs.call(void 0, "span",{role:"presentation","aria-hidden":"true",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 lg:h-9 w-8 lg:w-9 items-center justify-center",a),...e,children:[_jsxruntime.jsx.call(void 0, _lucidereact.MoreHorizontal,{className:"h-4 w-4"}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"More"})]});u.displayName="BreadcrumbEllipsis";exports.a = i; exports.b = l; exports.c = p; exports.d = d; exports.e = f; exports.f = R; exports.g = u;
3
+ //# sourceMappingURL=chunk-73MWZSJI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-73MWZSJI.js","../src/components/breadcrumb.tsx"],"names":["Breadcrumb","props","ref","jsx","BreadcrumbList","className","cn","BreadcrumbItem","BreadcrumbLink","asChild","BreadcrumbPage","BreadcrumbSeparator","children","ChevronRight","BreadcrumbEllipsis","jsxs","MoreHorizontal"],"mappings":"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","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-73MWZSJI.js","sourcesContent":[null,"import * as React from \"react\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-secondary-text sm:gap-2.5\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = \"a\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"transition-colors hover:text-hover-link active:opacity-50\",\n className\n )}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-primary-accent\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"flex h-8 lg:h-9 w-8 lg:w-9 items-center justify-center\",\n className\n )}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-7SOZ6MOV.js","../src/components/separator.tsx"],"names":["Separator","className","orientation","decorative","props","ref","jsx","cn"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECChB,6GACa,+CAYhC,IAREA,CAAAA,CAAkB,CAAA,CAAA,UAAA,CAItB,CACE,CAAE,SAAA,CAAAC,CAAAA,CAAW,WAAA,CAAAC,CAAAA,CAAc,YAAA,CAAc,UAAA,CAAAC,CAAAA,CAAa,CAAA,CAAA,CAAM,GAAGC,CAAM,CAAA,CACrEC,CAAAA,CAAAA,EAEAC,6BAAAA,CAAoB,CAAA,IAAA,CAAnB,CACC,GAAA,CAAKD,CAAAA,CACL,UAAA,CAAYF,CAAAA,CACZ,WAAA,CAAaD,CAAAA,CACb,SAAA,CAAWK,gCAAAA,oBACT,CACAL,CAAAA,GAAgB,YAAA,CAAe,gBAAA,CAAmB,gBAAA,CAClDD,CACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAAA,CACAJ,CAAAA,CAAU,WAAA,CAAiC,CAAA,CAAA,IAAA,CAAK,WAAA,CAAA,cAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-7SOZ6MOV.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-7SOZ6MOV.js","../src/components/separator.tsx"],"names":["Separator","className","orientation","decorative","props","ref","jsx","cn"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECChB,6GACa,+CAYhC,IAREA,CAAAA,CAAkB,CAAA,CAAA,UAAA,CAItB,CACE,CAAE,SAAA,CAAAC,CAAAA,CAAW,WAAA,CAAAC,CAAAA,CAAc,YAAA,CAAc,UAAA,CAAAC,CAAAA,CAAa,CAAA,CAAA,CAAM,GAAGC,CAAM,CAAA,CACrEC,CAAAA,CAAAA,EAEAC,6BAAAA,CAAoB,CAAA,IAAA,CAAnB,CACC,GAAA,CAAKD,CAAAA,CACL,UAAA,CAAYF,CAAAA,CACZ,WAAA,CAAaD,CAAAA,CACb,SAAA,CAAWK,gCAAAA,oBACT,CACAL,CAAAA,GAAgB,YAAA,CAAe,gBAAA,CAAmB,gBAAA,CAClDD,CACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAAA,CACAJ,CAAAA,CAAU,WAAA,CAAiC,CAAA,CAAA,IAAA,CAAK,WAAA,CAAA,cAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-7SOZ6MOV.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
2
+ var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var n = _interopRequireWildcard(_react);var _reactslider = require('@radix-ui/react-slider'); var e = _interopRequireWildcard(_reactslider);var _jsxruntime = require('react/jsx-runtime');function b({className:s,defaultValue:i,value:r,min:t=0,max:a=100,...d}){let c=n.useMemo(()=>Array.isArray(r)?r:Array.isArray(i)?i:[t,a],[r,i,t,a]);return _jsxruntime.jsxs.call(void 0, e.Root,{"data-slot":"slider",defaultValue:i,value:r,min:t,max:a,className:_chunkFUYXCJOQjs.a.call(void 0, "data-vertical:min-h-40 relative py-2 flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col",s),...d,children:[_jsxruntime.jsx.call(void 0, e.Track,{"data-slot":"slider-track",className:"bg-muted rounded-full h-1.5 w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1 relative grow overflow-hidden",children:_jsxruntime.jsx.call(void 0, e.Range,{"data-slot":"slider-range",className:"bg-accent absolute select-none h-full data-[orientation=vertical]:w-full"})}),Array.from({length:c.length},(f,m)=>_jsxruntime.jsx.call(void 0, e.Thumb,{"data-slot":"slider-thumb",className:"border-ring ring-ring/50 relative size-5 rounded-full border bg-primary-accent transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-[3px] focus-visible:ring-[3px] focus-visible:outline-hidden active:ring-[3px] block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50"},m))]})}exports.a = b;
3
+ //# sourceMappingURL=chunk-ALSJLUSL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-ALSJLUSL.js","../src/components/slider.tsx"],"names":["Slider","className","defaultValue","value","min","max","props","_values","jsxs","cn","jsx","_","index"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECChB,oGACU,+CAuB7B,SAnBKA,CAAAA,CAAO,CACd,SAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CAAM,CAAA,CACN,GAAA,CAAAC,CAAAA,CAAM,GAAA,CACN,GAAGC,CACL,CAAA,CAAsD,CACpD,IAAMC,CAAAA,CAAgB,CAAA,CAAA,OAAA,CACpB,CAAA,CAAA,EACE,KAAA,CAAM,OAAA,CAAQJ,CAAK,CAAA,CACfA,CAAAA,CACA,KAAA,CAAM,OAAA,CAAQD,CAAY,CAAA,CACxBA,CAAAA,CACA,CAACE,CAAAA,CAAKC,CAAG,CAAA,CACjB,CAACF,CAAAA,CAAOD,CAAAA,CAAcE,CAAAA,CAAKC,CAAG,CAChC,CAAA,CAEA,OACEG,8BAAAA,CAAiB,CAAA,IAAA,CAAhB,CACC,WAAA,CAAU,QAAA,CACV,YAAA,CAAcN,CAAAA,CACd,KAAA,CAAOC,CAAAA,CACP,GAAA,CAAKC,CAAAA,CACL,GAAA,CAAKC,CAAAA,CACL,SAAA,CAAWI,gCAAAA,gLACT,CACAR,CACF,CAAA,CACC,GAAGK,CAAAA,CAEJ,QAAA,CAAA,CAAAI,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAU,qIAAA,CAEV,QAAA,CAAAA,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAU,0EAAA,CACZ,CAAA,CACF,CAAA,CACC,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQH,CAAAA,CAAQ,MAAO,CAAA,CAAG,CAACI,CAAAA,CAAGC,CAAAA,CAAAA,EAC1CF,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,WAAA,CAAU,cAAA,CAEV,SAAA,CAAU,iTAAA,CAAA,CADLE,CAEP,CACD,CAAA,CAAA,CACH,CAEJ,CAAA,cAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-ALSJLUSL.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"data-vertical:min-h-40 relative py-2 flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"bg-muted rounded-full h-1.5 w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1 relative grow overflow-hidden\"\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className=\"bg-accent absolute select-none h-full data-[orientation=vertical]:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-ring ring-ring/50 relative size-5 rounded-full border bg-primary-accent transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-[3px] focus-visible:ring-[3px] focus-visible:outline-hidden active:ring-[3px] block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
+ var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var t = _interopRequireWildcard(_react);var _reactprogress = require('@radix-ui/react-progress'); var r = _interopRequireWildcard(_reactprogress);var _jsxruntime = require('react/jsx-runtime');var f=t.forwardRef(({className:i,value:s,color:a,...l},m)=>_jsxruntime.jsx.call(void 0, r.Root,{ref:m,className:_chunkFUYXCJOQjs.a.call(void 0, "relative h-2 w-full overflow-hidden rounded-full bg-progress-bg",i),...l,children:_jsxruntime.jsx.call(void 0, r.Indicator,{className:"h-full w-full flex-1 transition-all",style:{transform:`translateX(-${100-(s||0)}%)`,backgroundColor:_nullishCoalesce(a, () => ("var(--accent)"))}})}));f.displayName=r.Root.displayName;exports.a = f;
3
+ //# sourceMappingURL=chunk-C4GUY2JQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-C4GUY2JQ.js","../src/components/progress.tsx"],"names":["Progress","className","value","color","props","ref","jsx","cn"],"mappings":"AAAA,2cAAY;AACZ,sDAAuC,uECChB,0GACY,+CAkB/B,IAdEA,CAAAA,CAAiB,CAAA,CAAA,UAAA,CAKrB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAO,KAAA,CAAAC,CAAAA,CAAO,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACxCC,6BAAAA,CAAmB,CAAA,IAAA,CAAlB,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWE,gCAAAA,iEACT,CACAN,CACF,CAAA,CACC,GAAGG,CAAAA,CAEJ,QAAA,CAAAE,6BAAAA,CAAmB,CAAA,SAAA,CAAlB,CACC,SAAA,CAAU,qCAAA,CACV,KAAA,CAAO,CACL,SAAA,CAAW,CAAA,YAAA,EAAe,GAAA,CAAA,CAAOJ,CAAAA,EAAS,CAAA,CAAE,CAAA,EAAA,CAAA,CAC5C,eAAA,kBAAiBC,CAAAA,SAAS,iBAC5B,CAAA,CACF,CAAA,CACF,CACD,CAAA,CACDH,CAAAA,CAAS,WAAA,CAAgC,CAAA,CAAA,IAAA,CAAK,WAAA,CAAA,cAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-C4GUY2JQ.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> & {\n color?: string\n }\n>(({ className, value, color, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-progress-bg\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 transition-all\"\n style={{\n transform: `translateX(-${100 - (value || 0)}%)`,\n backgroundColor: color ?? \"var(--accent)\",\n }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-CT2CRYC2.js","../src/components/field.tsx"],"names":["Field","className","props","ref","jsx","cn","FieldLabel","FieldDescription","error"],"mappings":"AAAA,uWAAY;AACZ,sDAAkC,uECCX,+CAOnB,IAFEA,CAAAA,CAAc,CAAA,CAAA,UAAA,CAClB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACxBC,6BAAAA,KAAC,CAAA,CAAI,GAAA,CAAKD,CAAAA,CAAK,SAAA,CAAWE,gCAAAA,WAAG,CAAaJ,CAAS,CAAA,CAAI,GAAGC,CAAAA,CAAO,CAErE,CAAA,CACAF,CAAAA,CAAM,WAAA,CAAc,OAAA,CAIpB,IAAMM,CAAAA,CAAmB,CAAA,CAAA,UAAA,CACvB,CAAC,CAAE,SAAA,CAAAL,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACxBC,6BAAAA,OAAC,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWE,gCAAAA,gHACT,CACAJ,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CAAA,CACAI,CAAAA,CAAW,WAAA,CAAc,YAAA,CAMzB,IAAMC,CAAAA,CAAyB,CAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAAN,CAAAA,CAAW,KAAA,CAAAO,CAAAA,CAAO,GAAGN,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACjCC,6BAAAA,GAAC,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWE,gCAAAA,SACT,CACAG,CAAAA,CAAQ,6BAAA,CAAgC,uBAAA,CACxCP,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CACD,CAAA,CACDK,CAAAA,CAAiB,WAAA,CAAc,kBAAA,CAAA,4CAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-CT2CRYC2.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface FieldProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst Field = React.forwardRef<HTMLDivElement, FieldProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n )\n)\nField.displayName = \"Field\"\n\nexport interface FieldLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n ({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none text-primary-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n )\n)\nFieldLabel.displayName = \"FieldLabel\"\n\nexport interface FieldDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {\n error?: boolean\n}\n\nconst FieldDescription = React.forwardRef<\n HTMLParagraphElement,\n FieldDescriptionProps\n>(({ className, error, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"text-sm\",\n error ? \"text-destructive-foreground\" : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nFieldDescription.displayName = \"FieldDescription\"\n\nexport { Field, FieldLabel, FieldDescription }\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-CT2CRYC2.js","../src/components/field.tsx"],"names":["Field","className","props","ref","jsx","cn","FieldLabel","FieldDescription","error"],"mappings":"AAAA,uWAAY;AACZ,sDAAkC,uECCX,+CAOnB,IAFEA,CAAAA,CAAc,CAAA,CAAA,UAAA,CAClB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACxBC,6BAAAA,KAAC,CAAA,CAAI,GAAA,CAAKD,CAAAA,CAAK,SAAA,CAAWE,gCAAAA,WAAG,CAAaJ,CAAS,CAAA,CAAI,GAAGC,CAAAA,CAAO,CAErE,CAAA,CACAF,CAAAA,CAAM,WAAA,CAAc,OAAA,CAIpB,IAAMM,CAAAA,CAAmB,CAAA,CAAA,UAAA,CACvB,CAAC,CAAE,SAAA,CAAAL,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACxBC,6BAAAA,OAAC,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWE,gCAAAA,gHACT,CACAJ,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CAAA,CACAI,CAAAA,CAAW,WAAA,CAAc,YAAA,CAMzB,IAAMC,CAAAA,CAAyB,CAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAAN,CAAAA,CAAW,KAAA,CAAAO,CAAAA,CAAO,GAAGN,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EACjCC,6BAAAA,GAAC,CAAA,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWE,gCAAAA,SACT,CACAG,CAAAA,CAAQ,6BAAA,CAAgC,uBAAA,CACxCP,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CACD,CAAA,CACDK,CAAAA,CAAiB,WAAA,CAAc,kBAAA,CAAA,4CAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-CT2CRYC2.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface FieldProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst Field = React.forwardRef<HTMLDivElement, FieldProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n )\n)\nField.displayName = \"Field\"\n\nexport interface FieldLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n ({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none text-primary-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n )\n)\nFieldLabel.displayName = \"FieldLabel\"\n\nexport interface FieldDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {\n error?: boolean\n}\n\nconst FieldDescription = React.forwardRef<\n HTMLParagraphElement,\n FieldDescriptionProps\n>(({ className, error, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"text-sm\",\n error ? \"text-destructive-foreground\" : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nFieldDescription.displayName = \"FieldDescription\"\n\nexport { Field, FieldLabel, FieldDescription }\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-DEWWZMYC.js","../src/components/toast.tsx"],"names":["Toaster","props","jsx","SileoToaster"],"mappings":"AAAA,qFAAY;ACEZ,8BAA+C,+CAO3C,SAFKA,CAAAA,CAAQ,CAAE,GAAGC,CAAM,CAAA,CAAiB,CAC3C,OACEC,6BAAAA,cAACC,CAAA,CACC,OAAA,CAAS,CACP,IAAA,CAAM,0BAAA,CACN,MAAA,CAAQ,CACN,KAAA,CAAO,sBAAA,CACP,WAAA,CAAa,sBAAA,CACb,KAAA,CAAO,eAAA,CACP,MAAA,CAAQ,cACV,CACF,CAAA,CACC,GAAGF,CAAAA,CACN,CAEJ,CAAA,wCAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-DEWWZMYC.js","sourcesContent":[null,"\"use client\"\n\nimport { sileo, Toaster as SileoToaster } from \"sileo\"\nimport type { ComponentProps } from \"react\"\n\ntype ToasterProps = ComponentProps<typeof SileoToaster>\n\nfunction Toaster({ ...props }: ToasterProps) {\n return (\n <SileoToaster\n options={{\n fill: \"var(--toast-bg, #171717)\",\n styles: {\n title: \"text-primary-accent!\",\n description: \"text-primary-accent!\",\n badge: \"bg-secondary!\",\n button: \"bg-white/10!\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster, sileo as toast }\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-DEWWZMYC.js","../src/components/toast.tsx"],"names":["Toaster","props","jsx","SileoToaster"],"mappings":"AAAA,qFAAY;ACEZ,8BAA+C,+CAO3C,SAFKA,CAAAA,CAAQ,CAAE,GAAGC,CAAM,CAAA,CAAiB,CAC3C,OACEC,6BAAAA,cAACC,CAAA,CACC,OAAA,CAAS,CACP,IAAA,CAAM,0BAAA,CACN,MAAA,CAAQ,CACN,KAAA,CAAO,sBAAA,CACP,WAAA,CAAa,sBAAA,CACb,KAAA,CAAO,eAAA,CACP,MAAA,CAAQ,cACV,CACF,CAAA,CACC,GAAGF,CAAAA,CACN,CAEJ,CAAA,wCAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-DEWWZMYC.js","sourcesContent":[null,"\"use client\"\n\nimport { sileo, Toaster as SileoToaster } from \"sileo\"\nimport type { ComponentProps } from \"react\"\n\ntype ToasterProps = ComponentProps<typeof SileoToaster>\n\nfunction Toaster({ ...props }: ToasterProps) {\n return (\n <SileoToaster\n options={{\n fill: \"var(--toast-bg, #171717)\",\n styles: {\n title: \"text-primary-accent!\",\n description: \"text-primary-accent!\",\n badge: \"bg-secondary!\",\n button: \"bg-white/10!\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster, sileo as toast }\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-EBNJXPHG.js","../src/components/TextDecoder.tsx"],"names":["SYMBOLS","randomChar","symbols","extractText","node","React","props","injectScrambledText","scrambledChars","indexObj","text","result","i","jsx"],"mappings":"AAAA,qLAAY;AACZ,sDAAuC,4ECOhC,+CAgCC,IA9BFA,CAAAA,CAAU,kCAAA,CAEVC,CAAAA,CAAcC,CAAAA,EAClBA,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAIA,CAAAA,CAAQ,MAAM,CAAC,CAAA,CAE9CC,CAAAA,CAAeC,CAAAA,EAA4B,CAC/C,EAAA,CAAI,OAAOA,CAAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,EAAS,QAAA,CAAU,OAAO,MAAA,CAAOA,CAAI,CAAA,CAC5E,EAAA,CAAI,KAAA,CAAM,OAAA,CAAQA,CAAI,CAAA,CAAG,OAAOA,CAAAA,CAAK,GAAA,CAAID,CAAW,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,CAC7D,EAAA,CAAIE,eAAAA,CAAM,cAAA,CAAeD,CAAI,CAAA,CAAG,CAC9B,IAAME,CAAAA,CAAQF,CAAAA,CAAK,KAAA,CACnB,MAAA,CACGE,CAAAA,CAAM,IAAA,EAAQ,EAAA,CAAA,CAAA,CACdA,CAAAA,CAAM,KAAA,EAAS,EAAA,CAAA,CAAA,CACfA,CAAAA,CAAM,KAAA,EAAS,EAAA,CAAA,CAChBH,CAAAA,CAAYG,CAAAA,CAAM,QAAQ,CAE9B,CACA,MAAO,EACT,CAAA,CAEMC,CAAAA,CAAsB,CAC1BH,CAAAA,CACAI,CAAAA,CACAC,CAAAA,CAAAA,EACc,CACd,EAAA,CAAI,OAAOL,CAAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,EAAS,QAAA,CAAU,CACxD,IAAMM,CAAAA,CAAO,MAAA,CAAON,CAAI,CAAA,CAClBO,CAAAA,CAAiC,CAAC,CAAA,CACxC,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAK,MAAA,CAAQE,CAAAA,EAAAA,CAC/BD,CAAAA,CAAO,IAAA,CACLE,6BAAAA,eAACR,CAAM,QAAA,CAAN,CACE,QAAA,CAAAG,CAAAA,CAAeC,CAAAA,CAAS,OAAO,CAAA,EAAK,EAAA,CAAA,CADlB,CAAA,KAAA,EAAQA,CAAAA,CAAS,OAAO,CAAA,CAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-EBNJXPHG.js","sourcesContent":[null,"\"use client\"\nimport { cn } from \"@/lib/utils\"\nimport React, {\n useState,\n useEffect,\n useMemo,\n useRef,\n ReactNode,\n} from \"react\"\n\nconst SYMBOLS = \"!<>-_\\\\/[]{}—=+*^?#________\"\n\nconst randomChar = (symbols: string) =>\n symbols[Math.floor(Math.random() * symbols.length)]\n\nconst extractText = (node: ReactNode): string => {\n if (typeof node === \"string\" || typeof node === \"number\") return String(node)\n if (Array.isArray(node)) return node.map(extractText).join(\"\")\n if (React.isValidElement(node)) {\n const props = node.props as any\n return (\n (props.text || \"\") +\n (props.label || \"\") +\n (props.title || \"\") +\n extractText(props.children)\n )\n }\n return \"\"\n}\n\nconst injectScrambledText = (\n node: ReactNode,\n scrambledChars: (string | ReactNode)[],\n indexObj: { current: number }\n): ReactNode => {\n if (typeof node === \"string\" || typeof node === \"number\") {\n const text = String(node)\n const result: (string | ReactNode)[] = []\n for (let i = 0; i < text.length; i++) {\n result.push(\n <React.Fragment key={`char-${indexObj.current}`}>\n {scrambledChars[indexObj.current] || \"\"}\n </React.Fragment>\n )\n indexObj.current++\n }\n return result\n }\n\n if (Array.isArray(node)) {\n return node.map((child, idx) => (\n <React.Fragment key={`arr-${idx}-${indexObj.current}`}>\n {injectScrambledText(child, scrambledChars, indexObj)}\n </React.Fragment>\n ))\n }\n\n if (React.isValidElement(node)) {\n const props = node.props as any\n const newProps: any = {}\n\n if (props.children) {\n newProps.children = injectScrambledText(\n props.children,\n scrambledChars,\n indexObj\n )\n }\n return React.cloneElement(node, newProps)\n }\n return node\n}\n\nexport interface TextDecoderProps {\n children: ReactNode\n className?: string\n duration?: number\n symbols?: string\n delay?: number\n isLoading?: boolean\n speed?: number\n hoverContent?: ReactNode\n}\n\nexport default function TextDecoder ({\n children,\n className,\n duration = 40,\n symbols = SYMBOLS,\n delay = 0,\n isLoading = false,\n speed = 0.28,\n hoverContent,\n}: TextDecoderProps) {\n const [outputNodes, setOutputNodes] = useState<ReactNode>(null)\n const [isComplete, setIsComplete] = useState(false)\n const [targetContent, setTargetContent] = useState<ReactNode>(children)\n const elementRef = useRef<HTMLSpanElement>(null)\n const frameRef = useRef(0)\n const queueRef = useRef<\n { to: string; start: number; end: number; char?: string }[]\n >([])\n const rafRef = useRef<number | null>(null)\n const hasAnimatedRef = useRef(false)\n\n const fullText = useMemo(() => extractText(targetContent), [targetContent])\n\n const setupQueue = () => {\n const newQueue = []\n for (let i = 0; i < fullText.length; i++) {\n const to = fullText[i]\n const start = Math.floor(Math.random() * (duration * 0.5))\n const end = start + Math.floor(Math.random() * (duration * 0.5))\n newQueue.push({ to, start, end })\n }\n queueRef.current = newQueue\n frameRef.current = 0\n setIsComplete(false)\n }\n\n const loadingCharsRef = useRef<(string | undefined)[]>([])\n\n const updateLoading = () => {\n const currentScrambledChars: (string | ReactNode)[] = []\n\n if (loadingCharsRef.current.length !== fullText.length) {\n loadingCharsRef.current = new Array(fullText.length).fill(undefined)\n }\n\n for (let i = 0; i < fullText.length; i++) {\n const char = fullText[i]\n\n if (char === \" \") {\n currentScrambledChars.push(\" \")\n } else {\n if (!loadingCharsRef.current[i] || Math.random() < speed) {\n loadingCharsRef.current[i] = randomChar(symbols)\n }\n\n currentScrambledChars.push(\n <span key={i} className=\"relative inline-block\">\n <span className=\"invisible select-none\" aria-hidden=\"true\">\n {char}\n </span>\n <span className=\"absolute inset-0 flex items-center justify-center opacity-50 font-mono leading-none\">\n {loadingCharsRef.current[i]}\n </span>\n </span>\n )\n }\n }\n\n const indexObj = { current: 0 }\n setOutputNodes(\n injectScrambledText(targetContent, currentScrambledChars, indexObj)\n )\n\n rafRef.current = requestAnimationFrame(updateLoading)\n }\n\n const update = () => {\n let complete = 0\n const currentScrambledChars: (string | ReactNode)[] = []\n\n for (let i = 0; i < queueRef.current.length; i++) {\n const item = queueRef.current[i]\n\n if (frameRef.current >= item.end) {\n complete++\n currentScrambledChars.push(item.to)\n } else {\n if (frameRef.current >= item.start) {\n if (!item.char || Math.random() < speed) {\n item.char = randomChar(symbols)\n }\n }\n\n currentScrambledChars.push(\n <span key={i} className=\"relative inline-block\">\n <span className=\"invisible select-none\" aria-hidden=\"true\">\n {item.to === \" \" ? \"\\u00A0\" : item.to}\n </span>\n {frameRef.current >= item.start && (\n <span className=\"absolute inset-0 flex items-center justify-center opacity-50 font-mono leading-none\">\n {item.char}\n </span>\n )}\n </span>\n )\n }\n }\n\n const indexObj = { current: 0 }\n setOutputNodes(\n injectScrambledText(targetContent, currentScrambledChars, indexObj)\n )\n\n if (complete === queueRef.current.length) {\n setIsComplete(true)\n } else {\n frameRef.current++\n rafRef.current = requestAnimationFrame(update)\n }\n }\n\n const triggerAnimation = (content: ReactNode) => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n setTargetContent(content)\n setIsComplete(false)\n }\n\n const wasLoadingRef = useRef(false)\n\n useEffect(() => {\n if (isLoading) {\n wasLoadingRef.current = true\n hasAnimatedRef.current = true\n setIsComplete(false)\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n rafRef.current = requestAnimationFrame(updateLoading)\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }\n\n if (wasLoadingRef.current) {\n wasLoadingRef.current = false\n setupQueue()\n rafRef.current = requestAnimationFrame(update)\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }\n }, [isLoading, fullText])\n\n useEffect(() => {\n if (isLoading) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && !hasAnimatedRef.current) {\n hasAnimatedRef.current = true\n const timeoutId = setTimeout(() => {\n setupQueue()\n rafRef.current = requestAnimationFrame(update)\n }, delay)\n return () => clearTimeout(timeoutId)\n }\n },\n { threshold: 0.1 }\n )\n\n if (elementRef.current) observer.observe(elementRef.current)\n\n return () => {\n observer.disconnect()\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }, [fullText, delay, isLoading])\n\n // Handle hover mode animation triggers\n useEffect(() => {\n if (!hoverContent || isLoading || !hasAnimatedRef.current) return\n\n setupQueue()\n rafRef.current = requestAnimationFrame(update)\n\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }, [targetContent])\n\n const handleMouseEnter = () => {\n if (!hoverContent) return\n triggerAnimation(hoverContent)\n }\n\n const handleMouseLeave = () => {\n if (!hoverContent) return\n triggerAnimation(children)\n }\n\n return (\n <span\n ref={elementRef}\n className={cn(\"inline-block whitespace-pre-wrap\", className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isComplete ? targetContent : outputNodes}\n </span>\n )\n}\n"]}
1
+ {"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-EBNJXPHG.js","../src/components/TextDecoder.tsx"],"names":["SYMBOLS","randomChar","symbols","extractText","node","React","props","injectScrambledText","scrambledChars","indexObj","text","result","i","jsx"],"mappings":"AAAA,qLAAY;AACZ,sDAAuC,4ECOhC,+CAgCC,IA9BFA,CAAAA,CAAU,kCAAA,CAEVC,CAAAA,CAAcC,CAAAA,EAClBA,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAIA,CAAAA,CAAQ,MAAM,CAAC,CAAA,CAE9CC,CAAAA,CAAeC,CAAAA,EAA4B,CAC/C,EAAA,CAAI,OAAOA,CAAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,EAAS,QAAA,CAAU,OAAO,MAAA,CAAOA,CAAI,CAAA,CAC5E,EAAA,CAAI,KAAA,CAAM,OAAA,CAAQA,CAAI,CAAA,CAAG,OAAOA,CAAAA,CAAK,GAAA,CAAID,CAAW,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,CAC7D,EAAA,CAAIE,eAAAA,CAAM,cAAA,CAAeD,CAAI,CAAA,CAAG,CAC9B,IAAME,CAAAA,CAAQF,CAAAA,CAAK,KAAA,CACnB,MAAA,CACGE,CAAAA,CAAM,IAAA,EAAQ,EAAA,CAAA,CAAA,CACdA,CAAAA,CAAM,KAAA,EAAS,EAAA,CAAA,CAAA,CACfA,CAAAA,CAAM,KAAA,EAAS,EAAA,CAAA,CAChBH,CAAAA,CAAYG,CAAAA,CAAM,QAAQ,CAE9B,CACA,MAAO,EACT,CAAA,CAEMC,CAAAA,CAAsB,CAC1BH,CAAAA,CACAI,CAAAA,CACAC,CAAAA,CAAAA,EACc,CACd,EAAA,CAAI,OAAOL,CAAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,EAAS,QAAA,CAAU,CACxD,IAAMM,CAAAA,CAAO,MAAA,CAAON,CAAI,CAAA,CAClBO,CAAAA,CAAiC,CAAC,CAAA,CACxC,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAK,MAAA,CAAQE,CAAAA,EAAAA,CAC/BD,CAAAA,CAAO,IAAA,CACLE,6BAAAA,eAACR,CAAM,QAAA,CAAN,CACE,QAAA,CAAAG,CAAAA,CAAeC,CAAAA,CAAS,OAAO,CAAA,EAAK,EAAA,CAAA,CADlB,CAAA,KAAA,EAAQA,CAAAA,CAAS,OAAO,CAAA,CAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-EBNJXPHG.js","sourcesContent":[null,"\"use client\"\nimport { cn } from \"@/lib/utils\"\nimport React, {\n useState,\n useEffect,\n useMemo,\n useRef,\n ReactNode,\n} from \"react\"\n\nconst SYMBOLS = \"!<>-_\\\\/[]{}—=+*^?#________\"\n\nconst randomChar = (symbols: string) =>\n symbols[Math.floor(Math.random() * symbols.length)]\n\nconst extractText = (node: ReactNode): string => {\n if (typeof node === \"string\" || typeof node === \"number\") return String(node)\n if (Array.isArray(node)) return node.map(extractText).join(\"\")\n if (React.isValidElement(node)) {\n const props = node.props as any\n return (\n (props.text || \"\") +\n (props.label || \"\") +\n (props.title || \"\") +\n extractText(props.children)\n )\n }\n return \"\"\n}\n\nconst injectScrambledText = (\n node: ReactNode,\n scrambledChars: (string | ReactNode)[],\n indexObj: { current: number }\n): ReactNode => {\n if (typeof node === \"string\" || typeof node === \"number\") {\n const text = String(node)\n const result: (string | ReactNode)[] = []\n for (let i = 0; i < text.length; i++) {\n result.push(\n <React.Fragment key={`char-${indexObj.current}`}>\n {scrambledChars[indexObj.current] || \"\"}\n </React.Fragment>\n )\n indexObj.current++\n }\n return result\n }\n\n if (Array.isArray(node)) {\n return node.map((child, idx) => (\n <React.Fragment key={`arr-${idx}-${indexObj.current}`}>\n {injectScrambledText(child, scrambledChars, indexObj)}\n </React.Fragment>\n ))\n }\n\n if (React.isValidElement(node)) {\n const props = node.props as any\n const newProps: any = {}\n\n if (props.children) {\n newProps.children = injectScrambledText(\n props.children,\n scrambledChars,\n indexObj\n )\n }\n return React.cloneElement(node, newProps)\n }\n return node\n}\n\nexport interface TextDecoderProps {\n children: ReactNode\n className?: string\n duration?: number\n symbols?: string\n delay?: number\n isLoading?: boolean\n speed?: number\n hoverContent?: ReactNode\n}\n\nexport default function TextDecoder ({\n children,\n className,\n duration = 40,\n symbols = SYMBOLS,\n delay = 0,\n isLoading = false,\n speed = 0.28,\n hoverContent,\n}: TextDecoderProps) {\n const [outputNodes, setOutputNodes] = useState<ReactNode>(null)\n const [isComplete, setIsComplete] = useState(false)\n const [targetContent, setTargetContent] = useState<ReactNode>(children)\n const elementRef = useRef<HTMLSpanElement>(null)\n const frameRef = useRef(0)\n const queueRef = useRef<\n { to: string; start: number; end: number; char?: string }[]\n >([])\n const rafRef = useRef<number | null>(null)\n const hasAnimatedRef = useRef(false)\n\n const fullText = useMemo(() => extractText(targetContent), [targetContent])\n\n const setupQueue = () => {\n const newQueue = []\n for (let i = 0; i < fullText.length; i++) {\n const to = fullText[i]\n const start = Math.floor(Math.random() * (duration * 0.5))\n const end = start + Math.floor(Math.random() * (duration * 0.5))\n newQueue.push({ to, start, end })\n }\n queueRef.current = newQueue\n frameRef.current = 0\n setIsComplete(false)\n }\n\n const loadingCharsRef = useRef<(string | undefined)[]>([])\n\n const updateLoading = () => {\n const currentScrambledChars: (string | ReactNode)[] = []\n\n if (loadingCharsRef.current.length !== fullText.length) {\n loadingCharsRef.current = new Array(fullText.length).fill(undefined)\n }\n\n for (let i = 0; i < fullText.length; i++) {\n const char = fullText[i]\n\n if (char === \" \") {\n currentScrambledChars.push(\" \")\n } else {\n if (!loadingCharsRef.current[i] || Math.random() < speed) {\n loadingCharsRef.current[i] = randomChar(symbols)\n }\n\n currentScrambledChars.push(\n <span key={i} className=\"relative inline-block\">\n <span className=\"invisible select-none\" aria-hidden=\"true\">\n {char}\n </span>\n <span className=\"absolute inset-0 flex items-center justify-center opacity-50 font-mono leading-none\">\n {loadingCharsRef.current[i]}\n </span>\n </span>\n )\n }\n }\n\n const indexObj = { current: 0 }\n setOutputNodes(\n injectScrambledText(targetContent, currentScrambledChars, indexObj)\n )\n\n rafRef.current = requestAnimationFrame(updateLoading)\n }\n\n const update = () => {\n let complete = 0\n const currentScrambledChars: (string | ReactNode)[] = []\n\n for (let i = 0; i < queueRef.current.length; i++) {\n const item = queueRef.current[i]\n\n if (frameRef.current >= item.end) {\n complete++\n currentScrambledChars.push(item.to)\n } else {\n if (frameRef.current >= item.start) {\n if (!item.char || Math.random() < speed) {\n item.char = randomChar(symbols)\n }\n }\n\n currentScrambledChars.push(\n <span key={i} className=\"relative inline-block\">\n <span className=\"invisible select-none\" aria-hidden=\"true\">\n {item.to === \" \" ? \"\\u00A0\" : item.to}\n </span>\n {frameRef.current >= item.start && (\n <span className=\"absolute inset-0 flex items-center justify-center opacity-50 font-mono leading-none\">\n {item.char}\n </span>\n )}\n </span>\n )\n }\n }\n\n const indexObj = { current: 0 }\n setOutputNodes(\n injectScrambledText(targetContent, currentScrambledChars, indexObj)\n )\n\n if (complete === queueRef.current.length) {\n setIsComplete(true)\n } else {\n frameRef.current++\n rafRef.current = requestAnimationFrame(update)\n }\n }\n\n const triggerAnimation = (content: ReactNode) => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n setTargetContent(content)\n setIsComplete(false)\n }\n\n const wasLoadingRef = useRef(false)\n\n useEffect(() => {\n if (isLoading) {\n wasLoadingRef.current = true\n hasAnimatedRef.current = true\n setIsComplete(false)\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n rafRef.current = requestAnimationFrame(updateLoading)\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }\n\n if (wasLoadingRef.current) {\n wasLoadingRef.current = false\n setupQueue()\n rafRef.current = requestAnimationFrame(update)\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }\n }, [isLoading, fullText])\n\n useEffect(() => {\n if (isLoading) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && !hasAnimatedRef.current) {\n hasAnimatedRef.current = true\n const timeoutId = setTimeout(() => {\n setupQueue()\n rafRef.current = requestAnimationFrame(update)\n }, delay)\n return () => clearTimeout(timeoutId)\n }\n },\n { threshold: 0.1 }\n )\n\n if (elementRef.current) observer.observe(elementRef.current)\n\n return () => {\n observer.disconnect()\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }, [fullText, delay, isLoading])\n\n // Handle hover mode animation triggers\n useEffect(() => {\n if (!hoverContent || isLoading || !hasAnimatedRef.current) return\n\n setupQueue()\n rafRef.current = requestAnimationFrame(update)\n\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }, [targetContent])\n\n const handleMouseEnter = () => {\n if (!hoverContent) return\n triggerAnimation(hoverContent)\n }\n\n const handleMouseLeave = () => {\n if (!hoverContent) return\n triggerAnimation(children)\n }\n\n return (\n <span\n ref={elementRef}\n className={cn(\"inline-block whitespace-pre-wrap\", className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isComplete ? targetContent : outputNodes}\n </span>\n )\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a as l}from"./chunk-QMJVRGPB.mjs";import{a as m}from"./chunk-S5TKCF6T.mjs";import*as r from"react";import{CalendarIcon as R}from"lucide-react";import{format as p}from"date-fns";import*as o from"@radix-ui/react-popover";import{jsx as t,jsxs as f}from"react/jsx-runtime";var C=o.Root,x=o.Trigger,c=r.forwardRef(({className:e,align:a="start",sideOffset:n=4,...i},s)=>t(o.Portal,{children:t(o.Content,{ref:s,align:a,sideOffset:n,className:m("z-50 w-auto rounded-3xl border border-border bg-popover p-0 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i})}));c.displayName=o.Content.displayName;var k=r.forwardRef(({dateRange:e,onDateRangeChange:a,placeholder:n="Pick a date range",disabled:i=!1,className:s,calendarProps:P,formatStr:d="LLL dd, y",numberOfMonths:u=2},v)=>{let[g,b]=r.useState(!1),y=()=>e?.from?e.to?`${p(e.from,d)} - ${p(e.to,d)}`:p(e.from,d):n;return f(C,{open:g,onOpenChange:b,modal:!0,children:[t(x,{asChild:!0,children:f("button",{ref:v,type:"button",className:m("flex my-2 h-9 w-full items-center rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",!e?.from&&"text-secondary-text",s),disabled:i,children:[t(R,{className:"mr-2 h-4 w-4 shrink-0"}),t("span",{className:"truncate",children:y()})]})}),t(c,{className:"w-auto p-0",align:"start",children:t(l,{mode:"range",selected:e,onSelect:h=>{a?.(h)},defaultMonth:e?.from,numberOfMonths:u,...P})})]})});k.displayName="DateRangePicker";export{k as a};
3
- //# sourceMappingURL=chunk-UAUSYTY4.mjs.map
2
+ import{a as l}from"./chunk-EOFZPG26.mjs";import{a as m}from"./chunk-S5TKCF6T.mjs";import*as r from"react";import{CalendarIcon as R}from"lucide-react";import{format as p}from"date-fns";import*as o from"@radix-ui/react-popover";import{jsx as t,jsxs as f}from"react/jsx-runtime";var C=o.Root,x=o.Trigger,c=r.forwardRef(({className:e,align:a="start",sideOffset:n=4,...i},s)=>t(o.Portal,{children:t(o.Content,{ref:s,align:a,sideOffset:n,className:m("z-50 w-auto rounded-3xl border border-border bg-popover p-0 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i})}));c.displayName=o.Content.displayName;var k=r.forwardRef(({dateRange:e,onDateRangeChange:a,placeholder:n="Pick a date range",disabled:i=!1,className:s,calendarProps:P,formatStr:d="LLL dd, y",numberOfMonths:u=2},g)=>{let[v,b]=r.useState(!1),y=()=>e?.from?e.to?`${p(e.from,d)} - ${p(e.to,d)}`:p(e.from,d):n;return f(C,{open:v,onOpenChange:b,modal:!0,children:[t(x,{asChild:!0,children:f("button",{ref:g,type:"button",className:m("flex my-2 h-8 lg:h-9 w-full items-center rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",!e?.from&&"text-secondary-text",s),disabled:i,children:[t(R,{className:"mr-2 h-4 w-4 shrink-0"}),t("span",{className:"truncate",children:y()})]})}),t(c,{className:"w-auto p-0",align:"start",children:t(l,{mode:"range",selected:e,onSelect:h=>{a?.(h)},defaultMonth:e?.from,numberOfMonths:u,...P})})]})});k.displayName="DateRangePicker";export{k as a};
3
+ //# sourceMappingURL=chunk-EDOMXQSZ.mjs.map