@codefast/ui 0.2.39 → 0.2.41

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 (62) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{chunk-OQNZKZSP.js → chunk-3AEEOFHT.js} +2 -2
  3. package/dist/chunk-3AEEOFHT.js.map +1 -0
  4. package/dist/chunk-4C3B26NE.js +2 -0
  5. package/dist/chunk-4C3B26NE.js.map +1 -0
  6. package/dist/{chunk-YWNO4DL2.cjs → chunk-5JTBH2HB.cjs} +2 -2
  7. package/dist/chunk-5JTBH2HB.cjs.map +1 -0
  8. package/dist/{chunk-ARA45GRR.cjs → chunk-75QPTJUO.cjs} +2 -2
  9. package/dist/chunk-75QPTJUO.cjs.map +1 -0
  10. package/dist/chunk-AOEBEZCM.cjs +2 -0
  11. package/dist/chunk-AOEBEZCM.cjs.map +1 -0
  12. package/dist/{chunk-MZSHK2F7.js → chunk-DX7ZENLD.js} +2 -2
  13. package/dist/chunk-DX7ZENLD.js.map +1 -0
  14. package/dist/{chunk-VCQXS2LO.js → chunk-KFOO3BEC.js} +1 -1
  15. package/dist/chunk-KFOO3BEC.js.map +1 -0
  16. package/dist/{chunk-7UWQHTB7.cjs → chunk-UGLIJJJD.cjs} +1 -1
  17. package/dist/chunk-UGLIJJJD.cjs.map +1 -0
  18. package/dist/{chunk-D5C2LKXA.cjs → chunk-VZ62M4JP.cjs} +1 -1
  19. package/dist/chunk-VZ62M4JP.cjs.map +1 -0
  20. package/dist/{chunk-F3GDO3US.js → chunk-YWBLBKF6.js} +1 -1
  21. package/dist/chunk-YWBLBKF6.js.map +1 -0
  22. package/dist/components/carousel.cjs +1 -1
  23. package/dist/components/carousel.js +1 -1
  24. package/dist/components/form.cjs +1 -1
  25. package/dist/components/form.js +1 -1
  26. package/dist/components/input-number.d.cts +0 -1
  27. package/dist/components/input-number.d.ts +0 -1
  28. package/dist/components/input-password.d.cts +0 -1
  29. package/dist/components/input-password.d.ts +0 -1
  30. package/dist/components/input-search.d.cts +0 -1
  31. package/dist/components/input-search.d.ts +0 -1
  32. package/dist/components/input.d.cts +9 -10
  33. package/dist/components/input.d.ts +9 -10
  34. package/dist/components/scroll-area.cjs +1 -1
  35. package/dist/components/scroll-area.js +1 -1
  36. package/dist/components/sidebar.cjs +1 -1
  37. package/dist/components/sidebar.d.cts +2 -3
  38. package/dist/components/sidebar.d.ts +2 -3
  39. package/dist/components/sidebar.js +1 -1
  40. package/dist/components/slider.cjs +1 -1
  41. package/dist/components/slider.d.cts +1 -1
  42. package/dist/components/slider.d.ts +1 -1
  43. package/dist/components/slider.js +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.css +1 -1
  46. package/dist/index.css.map +1 -1
  47. package/dist/index.d.cts +0 -1
  48. package/dist/index.d.ts +0 -1
  49. package/dist/index.js +1 -1
  50. package/package.json +20 -20
  51. package/dist/chunk-7LNNZLMI.cjs +0 -2
  52. package/dist/chunk-7LNNZLMI.cjs.map +0 -1
  53. package/dist/chunk-7UWQHTB7.cjs.map +0 -1
  54. package/dist/chunk-ARA45GRR.cjs.map +0 -1
  55. package/dist/chunk-D5C2LKXA.cjs.map +0 -1
  56. package/dist/chunk-F3GDO3US.js.map +0 -1
  57. package/dist/chunk-MZSHK2F7.js.map +0 -1
  58. package/dist/chunk-OQNZKZSP.js.map +0 -1
  59. package/dist/chunk-UT2GFR4R.js +0 -2
  60. package/dist/chunk-UT2GFR4R.js.map +0 -1
  61. package/dist/chunk-VCQXS2LO.js.map +0 -1
  62. package/dist/chunk-YWNO4DL2.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # @codefast/ui
2
2
 
3
+ ## 0.2.41
4
+
5
+ ### Patch Changes
6
+
7
+ - [`3d6d69d`](https://github.com/codefastlabs/codefast/commit/3d6d69dbd0dab99441b34ab3c5dbcf7b534fbc76) Thanks [@thevuong](https://github.com/thevuong)! - feat(deps): upgrade @swc/core to version 1.11.18
8
+
9
+ - [`ec3d22e`](https://github.com/codefastlabs/codefast/commit/ec3d22e4369a3e2a693a5b69bd6322bdad65b336) Thanks [@thevuong](https://github.com/thevuong)! - fix(linting): update ignored directories for Next.js config
10
+
11
+ - Updated dependencies [[`3d6d69d`](https://github.com/codefastlabs/codefast/commit/3d6d69dbd0dab99441b34ab3c5dbcf7b534fbc76), [`ec3d22e`](https://github.com/codefastlabs/codefast/commit/ec3d22e4369a3e2a693a5b69bd6322bdad65b336)]:
12
+ - @codefast-ui/progress-circle@0.2.41
13
+ - @codefast-ui/checkbox-group@0.2.41
14
+ - @codefast-ui/input-number@0.2.41
15
+ - @codefast-ui/input@0.2.41
16
+ - @codefast/hooks@0.2.41
17
+
18
+ ## 0.2.40
19
+
20
+ ### Patch Changes
21
+
22
+ - [`8ad571f`](https://github.com/codefastlabs/codefast/commit/8ad571f007c45009397091bec72ee646beec28c8) Thanks [@thevuong](https://github.com/thevuong)! - chore: update dependencies to latest versions
23
+
24
+ - [`2749794`](https://github.com/codefastlabs/codefast/commit/27497942b856df60eaa34b7caeb8c27ac71e006f) Thanks [@thevuong](https://github.com/thevuong)! - refactor(context): rename provider components for clarity
25
+
26
+ - [`7ee52ce`](https://github.com/codefastlabs/codefast/commit/7ee52ce77bda2e624db3788767cb2712126749b6) Thanks [@thevuong](https://github.com/thevuong)! - fix(sidebar): ensure proper layout by adding min-width
27
+
28
+ - [`f41df54`](https://github.com/codefastlabs/codefast/commit/f41df5462d91ff25076928c2dd84017a92e3fe55) Thanks [@thevuong](https://github.com/thevuong)! - feat(ui): remove custom ::selection styling
29
+
30
+ - [`5e5516e`](https://github.com/codefastlabs/codefast/commit/5e5516ea3a3d34132e7edbe04fc6dcb7f9655b71) Thanks [@thevuong](https://github.com/thevuong)! - feat(hooks): add `useCopyToClipboard` hook with tests
31
+
32
+ - Updated dependencies [[`8ad571f`](https://github.com/codefastlabs/codefast/commit/8ad571f007c45009397091bec72ee646beec28c8), [`2749794`](https://github.com/codefastlabs/codefast/commit/27497942b856df60eaa34b7caeb8c27ac71e006f), [`7ee52ce`](https://github.com/codefastlabs/codefast/commit/7ee52ce77bda2e624db3788767cb2712126749b6), [`f41df54`](https://github.com/codefastlabs/codefast/commit/f41df5462d91ff25076928c2dd84017a92e3fe55), [`5e5516e`](https://github.com/codefastlabs/codefast/commit/5e5516ea3a3d34132e7edbe04fc6dcb7f9655b71)]:
33
+ - @codefast-ui/progress-circle@0.2.40
34
+ - @codefast-ui/checkbox-group@0.2.40
35
+ - @codefast-ui/input-number@0.2.40
36
+ - @codefast-ui/input@0.2.40
37
+ - @codefast/hooks@0.2.40
38
+
3
39
  ## 0.2.39
4
40
 
5
41
  ### Patch Changes
@@ -1,2 +1,2 @@
1
- "use client";import{a as c}from"./chunk-KWNBGPPE.js";import{createContextScope as m}from"@radix-ui/react-context";import*as r from"@radix-ui/react-scroll-area";import{tv as p}from"tailwind-variants";import{jsx as e,jsxs as P}from"react/jsx-runtime";var S=p({base:"flex touch-none select-none p-px transition-colors",compoundVariants:[{className:"w-1.5",orientation:"vertical",size:"sm"},{className:"w-2",orientation:"vertical",size:"md"},{className:"w-2.5",orientation:"vertical",size:"lg"},{className:"h-1.5",orientation:"horizontal",size:"sm"},{className:"h-2",orientation:"horizontal",size:"md"},{className:"h-2.5",orientation:"horizontal",size:"lg"}],variants:{orientation:{horizontal:"w-full flex-col border-t border-t-transparent",vertical:"h-full flex-row border-l border-l-transparent"},size:{none:"",sm:"",md:"",lg:""}},defaultVariants:{size:"md",vertical:"vertical"}}),n="ScrollArea",[v]=m(n),[A,d]=v(n);function z({__scopeScrollArea:l,children:t,className:o,size:a,...i}){return e(A,{scope:l,size:a,children:P(r.Root,{className:c("relative",o),"data-slot":"scroll-area",...i,children:[e(r.Viewport,{className:"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4","data-slot":"scroll-area-viewport",children:t}),e(s,{orientation:"vertical"}),e(s,{orientation:"horizontal"}),e(r.Corner,{})]})})}function s({__scopeScrollArea:l,className:t,orientation:o,...a}){let{size:i}=d(n,l);return e(r.Scrollbar,{className:S({className:t,orientation:o,size:i}),"data-slot":"scroll-area-scrollbar",orientation:o,...a,children:e(r.ScrollAreaThumb,{className:"bg-border relative flex-1 rounded-full"})})}export{z as a,s as b};
2
- //# sourceMappingURL=chunk-OQNZKZSP.js.map
1
+ "use client";import{a as c}from"./chunk-KWNBGPPE.js";import{createContextScope as m}from"@radix-ui/react-context";import*as r from"@radix-ui/react-scroll-area";import{tv as p}from"tailwind-variants";import{jsx as e,jsxs as P}from"react/jsx-runtime";var S=p({base:"flex touch-none select-none p-px transition-colors",compoundVariants:[{className:"w-1.5",orientation:"vertical",size:"sm"},{className:"w-2",orientation:"vertical",size:"md"},{className:"w-2.5",orientation:"vertical",size:"lg"},{className:"h-1.5",orientation:"horizontal",size:"sm"},{className:"h-2",orientation:"horizontal",size:"md"},{className:"h-2.5",orientation:"horizontal",size:"lg"}],variants:{orientation:{horizontal:"w-full flex-col border-t border-t-transparent",vertical:"h-full flex-row border-l border-l-transparent"},size:{none:"",sm:"",md:"",lg:""}},defaultVariants:{size:"md",vertical:"vertical"}}),n="ScrollArea",[v]=m(n),[A,d]=v(n);function z({__scopeScrollArea:t,children:l,className:o,size:a,...i}){return e(A,{scope:t,size:a,children:P(r.Root,{className:c("relative",o),"data-slot":"scroll-area",...i,children:[e(r.Viewport,{className:"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4","data-slot":"scroll-area-viewport",children:l}),e(s,{orientation:"vertical"}),e(s,{orientation:"horizontal"}),e(r.Corner,{})]})})}function s({__scopeScrollArea:t,className:l,orientation:o,...a}){let{size:i}=d(n,t);return e(r.Scrollbar,{className:S({className:l,orientation:o,size:i}),"data-slot":"scroll-area-scrollbar",orientation:o,...a,children:e(r.ScrollAreaThumb,{className:"bg-border relative flex-1 rounded-full"})})}export{z as a,s as b};
2
+ //# sourceMappingURL=chunk-3AEEOFHT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/scroll-area.tsx"],"names":["createContextScope","ScrollAreaPrimitive","tv","jsx","jsxs","scrollAreaScrollbarVariants","SCROLL_AREA_NAME","createScrollAreaContext","ScrollAreaContextProvider","useScrollAreaContext","ScrollArea","__scopeScrollArea","children","className","size","props","cn","ScrollAreaScrollbar","orientation"],"mappings":"wCAMA,OAAS,sBAAAA,MAA0B,0BACnC,UAAYC,MAAyB,8BACrC,OAAS,MAAAC,MAAU,oBAwFb,OACE,OAAAC,EADF,QAAAC,MAAA,oBAhFN,IAAMC,EAA8BH,EAAG,CACrC,KAAM,qDACN,iBAAkB,CAChB,CACE,UAAW,QACX,YAAa,WACb,KAAM,IACR,EACA,CACE,UAAW,MACX,YAAa,WACb,KAAM,IACR,EACA,CACE,UAAW,QACX,YAAa,WACb,KAAM,IACR,EACA,CACE,UAAW,QACX,YAAa,aACb,KAAM,IACR,EACA,CACE,UAAW,MACX,YAAa,aACb,KAAM,IACR,EACA,CACE,UAAW,QACX,YAAa,aACb,KAAM,IACR,CACF,EACA,SAAU,CACR,YAAa,CACX,WAAY,gDACZ,SAAU,+CACZ,EACA,KAAM,CACJ,KAAM,GACN,GAAI,GACJ,GAAI,GACJ,GAAI,EACN,CACF,EACA,gBAAiB,CACf,KAAM,KACN,SAAU,UACZ,CACF,CAAC,EAMKI,EAAmB,aAInB,CAACC,CAAuB,EAAIP,EAAmBM,CAAgB,EAI/D,CAACE,EAA2BC,CAAoB,EACpDF,EAAgDD,CAAgB,EAMlE,SAASI,EAAW,CAClB,kBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,KAAAC,EACA,GAAGC,CACL,EAAuG,CACrG,OACEZ,EAACK,EAAA,CAA0B,MAAOG,EAAmB,KAAMG,EACzD,SAAAV,EAAqB,OAApB,CAAyB,UAAWY,EAAG,WAAYH,CAAS,EAAG,YAAU,cAAe,GAAGE,EAC1F,UAAAZ,EAAqB,WAApB,CACC,UAAU,gHACV,YAAU,uBAET,SAAAS,EACH,EACAT,EAACc,EAAA,CAAoB,YAAY,WAAW,EAC5Cd,EAACc,EAAA,CAAoB,YAAY,aAAa,EAC9Cd,EAAqB,SAApB,EAA2B,GAC9B,EACF,CAEJ,CAMA,SAASc,EAAoB,CAC3B,kBAAAN,EACA,UAAAE,EACA,YAAAK,EACA,GAAGH,CACL,EAAmF,CACjF,GAAM,CAAE,KAAAD,CAAK,EAAIL,EAAqBH,EAAkBK,CAAiB,EAEzE,OACER,EAAqB,YAApB,CACC,UAAWE,EAA4B,CAAE,UAAAQ,EAAW,YAAAK,EAAa,KAAAJ,CAAK,CAAC,EACvE,YAAU,wBACV,YAAaI,EACZ,GAAGH,EAEJ,SAAAZ,EAAqB,kBAApB,CAAoC,UAAU,yCAAyC,EAC1F,CAEJ","sourcesContent":["'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { tv } from 'tailwind-variants';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Variant: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nconst scrollAreaScrollbarVariants = tv({\n base: 'flex touch-none select-none p-px transition-colors',\n compoundVariants: [\n {\n className: 'w-1.5',\n orientation: 'vertical',\n size: 'sm',\n },\n {\n className: 'w-2',\n orientation: 'vertical',\n size: 'md',\n },\n {\n className: 'w-2.5',\n orientation: 'vertical',\n size: 'lg',\n },\n {\n className: 'h-1.5',\n orientation: 'horizontal',\n size: 'sm',\n },\n {\n className: 'h-2',\n orientation: 'horizontal',\n size: 'md',\n },\n {\n className: 'h-2.5',\n orientation: 'horizontal',\n size: 'lg',\n },\n ],\n variants: {\n orientation: {\n horizontal: 'w-full flex-col border-t border-t-transparent',\n vertical: 'h-full flex-row border-l border-l-transparent',\n },\n size: {\n none: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n vertical: 'vertical',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Context: ScrollArea\n * -------------------------------------------------------------------------- */\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\n\nconst [createScrollAreaContext] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = Pick<VariantProps<typeof scrollAreaScrollbarVariants>, 'size'>;\n\nconst [ScrollAreaContextProvider, useScrollAreaContext] =\n createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollArea\n * -------------------------------------------------------------------------- */\n\nfunction ScrollArea({\n __scopeScrollArea,\n children,\n className,\n size,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Root> & ScrollAreaContextValue>): JSX.Element {\n return (\n <ScrollAreaContextProvider scope={__scopeScrollArea} size={size}>\n <ScrollAreaPrimitive.Root className={cn('relative', className)} data-slot=\"scroll-area\" {...props}>\n <ScrollAreaPrimitive.Viewport\n className=\"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollAreaScrollbar orientation=\"vertical\" />\n <ScrollAreaScrollbar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n </ScrollAreaContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nfunction ScrollAreaScrollbar({\n __scopeScrollArea,\n className,\n orientation,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>>): JSX.Element {\n const { size } = useScrollAreaContext(SCROLL_AREA_NAME, __scopeScrollArea);\n\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={scrollAreaScrollbarVariants({ className, orientation, size })}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { ScrollArea, ScrollAreaScrollbar };\n"]}
@@ -0,0 +1,2 @@
1
+ "use client";import{a as A,b as k,c as X,d as D}from"./chunk-OPZLDNA6.js";import{a as y}from"./chunk-BSU5RNRG.js";import{a as N,c as M,d as P,g as _,h as I}from"./chunk-EBODIPD3.js";import{a as w}from"./chunk-CB2YNTH2.js";import{b as E}from"./chunk-ZG6U2QZG.js";import{b as C}from"./chunk-4ENRIR3P.js";import{a as o}from"./chunk-KWNBGPPE.js";import{useIsMobile as B}from"@codefast/hooks";import{createContext as O}from"@radix-ui/react-context";import{Slot as f}from"@radix-ui/react-slot";import{PanelLeftIcon as R}from"lucide-react";import{useCallback as J,useEffect as H,useMemo as K,useState as T}from"react";import{tv as V}from"tailwind-variants";import{jsx as a,jsxs as c}from"react/jsx-runtime";var G="sidebar_state",L=60*60*24*7,$="16rem",U="18rem",W="3.0625rem",j="b",q="SidebarProvider",[F,h]=O(q);function ge({defaultOpen:t=!0,open:e,onOpenChange:n,className:r,style:i,children:d,...p}){let l=B(),[m,u]=T(!1),[g,z]=T(t),v=e??g,S=J(s=>{let b=typeof s=="function"?s(v):s;n?n(b):z(b),document.cookie=`${G}=${b}; path=/; max-age=${L}`},[n,v]),x=J(()=>{l?u(s=>!s):S(s=>!s)},[l,S,u]);return H(()=>{let s=b=>{b.key===j&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),x())};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[x]),a(F,{isMobile:l,open:v,openMobile:m,setOpen:S,setOpenMobile:u,state:v?"expanded":"collapsed",toggleSidebar:x,children:a(A,{delayDuration:0,children:a("div",{className:o("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",r),"data-slot":"sidebar-wrapper",style:{"--sidebar-width":$,"--sidebar-width-icon":W,...i},...p,children:d})})})}var Y="Sidebar";function ve({side:t="left",variant:e="sidebar",collapsible:n="offcanvas",className:r,children:i,...d}){let{isMobile:p,state:l,openMobile:m,setOpenMobile:u}=h(Y);return n==="none"?a("div",{className:o("bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col",r),"data-slot":"sidebar",...d,children:i}):p?a(N,{open:m,onOpenChange:u,...d,children:c(M,{className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden","data-mobile":"true","data-sidebar":"sidebar","data-slot":"sidebar",side:t,style:{"--sidebar-width":U},children:[c(P,{className:"sr-only",children:[a(_,{children:"Sidebar"}),a(I,{children:"Displays the mobile sidebar."})]}),a("div",{className:"flex h-full w-full flex-col",children:i})]})}):c("div",{className:o("text-sidebar-foreground group peer hidden md:block",r),"data-collapsible":l==="collapsed"?n:"","data-side":t,"data-slot":"sidebar","data-state":l,"data-variant":e,children:[a("div",{className:o("w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),"data-slot":"sidebar-gap"}),a("div",{className:o("w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex",t==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",r),"data-slot":"sidebar-container",...d,children:a("div",{className:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm","data-sidebar":"sidebar","data-slot":"sidebar-inner",children:i})})]})}var Q="SidebarTrigger";function he({className:t,onClick:e,...n}){let{toggleSidebar:r}=h(Q);return c(C,{className:o("size-7",t),"data-sidebar":"trigger","data-slot":"sidebar-trigger",size:"icon",variant:"ghost",onClick:i=>{e?.(i),r()},...n,children:[a(R,{}),a("span",{className:"sr-only",children:"Toggle Sidebar"})]})}var Z="SidebarRail";function Se({className:t,...e}){let{toggleSidebar:n}=h(Z);return a("button",{className:o("hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar 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] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",t),"data-sidebar":"rail","data-slot":"sidebar-rail",title:"Toggle Sidebar",type:"button",onClick:n,...e})}function xe({className:t,...e}){return a("main",{className:o("bg-background relative flex w-full min-w-0 flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",t),"data-slot":"sidebar-inset",...e})}function we({className:t,...e}){return a(E,{className:o("bg-background h-8 w-full shadow-none",t),"data-sidebar":"input","data-slot":"sidebar-input",...e})}function Ce({className:t,...e}){return a("div",{className:o("flex flex-col gap-2 p-2",t),"data-sidebar":"header","data-slot":"sidebar-header",...e})}function Ee({className:t,...e}){return a("div",{className:o("flex flex-col gap-2 p-2",t),"data-sidebar":"footer","data-slot":"sidebar-footer",...e})}function ye({className:t,...e}){return a(y,{className:o("bg-sidebar-border mx-2 w-auto",t),"data-sidebar":"separator","data-slot":"sidebar-separator",...e})}function Ne({className:t,...e}){return a("div",{className:o("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),"data-sidebar":"content","data-slot":"sidebar-content",...e})}function Me({className:t,...e}){return a("div",{className:o("relative flex w-full min-w-0 flex-col p-2",t),"data-sidebar":"group","data-slot":"sidebar-group",...e})}function Pe({className:t,asChild:e=!1,...n}){return a(e?f:"div",{className:o("text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-label","data-slot":"sidebar-group-label",...n})}function _e({className:t,asChild:e=!1,...n}){return a(e?f:"button",{className:o("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-action","data-slot":"sidebar-group-action",...n})}function Ie({className:t,...e}){return a("div",{className:o("w-full text-sm",t),"data-sidebar":"group-content","data-slot":"sidebar-group-content",...e})}function Ae({className:t,...e}){return a("ul",{className:o("flex w-full min-w-0 flex-col gap-1",t),"data-sidebar":"menu","data-slot":"sidebar-menu",...e})}function ke({className:t,...e}){return a("li",{className:o("group/menu-item relative",t),"data-sidebar":"menu-item","data-slot":"sidebar-menu-item",...e})}var ee=V({base:"peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{sm:"h-7 text-xs",md:"h-8 text-sm",lg:"group-data-[collapsible=icon]:p-0! h-12 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),te="SidebarMenuButton";function Xe({asChild:t=!1,isActive:e=!1,variant:n="default",size:r="md",tooltip:i,className:d,...p}){let l=t?f:"button",{isMobile:m,state:u}=h(te),g=a(l,{className:o(ee({variant:n,size:r}),d),"data-active":e,"data-sidebar":"menu-button","data-size":r,"data-slot":"sidebar-menu-button",...p});return i?(typeof i=="string"&&(i={children:i}),c(k,{children:[a(X,{asChild:!0,children:g}),a(D,{align:"center",hidden:u!=="collapsed"||m,side:"right",...i})]})):g}function De({className:t,asChild:e=!1,showOnHover:n=!1,...r}){return a(e?f:"button",{className:o("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",n&&"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",t),"data-sidebar":"menu-action","data-slot":"sidebar-menu-action",...r})}function Je({className:t,...e}){return a("div",{className:o("text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground 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 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1",t),"data-sidebar":"menu-badge","data-slot":"sidebar-menu-badge",...e})}function Te({className:t,showIcon:e=!1,...n}){let r=K(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return c("div",{className:o("flex h-8 items-center gap-2 rounded-md px-2",t),"data-sidebar":"menu-skeleton","data-slot":"sidebar-menu-skeleton",...n,children:[e?a(w,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}):null,a(w,{className:"max-w-(--skeleton-width) h-4 flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":r}})]})}function ze({className:t,...e}){return a("ul",{className:o("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",t),"data-sidebar":"menu-sub","data-slot":"sidebar-menu-sub",...e})}function Be({className:t,...e}){return a("li",{className:o("group/menu-sub-item relative",t),"data-sidebar":"menu-sub-item","data-slot":"sidebar-menu-sub-item",...e})}function Oe({asChild:t=!1,size:e="md",isActive:n=!1,className:r,...i}){return a(t?f:"a",{className:o("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 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",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",r),"data-active":n,"data-sidebar":"menu-sub-button","data-size":e,"data-slot":"sidebar-menu-sub-button",...i})}export{h as a,ge as b,ve as c,he as d,Se as e,xe as f,we as g,Ce as h,Ee as i,ye as j,Ne as k,Me as l,Pe as m,_e as n,Ie as o,Ae as p,ke as q,Xe as r,De as s,Je as t,Te as u,ze as v,Be as w,Oe as x};
2
+ //# sourceMappingURL=chunk-4C3B26NE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/sidebar.tsx"],"names":["useIsMobile","createContext","Slot","PanelLeftIcon","useCallback","useEffect","useMemo","useState","tv","jsx","jsxs","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SIDEBAR_PROVIDER_NAME","SidebarContextProvider","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","openMobile","setOpenMobile","isOpen","setIsOpen","open","setOpen","value","openState","toggleSidebar","currentValue","handleKeyDown","event","TooltipProvider","cn","SIDEBAR_NAME","Sidebar","side","variant","collapsible","state","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SIDEBAR_TRIGGER_NAME","SidebarTrigger","onClick","Button","SIDEBAR_RAIL_NAME","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SIDEBAR_MENU_BUTTON_NAME","SidebarMenuButton","isActive","size","tooltip","Component","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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","sourcesContent":["'use client';\n\nimport type { ComponentProps, CSSProperties, Dispatch, JSX, SetStateAction } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { useIsMobile } from '@codefast/hooks';\nimport { createContext } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeftIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/tooltip';\nimport { cn } from '@/lib/utils';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3.0625rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ninterface SidebarContextValue {\n isMobile: boolean;\n open: boolean;\n openMobile: boolean;\n setOpen: (open: boolean) => void;\n setOpenMobile: Dispatch<SetStateAction<boolean>>;\n state: 'collapsed' | 'expanded';\n toggleSidebar: () => void;\n}\n\n/* -----------------------------------------------------------------------------\n * Context: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_PROVIDER_NAME = 'SidebarProvider';\n\nconst [SidebarContextProvider, useSidebar] = createContext<SidebarContextValue>(SIDEBAR_PROVIDER_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ComponentProps<'div'> & {\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n}): JSX.Element {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const open = openProp ?? isOpen;\n const setOpen = useCallback(\n (value: ((value: boolean) => boolean) | boolean) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n setIsOpen(openState);\n }\n\n // eslint-disable-next-line unicorn/no-document-cookie -- This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((currentValue) => !currentValue);\n } else {\n setOpen((currentValue) => !currentValue);\n }\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n return (\n <SidebarContextProvider\n isMobile={isMobile}\n open={open}\n openMobile={openMobile}\n setOpen={setOpen}\n setOpenMobile={setOpenMobile}\n state={state}\n toggleSidebar={toggleSidebar}\n >\n <TooltipProvider delayDuration={0}>\n <div\n className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className)}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Sidebar\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_NAME = 'Sidebar';\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: ComponentProps<'div'> & {\n collapsible?: 'icon' | 'none' | 'offcanvas';\n side?: 'left' | 'right';\n variant?: 'floating' | 'inset' | 'sidebar';\n}): JSX.Element {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar(SIDEBAR_NAME);\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col', className)}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className={cn('text-sidebar-foreground group peer hidden md:block', className)}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n 'w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex',\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 // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarTrigger\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_TRIGGER_NAME = 'SidebarTrigger';\n\nfunction SidebarTrigger({ className, onClick, ...props }: ComponentProps<typeof Button>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);\n\n return (\n <Button\n className={cn('size-7', className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarRail\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_RAIL_NAME = 'SidebarRail';\n\nfunction SidebarRail({ className, ...props }: ComponentProps<'button'>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);\n\n return (\n <button\n className={cn(\n 'hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar 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] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n title=\"Toggle Sidebar\"\n type=\"button\"\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInset\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInset({ className, ...props }: ComponentProps<'main'>): JSX.Element {\n return (\n <main\n className={cn(\n 'bg-background relative flex w-full min-w-0 flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInput\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInput({ className, ...props }: ComponentProps<typeof Input>): JSX.Element {\n return (\n <Input\n className={cn('bg-background h-8 w-full shadow-none', className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarHeader\n * -------------------------------------------------------------------------- */\n\nfunction SidebarHeader({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarFooter\n * -------------------------------------------------------------------------- */\n\nfunction SidebarFooter({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarSeparator\n * -------------------------------------------------------------------------- */\n\nfunction SidebarSeparator({ className, ...props }: ComponentProps<typeof Separator>): JSX.Element {\n return (\n <Separator\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroup\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroup({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupLabel\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-label\"\n data-slot=\"sidebar-group-label\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-action\"\n data-slot=\"sidebar-group-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('w-full text-sm', className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenu\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenu({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-item relative', className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Variant: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n sm: 'h-7 text-xs',\n md: 'h-8 text-sm',\n lg: 'group-data-[collapsible=icon]:p-0! h-12 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_MENU_BUTTON_NAME = 'SidebarMenuButton';\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'md',\n tooltip,\n className,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof sidebarMenuButtonVariants> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: ComponentProps<typeof TooltipContent> | string;\n }): JSX.Element {\n const Component = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);\n\n const button = (\n <Component\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-slot=\"sidebar-menu-button\"\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n // eslint-disable-next-line no-param-reassign -- convert it to an object with default properties\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent align=\"center\" hidden={state !== 'collapsed' || isMobile} side=\"right\" {...tooltip} />\n </Tooltip>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n data-sidebar=\"menu-action\"\n data-slot=\"sidebar-menu-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuBadge\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuBadge({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground 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 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1',\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSkeleton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: ComponentProps<'div'> & {\n showIcon?: boolean;\n}): JSX.Element {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon ? <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" /> : null}\n <Skeleton\n className=\"max-w-(--skeleton-width) h-4 flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as CSSProperties\n }\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSub\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSub({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-sub-item relative', className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubButton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: ComponentProps<'a'> & {\n asChild?: boolean;\n isActive?: boolean;\n size?: 'md' | 'sm';\n}): JSX.Element {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 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',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-active={isActive}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-slot=\"sidebar-menu-sub-button\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n Sidebar,\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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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";var _chunk7EG2MKOPcjs = require('./chunk-7EG2MKOP.cjs');var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _reactcontext = require('@radix-ui/react-context');var _reactslot = require('@radix-ui/react-slot');var _react = require('react');var _reacthookform = require('react-hook-form');var _jsxruntime = require('react/jsx-runtime');var A=_reacthookform.FormProvider,c="FormField",[p,D]=_reactcontext.createContextScope.call(void 0, c),[C,M]=p(c);function a(o,t){let{id:e}=b(o,t),{name:r}=M(o,t),{getFieldState:n}=_reacthookform.useFormContext.call(void 0, ),i=_reacthookform.useFormState.call(void 0, {name:r}),s=n(r,i);return{id:e,name:r,formDescriptionId:`form-item-description-${e}`,formItemId:`form-item-${e}`,formMessageId:`form-item-message-${e}`,...s}}function O(o){let{__scopeFormField:t,...e}=o;return _jsxruntime.jsx.call(void 0, C,{name:e.name,scope:t,children:_jsxruntime.jsx.call(void 0, _reacthookform.Controller,{...e})})}var E="FormItem",[V,b]=p(E);function J({__scopeFormField:o,className:t,...e}){let r=_react.useId.call(void 0, );return _jsxruntime.jsx.call(void 0, V,{id:r,scope:o,children:_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "grid gap-2",t),"data-slot":"form-item",...e})})}var N="FormLabel";function X({__scopeFormField:o,...t}){let{formItemId:e,error:r}=a(N,o);return _jsxruntime.jsx.call(void 0, _chunk7EG2MKOPcjs.a,{"data-invalid":r?!0:void 0,"data-slot":"form-label",htmlFor:e,...t})}var T="FormControl";function $({__scopeFormField:o,...t}){let{formDescriptionId:e,formItemId:r,formMessageId:n,error:i}=a(T,o);return _jsxruntime.jsx.call(void 0, _reactslot.Slot,{"aria-describedby":i?`${e} ${n}`:e,"aria-invalid":!!i,"data-slot":"form-control",id:r,...t})}function B({__scopeFormField:o,className:t,...e}){let{formDescriptionId:r}=a(F,o);return _jsxruntime.jsx.call(void 0, "p",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-muted-foreground text-xs",t),"data-slot":"form-description",id:r,...e})}var F="FormMessage";function k({__scopeFormField:o,children:t,className:e,...r}){let{formMessageId:n,error:i}=a(F,o),s=_optionalChain([i, 'optionalAccess', _ => _.message])?String(i.message):t;return s?_jsxruntime.jsx.call(void 0, "p",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-xs",_optionalChain([i, 'optionalAccess', _2 => _2.message])?"text-destructive font-medium":"text-muted-foreground",e),"data-slot":"form-message",id:n,...r,children:s}):null}exports.a = A; exports.b = D; exports.c = O; exports.d = J; exports.e = X; exports.f = $; exports.g = B; exports.h = k;
2
- //# sourceMappingURL=chunk-YWNO4DL2.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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";var _chunk7EG2MKOPcjs = require('./chunk-7EG2MKOP.cjs');var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _reactcontext = require('@radix-ui/react-context');var _reactslot = require('@radix-ui/react-slot');var _react = require('react');var _reacthookform = require('react-hook-form');var _jsxruntime = require('react/jsx-runtime');var A=_reacthookform.FormProvider,c="FormField",[p,D]=_reactcontext.createContextScope.call(void 0, c),[C,M]=p(c);function a(o,t){let{id:e}=b(o,t),{name:r}=M(o,t),{getFieldState:m}=_reacthookform.useFormContext.call(void 0, ),i=_reacthookform.useFormState.call(void 0, {name:r}),s=m(r,i);return{id:e,name:r,formDescriptionId:`form-item-description-${e}`,formItemId:`form-item-${e}`,formMessageId:`form-item-message-${e}`,...s}}function O(o){let{__scopeFormField:t,...e}=o;return _jsxruntime.jsx.call(void 0, C,{name:e.name,scope:t,children:_jsxruntime.jsx.call(void 0, _reacthookform.Controller,{...e})})}var E="FormItem",[V,b]=p(E);function J({__scopeFormField:o,className:t,...e}){let r=_react.useId.call(void 0, );return _jsxruntime.jsx.call(void 0, V,{id:r,scope:o,children:_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "grid gap-2",t),"data-slot":"form-item",...e})})}var N="FormLabel";function X({__scopeFormField:o,...t}){let{formItemId:e,error:r}=a(N,o);return _jsxruntime.jsx.call(void 0, _chunk7EG2MKOPcjs.a,{"data-invalid":r?!0:void 0,"data-slot":"form-label",htmlFor:e,...t})}var T="FormControl";function $({__scopeFormField:o,...t}){let{formDescriptionId:e,formItemId:r,formMessageId:m,error:i}=a(T,o);return _jsxruntime.jsx.call(void 0, _reactslot.Slot,{"aria-describedby":i?`${e} ${m}`:e,"aria-invalid":!!i,"data-slot":"form-control",id:r,...t})}function B({__scopeFormField:o,className:t,...e}){let{formDescriptionId:r}=a(F,o);return _jsxruntime.jsx.call(void 0, "p",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-muted-foreground text-xs",t),"data-slot":"form-description",id:r,...e})}var F="FormMessage";function k({__scopeFormField:o,children:t,className:e,...r}){let{formMessageId:m,error:i}=a(F,o),s=_optionalChain([i, 'optionalAccess', _ => _.message])?String(i.message):t;return s?_jsxruntime.jsx.call(void 0, "p",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-xs",_optionalChain([i, 'optionalAccess', _2 => _2.message])?"text-destructive font-medium":"text-muted-foreground",e),"data-slot":"form-message",id:m,...r,children:s}):null}exports.a = A; exports.b = D; exports.c = O; exports.d = J; exports.e = X; exports.f = $; exports.g = B; exports.h = k;
2
+ //# sourceMappingURL=chunk-5JTBH2HB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-5JTBH2HB.cjs","../src/components/form.tsx"],"names":["createFormFieldContext","FormFieldContextProvider","useFormFieldContext","FORM_FIELD_NAME","useFormItem","consumerName","scope","id","useFormItemContext","name","fieldState","getFieldState"],"mappings":"AAAA,ylBAAY,CAAC,wDAAwC,wDCO5C,uDACA,iDACA,8BACA,gDAyEH,+CA1DkB,IAAA,CAAA,CAAA,2BAAA,CAAA,CAIlB,CAACA,WASAC,CAAAA,CAA0BC,CAAmB,CAAA,CAAIF,CAAAA,CAA8CG,8CAAe,CAErH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CACPC,CAAAA,CACAC,SAaQ,CAAAC,CAAG,CAAA,CAAIC,CAAAA,CAAmBH,CAAAA,GAAmB,CAC/C,EAAE,CAAA,CAAA,CAAA,CAAAI,CAAK,CAAA,CAAIP,CAAAA,CAAoBG,CAAAA,CAAcC,CAAK,IAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,aACyB,CAAA,CAAA,CAAA,CAAA,2CAAAG,CAAM,CAAA,CACjCC,CAAAA,yCAAaC,CAAcF,IAAe,CAEhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CACL,CAAA,CAAA,CAAAF,CAAAA,CACA,CAAA,MACA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,iBAAmB,CAAA,CAAA,sBACnB,EAAA,CAAA,CAAY,CAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-5JTBH2HB.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { ControllerProps, FieldError, FieldPath, FieldValues } from 'react-hook-form';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useId } from 'react';\nimport { Controller, FormProvider, useFormContext, useFormState } from 'react-hook-form';\n\nimport { Label } from '@/components/label';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Form\n * -------------------------------------------------------------------------- */\n\nconst Form = FormProvider;\n\n/* -----------------------------------------------------------------------------\n * Context: FormField\n * -------------------------------------------------------------------------- */\n\nconst FORM_FIELD_NAME = 'FormField';\n\ntype ScopedProps<P> = P & { __scopeFormField?: Scope };\n\nconst [createFormFieldContext, createFormFieldScope] = createContextScope(FORM_FIELD_NAME);\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName;\n}\n\nconst [FormFieldContextProvider, useFormFieldContext] = createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME);\n\nfunction useFormItem(\n consumerName: string,\n scope: Scope,\n): {\n formDescriptionId: string;\n formItemId: string;\n formMessageId: string;\n id: string;\n invalid: boolean;\n isDirty: boolean;\n isTouched: boolean;\n isValidating: boolean;\n name: string;\n error?: FieldError;\n} {\n const { id } = useFormItemContext(consumerName, scope);\n const { name } = useFormFieldContext(consumerName, scope);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name });\n const fieldState = getFieldState(name, formState);\n\n return {\n id,\n name,\n formDescriptionId: `form-item-description-${id}`,\n formItemId: `form-item-${id}`,\n formMessageId: `form-item-message-${id}`,\n ...fieldState,\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormField\n * -------------------------------------------------------------------------- */\n\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>): JSX.Element {\n const { __scopeFormField, ...props } = formFieldProps;\n\n return (\n <FormFieldContextProvider name={props.name} scope={__scopeFormField}>\n <Controller {...props} />\n </FormFieldContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Context: FormItem\n * -------------------------------------------------------------------------- */\n\nconst FORM_ITEM_NAME = 'FormItem';\n\ninterface FormItemContextValue {\n id: string;\n}\n\nconst [FormItemContextProvider, useFormItemContext] = createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: FormItem\n * -------------------------------------------------------------------------- */\n\nfunction FormItem({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const id = useId();\n\n return (\n <FormItemContextProvider id={id} scope={__scopeFormField}>\n <div className={cn('grid gap-2', className)} data-slot=\"form-item\" {...props} />\n </FormItemContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormLabel\n * -------------------------------------------------------------------------- */\n\nconst FORM_LABEL_NAME = 'FormLabel';\n\nfunction FormLabel({\n __scopeFormField,\n ...props\n}: ScopedProps<ComponentProps<typeof LabelPrimitive.Root>>): JSX.Element {\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField);\n\n return <Label data-invalid={error ? true : undefined} data-slot=\"form-label\" htmlFor={formItemId} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormControl\n * -------------------------------------------------------------------------- */\n\nconst FORM_CONTROL_NAME = 'FormControl';\n\nfunction FormControl({ __scopeFormField, ...props }: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(FORM_CONTROL_NAME, __scopeFormField);\n\n return (\n <Slot\n aria-describedby={error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId}\n aria-invalid={Boolean(error)}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormDescription\n * -------------------------------------------------------------------------- */\n\nfunction FormDescription({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'p'>>): JSX.Element {\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n\n return (\n <p\n className={cn('text-muted-foreground text-xs', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormMessage\n * -------------------------------------------------------------------------- */\n\nconst FORM_MESSAGE_NAME = 'FormMessage';\n\nfunction FormMessage({ __scopeFormField, children, className, ...props }: ScopedProps<ComponentProps<'p'>>): ReactNode {\n const { formMessageId, error } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n const body = error?.message ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-xs', error?.message ? 'text-destructive font-medium' : 'text-muted-foreground', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { createFormFieldScope, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage };\n"]}
@@ -1,2 +1,2 @@
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";var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _reactcontext = require('@radix-ui/react-context');var _reactscrollarea = require('@radix-ui/react-scroll-area'); var r = _interopRequireWildcard(_reactscrollarea);var _tailwindvariants = require('tailwind-variants');var _jsxruntime = require('react/jsx-runtime');var S=_tailwindvariants.tv.call(void 0, {base:"flex touch-none select-none p-px transition-colors",compoundVariants:[{className:"w-1.5",orientation:"vertical",size:"sm"},{className:"w-2",orientation:"vertical",size:"md"},{className:"w-2.5",orientation:"vertical",size:"lg"},{className:"h-1.5",orientation:"horizontal",size:"sm"},{className:"h-2",orientation:"horizontal",size:"md"},{className:"h-2.5",orientation:"horizontal",size:"lg"}],variants:{orientation:{horizontal:"w-full flex-col border-t border-t-transparent",vertical:"h-full flex-row border-l border-l-transparent"},size:{none:"",sm:"",md:"",lg:""}},defaultVariants:{size:"md",vertical:"vertical"}}),n="ScrollArea",[v]=_reactcontext.createContextScope.call(void 0, n),[A,d]=v(n);function z({__scopeScrollArea:l,children:t,className:o,size:a,...i}){return _jsxruntime.jsx.call(void 0, A,{scope:l,size:a,children:_jsxruntime.jsxs.call(void 0, r.Root,{className:_chunk4QBKNZJKcjs.a.call(void 0, "relative",o),"data-slot":"scroll-area",...i,children:[_jsxruntime.jsx.call(void 0, r.Viewport,{className:"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4","data-slot":"scroll-area-viewport",children:t}),_jsxruntime.jsx.call(void 0, s,{orientation:"vertical"}),_jsxruntime.jsx.call(void 0, s,{orientation:"horizontal"}),_jsxruntime.jsx.call(void 0, r.Corner,{})]})})}function s({__scopeScrollArea:l,className:t,orientation:o,...a}){let{size:i}=d(n,l);return _jsxruntime.jsx.call(void 0, r.Scrollbar,{className:S({className:t,orientation:o,size:i}),"data-slot":"scroll-area-scrollbar",orientation:o,...a,children:_jsxruntime.jsx.call(void 0, r.ScrollAreaThumb,{className:"bg-border relative flex-1 rounded-full"})})}exports.a = z; exports.b = s;
2
- //# sourceMappingURL=chunk-ARA45GRR.cjs.map
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";var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _reactcontext = require('@radix-ui/react-context');var _reactscrollarea = require('@radix-ui/react-scroll-area'); var r = _interopRequireWildcard(_reactscrollarea);var _tailwindvariants = require('tailwind-variants');var _jsxruntime = require('react/jsx-runtime');var S=_tailwindvariants.tv.call(void 0, {base:"flex touch-none select-none p-px transition-colors",compoundVariants:[{className:"w-1.5",orientation:"vertical",size:"sm"},{className:"w-2",orientation:"vertical",size:"md"},{className:"w-2.5",orientation:"vertical",size:"lg"},{className:"h-1.5",orientation:"horizontal",size:"sm"},{className:"h-2",orientation:"horizontal",size:"md"},{className:"h-2.5",orientation:"horizontal",size:"lg"}],variants:{orientation:{horizontal:"w-full flex-col border-t border-t-transparent",vertical:"h-full flex-row border-l border-l-transparent"},size:{none:"",sm:"",md:"",lg:""}},defaultVariants:{size:"md",vertical:"vertical"}}),n="ScrollArea",[v]=_reactcontext.createContextScope.call(void 0, n),[A,d]=v(n);function z({__scopeScrollArea:t,children:l,className:o,size:a,...i}){return _jsxruntime.jsx.call(void 0, A,{scope:t,size:a,children:_jsxruntime.jsxs.call(void 0, r.Root,{className:_chunk4QBKNZJKcjs.a.call(void 0, "relative",o),"data-slot":"scroll-area",...i,children:[_jsxruntime.jsx.call(void 0, r.Viewport,{className:"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4","data-slot":"scroll-area-viewport",children:l}),_jsxruntime.jsx.call(void 0, s,{orientation:"vertical"}),_jsxruntime.jsx.call(void 0, s,{orientation:"horizontal"}),_jsxruntime.jsx.call(void 0, r.Corner,{})]})})}function s({__scopeScrollArea:t,className:l,orientation:o,...a}){let{size:i}=d(n,t);return _jsxruntime.jsx.call(void 0, r.Scrollbar,{className:S({className:l,orientation:o,size:i}),"data-slot":"scroll-area-scrollbar",orientation:o,...a,children:_jsxruntime.jsx.call(void 0, r.ScrollAreaThumb,{className:"bg-border relative flex-1 rounded-full"})})}exports.a = z; exports.b = s;
2
+ //# sourceMappingURL=chunk-75QPTJUO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-75QPTJUO.cjs","../src/components/scroll-area.tsx"],"names":["ScrollAreaPrimitive","useScrollAreaContext","createScrollAreaContext","SCROLL_AREA_NAME","ScrollArea","children","className","props","ScrollAreaContextProvider","size","jsxs","cn","jsx","ScrollAreaScrollbar","orientation","__scopeScrollArea","scrollAreaScrollbarVariants"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-75QPTJUO.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { tv } from 'tailwind-variants';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Variant: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nconst scrollAreaScrollbarVariants = tv({\n base: 'flex touch-none select-none p-px transition-colors',\n compoundVariants: [\n {\n className: 'w-1.5',\n orientation: 'vertical',\n size: 'sm',\n },\n {\n className: 'w-2',\n orientation: 'vertical',\n size: 'md',\n },\n {\n className: 'w-2.5',\n orientation: 'vertical',\n size: 'lg',\n },\n {\n className: 'h-1.5',\n orientation: 'horizontal',\n size: 'sm',\n },\n {\n className: 'h-2',\n orientation: 'horizontal',\n size: 'md',\n },\n {\n className: 'h-2.5',\n orientation: 'horizontal',\n size: 'lg',\n },\n ],\n variants: {\n orientation: {\n horizontal: 'w-full flex-col border-t border-t-transparent',\n vertical: 'h-full flex-row border-l border-l-transparent',\n },\n size: {\n none: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n vertical: 'vertical',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Context: ScrollArea\n * -------------------------------------------------------------------------- */\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\n\nconst [createScrollAreaContext] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = Pick<VariantProps<typeof scrollAreaScrollbarVariants>, 'size'>;\n\nconst [ScrollAreaContextProvider, useScrollAreaContext] =\n createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollArea\n * -------------------------------------------------------------------------- */\n\nfunction ScrollArea({\n __scopeScrollArea,\n children,\n className,\n size,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Root> & ScrollAreaContextValue>): JSX.Element {\n return (\n <ScrollAreaContextProvider scope={__scopeScrollArea} size={size}>\n <ScrollAreaPrimitive.Root className={cn('relative', className)} data-slot=\"scroll-area\" {...props}>\n <ScrollAreaPrimitive.Viewport\n className=\"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollAreaScrollbar orientation=\"vertical\" />\n <ScrollAreaScrollbar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n </ScrollAreaContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nfunction ScrollAreaScrollbar({\n __scopeScrollArea,\n className,\n orientation,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>>): JSX.Element {\n const { size } = useScrollAreaContext(SCROLL_AREA_NAME, __scopeScrollArea);\n\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={scrollAreaScrollbarVariants({ className, orientation, size })}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { ScrollArea, ScrollAreaScrollbar };\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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";var _chunkXMUIAC76cjs = require('./chunk-XMUIAC76.cjs');var _chunk4KX73AQJcjs = require('./chunk-4KX73AQJ.cjs');var _chunk77MMVAROcjs = require('./chunk-77MMVARO.cjs');var _chunkPL6HV27Vcjs = require('./chunk-PL6HV27V.cjs');var _chunkRGTR4W4Lcjs = require('./chunk-RGTR4W4L.cjs');var _chunkRIYYTPW4cjs = require('./chunk-RIYYTPW4.cjs');var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _hooks = require('@codefast/hooks');var _reactcontext = require('@radix-ui/react-context');var _reactslot = require('@radix-ui/react-slot');var _lucidereact = require('lucide-react');var _react = require('react');var _tailwindvariants = require('tailwind-variants');var _jsxruntime = require('react/jsx-runtime');var G="sidebar_state",L=60*60*24*7,$="16rem",U="18rem",W="3.0625rem",j="b",q="SidebarProvider",[F,h]=_reactcontext.createContext.call(void 0, q);function ge({defaultOpen:t=!0,open:e,onOpenChange:n,className:r,style:i,children:d,...p}){let l=_hooks.useIsMobile.call(void 0, ),[m,u]=_react.useState.call(void 0, !1),[g,z]=_react.useState.call(void 0, t),v=_nullishCoalesce(e, () => (g)),S=_react.useCallback.call(void 0, s=>{let b=typeof s=="function"?s(v):s;n?n(b):z(b),document.cookie=`${G}=${b}; path=/; max-age=${L}`},[n,v]),x=_react.useCallback.call(void 0, ()=>{l?u(s=>!s):S(s=>!s)},[l,S,u]);return _react.useEffect.call(void 0, ()=>{let s=b=>{b.key===j&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),x())};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[x]),_jsxruntime.jsx.call(void 0, F,{isMobile:l,open:v,openMobile:m,setOpen:S,setOpenMobile:u,state:v?"expanded":"collapsed",toggleSidebar:x,children:_jsxruntime.jsx.call(void 0, _chunkXMUIAC76cjs.a,{delayDuration:0,children:_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",r),"data-slot":"sidebar-wrapper",style:{"--sidebar-width":$,"--sidebar-width-icon":W,...i},...p,children:d})})})}var Y="Sidebar";function ve({side:t="left",variant:e="sidebar",collapsible:n="offcanvas",className:r,children:i,...d}){let{isMobile:p,state:l,openMobile:m,setOpenMobile:u}=h(Y);return n==="none"?_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col",r),"data-slot":"sidebar",...d,children:i}):p?_jsxruntime.jsx.call(void 0, _chunk77MMVAROcjs.a,{open:m,onOpenChange:u,...d,children:_jsxruntime.jsxs.call(void 0, _chunk77MMVAROcjs.c,{className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden","data-mobile":"true","data-sidebar":"sidebar","data-slot":"sidebar",side:t,style:{"--sidebar-width":U},children:[_jsxruntime.jsxs.call(void 0, _chunk77MMVAROcjs.d,{className:"sr-only",children:[_jsxruntime.jsx.call(void 0, _chunk77MMVAROcjs.g,{children:"Sidebar"}),_jsxruntime.jsx.call(void 0, _chunk77MMVAROcjs.h,{children:"Displays the mobile sidebar."})]}),_jsxruntime.jsx.call(void 0, "div",{className:"flex h-full w-full flex-col",children:i})]})}):_jsxruntime.jsxs.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-sidebar-foreground group peer hidden md:block",r),"data-collapsible":l==="collapsed"?n:"","data-side":t,"data-slot":"sidebar","data-state":l,"data-variant":e,children:[_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),"data-slot":"sidebar-gap"}),_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex",t==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",r),"data-slot":"sidebar-container",...d,children:_jsxruntime.jsx.call(void 0, "div",{className:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm","data-sidebar":"sidebar","data-slot":"sidebar-inner",children:i})})]})}var Q="SidebarTrigger";function he({className:t,onClick:e,...n}){let{toggleSidebar:r}=h(Q);return _jsxruntime.jsxs.call(void 0, _chunkRIYYTPW4cjs.b,{className:_chunk4QBKNZJKcjs.a.call(void 0, "size-7",t),"data-sidebar":"trigger","data-slot":"sidebar-trigger",size:"icon",variant:"ghost",onClick:i=>{_optionalChain([e, 'optionalCall', _2 => _2(i)]),r()},...n,children:[_jsxruntime.jsx.call(void 0, _lucidereact.PanelLeftIcon,{}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]})}var Z="SidebarRail";function Se({className:t,...e}){let{toggleSidebar:n}=h(Z);return _jsxruntime.jsx.call(void 0, "button",{className:_chunk4QBKNZJKcjs.a.call(void 0, "hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar 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] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",t),"data-sidebar":"rail","data-slot":"sidebar-rail",title:"Toggle Sidebar",type:"button",onClick:n,...e})}function xe({className:t,...e}){return _jsxruntime.jsx.call(void 0, "main",{className:_chunk4QBKNZJKcjs.a.call(void 0, "bg-background relative flex w-full min-w-0 flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",t),"data-slot":"sidebar-inset",...e})}function we({className:t,...e}){return _jsxruntime.jsx.call(void 0, _chunkRGTR4W4Lcjs.b,{className:_chunk4QBKNZJKcjs.a.call(void 0, "bg-background h-8 w-full shadow-none",t),"data-sidebar":"input","data-slot":"sidebar-input",...e})}function Ce({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "flex flex-col gap-2 p-2",t),"data-sidebar":"header","data-slot":"sidebar-header",...e})}function Ee({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "flex flex-col gap-2 p-2",t),"data-sidebar":"footer","data-slot":"sidebar-footer",...e})}function ye({className:t,...e}){return _jsxruntime.jsx.call(void 0, _chunk4KX73AQJcjs.a,{className:_chunk4QBKNZJKcjs.a.call(void 0, "bg-sidebar-border mx-2 w-auto",t),"data-sidebar":"separator","data-slot":"sidebar-separator",...e})}function Ne({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),"data-sidebar":"content","data-slot":"sidebar-content",...e})}function Me({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "relative flex w-full min-w-0 flex-col p-2",t),"data-sidebar":"group","data-slot":"sidebar-group",...e})}function Pe({className:t,asChild:e=!1,...n}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-label","data-slot":"sidebar-group-label",...n})}function _e({className:t,asChild:e=!1,...n}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-action","data-slot":"sidebar-group-action",...n})}function Ie({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "w-full text-sm",t),"data-sidebar":"group-content","data-slot":"sidebar-group-content",...e})}function Ae({className:t,...e}){return _jsxruntime.jsx.call(void 0, "ul",{className:_chunk4QBKNZJKcjs.a.call(void 0, "flex w-full min-w-0 flex-col gap-1",t),"data-sidebar":"menu","data-slot":"sidebar-menu",...e})}function ke({className:t,...e}){return _jsxruntime.jsx.call(void 0, "li",{className:_chunk4QBKNZJKcjs.a.call(void 0, "group/menu-item relative",t),"data-sidebar":"menu-item","data-slot":"sidebar-menu-item",...e})}var ee=_tailwindvariants.tv.call(void 0, {base:"peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{sm:"h-7 text-xs",md:"h-8 text-sm",lg:"group-data-[collapsible=icon]:p-0! h-12 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),te="SidebarMenuButton";function Xe({asChild:t=!1,isActive:e=!1,variant:n="default",size:r="md",tooltip:i,className:d,...p}){let l=t?_reactslot.Slot:"button",{isMobile:m,state:u}=h(te),g=_jsxruntime.jsx.call(void 0, l,{className:_chunk4QBKNZJKcjs.a.call(void 0, ee({variant:n,size:r}),d),"data-active":e,"data-sidebar":"menu-button","data-size":r,"data-slot":"sidebar-menu-button",...p});return i?(typeof i=="string"&&(i={children:i}),_jsxruntime.jsxs.call(void 0, _chunkXMUIAC76cjs.b,{children:[_jsxruntime.jsx.call(void 0, _chunkXMUIAC76cjs.c,{asChild:!0,children:g}),_jsxruntime.jsx.call(void 0, _chunkXMUIAC76cjs.d,{align:"center",hidden:u!=="collapsed"||m,side:"right",...i})]})):g}function De({className:t,asChild:e=!1,showOnHover:n=!1,...r}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",n&&"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",t),"data-sidebar":"menu-action","data-slot":"sidebar-menu-action",...r})}function Je({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground 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 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1",t),"data-sidebar":"menu-badge","data-slot":"sidebar-menu-badge",...e})}function Te({className:t,showIcon:e=!1,...n}){let r=_react.useMemo.call(void 0, ()=>`${Math.floor(Math.random()*40)+50}%`,[]);return _jsxruntime.jsxs.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "flex h-8 items-center gap-2 rounded-md px-2",t),"data-sidebar":"menu-skeleton","data-slot":"sidebar-menu-skeleton",...n,children:[e?_jsxruntime.jsx.call(void 0, _chunkPL6HV27Vcjs.a,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}):null,_jsxruntime.jsx.call(void 0, _chunkPL6HV27Vcjs.a,{className:"max-w-(--skeleton-width) h-4 flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":r}})]})}function ze({className:t,...e}){return _jsxruntime.jsx.call(void 0, "ul",{className:_chunk4QBKNZJKcjs.a.call(void 0, "border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",t),"data-sidebar":"menu-sub","data-slot":"sidebar-menu-sub",...e})}function Be({className:t,...e}){return _jsxruntime.jsx.call(void 0, "li",{className:_chunk4QBKNZJKcjs.a.call(void 0, "group/menu-sub-item relative",t),"data-sidebar":"menu-sub-item","data-slot":"sidebar-menu-sub-item",...e})}function Oe({asChild:t=!1,size:e="md",isActive:n=!1,className:r,...i}){return _jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"a",{className:_chunk4QBKNZJKcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 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",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",r),"data-active":n,"data-sidebar":"menu-sub-button","data-size":e,"data-slot":"sidebar-menu-sub-button",...i})}exports.a = h; exports.b = ge; exports.c = ve; exports.d = he; exports.e = Se; exports.f = xe; exports.g = we; exports.h = Ce; exports.i = Ee; exports.j = ye; exports.k = Ne; exports.l = Me; exports.m = Pe; exports.n = _e; exports.o = Ie; exports.p = Ae; exports.q = ke; exports.r = Xe; exports.s = De; exports.t = Je; exports.u = Te; exports.v = ze; exports.w = Be; exports.x = Oe;
2
+ //# sourceMappingURL=chunk-AOEBEZCM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-AOEBEZCM.cjs","../src/components/sidebar.tsx"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_KEYBOARD_SHORTCUT","SidebarProvider","defaultOpen","setOpenProp","className","children","isMobile","useIsMobile","openMobile","setOpenMobile","useState","isOpen","setIsOpen","open","openProp","setOpen","useCallback","value","openState"],"mappings":"AAAA,6rBAAY,CAAC,wDAA6D,wDAAyC,wDAAqE,wDAAyC,wDAAyC,wDAAyC,wDCK1S,wCACA,uDACA,iDACA,2CACA,8BACA,qDAmHD,+CAzGoB,IAAA,CAAA,CAAA,eACkB,CACxCA,CAAAA,CAAgB,EAAA,CAAA,EAAA,CAAA,EAChBC,CAAAA,CAAuB,CAAA,CAAA,CAAA,OACF,CAAA,CAAA,CAAA,OAAA,CAAA,CACrBC,CAAAA,WAgBwB,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,iBAQ9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,yCAASC,CAAAA,CAAgB,CACvB,SAAA,EAAA,CAAAC,CAAAA,WAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAcC,YACdC,CAAAA,CACA,CAAA,SACA,CAAA,CAAA,CAAA,KAAAC,CACA,CAAA,CAAA,QAMA,CAAMC,CAAAA,CAAWC,GAAY,CACvB,CAACC,CAAAA,CAAYC,IAAiBC,CAAS,CAAA,gCAAK,CAI5C,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIF,CAAAA,6BAASR,CAAW,CAC1CW,CAAAA,CAAOC,CAAAA,CAAAA,CAAYH,CAAAA,CACnBI,CAAAA,6BAAUC,CACbC,CAAAA,CAAAA,CAAmD,kBAClD,CAAA,SAAA,GAAMC,CAAAA,CAAY,CAAA,gCAAA,CAAA,EAAA,CAAOD,IAAU,CAAA,CAAA,OAAA,CAAaA,EAAMJ,UAG/B,CAAA,CAErBD,CAAAA,CAAUM,CAAS,CAAA,CAIrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,QAA+B,CAAA,MAAa,CAAA,CAAA,EAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-AOEBEZCM.cjs","sourcesContent":[null,"'use client';\n\nimport type { ComponentProps, CSSProperties, Dispatch, JSX, SetStateAction } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { useIsMobile } from '@codefast/hooks';\nimport { createContext } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeftIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/tooltip';\nimport { cn } from '@/lib/utils';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3.0625rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ninterface SidebarContextValue {\n isMobile: boolean;\n open: boolean;\n openMobile: boolean;\n setOpen: (open: boolean) => void;\n setOpenMobile: Dispatch<SetStateAction<boolean>>;\n state: 'collapsed' | 'expanded';\n toggleSidebar: () => void;\n}\n\n/* -----------------------------------------------------------------------------\n * Context: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_PROVIDER_NAME = 'SidebarProvider';\n\nconst [SidebarContextProvider, useSidebar] = createContext<SidebarContextValue>(SIDEBAR_PROVIDER_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ComponentProps<'div'> & {\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n}): JSX.Element {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const open = openProp ?? isOpen;\n const setOpen = useCallback(\n (value: ((value: boolean) => boolean) | boolean) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n setIsOpen(openState);\n }\n\n // eslint-disable-next-line unicorn/no-document-cookie -- This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((currentValue) => !currentValue);\n } else {\n setOpen((currentValue) => !currentValue);\n }\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n return (\n <SidebarContextProvider\n isMobile={isMobile}\n open={open}\n openMobile={openMobile}\n setOpen={setOpen}\n setOpenMobile={setOpenMobile}\n state={state}\n toggleSidebar={toggleSidebar}\n >\n <TooltipProvider delayDuration={0}>\n <div\n className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className)}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Sidebar\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_NAME = 'Sidebar';\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: ComponentProps<'div'> & {\n collapsible?: 'icon' | 'none' | 'offcanvas';\n side?: 'left' | 'right';\n variant?: 'floating' | 'inset' | 'sidebar';\n}): JSX.Element {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar(SIDEBAR_NAME);\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col', className)}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className={cn('text-sidebar-foreground group peer hidden md:block', className)}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n 'w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex',\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 // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarTrigger\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_TRIGGER_NAME = 'SidebarTrigger';\n\nfunction SidebarTrigger({ className, onClick, ...props }: ComponentProps<typeof Button>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);\n\n return (\n <Button\n className={cn('size-7', className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarRail\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_RAIL_NAME = 'SidebarRail';\n\nfunction SidebarRail({ className, ...props }: ComponentProps<'button'>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);\n\n return (\n <button\n className={cn(\n 'hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar 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] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n title=\"Toggle Sidebar\"\n type=\"button\"\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInset\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInset({ className, ...props }: ComponentProps<'main'>): JSX.Element {\n return (\n <main\n className={cn(\n 'bg-background relative flex w-full min-w-0 flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInput\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInput({ className, ...props }: ComponentProps<typeof Input>): JSX.Element {\n return (\n <Input\n className={cn('bg-background h-8 w-full shadow-none', className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarHeader\n * -------------------------------------------------------------------------- */\n\nfunction SidebarHeader({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarFooter\n * -------------------------------------------------------------------------- */\n\nfunction SidebarFooter({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarSeparator\n * -------------------------------------------------------------------------- */\n\nfunction SidebarSeparator({ className, ...props }: ComponentProps<typeof Separator>): JSX.Element {\n return (\n <Separator\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroup\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroup({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupLabel\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-label\"\n data-slot=\"sidebar-group-label\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-action\"\n data-slot=\"sidebar-group-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('w-full text-sm', className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenu\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenu({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-item relative', className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Variant: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n sm: 'h-7 text-xs',\n md: 'h-8 text-sm',\n lg: 'group-data-[collapsible=icon]:p-0! h-12 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_MENU_BUTTON_NAME = 'SidebarMenuButton';\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'md',\n tooltip,\n className,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof sidebarMenuButtonVariants> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: ComponentProps<typeof TooltipContent> | string;\n }): JSX.Element {\n const Component = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);\n\n const button = (\n <Component\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-slot=\"sidebar-menu-button\"\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n // eslint-disable-next-line no-param-reassign -- convert it to an object with default properties\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent align=\"center\" hidden={state !== 'collapsed' || isMobile} side=\"right\" {...tooltip} />\n </Tooltip>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n data-sidebar=\"menu-action\"\n data-slot=\"sidebar-menu-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuBadge\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuBadge({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground 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 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1',\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSkeleton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: ComponentProps<'div'> & {\n showIcon?: boolean;\n}): JSX.Element {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon ? <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" /> : null}\n <Skeleton\n className=\"max-w-(--skeleton-width) h-4 flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as CSSProperties\n }\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSub\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSub({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-sub-item relative', className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubButton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: ComponentProps<'a'> & {\n asChild?: boolean;\n isActive?: boolean;\n size?: 'md' | 'sm';\n}): JSX.Element {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 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',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-active={isActive}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-slot=\"sidebar-menu-sub-button\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n Sidebar,\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,2 +1,2 @@
1
- "use client";import{a as l}from"./chunk-M2CSPS4G.js";import{a as d}from"./chunk-KWNBGPPE.js";import{createContextScope as f}from"@radix-ui/react-context";import{Slot as u}from"@radix-ui/react-slot";import{useId as P}from"react";import{Controller as I,FormProvider as S,useFormContext as g,useFormState as x}from"react-hook-form";import{jsx as m}from"react/jsx-runtime";var A=S,c="FormField",[p,D]=f(c),[C,M]=p(c);function a(o,t){let{id:e}=b(o,t),{name:r}=M(o,t),{getFieldState:n}=g(),i=x({name:r}),s=n(r,i);return{id:e,name:r,formDescriptionId:`form-item-description-${e}`,formItemId:`form-item-${e}`,formMessageId:`form-item-message-${e}`,...s}}function O(o){let{__scopeFormField:t,...e}=o;return m(C,{name:e.name,scope:t,children:m(I,{...e})})}var E="FormItem",[V,b]=p(E);function J({__scopeFormField:o,className:t,...e}){let r=P();return m(V,{id:r,scope:o,children:m("div",{className:d("grid gap-2",t),"data-slot":"form-item",...e})})}var N="FormLabel";function X({__scopeFormField:o,...t}){let{formItemId:e,error:r}=a(N,o);return m(l,{"data-invalid":r?!0:void 0,"data-slot":"form-label",htmlFor:e,...t})}var T="FormControl";function $({__scopeFormField:o,...t}){let{formDescriptionId:e,formItemId:r,formMessageId:n,error:i}=a(T,o);return m(u,{"aria-describedby":i?`${e} ${n}`:e,"aria-invalid":!!i,"data-slot":"form-control",id:r,...t})}function B({__scopeFormField:o,className:t,...e}){let{formDescriptionId:r}=a(F,o);return m("p",{className:d("text-muted-foreground text-xs",t),"data-slot":"form-description",id:r,...e})}var F="FormMessage";function k({__scopeFormField:o,children:t,className:e,...r}){let{formMessageId:n,error:i}=a(F,o),s=i?.message?String(i.message):t;return s?m("p",{className:d("text-xs",i?.message?"text-destructive font-medium":"text-muted-foreground",e),"data-slot":"form-message",id:n,...r,children:s}):null}export{A as a,D as b,O as c,J as d,X as e,$ as f,B as g,k as h};
2
- //# sourceMappingURL=chunk-MZSHK2F7.js.map
1
+ "use client";import{a as l}from"./chunk-M2CSPS4G.js";import{a as d}from"./chunk-KWNBGPPE.js";import{createContextScope as f}from"@radix-ui/react-context";import{Slot as u}from"@radix-ui/react-slot";import{useId as P}from"react";import{Controller as x,FormProvider as I,useFormContext as S,useFormState as g}from"react-hook-form";import{jsx as n}from"react/jsx-runtime";var A=I,c="FormField",[p,D]=f(c),[C,M]=p(c);function a(o,t){let{id:e}=b(o,t),{name:r}=M(o,t),{getFieldState:m}=S(),i=g({name:r}),s=m(r,i);return{id:e,name:r,formDescriptionId:`form-item-description-${e}`,formItemId:`form-item-${e}`,formMessageId:`form-item-message-${e}`,...s}}function O(o){let{__scopeFormField:t,...e}=o;return n(C,{name:e.name,scope:t,children:n(x,{...e})})}var E="FormItem",[V,b]=p(E);function J({__scopeFormField:o,className:t,...e}){let r=P();return n(V,{id:r,scope:o,children:n("div",{className:d("grid gap-2",t),"data-slot":"form-item",...e})})}var N="FormLabel";function X({__scopeFormField:o,...t}){let{formItemId:e,error:r}=a(N,o);return n(l,{"data-invalid":r?!0:void 0,"data-slot":"form-label",htmlFor:e,...t})}var T="FormControl";function $({__scopeFormField:o,...t}){let{formDescriptionId:e,formItemId:r,formMessageId:m,error:i}=a(T,o);return n(u,{"aria-describedby":i?`${e} ${m}`:e,"aria-invalid":!!i,"data-slot":"form-control",id:r,...t})}function B({__scopeFormField:o,className:t,...e}){let{formDescriptionId:r}=a(F,o);return n("p",{className:d("text-muted-foreground text-xs",t),"data-slot":"form-description",id:r,...e})}var F="FormMessage";function k({__scopeFormField:o,children:t,className:e,...r}){let{formMessageId:m,error:i}=a(F,o),s=i?.message?String(i.message):t;return s?n("p",{className:d("text-xs",i?.message?"text-destructive font-medium":"text-muted-foreground",e),"data-slot":"form-message",id:m,...r,children:s}):null}export{A as a,D as b,O as c,J as d,X as e,$ as f,B as g,k as h};
2
+ //# sourceMappingURL=chunk-DX7ZENLD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form.tsx"],"names":["createContextScope","Slot","useId","Controller","FormProvider","useFormContext","useFormState","jsx","Form","FORM_FIELD_NAME","createFormFieldContext","createFormFieldScope","FormFieldContextProvider","useFormFieldContext","useFormItem","consumerName","scope","id","useFormItemContext","name","getFieldState","formState","fieldState","FormField","formFieldProps","__scopeFormField","props","FORM_ITEM_NAME","FormItemContextProvider","FormItem","className","cn","FORM_LABEL_NAME","FormLabel","formItemId","error","Label","FORM_CONTROL_NAME","FormControl","formDescriptionId","formMessageId","FormDescription","FORM_MESSAGE_NAME","FormMessage","children","body"],"mappings":"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","sourcesContent":["'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { ControllerProps, FieldError, FieldPath, FieldValues } from 'react-hook-form';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useId } from 'react';\nimport { Controller, FormProvider, useFormContext, useFormState } from 'react-hook-form';\n\nimport { Label } from '@/components/label';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Form\n * -------------------------------------------------------------------------- */\n\nconst Form = FormProvider;\n\n/* -----------------------------------------------------------------------------\n * Context: FormField\n * -------------------------------------------------------------------------- */\n\nconst FORM_FIELD_NAME = 'FormField';\n\ntype ScopedProps<P> = P & { __scopeFormField?: Scope };\n\nconst [createFormFieldContext, createFormFieldScope] = createContextScope(FORM_FIELD_NAME);\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName;\n}\n\nconst [FormFieldContextProvider, useFormFieldContext] = createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME);\n\nfunction useFormItem(\n consumerName: string,\n scope: Scope,\n): {\n formDescriptionId: string;\n formItemId: string;\n formMessageId: string;\n id: string;\n invalid: boolean;\n isDirty: boolean;\n isTouched: boolean;\n isValidating: boolean;\n name: string;\n error?: FieldError;\n} {\n const { id } = useFormItemContext(consumerName, scope);\n const { name } = useFormFieldContext(consumerName, scope);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name });\n const fieldState = getFieldState(name, formState);\n\n return {\n id,\n name,\n formDescriptionId: `form-item-description-${id}`,\n formItemId: `form-item-${id}`,\n formMessageId: `form-item-message-${id}`,\n ...fieldState,\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormField\n * -------------------------------------------------------------------------- */\n\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>): JSX.Element {\n const { __scopeFormField, ...props } = formFieldProps;\n\n return (\n <FormFieldContextProvider name={props.name} scope={__scopeFormField}>\n <Controller {...props} />\n </FormFieldContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Context: FormItem\n * -------------------------------------------------------------------------- */\n\nconst FORM_ITEM_NAME = 'FormItem';\n\ninterface FormItemContextValue {\n id: string;\n}\n\nconst [FormItemContextProvider, useFormItemContext] = createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: FormItem\n * -------------------------------------------------------------------------- */\n\nfunction FormItem({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const id = useId();\n\n return (\n <FormItemContextProvider id={id} scope={__scopeFormField}>\n <div className={cn('grid gap-2', className)} data-slot=\"form-item\" {...props} />\n </FormItemContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormLabel\n * -------------------------------------------------------------------------- */\n\nconst FORM_LABEL_NAME = 'FormLabel';\n\nfunction FormLabel({\n __scopeFormField,\n ...props\n}: ScopedProps<ComponentProps<typeof LabelPrimitive.Root>>): JSX.Element {\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField);\n\n return <Label data-invalid={error ? true : undefined} data-slot=\"form-label\" htmlFor={formItemId} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormControl\n * -------------------------------------------------------------------------- */\n\nconst FORM_CONTROL_NAME = 'FormControl';\n\nfunction FormControl({ __scopeFormField, ...props }: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(FORM_CONTROL_NAME, __scopeFormField);\n\n return (\n <Slot\n aria-describedby={error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId}\n aria-invalid={Boolean(error)}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormDescription\n * -------------------------------------------------------------------------- */\n\nfunction FormDescription({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'p'>>): JSX.Element {\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n\n return (\n <p\n className={cn('text-muted-foreground text-xs', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormMessage\n * -------------------------------------------------------------------------- */\n\nconst FORM_MESSAGE_NAME = 'FormMessage';\n\nfunction FormMessage({ __scopeFormField, children, className, ...props }: ScopedProps<ComponentProps<'p'>>): ReactNode {\n const { formMessageId, error } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n const body = error?.message ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-xs', error?.message ? 'text-destructive font-medium' : 'text-muted-foreground', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { createFormFieldScope, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage };\n"]}
@@ -1,2 +1,2 @@
1
1
  import{a as o}from"./chunk-KWNBGPPE.js";import*as i from"@radix-ui/react-slider";import{useMemo as f}from"react";import{jsx as l,jsxs as c}from"react/jsx-runtime";function p({className:n,defaultValue:r,value:t,min:e=0,max:a=100,...d}){let s=f(()=>Array.isArray(t)?t:Array.isArray(r)?r:[e,a],[t,r,e,a]);return c(i.Root,{className:o("data-disabled:opacity-50 relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",n),"data-slot":"slider",defaultValue:r,max:a,min:e,value:t,...d,children:[l(i.Track,{className:"bg-input relative w-full grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1","data-slot":"slider-track",children:l(i.Range,{className:"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","data-slot":"slider-range"})}),Array.from({length:s.length},(u,m)=>l(i.Thumb,{"aria-label":"Volume",className:o("border-primary bg-primary after:bg-background active:not-data-disabled:after:size-1 focus-visible:ring-primary/20 dark:focus-visible:ring-primary/40 outline-hidden flex size-4 items-center justify-center rounded-full border-2 shadow-sm after:size-full after:rounded-full after:transition-[width,height] focus-visible:ring-4"),"data-slot":"slider-thumb"},m))]})}export{p as a};
2
- //# sourceMappingURL=chunk-VCQXS2LO.js.map
2
+ //# sourceMappingURL=chunk-KFOO3BEC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/slider.tsx"],"names":["SliderPrimitive","useMemo","jsx","jsxs","Slider","className","defaultValue","value","min","max","props","_values","cn","_","index"],"mappings":"wCAEA,UAAYA,MAAqB,yBACjC,OAAS,WAAAC,MAAe,QAyBpB,OAgBI,OAAAC,EAhBJ,QAAAC,MAAA,oBAjBJ,SAASC,EAAO,CACd,UAAAC,EACA,aAAAC,EACA,MAAAC,EACA,IAAAC,EAAM,EACN,IAAAC,EAAM,IACN,GAAGC,CACL,EAA6D,CAC3D,IAAMC,EAAUV,EAAQ,IAClB,MAAM,QAAQM,CAAK,EACdA,EAGF,MAAM,QAAQD,CAAY,EAAIA,EAAe,CAACE,EAAKC,CAAG,EAC5D,CAACF,EAAOD,EAAcE,EAAKC,CAAG,CAAC,EAElC,OACEN,EAAiB,OAAhB,CACC,UAAWS,EACT,oOACAP,CACF,EACA,YAAU,SACV,aAAcC,EACd,IAAKG,EACL,IAAKD,EACL,MAAOD,EACN,GAAGG,EAEJ,UAAAR,EAAiB,QAAhB,CACC,UAAU,uMACV,YAAU,eAEV,SAAAA,EAAiB,QAAhB,CACC,UAAU,8FACV,YAAU,eACZ,EACF,EACC,MAAM,KAAK,CAAE,OAAQS,EAAQ,MAAO,EAAG,CAACE,EAAGC,IAC1CZ,EAAiB,QAAhB,CAEC,aAAW,SACX,UAAWU,EACT,qUACF,EACA,YAAU,gBALLE,CAMP,CACD,GACH,CAEJ","sourcesContent":["import type { ComponentProps, JSX } from 'react';\n\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { useMemo } from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Slider\n * -------------------------------------------------------------------------- */\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: ComponentProps<typeof SliderPrimitive.Root>): JSX.Element {\n const _values = useMemo(() => {\n if (Array.isArray(value)) {\n return value;\n }\n\n return Array.isArray(defaultValue) ? defaultValue : [min, max];\n }, [value, defaultValue, min, max]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\n 'data-disabled:opacity-50 relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n max={max}\n min={min}\n value={value}\n {...props}\n >\n <SliderPrimitive.Track\n className=\"bg-input relative w-full grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1\"\n data-slot=\"slider-track\"\n >\n <SliderPrimitive.Range\n className=\"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n data-slot=\"slider-range\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n key={index}\n aria-label=\"Volume\"\n className={cn(\n 'border-primary bg-primary after:bg-background active:not-data-disabled:after:size-1 focus-visible:ring-primary/20 dark:focus-visible:ring-primary/40 outline-hidden flex size-4 items-center justify-center rounded-full border-2 shadow-sm after:size-full after:rounded-full after:transition-[width,height] focus-visible:ring-4',\n )}\n data-slot=\"slider-thumb\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Slider };\n"]}
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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";var _chunkRIYYTPW4cjs = require('./chunk-RIYYTPW4.cjs');var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _reactcontext = require('@radix-ui/react-context');var _emblacarouselreact = require('embla-carousel-react'); var _emblacarouselreact2 = _interopRequireDefault(_emblacarouselreact);var _lucidereact = require('lucide-react');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var y="Carousel",[z,V]=_reactcontext.createContextScope.call(void 0, y),[O,f]=z(y);function H({__scopeCarousel:l,children:a,className:t,opts:o,orientation:s,plugins:i,setApi:c,...p}){let[N,e]=_emblacarouselreact2.default.call(void 0, {...o,axis:s==="vertical"?"y":"x"},i),[E,b]=_react.useState.call(void 0, !1),[A,h]=_react.useState.call(void 0, !1),C=_react.useCallback.call(void 0, n=>{n&&(b(n.canScrollPrev()),h(n.canScrollNext()))},[]),d=_react.useCallback.call(void 0, ()=>{_optionalChain([e, 'optionalAccess', _2 => _2.scrollPrev, 'call', _3 => _3()])},[e]),P=_react.useCallback.call(void 0, ()=>{_optionalChain([e, 'optionalAccess', _4 => _4.scrollNext, 'call', _5 => _5()])},[e]),R=_react.useCallback.call(void 0, n=>{n.key==="ArrowLeft"?(n.preventDefault(),d()):n.key==="ArrowRight"&&(n.preventDefault(),P())},[d,P]);return _react.useEffect.call(void 0, ()=>{!e||!c||c(e)},[e,c]),_react.useEffect.call(void 0, ()=>{if(e)return C(e),e.on("reInit",C),e.on("select",C),()=>{e.off("select",C)}},[e,C]),_jsxruntime.jsx.call(void 0, O,{api:e,canScrollNext:A,canScrollPrev:E,carouselRef:N,opts:o,orientation:_nullishCoalesce(s, () => ((_optionalChain([o, 'optionalAccess', _6 => _6.axis])==="y"?"vertical":"horizontal"))),scope:l,scrollNext:P,scrollPrev:d,children:_jsxruntime.jsx.call(void 0, "div",{"aria-roledescription":"carousel",className:_chunk4QBKNZJKcjs.a.call(void 0, "relative",t),"data-slot":"carousel",role:"region",onKeyDownCapture:R,...p,children:a})})}var T="CarouselContent";function q({__scopeCarousel:l,className:a,classNames:t,...o}){let{carouselRef:s,orientation:i}=f(T,l);return _jsxruntime.jsx.call(void 0, "div",{ref:s,className:_chunk4QBKNZJKcjs.a.call(void 0, "overflow-hidden",_optionalChain([t, 'optionalAccess', _7 => _7.wrapper])),"data-slot":"carousel-content",children:_jsxruntime.jsx.call(void 0, "div",{className:_chunk4QBKNZJKcjs.a.call(void 0, "flex",i==="horizontal"?"-ml-4":"-mt-4 flex-col",_optionalChain([t, 'optionalAccess', _8 => _8.content]),a),...o})})}var B="CarouselItem";function F({__scopeCarousel:l,className:a,...t}){let{orientation:o}=f(B,l);return _jsxruntime.jsx.call(void 0, "div",{"aria-roledescription":"slide",className:_chunk4QBKNZJKcjs.a.call(void 0, "min-w-0 shrink-0 grow-0 basis-full",o==="horizontal"?"pl-4":"pt-4",a),"data-slot":"carousel-item",role:"group",...t})}var L="CarouselPrevious";function G({__scopeCarousel:l,className:a,size:t="icon",variant:o="outline",...s}){let{canScrollPrev:i,orientation:c,scrollPrev:p}=f(L,l);return _jsxruntime.jsx.call(void 0, _chunkRIYYTPW4cjs.b,{"aria-label":"Previous slide",className:_chunk4QBKNZJKcjs.a.call(void 0, "absolute size-8 shadow-none",c==="horizontal"?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",a),"data-slot":"carousel-previous",disabled:!i,prefix:_jsxruntime.jsx.call(void 0, _lucidereact.ArrowLeftIcon,{}),size:t,variant:o,onClick:p,...s,children:_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Previous slide"})})}var I="CarouselNext";function Q({__scopeCarousel:l,className:a,size:t="icon",variant:o="outline",...s}){let{canScrollNext:i,orientation:c,scrollNext:p}=f(I,l);return _jsxruntime.jsx.call(void 0, _chunkRIYYTPW4cjs.b,{"aria-label":"Next slide",className:_chunk4QBKNZJKcjs.a.call(void 0, "absolute size-8 shadow-none",c==="horizontal"?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",a),"data-slot":"carousel-next",disabled:!i,prefix:_jsxruntime.jsx.call(void 0, _lucidereact.ArrowRightIcon,{}),size:t,variant:o,onClick:p,...s,children:_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Next slide"})})}exports.a = V; exports.b = H; exports.c = q; exports.d = F; exports.e = G; exports.f = Q;
2
- //# sourceMappingURL=chunk-7UWQHTB7.cjs.map
2
+ //# sourceMappingURL=chunk-UGLIJJJD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-UGLIJJJD.cjs","../src/components/carousel.tsx"],"names":["useEmblaCarousel","createCarouselContext","CarouselContextProvider","useCarouselContext","CAROUSEL_NAME","Carousel","children","className","orientation","props","carouselRef","api","opts","canScrollPrev","canScrollNext","setCanScrollNext","useState","onSelect","useCallback","carouselApi","setCanScrollPrev","event","useEffect","setApi","jsx","scrollNext","scrollPrev","classNames","cn","CAROUSEL_ITEM_NAME","CAROUSEL_PREVIOUS_NAME","Button","ArrowLeftIcon","size","ArrowRightIcon"],"mappings":"AAAA,6xBAAY,CAAC,wDAAwC,wDCK5C,uDACFA,kIACE,2CACA,8BA+HH,+CAtHgB,IAIhB,CAACC,CAAAA,UAuBAC,CAAAA,CAAyBC,CAAkB,CAAA,CAAIF,CAAAA,CAA4CG,8CAAa,CAM/G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CAAS,CAChB,CAAA,SAAA,CAAA,CAAA,CAAA,eACAC,CACA,CAAA,CAAA,QAAAC,CAAAA,CACA,CAAA,SACA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAAC,CAAAA,WAEA,CAAA,CAAA,CAAA,OACA,CAAA,CAAGC,CACL,MACQ,CAACC,CAAAA,CAAaC,GAAOX,CAAAA,CACzB,CACE,CAAA,GAAGY,CACH,CAAA,CAAA,CAAA,CAAA,CAAMJ,0CAAAA,CAAAA,GAAgB,CAAA,CAAA,IAAA,CAAA,CAAA,GAAa,UAKjC,CAACK,GAA+B,CAAA,GAAa,CAAA,CAAK,CAAA,CAClD,CAACC,CAAAA,CAAeC,CAAgB,CAAA,CAAIC,CAAAA,6BAAS,CAAK,CAAA,CAElDC,CAAAA,CAAWC,CAAAA,CAAaC,CAAAA,CAAAA,CAA6B,6BACpDA,CAAAA,CAAAA,CAILC,CAAAA,CAAiBD,CAAAA,gCAAY,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,aACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,aAGZD,CAAY,CAAA,CAAA,CAAA,CAAM,CACnCP,CAAAA,CAAAA,CAAK,CAAA,CAAA,CAAA,gCAAA,CAAA,CAAA,EAAA,iBAAA,CAAW,6BAClB,UAE+B,mBAAA,GAAA,CAAA,CAAM,CACnCA,CAAAA,CAAAA,CAAK,CAAA,CAAA,CAAA,gCAAA,CAAA,CAAA,EAAA,iBAAA,CAAW,6BAClB,UAGGU,mBAAAA,GAAAA,CAAyC,CACpCA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,gCAAQ,CAAA,EAAA,CAAA,CAAA,CAAA,GAAA,GAChBA,WAAM,CAAA,CAAA,CAAA,CAAA,cAES,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,GAAA,YACjB,EAAA,CAAA,CAAA,CAAA,cAIa,CACzB,CAAA,CAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAM,OACDC,8BAAAA,CAIbA,CAAOZ,EACT,CAAA,CAAG,CAACA,EAAKY,CAAM,CAAC,EAEhBD,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAM,CACd,CAAA,CAAA,CAAKX,CAAAA,CAIL,CAAA,8BAAA,CAAA,CAAA,EAAAM,CAAAA,EAAY,CAAA,CACZN,CAAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAUM,CAAQ,EACzBN,CAAAA,QAAO,CAAA,CAAA,CAAA,CAAA,CAAUM,CAAQ,EAElB,CAAA,QACD,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAUA,GAEtB,CAAA,QAGEO,CAAAA,CAACtB,CAAAA,CAAA,CACC,CAAA,CAAA,CAAA,CAAKS,CAAAA,CACL,CAAA,CAAA,6BAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,aACA,CAAA,CAAA,CAAA,aACA,CAAA,CAAaD,CAAAA,WAEb,CAAA,CAAA,CAAA,IAAA,CAAA,CAAaF,CAAAA,WAAsB,kBAAA,CAAS,SAAA,iBAAA,CAAM,6BAAA,MAAA,GAAA,GAAa,CAAA,UAAA,CAAA,YAE/D,GAAA,CAAA,KAAA,CAAYiB,CAAAA,CACZ,UAAA,CAAYC,CAAAA,CAEZ,UAAAF,CAAC,CAAA,CAAA,QACC,CAAA,6BAAA,KAAA,CAAA,CAAA,sBACA,CAAA,UAAc,CAAA,SAAA,CAAYjB,iCAAS,UACnC,CAAA,CAAA,CAAU,CAAA,WACV,CAAA,UAAK,CAAA,IACL,CAAA,QAAA,CAAA,gBAGC,CAAA,CAAA,CAAA,GACH,CAAA,CACF,QAQ0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,iBAG5B,CAAA,SAAA,CAAA,CAAA,CAAA,eACAA,CAAAA,CACA,CAAA,SAAA,CAAAoB,CAAAA,CACA,UASM,CAAE,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAAjB,CAAAA,WAAa,CAAA,CAAAF,CAAY,WAEjC,CAAA,CAAA,CAAA,CAAA,CACEgB,CAAAA,CAAC,CAAA,CAAA,CAAA,CAAA,OAASd,6BAAAA,KAAa,CAAA,CAAA,GAAWkB,CAAAA,CAAG,CAAA,SAAA,CAAA,iCAAA,iBAAyC,iBAAA,CAAA,6BAAA,SAAA,CAAU,CAAA,WAAA,CAAA,kBACrF,CAAA,QACC,CAAA,6BAAA,KAAWA,CACT,CAAA,SACApB,CAAgB,iCAAA,MAAA,CAAA,CAAA,GAAe,YAAU,CAAA,OAAA,CAAA,gBAG3C,iBAAA,CACC,6BAAA,SAUT,CAAA,CAAA,CAAA,CAAMqB,GAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAEH,CAAA,SAAA,CAAA,CAAA,CAAA,eAAiBtB,CAAAA,CAAW,CAAA,SAC5C,CAAE,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAAC,CAAY,WAEpB,CAAA,CAAA,CAAA,CAAA,CACEgB,CAAAA,CAAC,CAAA,CAAA,CAAA,CAAA,OACC,6BAAA,KAAA,CAAA,CAAA,sBACA,CAAA,OAAc,CAAA,SAAA,CAAA,iCAAA,oCAAsD,CAAA,CAAA,GAAe,YAAS,CAAA,MAC5F,CAAA,MAAA,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,eACL,CACJ,IAAGf,CACN,OAQEqB,CAAyB,GAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,kBAG7B,CAAA,SAAA,CAAA,CAAA,CAAA,eACAvB,CAAAA,CACA,CAAA,SAAO,CAAA,CAAA,CAAA,IACP,CAAA,CAAA,CAAA,MAAU,CAAA,OACV,CAAA,CAAA,CAAGE,SAEK,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,aAAe,CAAA,CAAAD,CAAAA,WAAa,CAAAkB,CAAW,CAAA,UAE/C,CAAA,CAAA,CAAA,CAAA,CACEF,CAAAA,CAACO,CAAAA,CAAA,CACC,CAAA,OAAA,6BAAA,mBAAA,CAAA,CAAW,YAAA,CAAA,gBAET,CAAA,SAAA,CAAA,iCAAA,6BACgB,CAAA,CAAA,GACZ,YAAA,CAAA,mCACA,CAAA,6CAGN,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,mBAEV,CAAA,QAASC,CAAAA,CAAA,CAAA,CAAc,MACvB,CAAMC,6BAAAA,0BACN,CAAA,CAAA,CAAA,CAAA,CAAA,IACA,CAAA,CAAA,CAAA,OACC,CAAA,CAAA,CAAGxB,OAEJ,CAAA,CAAA,CAAA,GAAC,CAAA,CAAA,QAAK,CAAA,6BAAA,MAAU,CAAA,CAAA,SAAU,CAAA,SAAA,CAAA,QAAA,CAAA,gBASL,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAGzB,CAAA,SAAA,CAAA,CAAA,CAAA,eACAF,CAAAA,CACA,CAAA,SAAO,CAAA,CAAA,CAAA,IACP,CAAA,CAAA,CAAA,MAAU,CAAA,OACV,CAAA,CAAA,CAAGE,SAEK,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,aAAe,CAAA,CAAAD,CAAAA,WAAa,CAAAiB,CAAW,CAAA,UAE/C,CAAA,CAAA,CAAA,CAAA,CACED,CAAAA,CAACO,CAAAA,CAAA,CACC,CAAA,OAAA,6BAAA,mBAAA,CAAA,CAAW,YAAA,CACX,YACE,CAAA,SAAA,CAAA,iCAAA,6BACgB,CAAA,CAAA,GACZ,YAAA,CAAA,oCACA,CAAA,gDAGN,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,eAEV,CAAA,QAASG,CAAAA,CAAA,CAAA,CAAe,MACxB,CAAMD,6BAAAA,2BACN,CAAA,CAAA,CAAA,CAAA,CAAA,IACA,CAAA,CAAA,CAAA,OACC,CAAA,CAAA,CAAGxB,OAEJ,CAAA,CAAA,CAAA,GAAC,CAAA,CAAA,QAAK,CAAA,6BAAA,MAAU,CAAA,CAAA,SAAU,CAAA,SAAA,CAAA,QAAA,CAAU,YAG1C,CAAA,CAAA,CAAA,CAAA,CAAA,yFAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-UGLIJJJD.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX, KeyboardEvent } from 'react';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Context: Carousel\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_NAME = 'Carousel';\n\ntype ScopedProps<P> = P & { __scopeCarousel?: Scope };\n\nconst [createCarouselContext, createCarouselScope] = createContextScope(CAROUSEL_NAME);\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ninterface BaseCarouselProps {\n opts?: CarouselOptions;\n orientation?: 'horizontal' | 'vertical';\n plugins?: CarouselPlugin;\n setApi?: (api: CarouselApi) => void;\n}\n\ntype CarouselContextValue = BaseCarouselProps & {\n api: ReturnType<typeof useEmblaCarousel>[1];\n canScrollNext: boolean;\n canScrollPrev: boolean;\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n scrollNext: () => void;\n scrollPrev: () => void;\n};\n\nconst [CarouselContextProvider, useCarouselContext] = createCarouselContext<CarouselContextValue>(CAROUSEL_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: Carousel\n * -------------------------------------------------------------------------- */\n\nfunction Carousel({\n __scopeCarousel,\n children,\n className,\n opts,\n orientation,\n plugins,\n setApi,\n ...props\n}: ScopedProps<BaseCarouselProps & ComponentProps<'div'>>): JSX.Element {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'vertical' ? 'y' : 'x',\n },\n plugins,\n );\n\n const [canScrollPrev, setCanScrollPrev] = useState(false);\n const [canScrollNext, setCanScrollNext] = useState(false);\n\n const onSelect = useCallback((carouselApi: CarouselApi) => {\n if (!carouselApi) {\n return;\n }\n\n setCanScrollPrev(carouselApi.canScrollPrev());\n setCanScrollNext(carouselApi.canScrollNext());\n }, []);\n\n const scrollPrev = useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n useEffect(() => {\n if (!api || !setApi) {\n return;\n }\n\n setApi(api);\n }, [api, setApi]);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContextProvider\n api={api}\n canScrollNext={canScrollNext}\n canScrollPrev={canScrollPrev}\n carouselRef={carouselRef}\n opts={opts}\n orientation={orientation ?? (opts?.axis === 'y' ? 'vertical' : 'horizontal')}\n scope={__scopeCarousel}\n scrollNext={scrollNext}\n scrollPrev={scrollPrev}\n >\n <div\n aria-roledescription=\"carousel\"\n className={cn('relative', className)}\n data-slot=\"carousel\"\n role=\"region\"\n onKeyDownCapture={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselContent\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_CONTENT_NAME = 'CarouselContent';\n\nfunction CarouselContent({\n __scopeCarousel,\n className,\n classNames,\n ...props\n}: ScopedProps<\n ComponentProps<'div'> & {\n classNames?: {\n content?: string;\n wrapper?: string;\n };\n }\n>): JSX.Element {\n const { carouselRef, orientation } = useCarouselContext(CAROUSEL_CONTENT_NAME, __scopeCarousel);\n\n return (\n <div ref={carouselRef} className={cn('overflow-hidden', classNames?.wrapper)} data-slot=\"carousel-content\">\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n classNames?.content,\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselItem\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_ITEM_NAME = 'CarouselItem';\n\nfunction CarouselItem({ __scopeCarousel, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const { orientation } = useCarouselContext(CAROUSEL_ITEM_NAME, __scopeCarousel);\n\n return (\n <div\n aria-roledescription=\"slide\"\n className={cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className)}\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselPrevious\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_PREVIOUS_NAME = 'CarouselPrevious';\n\nfunction CarouselPrevious({\n __scopeCarousel,\n className,\n size = 'icon',\n variant = 'outline',\n ...props\n}: ScopedProps<ComponentProps<typeof Button>>): JSX.Element {\n const { canScrollPrev, orientation, scrollPrev } = useCarouselContext(CAROUSEL_PREVIOUS_NAME, __scopeCarousel);\n\n return (\n <Button\n aria-label=\"Previous slide\"\n className={cn(\n 'absolute size-8 shadow-none',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n prefix={<ArrowLeftIcon />}\n size={size}\n variant={variant}\n onClick={scrollPrev}\n {...props}\n >\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselNext\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_NEXT_NAME = 'CarouselNext';\n\nfunction CarouselNext({\n __scopeCarousel,\n className,\n size = 'icon',\n variant = 'outline',\n ...props\n}: ScopedProps<ComponentProps<typeof Button>>): JSX.Element {\n const { canScrollNext, orientation, scrollNext } = useCarouselContext(CAROUSEL_NEXT_NAME, __scopeCarousel);\n\n return (\n <Button\n aria-label=\"Next slide\"\n className={cn(\n 'absolute size-8 shadow-none',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n prefix={<ArrowRightIcon />}\n size={size}\n variant={variant}\n onClick={scrollNext}\n {...props}\n >\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport type { CarouselApi };\nexport { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, createCarouselScope };\n"]}
@@ -1,2 +1,2 @@
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; } }var _chunk4QBKNZJKcjs = require('./chunk-4QBKNZJK.cjs');var _reactslider = require('@radix-ui/react-slider'); var i = _interopRequireWildcard(_reactslider);var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function p({className:n,defaultValue:r,value:t,min:e=0,max:a=100,...d}){let s=_react.useMemo.call(void 0, ()=>Array.isArray(t)?t:Array.isArray(r)?r:[e,a],[t,r,e,a]);return _jsxruntime.jsxs.call(void 0, i.Root,{className:_chunk4QBKNZJKcjs.a.call(void 0, "data-disabled:opacity-50 relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",n),"data-slot":"slider",defaultValue:r,max:a,min:e,value:t,...d,children:[_jsxruntime.jsx.call(void 0, i.Track,{className:"bg-input relative w-full grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1","data-slot":"slider-track",children:_jsxruntime.jsx.call(void 0, i.Range,{className:"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","data-slot":"slider-range"})}),Array.from({length:s.length},(u,m)=>_jsxruntime.jsx.call(void 0, i.Thumb,{"aria-label":"Volume",className:_chunk4QBKNZJKcjs.a.call(void 0, "border-primary bg-primary after:bg-background active:not-data-disabled:after:size-1 focus-visible:ring-primary/20 dark:focus-visible:ring-primary/40 outline-hidden flex size-4 items-center justify-center rounded-full border-2 shadow-sm after:size-full after:rounded-full after:transition-[width,height] focus-visible:ring-4"),"data-slot":"slider-thumb"},m))]})}exports.a = p;
2
- //# sourceMappingURL=chunk-D5C2LKXA.cjs.map
2
+ //# sourceMappingURL=chunk-VZ62M4JP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-VZ62M4JP.cjs","../src/components/slider.tsx"],"names":["Slider","className","defaultValue","value","min","max","props","_values","useMemo","jsxs","cn","jsx","_","index"],"mappings":"AAAA,mZAAwC,oGCEP,8BACT,+CAyBpB,SAjBKA,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,CAA6D,CAC3D,IAAMC,CAAAA,CAAUC,4BAAAA,CAAQ,CAAA,EAClB,KAAA,CAAM,OAAA,CAAQL,CAAK,CAAA,CACdA,CAAAA,CAGF,KAAA,CAAM,OAAA,CAAQD,CAAY,CAAA,CAAIA,CAAAA,CAAe,CAACE,CAAAA,CAAKC,CAAG,CAAA,CAC5D,CAACF,CAAAA,CAAOD,CAAAA,CAAcE,CAAAA,CAAKC,CAAG,CAAC,CAAA,CAElC,OACEI,8BAAAA,CAAiB,CAAA,IAAA,CAAhB,CACC,SAAA,CAAWC,iCAAAA,mOACT,CACAT,CACF,CAAA,CACA,WAAA,CAAU,QAAA,CACV,YAAA,CAAcC,CAAAA,CACd,GAAA,CAAKG,CAAAA,CACL,GAAA,CAAKD,CAAAA,CACL,KAAA,CAAOD,CAAAA,CACN,GAAGG,CAAAA,CAEJ,QAAA,CAAA,CAAAK,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,SAAA,CAAU,sMAAA,CACV,WAAA,CAAU,cAAA,CAEV,QAAA,CAAAA,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,SAAA,CAAU,6FAAA,CACV,WAAA,CAAU,cAAA,CACZ,CAAA,CACF,CAAA,CACC,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQJ,CAAAA,CAAQ,MAAO,CAAA,CAAG,CAACK,CAAAA,CAAGC,CAAAA,CAAAA,EAC1CF,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CAEC,YAAA,CAAW,QAAA,CACX,SAAA,CAAWD,iCAAAA,qUAEX,CAAA,CACA,WAAA,CAAU,cAAA,CAAA,CALLG,CAMP,CACD,CAAA,CAAA,CACH,CAEJ,CAAA,cAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-VZ62M4JP.cjs","sourcesContent":[null,"import type { ComponentProps, JSX } from 'react';\n\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { useMemo } from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Slider\n * -------------------------------------------------------------------------- */\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: ComponentProps<typeof SliderPrimitive.Root>): JSX.Element {\n const _values = useMemo(() => {\n if (Array.isArray(value)) {\n return value;\n }\n\n return Array.isArray(defaultValue) ? defaultValue : [min, max];\n }, [value, defaultValue, min, max]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\n 'data-disabled:opacity-50 relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n max={max}\n min={min}\n value={value}\n {...props}\n >\n <SliderPrimitive.Track\n className=\"bg-input relative w-full grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1\"\n data-slot=\"slider-track\"\n >\n <SliderPrimitive.Range\n className=\"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n data-slot=\"slider-range\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n key={index}\n aria-label=\"Volume\"\n className={cn(\n 'border-primary bg-primary after:bg-background active:not-data-disabled:after:size-1 focus-visible:ring-primary/20 dark:focus-visible:ring-primary/40 outline-hidden flex size-4 items-center justify-center rounded-full border-2 shadow-sm after:size-full after:rounded-full after:transition-[width,height] focus-visible:ring-4',\n )}\n data-slot=\"slider-thumb\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Slider };\n"]}
@@ -1,2 +1,2 @@
1
1
  "use client";import{b as v}from"./chunk-4ENRIR3P.js";import{a as u}from"./chunk-KWNBGPPE.js";import{createContextScope as w}from"@radix-ui/react-context";import g from"embla-carousel-react";import{ArrowLeftIcon as U,ArrowRightIcon as _}from"lucide-react";import{useCallback as m,useEffect as S,useState as x}from"react";import{jsx as r}from"react/jsx-runtime";var y="Carousel",[z,V]=w(y),[O,f]=z(y);function H({__scopeCarousel:l,children:a,className:t,opts:o,orientation:s,plugins:i,setApi:c,...p}){let[N,e]=g({...o,axis:s==="vertical"?"y":"x"},i),[E,b]=x(!1),[A,h]=x(!1),C=m(n=>{n&&(b(n.canScrollPrev()),h(n.canScrollNext()))},[]),d=m(()=>{e?.scrollPrev()},[e]),P=m(()=>{e?.scrollNext()},[e]),R=m(n=>{n.key==="ArrowLeft"?(n.preventDefault(),d()):n.key==="ArrowRight"&&(n.preventDefault(),P())},[d,P]);return S(()=>{!e||!c||c(e)},[e,c]),S(()=>{if(e)return C(e),e.on("reInit",C),e.on("select",C),()=>{e.off("select",C)}},[e,C]),r(O,{api:e,canScrollNext:A,canScrollPrev:E,carouselRef:N,opts:o,orientation:s??(o?.axis==="y"?"vertical":"horizontal"),scope:l,scrollNext:P,scrollPrev:d,children:r("div",{"aria-roledescription":"carousel",className:u("relative",t),"data-slot":"carousel",role:"region",onKeyDownCapture:R,...p,children:a})})}var T="CarouselContent";function q({__scopeCarousel:l,className:a,classNames:t,...o}){let{carouselRef:s,orientation:i}=f(T,l);return r("div",{ref:s,className:u("overflow-hidden",t?.wrapper),"data-slot":"carousel-content",children:r("div",{className:u("flex",i==="horizontal"?"-ml-4":"-mt-4 flex-col",t?.content,a),...o})})}var B="CarouselItem";function F({__scopeCarousel:l,className:a,...t}){let{orientation:o}=f(B,l);return r("div",{"aria-roledescription":"slide",className:u("min-w-0 shrink-0 grow-0 basis-full",o==="horizontal"?"pl-4":"pt-4",a),"data-slot":"carousel-item",role:"group",...t})}var L="CarouselPrevious";function G({__scopeCarousel:l,className:a,size:t="icon",variant:o="outline",...s}){let{canScrollPrev:i,orientation:c,scrollPrev:p}=f(L,l);return r(v,{"aria-label":"Previous slide",className:u("absolute size-8 shadow-none",c==="horizontal"?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",a),"data-slot":"carousel-previous",disabled:!i,prefix:r(U,{}),size:t,variant:o,onClick:p,...s,children:r("span",{className:"sr-only",children:"Previous slide"})})}var I="CarouselNext";function Q({__scopeCarousel:l,className:a,size:t="icon",variant:o="outline",...s}){let{canScrollNext:i,orientation:c,scrollNext:p}=f(I,l);return r(v,{"aria-label":"Next slide",className:u("absolute size-8 shadow-none",c==="horizontal"?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",a),"data-slot":"carousel-next",disabled:!i,prefix:r(_,{}),size:t,variant:o,onClick:p,...s,children:r("span",{className:"sr-only",children:"Next slide"})})}export{V as a,H as b,q as c,F as d,G as e,Q as f};
2
- //# sourceMappingURL=chunk-F3GDO3US.js.map
2
+ //# sourceMappingURL=chunk-YWBLBKF6.js.map