@yuva-devlab/ui 0.2.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +5 -20
  2. package/dist/index.cjs +4518 -1
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +765 -0
  5. package/dist/index.d.ts +765 -2
  6. package/dist/index.js +4113 -1067
  7. package/dist/index.js.map +1 -0
  8. package/package.json +53 -32
  9. package/dist/components/button/button.d.ts +0 -13
  10. package/dist/components/button/button.d.ts.map +0 -1
  11. package/dist/components/button/button.styles.css.d.ts +0 -10
  12. package/dist/components/button/button.styles.css.d.ts.map +0 -1
  13. package/dist/components/button/button.types.d.ts +0 -15
  14. package/dist/components/button/button.types.d.ts.map +0 -1
  15. package/dist/components/button/index.d.ts +0 -3
  16. package/dist/components/button/index.d.ts.map +0 -1
  17. package/dist/components/checkbox/checkbox.d.ts +0 -10
  18. package/dist/components/checkbox/checkbox.d.ts.map +0 -1
  19. package/dist/components/checkbox/checkbox.styles.css.d.ts +0 -8
  20. package/dist/components/checkbox/checkbox.styles.css.d.ts.map +0 -1
  21. package/dist/components/checkbox/checkbox.types.d.ts +0 -22
  22. package/dist/components/checkbox/checkbox.types.d.ts.map +0 -1
  23. package/dist/components/checkbox/index.d.ts +0 -3
  24. package/dist/components/checkbox/index.d.ts.map +0 -1
  25. package/dist/components/divider/divider.d.ts +0 -18
  26. package/dist/components/divider/divider.d.ts.map +0 -1
  27. package/dist/components/divider/divider.styles.css.d.ts +0 -4
  28. package/dist/components/divider/divider.styles.css.d.ts.map +0 -1
  29. package/dist/components/divider/index.d.ts +0 -3
  30. package/dist/components/divider/index.d.ts.map +0 -1
  31. package/dist/components/form/form.d.ts +0 -13
  32. package/dist/components/form/form.d.ts.map +0 -1
  33. package/dist/components/form/form.styles.css.d.ts +0 -6
  34. package/dist/components/form/form.styles.css.d.ts.map +0 -1
  35. package/dist/components/form/form.types.d.ts +0 -20
  36. package/dist/components/form/form.types.d.ts.map +0 -1
  37. package/dist/components/form/index.d.ts +0 -3
  38. package/dist/components/form/index.d.ts.map +0 -1
  39. package/dist/components/image/image.d.ts +0 -10
  40. package/dist/components/image/image.d.ts.map +0 -1
  41. package/dist/components/image/image.styles.css.d.ts +0 -3
  42. package/dist/components/image/image.styles.css.d.ts.map +0 -1
  43. package/dist/components/image/image.types.d.ts +0 -13
  44. package/dist/components/image/image.types.d.ts.map +0 -1
  45. package/dist/components/image/index.d.ts +0 -3
  46. package/dist/components/image/index.d.ts.map +0 -1
  47. package/dist/components/index.d.ts +0 -15
  48. package/dist/components/index.d.ts.map +0 -1
  49. package/dist/components/input/index.d.ts +0 -3
  50. package/dist/components/input/index.d.ts.map +0 -1
  51. package/dist/components/input/input.d.ts +0 -15
  52. package/dist/components/input/input.d.ts.map +0 -1
  53. package/dist/components/input/input.styles.css.d.ts +0 -5
  54. package/dist/components/input/input.styles.css.d.ts.map +0 -1
  55. package/dist/components/input/input.types.d.ts +0 -13
  56. package/dist/components/input/input.types.d.ts.map +0 -1
  57. package/dist/components/layout/box/box.d.ts +0 -14
  58. package/dist/components/layout/box/box.d.ts.map +0 -1
  59. package/dist/components/layout/box/box.styles.css.d.ts +0 -19
  60. package/dist/components/layout/box/box.styles.css.d.ts.map +0 -1
  61. package/dist/components/layout/box/box.types.d.ts +0 -23
  62. package/dist/components/layout/box/box.types.d.ts.map +0 -1
  63. package/dist/components/layout/box/index.d.ts +0 -3
  64. package/dist/components/layout/box/index.d.ts.map +0 -1
  65. package/dist/components/layout/container/container.d.ts +0 -13
  66. package/dist/components/layout/container/container.d.ts.map +0 -1
  67. package/dist/components/layout/container/container.styles.css.d.ts +0 -3
  68. package/dist/components/layout/container/container.styles.css.d.ts.map +0 -1
  69. package/dist/components/layout/container/container.types.d.ts +0 -5
  70. package/dist/components/layout/container/container.types.d.ts.map +0 -1
  71. package/dist/components/layout/container/index.d.ts +0 -3
  72. package/dist/components/layout/container/index.d.ts.map +0 -1
  73. package/dist/components/layout/flex/flex.d.ts +0 -14
  74. package/dist/components/layout/flex/flex.d.ts.map +0 -1
  75. package/dist/components/layout/flex/flex.styles.css.d.ts +0 -7
  76. package/dist/components/layout/flex/flex.styles.css.d.ts.map +0 -1
  77. package/dist/components/layout/flex/flex.types.d.ts +0 -9
  78. package/dist/components/layout/flex/flex.types.d.ts.map +0 -1
  79. package/dist/components/layout/flex/index.d.ts +0 -3
  80. package/dist/components/layout/flex/index.d.ts.map +0 -1
  81. package/dist/components/layout/grid/grid.d.ts +0 -15
  82. package/dist/components/layout/grid/grid.d.ts.map +0 -1
  83. package/dist/components/layout/grid/grid.styles.css.d.ts +0 -8
  84. package/dist/components/layout/grid/grid.styles.css.d.ts.map +0 -1
  85. package/dist/components/layout/grid/grid.types.d.ts +0 -10
  86. package/dist/components/layout/grid/grid.types.d.ts.map +0 -1
  87. package/dist/components/layout/grid/index.d.ts +0 -3
  88. package/dist/components/layout/grid/index.d.ts.map +0 -1
  89. package/dist/components/layout/index.d.ts +0 -7
  90. package/dist/components/layout/index.d.ts.map +0 -1
  91. package/dist/components/layout/semantic.d.ts +0 -10
  92. package/dist/components/layout/semantic.d.ts.map +0 -1
  93. package/dist/components/layout/stack/index.d.ts +0 -2
  94. package/dist/components/layout/stack/index.d.ts.map +0 -1
  95. package/dist/components/layout/stack/stack.d.ts +0 -17
  96. package/dist/components/layout/stack/stack.d.ts.map +0 -1
  97. package/dist/components/number-input/index.d.ts +0 -3
  98. package/dist/components/number-input/index.d.ts.map +0 -1
  99. package/dist/components/number-input/number-input.d.ts +0 -10
  100. package/dist/components/number-input/number-input.d.ts.map +0 -1
  101. package/dist/components/number-input/number-input.styles.css.d.ts +0 -13
  102. package/dist/components/number-input/number-input.styles.css.d.ts.map +0 -1
  103. package/dist/components/number-input/number-input.types.d.ts +0 -31
  104. package/dist/components/number-input/number-input.types.d.ts.map +0 -1
  105. package/dist/components/radio/index.d.ts +0 -3
  106. package/dist/components/radio/index.d.ts.map +0 -1
  107. package/dist/components/radio/radio.d.ts +0 -16
  108. package/dist/components/radio/radio.d.ts.map +0 -1
  109. package/dist/components/radio/radio.styles.css.d.ts +0 -15
  110. package/dist/components/radio/radio.styles.css.d.ts.map +0 -1
  111. package/dist/components/radio/radio.types.d.ts +0 -38
  112. package/dist/components/radio/radio.types.d.ts.map +0 -1
  113. package/dist/components/select/index.d.ts +0 -3
  114. package/dist/components/select/index.d.ts.map +0 -1
  115. package/dist/components/select/select.d.ts +0 -17
  116. package/dist/components/select/select.d.ts.map +0 -1
  117. package/dist/components/select/select.styles.css.d.ts +0 -16
  118. package/dist/components/select/select.styles.css.d.ts.map +0 -1
  119. package/dist/components/select/select.types.d.ts +0 -43
  120. package/dist/components/select/select.types.d.ts.map +0 -1
  121. package/dist/components/slider/index.d.ts +0 -3
  122. package/dist/components/slider/index.d.ts.map +0 -1
  123. package/dist/components/slider/slider.d.ts +0 -10
  124. package/dist/components/slider/slider.d.ts.map +0 -1
  125. package/dist/components/slider/slider.styles.css.d.ts +0 -12
  126. package/dist/components/slider/slider.styles.css.d.ts.map +0 -1
  127. package/dist/components/slider/slider.types.d.ts +0 -34
  128. package/dist/components/slider/slider.types.d.ts.map +0 -1
  129. package/dist/components/switch/index.d.ts +0 -3
  130. package/dist/components/switch/index.d.ts.map +0 -1
  131. package/dist/components/switch/switch.d.ts +0 -10
  132. package/dist/components/switch/switch.d.ts.map +0 -1
  133. package/dist/components/switch/switch.styles.css.d.ts +0 -11
  134. package/dist/components/switch/switch.styles.css.d.ts.map +0 -1
  135. package/dist/components/switch/switch.types.d.ts +0 -27
  136. package/dist/components/switch/switch.types.d.ts.map +0 -1
  137. package/dist/components/textarea/index.d.ts +0 -3
  138. package/dist/components/textarea/index.d.ts.map +0 -1
  139. package/dist/components/textarea/textarea.d.ts +0 -10
  140. package/dist/components/textarea/textarea.d.ts.map +0 -1
  141. package/dist/components/textarea/textarea.styles.css.d.ts +0 -13
  142. package/dist/components/textarea/textarea.styles.css.d.ts.map +0 -1
  143. package/dist/components/textarea/textarea.types.d.ts +0 -34
  144. package/dist/components/textarea/textarea.types.d.ts.map +0 -1
  145. package/dist/components/typography/index.d.ts +0 -2
  146. package/dist/components/typography/index.d.ts.map +0 -1
  147. package/dist/components/typography/typography.css.d.ts +0 -4
  148. package/dist/components/typography/typography.css.d.ts.map +0 -1
  149. package/dist/components/typography/typography.d.ts +0 -13
  150. package/dist/components/typography/typography.d.ts.map +0 -1
  151. package/dist/components/typography/typography.types.d.ts +0 -8
  152. package/dist/components/typography/typography.types.d.ts.map +0 -1
  153. package/dist/index.d.ts.map +0 -1
  154. package/dist/ui.css +0 -1
package/dist/index.cjs CHANGED
@@ -1 +1,4518 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("@yuva-devlab/primitives"),u=require("clsx"),t=require("react");var dr="vvjlfg0",or={xs:"vvjlfg1",sm:"vvjlfg2",md:"vvjlfg3",lg:"vvjlfg4",xl:"vvjlfg5"},vr={round:"vvjlfg6",square:"vvjlfg7"},xr={round:"vvjlfg8",square:"vvjlfg9"},pr={narrow:"vvjlfga",default:"vvjlfgb",wide:"vvjlfgc"},ur={default:"vvjlfgd",primary:"vvjlfge",ghost:"vvjlfgf",link:"vvjlfgg",elevated:"vvjlfgh",filled:"vvjlfgi",tonal:"vvjlfgj",outlined:"vvjlfgk",text:"vvjlfgl",secondary:"vvjlfgm",tertiary:"vvjlfgn"},mr="vvjlfgo",gr="vvjlfgp",hr="vvjlfgq";const G=t.forwardRef(({variant:e="default",size:a="md",shape:i="round",width:l="default",danger:c=!1,block:s=!1,morph:d=!1,className:p,disabled:x,loading:n,...m},g)=>r.jsx(o.ButtonPrimitive,{ref:g,loading:n,disabled:x,"aria-busy":n,className:u(dr,or[a],vr[i],pr[l],ur[e],d&&xr[i],c&&mr,s&&gr,(x||n)&&hr,p),...m}));G.displayName="Button";var jr="xwmau40",fr={h1:"xwmau41",h2:"xwmau42",h3:"xwmau43",h4:"xwmau44",h5:"xwmau45",h6:"xwmau46",body:"xwmau47",caption:"xwmau48",captionError:"xwmau49",label:"xwmau4a"},_r={normal:"xwmau4b",medium:"xwmau4c",bold:"xwmau4d"};const wr={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",body:"p",caption:"span",captionError:"span",label:"label"},v=t.forwardRef(({variant:e="body",weight:a,className:i,asChild:l,...c},s)=>{const d=wr[e];return r.jsx(o.TypographyPrimitive,{ref:s,asChild:l,...!l&&{as:d},className:u(jr,fr[e],a&&_r[a],i),...c})});v.displayName="Typography";var yr="_1x582hy0",br={outline:"_1x582hy1",filled:"_1x582hy2"},Nr={xs:"_1x582hy3",sm:"_1x582hy4",md:"_1x582hy5",lg:"_1x582hy6",xl:"_1x582hy7"},zr="_1x582hy8";const kr={style:{marginBottom:"8px"}},q=t.forwardRef(({variant:e="outline",size:a="md",error:i=!1,label:l,labelProps:c,helperText:s,errorMessage:d,className:p,id:x,...n},m)=>{const g=t.useId(),h=x||g,j=`${h}-helper-text`,f=`${h}-error-message`,_=u(n["aria-describedby"],s&&j,d&&f),N=r.jsx(o.InputPrimitive,{ref:m,id:h,"aria-invalid":i||!!d,"aria-describedby":_||void 0,autoComplete:"on",className:u(yr,br[e],Nr[a],(i||!!d)&&zr,p),...n});return!l&&!s&&!d?N:r.jsxs("div",{style:{display:"flex",flexDirection:"column",width:"100%"},children:[l&&r.jsx(v,{variant:"label",htmlFor:h,...kr,...c,children:l}),N,d&&r.jsx(v,{variant:"captionError",id:f,children:d}),!d&&s&&r.jsx(v,{variant:"caption",id:j,children:s})]})});q.displayName="Input";var Cr="i1r0p60",Rr={"2xs":"i1r0p61",xs:"i1r0p62",sm:"i1r0p63",md:"i1r0p64",lg:"i1r0p65",xl:"i1r0p66","2xl":"i1r0p67","3xl":"i1r0p68","4xl":"i1r0p69","5xl":"i1r0p6a"},Sr={"2xs":"i1r0p6b",xs:"i1r0p6c",sm:"i1r0p6d",md:"i1r0p6e",lg:"i1r0p6f",xl:"i1r0p6g","2xl":"i1r0p6h","3xl":"i1r0p6i","4xl":"i1r0p6j","5xl":"i1r0p6k"},Ir={"2xs":"i1r0p6l",xs:"i1r0p6m",sm:"i1r0p6n",md:"i1r0p6o",lg:"i1r0p6p",xl:"i1r0p6q","2xl":"i1r0p6r","3xl":"i1r0p6s","4xl":"i1r0p6t","5xl":"i1r0p6u"},Lr={"2xs":"i1r0p6v",xs:"i1r0p6w",sm:"i1r0p6x",md:"i1r0p6y",lg:"i1r0p6z",xl:"i1r0p610","2xl":"i1r0p611","3xl":"i1r0p612","4xl":"i1r0p613","5xl":"i1r0p614"},$r={"2xs":"i1r0p615",xs:"i1r0p616",sm:"i1r0p617",md:"i1r0p618",lg:"i1r0p619",xl:"i1r0p61a","2xl":"i1r0p61b","3xl":"i1r0p61c","4xl":"i1r0p61d","5xl":"i1r0p61e"},Tr={"2xs":"i1r0p61f",xs:"i1r0p61g",sm:"i1r0p61h",md:"i1r0p61i",lg:"i1r0p61j",xl:"i1r0p61k","2xl":"i1r0p61l","3xl":"i1r0p61m","4xl":"i1r0p61n","5xl":"i1r0p61o"},Br={"2xs":"i1r0p61p",xs:"i1r0p61q",sm:"i1r0p61r",md:"i1r0p61s",lg:"i1r0p61t",xl:"i1r0p61u","2xl":"i1r0p61v","3xl":"i1r0p61w","4xl":"i1r0p61x","5xl":"i1r0p61y"},Er={"2xs":"i1r0p61z",xs:"i1r0p620",sm:"i1r0p621",md:"i1r0p622",lg:"i1r0p623",xl:"i1r0p624","2xl":"i1r0p625","3xl":"i1r0p626","4xl":"i1r0p627","5xl":"i1r0p628"},Fr={"2xs":"i1r0p629",xs:"i1r0p62a",sm:"i1r0p62b",md:"i1r0p62c",lg:"i1r0p62d",xl:"i1r0p62e","2xl":"i1r0p62f","3xl":"i1r0p62g","4xl":"i1r0p62h","5xl":"i1r0p62i"},Gr={"2xs":"i1r0p62j",xs:"i1r0p62k",sm:"i1r0p62l",md:"i1r0p62m",lg:"i1r0p62n",xl:"i1r0p62o","2xl":"i1r0p62p","3xl":"i1r0p62q","4xl":"i1r0p62r","5xl":"i1r0p62s"},qr={"2xs":"i1r0p62t",xs:"i1r0p62u",sm:"i1r0p62v",md:"i1r0p62w",lg:"i1r0p62x",xl:"i1r0p62y","2xl":"i1r0p62z","3xl":"i1r0p630","4xl":"i1r0p631","5xl":"i1r0p632"},Pr={"2xs":"i1r0p633",xs:"i1r0p634",sm:"i1r0p635",md:"i1r0p636",lg:"i1r0p637",xl:"i1r0p638","2xl":"i1r0p639","3xl":"i1r0p63a","4xl":"i1r0p63b","5xl":"i1r0p63c"},Dr={"2xs":"i1r0p63d",xs:"i1r0p63e",sm:"i1r0p63f",md:"i1r0p63g",lg:"i1r0p63h",xl:"i1r0p63i","2xl":"i1r0p63j","3xl":"i1r0p63k","4xl":"i1r0p63l","5xl":"i1r0p63m"},Mr={"2xs":"i1r0p63n",xs:"i1r0p63o",sm:"i1r0p63p",md:"i1r0p63q",lg:"i1r0p63r",xl:"i1r0p63s","2xl":"i1r0p63t","3xl":"i1r0p63u","4xl":"i1r0p63v","5xl":"i1r0p63w"},Vr={block:"i1r0p63x",flex:"i1r0p63y",grid:"i1r0p63z",inline:"i1r0p640",inlineBlock:"i1r0p641",inlineFlex:"i1r0p642",inlineGrid:"i1r0p643",none:"i1r0p644"},Hr={static:"i1r0p645",relative:"i1r0p646",absolute:"i1r0p647",fixed:"i1r0p648",sticky:"i1r0p649"},Zr={visible:"i1r0p64a",hidden:"i1r0p64b",scroll:"i1r0p64c",auto:"i1r0p64d"};const w=t.forwardRef(({p:e,px:a,py:i,pt:l,pr:c,pb:s,pl:d,m:p,mx:x,my:n,mt:m,mr:g,mb:h,ml:j,display:f,position:_,overflow:N,className:C,...k},z)=>r.jsx(o.BoxPrimitive,{ref:z,className:u(Cr,e&&Rr[e],a&&Sr[a],i&&Ir[i],l&&Lr[l],c&&$r[c],s&&Tr[s],d&&Br[d],p&&Er[p],x&&Fr[x],n&&Gr[n],m&&qr[m],g&&Pr[g],h&&Dr[h],j&&Mr[j],f&&Vr[f],_&&Hr[_],N&&Zr[N],C),...k}));w.displayName="Box";var Ar="_11sjf7u0",Or={row:"_11sjf7u1",column:"_11sjf7u2",rowReverse:"_11sjf7u3",columnReverse:"_11sjf7u4"},Wr={start:"_11sjf7u5",center:"_11sjf7u6",end:"_11sjf7u7",baseline:"_11sjf7u8",stretch:"_11sjf7u9"},Xr={start:"_11sjf7ua",center:"_11sjf7ub",end:"_11sjf7uc",between:"_11sjf7ud",around:"_11sjf7ue",evenly:"_11sjf7uf"},Yr={nowrap:"_11sjf7ug",wrap:"_11sjf7uh",wrapReverse:"_11sjf7ui"},Ur={"2xs":"_11sjf7uj",xs:"_11sjf7uk",sm:"_11sjf7ul",md:"_11sjf7um",lg:"_11sjf7un",xl:"_11sjf7uo","2xl":"_11sjf7up","3xl":"_11sjf7uq","4xl":"_11sjf7ur","5xl":"_11sjf7us"};const $=t.forwardRef(({direction:e,align:a,justify:i,wrap:l,gap:c,className:s,...d},p)=>r.jsx(w,{ref:p,display:"flex",className:u(Ar,e&&Or[e],a&&Wr[a],i&&Xr[i],l&&Yr[l],c&&Ur[c],s),...d}));$.displayName="Flex";var Jr="_1cg9azy0",Kr={1:"_1cg9azy1",2:"_1cg9azy2",3:"_1cg9azy3",4:"_1cg9azy4",5:"_1cg9azy5",6:"_1cg9azy6",12:"_1cg9azy7"},Qr={"2xs":"_1cg9azy8",xs:"_1cg9azy9",sm:"_1cg9azya",md:"_1cg9azyb",lg:"_1cg9azyc",xl:"_1cg9azyd","2xl":"_1cg9azye","3xl":"_1cg9azyf","4xl":"_1cg9azyg","5xl":"_1cg9azyh"},ra={"2xs":"_1cg9azyi",xs:"_1cg9azyj",sm:"_1cg9azyk",md:"_1cg9azyl",lg:"_1cg9azym",xl:"_1cg9azyn","2xl":"_1cg9azyo","3xl":"_1cg9azyp","4xl":"_1cg9azyq","5xl":"_1cg9azyr"},aa={"2xs":"_1cg9azys",xs:"_1cg9azyt",sm:"_1cg9azyu",md:"_1cg9azyv",lg:"_1cg9azyw",xl:"_1cg9azyx","2xl":"_1cg9azyy","3xl":"_1cg9azyz","4xl":"_1cg9azy10","5xl":"_1cg9azy11"},ea={start:"_1cg9azy12",center:"_1cg9azy13",end:"_1cg9azy14",stretch:"_1cg9azy15"},la={start:"_1cg9azy16",center:"_1cg9azy17",end:"_1cg9azy18",stretch:"_1cg9azy19"};const P=t.forwardRef(({columns:e,gap:a,columnGap:i,rowGap:l,align:c,justify:s,className:d,...p},x)=>r.jsx(w,{ref:x,display:"grid",className:u(Jr,e&&Kr[e],a&&Qr[a],i&&ra[i],l&&aa[l],c&&ea[c],s&&la[s],d),...p}));P.displayName="Grid";var ia="oflweu0",sa={sm:"oflweu1",md:"oflweu2",lg:"oflweu3",xl:"oflweu4",full:"oflweu5"};const D=t.forwardRef(({size:e="lg",className:a,...i},l)=>r.jsx(w,{ref:l,className:u(ia,e&&sa[e],a),...i}));D.displayName="Container";const M=t.forwardRef(({direction:e="vertical",...a},i)=>r.jsx($,{ref:i,direction:e==="vertical"?"column":"row",...a}));M.displayName="Stack";const V=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"header",...e}));V.displayName="Header";const H=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"footer",...e}));H.displayName="Footer";const Z=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"main",...e}));Z.displayName="Main";const A=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"section",...e}));A.displayName="Section";const O=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"article",...e}));O.displayName="Article";const W=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"aside",...e}));W.displayName="Aside";const X=t.forwardRef((e,a)=>r.jsx(w,{ref:a,as:"nav",...e}));X.displayName="Nav";var ta="_7csfu90",na="_7csfu91",ca={sm:"_7csfu92",md:"_7csfu93",lg:"_7csfu94"},da="_7csfu95",oa="_7csfu96",va="_7csfu97",xa="_7csfu98";const Y=t.forwardRef(({size:e="md",label:a,helperText:i,error:l,className:c,id:s,...d},p)=>{const x=t.useId(),n=s||x;return r.jsxs("div",{className:ta,children:[r.jsx(o.CheckboxRoot,{ref:p,id:n,className:u(na,ca[e],c),...d,children:r.jsx(o.CheckboxIndicator,{className:da,children:r.jsx("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})})}),a&&r.jsx(v,{variant:"label",htmlFor:n,className:oa,children:a}),l&&r.jsx(v,{variant:"captionError",className:xa,children:l}),!l&&i&&r.jsx(v,{variant:"caption",className:va,children:i})]})});Y.displayName="Checkbox";var pa="_5k55rz0",ua="_5k55rz2",ma={horizontal:"_5k55rz3",vertical:"_5k55rz4"},ga="_5k55rz5",ha="_5k55rz6",ja="_5k55rz7",fa={sm:"_5k55rz8",md:"_5k55rz9",lg:"_5k55rza"},_a="_5k55rzb",wa={sm:"_5k55rzc",md:"_5k55rzd",lg:"_5k55rze"},ya="_5k55rzf",ba="_5k55rzg",Na="_5k55rzh",za="_5k55rzi";const U=t.forwardRef(({size:e="md",options:a,label:i,error:l,helperText:c,orientation:s="vertical",className:d,...p},x)=>r.jsxs("div",{className:pa,children:[i&&r.jsx(v,{variant:"label",children:i}),r.jsx(o.RadioGroupRoot,{ref:x,className:u(ua,ma[s],d),...p,children:a.map((n,m)=>{const g=`radio-${n.value}-${m}`;return r.jsxs("div",{className:ga,children:[r.jsxs("div",{className:ha,children:[r.jsx(o.RadioGroupItem,{value:n.value,id:g,disabled:n.disabled,className:u(ja,fa[e]),children:r.jsx(o.RadioGroupIndicator,{className:u(_a,wa[e])})}),r.jsx(v,{variant:"label",htmlFor:g,className:ya,children:n.label})]}),n.helperText&&r.jsx(v,{variant:"caption",className:ba,children:n.helperText})]},n.value)})}),l&&r.jsx(v,{variant:"captionError",className:za,children:l}),!l&&c&&r.jsx(v,{variant:"caption",className:Na,children:c})]}));U.displayName="RadioGroup";var ka="_1ucwkrl0",Ca="_1ucwkrl1",Ra={left:"_1ucwkrl2",right:"_1ucwkrl3"},Sa="_1ucwkrl4",Ia={sm:"_1ucwkrl5",md:"_1ucwkrl6",lg:"_1ucwkrl7"},La="_1ucwkrl8",$a={sm:"_1ucwkrl9",md:"_1ucwkrla",lg:"_1ucwkrlb"},Ta="_1ucwkrlc",Ba="_1ucwkrld",Ea="_1ucwkrle";const J=t.forwardRef(({size:e="md",label:a,helperText:i,error:l,labelPosition:c="right",className:s,id:d,...p},x)=>{const n=t.useId(),m=d||n;return r.jsxs("div",{className:ka,children:[r.jsxs("div",{className:u(Ca,Ra[c]),children:[r.jsx(o.SwitchRoot,{ref:x,id:m,className:u(Sa,Ia[e],s),...p,children:r.jsx(o.SwitchThumb,{className:u(La,$a[e])})}),a&&r.jsx(v,{variant:"label",htmlFor:m,className:Ta,children:a})]}),l&&r.jsx(v,{variant:"captionError",className:Ea,children:l}),!l&&i&&r.jsx(v,{variant:"caption",className:Ba,children:i})]})});J.displayName="Switch";var Fa="yxg9zk0",Ga="yxg9zk2",qa="yxg9zk3",Pa={sm:"yxg9zk4",md:"yxg9zk5",lg:"yxg9zk6"},Da="yxg9zk7",Ma="yxg9zk8",Va="yxg9zk9",Ha="yxg9zka",Za="yxg9zkb",Aa="yxg9zkc",Oa="yxg9zkd";const K=t.forwardRef(({size:e="md",label:a,helperText:i,error:l,showCount:c=!1,maxLength:s,autoResize:d=!1,className:p,id:x,value:n,defaultValue:m,onChange:g,...h},j)=>{const f=t.useId(),_=x||f,N=t.useRef(null),[C,k]=t.useState(0);t.useImperativeHandle(j,()=>N.current);const z=t.useCallback(()=>{const y=N.current;y&&d&&(y.style.height="auto",y.style.height=`${y.scrollHeight}px`)},[d]),S=t.useCallback(y=>{k(y.target.value.length),z(),g?.(y)},[g,z]);t.useEffect(()=>{k((n||m||"").length),z()},[n,m,z]);const I=s?C>s:!1;return r.jsxs("div",{className:Fa,children:[a&&r.jsx(v,{variant:"label",htmlFor:_,style:{marginBottom:"8px"},children:a}),r.jsx("div",{className:Ga,children:r.jsx(o.TextareaPrimitive,{ref:N,id:_,value:n,defaultValue:m,onChange:S,maxLength:s,className:u(qa,Pa[e],l&&Da,d&&Ma,p),...h})}),r.jsxs("div",{className:Va,children:[l&&r.jsx(v,{variant:"captionError",className:Za,children:l}),!l&&i&&r.jsx(v,{variant:"caption",className:Ha,children:i}),c&&s&&r.jsxs("span",{className:u(Aa,I&&Oa),children:[C,"/",s]})]})]})});K.displayName="Textarea";var Wa="_5o5nu0",Xa="_5o5nu2",Ya={sm:"_5o5nu3",md:"_5o5nu4",lg:"_5o5nu5"},Ua="_5o5nu6",Ja="_5o5nu7",Ka="_5o5nu8",Qa="_5o5nu9",T="_5o5nua",B="_5o5nub",re="_5o5nuc",ae="_5o5nud",E="_5o5nue",ee="_5o5nuf",le="_5o5nug";const Q=t.forwardRef(({size:e="md",label:a,placeholder:i="Select...",helperText:l,error:c,options:s,className:d,...p},x)=>{const n=t.useId(),m=s.length>0&&"options"in s[0],g=()=>m?s.map((h,j)=>r.jsxs(t.Fragment,{children:[r.jsxs(o.SelectGroup,{children:[r.jsx(o.SelectLabel,{className:re,children:r.jsx(v,{variant:"label",children:h.label})}),h.options.map(f=>r.jsxs(o.SelectItem,{value:f.value,disabled:f.disabled,className:T,children:[r.jsx(o.SelectItemText,{children:r.jsx(v,{variant:"body",children:f.label})}),r.jsx(o.SelectItemIndicator,{className:B,children:r.jsx("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})})]},f.value))]}),j<s.length-1&&r.jsx(o.SelectSeparator,{className:ae})]},h.label)):s.map(h=>r.jsxs(o.SelectItem,{value:h.value,disabled:h.disabled,className:T,children:[r.jsx(o.SelectItemText,{children:r.jsx(v,{variant:"body",children:h.label})}),r.jsx(o.SelectItemIndicator,{className:B,children:r.jsx("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})})]},h.value));return r.jsxs("div",{className:Wa,children:[a&&r.jsx(v,{variant:"label",htmlFor:n,style:{marginBottom:"8px"},children:a}),r.jsxs(o.SelectRoot,{...p,children:[r.jsxs(o.SelectTrigger,{ref:x,id:n,className:u(Xa,Ya[e],c&&Ua,d),children:[r.jsx(o.SelectValue,{placeholder:i}),r.jsx(o.SelectIcon,{className:Ja,children:r.jsx("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M4.18179 6.18181C4.35753 6.00608 4.64245 6.00608 4.81819 6.18181L7.49999 8.86362L10.1818 6.18181C10.3575 6.00608 10.6424 6.00608 10.8182 6.18181C10.9939 6.35755 10.9939 6.64247 10.8182 6.81821L7.81819 9.81821C7.73379 9.9026 7.61934 9.95001 7.49999 9.95001C7.38064 9.95001 7.26618 9.9026 7.18179 9.81821L4.18179 6.81821C4.00605 6.64247 4.00605 6.35755 4.18179 6.18181Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})})]}),r.jsx(o.SelectPortal,{children:r.jsxs(o.SelectContent,{className:Ka,position:"item-aligned",sideOffset:4,children:[r.jsx(o.SelectScrollUpButton,{className:E,children:r.jsx("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M7.14645 2.14645C7.34171 1.95118 7.65829 1.95118 7.85355 2.14645L11.8536 6.14645C12.0488 6.34171 12.0488 6.65829 11.8536 6.85355C11.6583 7.04882 11.3417 7.04882 11.1464 6.85355L7.5 3.20711L3.85355 6.85355C3.65829 7.04882 3.34171 7.04882 3.14645 6.85355C2.95118 6.65829 2.95118 6.34171 3.14645 6.14645L7.14645 2.14645Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}),r.jsx(o.SelectViewport,{className:Qa,children:g()}),r.jsx(o.SelectScrollDownButton,{className:E,children:r.jsx("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M7.14645 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L11.8536 8.85355C12.0488 8.65829 12.0488 8.34171 11.8536 8.14645C11.6583 7.95118 11.3417 7.95118 11.1464 8.14645L7.5 11.7929L3.85355 8.14645C3.65829 7.95118 3.34171 7.95118 3.14645 8.14645C2.95118 8.34171 2.95118 8.65829 3.14645 8.85355L7.14645 12.8536Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})})]})})]}),c&&r.jsx(v,{variant:"captionError",className:le,children:c}),!c&&l&&r.jsx(v,{variant:"caption",className:ee,children:l})]})});Q.displayName="Select";var ie="_8hggbs0",se="_8hggbs1",te="_8hggbs2",ne="_8hggbs3",ce="_8hggbs4",de="_8hggbs5",oe="_8hggbs6",ve="_8hggbs7",xe={sm:"_8hggbs8",md:"_8hggbs9",lg:"_8hggbsa"},pe="_8hggbsb",ue="_8hggbsc";const rr=t.forwardRef(({size:e="md",label:a,helperText:i,error:l,showValue:c=!1,formatValue:s=g=>g.toString(),className:d,value:p,defaultValue:x,...n},m)=>{const[g,h]=t.useState(p||x||[0]),j=p||g,f=t.useCallback(_=>{h(_),n.onValueChange?.(_)},[n]);return r.jsxs("div",{className:ie,children:[(a||c)&&r.jsxs("div",{className:se,children:[a&&r.jsx(v,{variant:"label",className:te,children:a}),c&&r.jsx(v,{variant:"label",className:ne,children:j.length===1?s(j[0]):`${s(j[0])} - ${s(j[1])}`})]}),r.jsxs(o.SliderRoot,{ref:m,value:p,defaultValue:x,onValueChange:f,className:u(ce,d),...n,children:[r.jsx(o.SliderTrack,{className:de,children:r.jsx(o.SliderRange,{className:oe})}),j.map(_=>r.jsx(o.SliderThumb,{className:u(ve,xe[e])},`thumb-${_}`))]}),l&&r.jsx(v,{variant:"captionError",className:ue,children:l}),!l&&i&&r.jsx(v,{variant:"caption",className:pe,children:i})]})});rr.displayName="Slider";var me="_1j7jycv0",ge="_1j7jycv2",he="_1j7jycv3",je={sm:"_1j7jycv4",md:"_1j7jycv5",lg:"_1j7jycv6"},fe="_1j7jycv7",_e="_1j7jycv8",we="_1j7jycv9",F="_1j7jycva",ye="_1j7jycvb",be="_1j7jycvc",Ne="_1j7jycvd";const ar=t.forwardRef(({size:e="md",label:a,helperText:i,error:l,showControls:c=!0,className:s,wrapperClassName:d,id:p,min:x,max:n,step:m=1,value:g,defaultValue:h,onChange:j,disabled:f,..._},N)=>{const C=t.useId(),k=p||C,z=t.useRef(null);t.useImperativeHandle(N,()=>z.current);const S=()=>{const b=z.current;if(!b)return;const R=(parseFloat(b.value)||0)+m;if(n!==void 0&&R>n)return;b.value=R.toString();const L=new Event("input",{bubbles:!0});b.dispatchEvent(L),j&&j({target:b,currentTarget:b})},I=()=>{const b=z.current;if(!b)return;const R=(parseFloat(b.value)||0)-m;if(x!==void 0&&R<x)return;b.value=R.toString();const L=new Event("input",{bubbles:!0});b.dispatchEvent(L),j&&j({target:b,currentTarget:b})},y=g!==void 0?parseFloat(g.toString()):void 0,sr=f||n!==void 0&&y!==void 0&&y>=n,tr=f||x!==void 0&&y!==void 0&&y<=x;return r.jsxs(w,{className:u(me,d),children:[a&&r.jsx(v,{variant:"label",htmlFor:k,style:{marginBottom:"8px"},children:a}),r.jsxs(w,{className:ge,children:[r.jsx(o.NumberInputPrimitive,{ref:z,id:k,min:x,max:n,step:m,value:g,defaultValue:h,onChange:j,disabled:f,className:u(he,je[e],c&&fe,l&&_e,s),..._}),c&&r.jsxs("div",{className:we,children:[r.jsx("button",{type:"button",onClick:S,disabled:sr,className:u(F,ye),"aria-label":"Increment",tabIndex:-1,children:r.jsx("svg",{width:"12",height:"12",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M7.14645 2.14645C7.34171 1.95118 7.65829 1.95118 7.85355 2.14645L11.8536 6.14645C12.0488 6.34171 12.0488 6.65829 11.8536 6.85355C11.6583 7.04882 11.3417 7.04882 11.1464 6.85355L7.5 3.20711L3.85355 6.85355C3.65829 7.04882 3.34171 7.04882 3.14645 6.85355C2.95118 6.65829 2.95118 6.34171 3.14645 6.14645L7.14645 2.14645Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}),r.jsx("button",{type:"button",onClick:I,disabled:tr,className:F,"aria-label":"Decrement",tabIndex:-1,children:r.jsx("svg",{width:"12",height:"12",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M7.14645 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L11.8536 8.85355C12.0488 8.65829 12.0488 8.34171 11.8536 8.14645C11.6583 7.95118 11.3417 7.95118 11.1464 8.14645L7.5 11.7929L3.85355 8.14645C3.65829 7.95118 3.34171 7.95118 3.14645 8.14645C2.95118 8.34171 2.95118 8.65829 3.14645 8.85355L7.14645 12.8536Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})})]})]}),l&&r.jsx(v,{variant:"captionError",className:Ne,children:l}),!l&&i&&r.jsx(v,{variant:"caption",className:be,children:i})]})});ar.displayName="NumberInput";var ze="z8au880",ke="z8au881",Ce="z8au882",Re="z8au883",Se="z8au884";const er=t.forwardRef(({loading:e=!1,error:a,success:i,className:l,wrapperClassName:c,children:s,onSubmit:d,...p},x)=>{const n=t.useCallback(m=>{if(e){m.preventDefault();return}d?.(m)},[e,d]);return r.jsxs("div",{className:u(ze,c),children:[a&&r.jsx("div",{className:Re,children:a}),i&&r.jsx("div",{className:Se,children:i}),r.jsx(o.FormPrimitive,{ref:x,onSubmit:n,className:u(ke,e&&Ce,l),...p,children:s})]})});er.displayName="Form";var Ie="is2j7v0",Le="is2j7v1";const lr=t.forwardRef(({objectFit:e="cover",rounded:a=!1,className:i,style:l,...c},s)=>r.jsx(o.ImagePrimitive,{ref:s,className:u(Ie,a&&Le,i),style:{objectFit:e,...l},...c}));lr.displayName="Image";var $e="a0k4w80",Te={horizontal:"a0k4w81",vertical:"a0k4w82"},Be={solid:"a0k4w83",dashed:"a0k4w84"};const ir=t.forwardRef(({orientation:e="horizontal",variant:a="solid",className:i,...l},c)=>r.jsx("div",{ref:c,"data-orientation":e,role:"separator",className:u($e,Te[e],a!=="solid"&&Be[a],i),...l}));ir.displayName="Divider";exports.Article=O;exports.Aside=W;exports.Box=w;exports.Button=G;exports.Checkbox=Y;exports.Container=D;exports.Divider=ir;exports.Flex=$;exports.Footer=H;exports.Form=er;exports.Grid=P;exports.Header=V;exports.Image=lr;exports.Input=q;exports.Main=Z;exports.Nav=X;exports.NumberInput=ar;exports.RadioGroup=U;exports.Section=A;exports.Select=Q;exports.Slider=rr;exports.Stack=M;exports.Switch=J;exports.Textarea=K;exports.Typography=v;
1
+ "use client";
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/index.ts
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
+ Accordion: () => Accordion,
35
+ AccordionContent: () => AccordionContent,
36
+ AccordionItem: () => AccordionItem,
37
+ AccordionTrigger: () => AccordionTrigger,
38
+ Alert: () => Alert,
39
+ AlertDescription: () => AlertDescription,
40
+ AlertDialog: () => AlertDialog,
41
+ AlertDialogAction: () => AlertDialogAction,
42
+ AlertDialogCancel: () => AlertDialogCancel,
43
+ AlertDialogContent: () => AlertDialogContent,
44
+ AlertDialogDescription: () => AlertDialogDescription,
45
+ AlertDialogFooter: () => AlertDialogFooter,
46
+ AlertDialogHeader: () => AlertDialogHeader,
47
+ AlertDialogOverlay: () => AlertDialogOverlay,
48
+ AlertDialogPortal: () => AlertDialogPortal,
49
+ AlertDialogTitle: () => AlertDialogTitle,
50
+ AlertDialogTrigger: () => AlertDialogTrigger,
51
+ AlertTitle: () => AlertTitle,
52
+ AspectRatio: () => AspectRatio,
53
+ Avatar: () => Avatar,
54
+ AvatarFallback: () => AvatarFallback,
55
+ AvatarImage: () => AvatarImage,
56
+ Badge: () => Badge,
57
+ Breadcrumb: () => Breadcrumb,
58
+ BreadcrumbEllipsis: () => BreadcrumbEllipsis,
59
+ BreadcrumbItem: () => BreadcrumbItem,
60
+ BreadcrumbLink: () => BreadcrumbLink,
61
+ BreadcrumbList: () => BreadcrumbList,
62
+ BreadcrumbPage: () => BreadcrumbPage,
63
+ BreadcrumbSeparator: () => BreadcrumbSeparator,
64
+ Button: () => Button,
65
+ Calendar: () => Calendar,
66
+ CalendarDayButton: () => CalendarDayButton,
67
+ Card: () => Card,
68
+ CardContent: () => CardContent,
69
+ CardDescription: () => CardDescription,
70
+ CardFooter: () => CardFooter,
71
+ CardHeader: () => CardHeader,
72
+ CardTitle: () => CardTitle,
73
+ Carousel: () => Carousel,
74
+ CarouselContent: () => CarouselContent,
75
+ CarouselItem: () => CarouselItem,
76
+ CarouselNext: () => CarouselNext,
77
+ CarouselPrevious: () => CarouselPrevious,
78
+ ChartContainer: () => ChartContainer,
79
+ ChartLegend: () => ChartLegend,
80
+ ChartLegendContent: () => ChartLegendContent,
81
+ ChartStyle: () => ChartStyle,
82
+ ChartTooltip: () => ChartTooltip,
83
+ ChartTooltipContent: () => ChartTooltipContent,
84
+ Checkbox: () => Checkbox,
85
+ Collapsible: () => Collapsible,
86
+ CollapsibleContent: () => CollapsibleContent2,
87
+ CollapsibleTrigger: () => CollapsibleTrigger2,
88
+ Command: () => Command,
89
+ CommandDialog: () => CommandDialog,
90
+ CommandEmpty: () => CommandEmpty,
91
+ CommandGroup: () => CommandGroup,
92
+ CommandInput: () => CommandInput,
93
+ CommandItem: () => CommandItem,
94
+ CommandList: () => CommandList,
95
+ CommandSeparator: () => CommandSeparator,
96
+ CommandShortcut: () => CommandShortcut,
97
+ ConfirmDialog: () => ConfirmDialog,
98
+ ContextMenu: () => ContextMenu,
99
+ ContextMenuCheckboxItem: () => ContextMenuCheckboxItem,
100
+ ContextMenuContent: () => ContextMenuContent,
101
+ ContextMenuGroup: () => ContextMenuGroup,
102
+ ContextMenuItem: () => ContextMenuItem,
103
+ ContextMenuLabel: () => ContextMenuLabel,
104
+ ContextMenuPortal: () => ContextMenuPortal,
105
+ ContextMenuRadioGroup: () => ContextMenuRadioGroup,
106
+ ContextMenuRadioItem: () => ContextMenuRadioItem,
107
+ ContextMenuSeparator: () => ContextMenuSeparator,
108
+ ContextMenuShortcut: () => ContextMenuShortcut,
109
+ ContextMenuSub: () => ContextMenuSub,
110
+ ContextMenuSubContent: () => ContextMenuSubContent,
111
+ ContextMenuSubTrigger: () => ContextMenuSubTrigger,
112
+ ContextMenuTrigger: () => ContextMenuTrigger,
113
+ DatePicker: () => DatePicker,
114
+ Dialog: () => Dialog,
115
+ DialogClose: () => DialogClose,
116
+ DialogContent: () => DialogContent,
117
+ DialogDescription: () => DialogDescription,
118
+ DialogFooter: () => DialogFooter,
119
+ DialogHeader: () => DialogHeader,
120
+ DialogOverlay: () => DialogOverlay,
121
+ DialogPortal: () => DialogPortal,
122
+ DialogTitle: () => DialogTitle,
123
+ DialogTrigger: () => DialogTrigger,
124
+ Drawer: () => Drawer,
125
+ DrawerClose: () => DrawerClose,
126
+ DrawerContent: () => DrawerContent,
127
+ DrawerDescription: () => DrawerDescription,
128
+ DrawerFooter: () => DrawerFooter,
129
+ DrawerHeader: () => DrawerHeader,
130
+ DrawerOverlay: () => DrawerOverlay,
131
+ DrawerPortal: () => DrawerPortal,
132
+ DrawerTitle: () => DrawerTitle,
133
+ DrawerTrigger: () => DrawerTrigger,
134
+ DropdownMenu: () => DropdownMenu,
135
+ DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem,
136
+ DropdownMenuContent: () => DropdownMenuContent,
137
+ DropdownMenuGroup: () => DropdownMenuGroup,
138
+ DropdownMenuItem: () => DropdownMenuItem,
139
+ DropdownMenuLabel: () => DropdownMenuLabel,
140
+ DropdownMenuPortal: () => DropdownMenuPortal,
141
+ DropdownMenuRadioGroup: () => DropdownMenuRadioGroup,
142
+ DropdownMenuRadioItem: () => DropdownMenuRadioItem,
143
+ DropdownMenuSeparator: () => DropdownMenuSeparator,
144
+ DropdownMenuShortcut: () => DropdownMenuShortcut,
145
+ DropdownMenuSub: () => DropdownMenuSub,
146
+ DropdownMenuSubContent: () => DropdownMenuSubContent,
147
+ DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
148
+ DropdownMenuTrigger: () => DropdownMenuTrigger,
149
+ Form: () => Form,
150
+ FormControl: () => FormControl,
151
+ FormDescription: () => FormDescription,
152
+ FormField: () => FormField,
153
+ FormItem: () => FormItem,
154
+ FormLabel: () => FormLabel,
155
+ FormMessage: () => FormMessage,
156
+ HoverCard: () => HoverCard,
157
+ HoverCardContent: () => HoverCardContent,
158
+ HoverCardTrigger: () => HoverCardTrigger,
159
+ Input: () => Input,
160
+ InputOTP: () => InputOTP,
161
+ InputOTPGroup: () => InputOTPGroup,
162
+ InputOTPSeparator: () => InputOTPSeparator,
163
+ InputOTPSlot: () => InputOTPSlot,
164
+ Label: () => Label3,
165
+ LoadingState: () => LoadingState,
166
+ Menubar: () => Menubar,
167
+ MenubarCheckboxItem: () => MenubarCheckboxItem,
168
+ MenubarContent: () => MenubarContent,
169
+ MenubarGroup: () => MenubarGroup,
170
+ MenubarItem: () => MenubarItem,
171
+ MenubarLabel: () => MenubarLabel,
172
+ MenubarMenu: () => MenubarMenu,
173
+ MenubarPortal: () => MenubarPortal,
174
+ MenubarRadioGroup: () => MenubarRadioGroup,
175
+ MenubarRadioItem: () => MenubarRadioItem,
176
+ MenubarSeparator: () => MenubarSeparator,
177
+ MenubarShortcut: () => MenubarShortcut,
178
+ MenubarSub: () => MenubarSub,
179
+ MenubarSubContent: () => MenubarSubContent,
180
+ MenubarSubTrigger: () => MenubarSubTrigger,
181
+ MenubarTrigger: () => MenubarTrigger,
182
+ NavigationMenu: () => NavigationMenu,
183
+ NavigationMenuContent: () => NavigationMenuContent,
184
+ NavigationMenuIndicator: () => NavigationMenuIndicator,
185
+ NavigationMenuItem: () => NavigationMenuItem,
186
+ NavigationMenuLink: () => NavigationMenuLink,
187
+ NavigationMenuList: () => NavigationMenuList,
188
+ NavigationMenuTrigger: () => NavigationMenuTrigger,
189
+ NavigationMenuViewport: () => NavigationMenuViewport,
190
+ Pagination: () => Pagination,
191
+ PaginationContent: () => PaginationContent,
192
+ PaginationEllipsis: () => PaginationEllipsis,
193
+ PaginationItem: () => PaginationItem,
194
+ PaginationLink: () => PaginationLink,
195
+ PaginationNext: () => PaginationNext,
196
+ PaginationPrevious: () => PaginationPrevious,
197
+ Panel: () => Panel2,
198
+ Popover: () => Popover,
199
+ PopoverAnchor: () => PopoverAnchor,
200
+ PopoverContent: () => PopoverContent,
201
+ PopoverTrigger: () => PopoverTrigger,
202
+ Progress: () => Progress,
203
+ RadioGroup: () => RadioGroup4,
204
+ RadioGroupItem: () => RadioGroupItem,
205
+ ResizableHandle: () => ResizableHandle,
206
+ ResizablePanel: () => ResizablePanel,
207
+ ResizablePanelGroup: () => ResizablePanelGroup,
208
+ ScrollArea: () => ScrollArea,
209
+ ScrollBar: () => ScrollBar,
210
+ SearchableSelect: () => SearchableSelect,
211
+ Select: () => Select,
212
+ SelectContent: () => SelectContent,
213
+ SelectGroup: () => SelectGroup,
214
+ SelectItem: () => SelectItem,
215
+ SelectLabel: () => SelectLabel,
216
+ SelectScrollDownButton: () => SelectScrollDownButton,
217
+ SelectScrollUpButton: () => SelectScrollUpButton,
218
+ SelectSeparator: () => SelectSeparator,
219
+ SelectTrigger: () => SelectTrigger,
220
+ SelectValue: () => SelectValue,
221
+ Separator: () => Separator6,
222
+ Sheet: () => Sheet,
223
+ SheetClose: () => SheetClose,
224
+ SheetContent: () => SheetContent,
225
+ SheetDescription: () => SheetDescription,
226
+ SheetFooter: () => SheetFooter,
227
+ SheetHeader: () => SheetHeader,
228
+ SheetOverlay: () => SheetOverlay,
229
+ SheetPortal: () => SheetPortal,
230
+ SheetTitle: () => SheetTitle,
231
+ SheetTrigger: () => SheetTrigger,
232
+ Sidebar: () => Sidebar,
233
+ SidebarContent: () => SidebarContent,
234
+ SidebarFooter: () => SidebarFooter,
235
+ SidebarGroup: () => SidebarGroup,
236
+ SidebarGroupAction: () => SidebarGroupAction,
237
+ SidebarGroupContent: () => SidebarGroupContent,
238
+ SidebarGroupLabel: () => SidebarGroupLabel,
239
+ SidebarHeader: () => SidebarHeader,
240
+ SidebarInput: () => SidebarInput,
241
+ SidebarInset: () => SidebarInset,
242
+ SidebarMenu: () => SidebarMenu,
243
+ SidebarMenuAction: () => SidebarMenuAction,
244
+ SidebarMenuBadge: () => SidebarMenuBadge,
245
+ SidebarMenuButton: () => SidebarMenuButton,
246
+ SidebarMenuItem: () => SidebarMenuItem,
247
+ SidebarMenuSkeleton: () => SidebarMenuSkeleton,
248
+ SidebarMenuSub: () => SidebarMenuSub,
249
+ SidebarMenuSubButton: () => SidebarMenuSubButton,
250
+ SidebarMenuSubItem: () => SidebarMenuSubItem,
251
+ SidebarProvider: () => SidebarProvider,
252
+ SidebarRail: () => SidebarRail,
253
+ SidebarSeparator: () => SidebarSeparator,
254
+ SidebarTrigger: () => SidebarTrigger,
255
+ Skeleton: () => Skeleton,
256
+ Slider: () => Slider,
257
+ StatusChip: () => StatusChip,
258
+ Switch: () => Switch,
259
+ Table: () => Table,
260
+ TableBody: () => TableBody,
261
+ TableCaption: () => TableCaption,
262
+ TableCell: () => TableCell,
263
+ TableFooter: () => TableFooter,
264
+ TableHead: () => TableHead,
265
+ TableHeader: () => TableHeader,
266
+ TableRow: () => TableRow,
267
+ Tabs: () => Tabs,
268
+ TabsContent: () => TabsContent,
269
+ TabsList: () => TabsList,
270
+ TabsTrigger: () => TabsTrigger,
271
+ Textarea: () => Textarea,
272
+ ThemeProvider: () => ThemeProvider,
273
+ Toaster: () => Toaster,
274
+ Toggle: () => Toggle,
275
+ ToggleGroup: () => ToggleGroup,
276
+ ToggleGroupItem: () => ToggleGroupItem,
277
+ Tooltip: () => Tooltip2,
278
+ TooltipContent: () => TooltipContent,
279
+ TooltipProvider: () => TooltipProvider,
280
+ TooltipTrigger: () => TooltipTrigger,
281
+ badgeVariants: () => badgeVariants,
282
+ buttonVariants: () => buttonVariants,
283
+ cn: () => cn,
284
+ navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
285
+ toast: () => import_sonner.toast,
286
+ toggleVariants: () => toggleVariants,
287
+ useFormField: () => useFormField,
288
+ useIsMobile: () => useIsMobile,
289
+ useSidebar: () => useSidebar,
290
+ useTheme: () => useTheme
291
+ });
292
+ module.exports = __toCommonJS(index_exports);
293
+
294
+ // src/lib/utils.ts
295
+ var import_clsx = require("clsx");
296
+ var import_tailwind_merge = require("tailwind-merge");
297
+ function cn(...inputs) {
298
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
299
+ }
300
+
301
+ // src/theme-provider.tsx
302
+ var import_react = require("react");
303
+ var import_jsx_runtime = require("react/jsx-runtime");
304
+ var initialState = {
305
+ theme: "system",
306
+ setTheme: () => null,
307
+ resolvedTheme: "dark"
308
+ };
309
+ var ThemeProviderContext = (0, import_react.createContext)(initialState);
310
+ function ThemeProvider({
311
+ children,
312
+ defaultTheme = "system",
313
+ storageKey = "yd-theme",
314
+ attribute = "data-theme",
315
+ enableSystem = true,
316
+ ...props
317
+ }) {
318
+ const [theme, setThemeState] = (0, import_react.useState)(() => {
319
+ if (typeof window !== "undefined") {
320
+ const stored = localStorage.getItem(storageKey);
321
+ if (stored) return stored;
322
+ }
323
+ return defaultTheme;
324
+ });
325
+ const [resolvedTheme, setResolvedTheme] = (0, import_react.useState)("dark");
326
+ (0, import_react.useEffect)(() => {
327
+ const root = window.document.documentElement;
328
+ root.classList.remove("light", "dark");
329
+ let activeTheme = theme;
330
+ if (theme === "system" && enableSystem) {
331
+ const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
332
+ activeTheme = systemTheme;
333
+ }
334
+ const isDark = activeTheme.includes("dark") || activeTheme === "orchestrai";
335
+ const resolved = isDark ? "dark" : "light";
336
+ setResolvedTheme(resolved);
337
+ root.classList.add(resolved);
338
+ if (attribute) {
339
+ root.setAttribute(attribute, theme);
340
+ }
341
+ }, [theme, enableSystem, attribute]);
342
+ const value = {
343
+ theme,
344
+ setTheme: (newTheme) => {
345
+ localStorage.setItem(storageKey, newTheme);
346
+ setThemeState(newTheme);
347
+ },
348
+ resolvedTheme
349
+ };
350
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeProviderContext.Provider, { ...props, value, children });
351
+ }
352
+ var useTheme = () => {
353
+ const context = (0, import_react.useContext)(ThemeProviderContext);
354
+ if (context === void 0) {
355
+ throw new Error("useTheme must be used within a ThemeProvider");
356
+ }
357
+ return context;
358
+ };
359
+
360
+ // src/hooks/use-mobile.ts
361
+ var React2 = __toESM(require("react"), 1);
362
+ var MOBILE_BREAKPOINT = 768;
363
+ function useIsMobile() {
364
+ const [isMobile, setIsMobile] = React2.useState(
365
+ void 0
366
+ );
367
+ React2.useEffect(() => {
368
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
369
+ const onChange = () => {
370
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
371
+ };
372
+ mql.addEventListener("change", onChange);
373
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
374
+ return () => mql.removeEventListener("change", onChange);
375
+ }, []);
376
+ return !!isMobile;
377
+ }
378
+
379
+ // src/components/accordion.tsx
380
+ var React3 = __toESM(require("react"), 1);
381
+ var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
382
+ var import_lucide_react = require("lucide-react");
383
+ var import_jsx_runtime2 = require("react/jsx-runtime");
384
+ var Accordion = AccordionPrimitive.Root;
385
+ var AccordionItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
386
+ AccordionPrimitive.Item,
387
+ {
388
+ ref,
389
+ className: cn("border-b", className),
390
+ ...props
391
+ }
392
+ ));
393
+ AccordionItem.displayName = "AccordionItem";
394
+ var AccordionTrigger = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
395
+ AccordionPrimitive.Trigger,
396
+ {
397
+ ref,
398
+ className: cn(
399
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium cursor-pointer transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
400
+ className
401
+ ),
402
+ ...props,
403
+ children: [
404
+ children,
405
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ChevronDown, { className: "shrink-0 text-muted-foreground transition-transform duration-200 size-4" })
406
+ ]
407
+ }
408
+ ) }));
409
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
410
+ var AccordionContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
411
+ AccordionPrimitive.Content,
412
+ {
413
+ ref,
414
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
415
+ ...props,
416
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: cn("pb-4 pt-0", className), children })
417
+ }
418
+ ));
419
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
420
+
421
+ // src/components/alert-dialog.tsx
422
+ var React5 = __toESM(require("react"), 1);
423
+ var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"), 1);
424
+
425
+ // src/components/button.tsx
426
+ var React4 = __toESM(require("react"), 1);
427
+ var import_react_slot = require("@radix-ui/react-slot");
428
+ var import_class_variance_authority = require("class-variance-authority");
429
+ var import_jsx_runtime3 = require("react/jsx-runtime");
430
+ var buttonVariants = (0, import_class_variance_authority.cva)(
431
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
432
+ {
433
+ variants: {
434
+ variant: {
435
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
436
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
437
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
438
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
439
+ ghost: "hover:bg-accent hover:text-accent-foreground",
440
+ link: "text-primary underline-offset-4 hover:underline"
441
+ },
442
+ size: {
443
+ default: "h-9 px-4 py-2",
444
+ sm: "h-8 rounded-md px-3 text-xs",
445
+ lg: "h-10 rounded-md px-8",
446
+ icon: "size-9"
447
+ }
448
+ },
449
+ defaultVariants: {
450
+ variant: "default",
451
+ size: "default"
452
+ }
453
+ }
454
+ );
455
+ var Button = React4.forwardRef(
456
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
457
+ const Comp = asChild ? import_react_slot.Slot : "button";
458
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
459
+ Comp,
460
+ {
461
+ className: cn(buttonVariants({ variant, size, className })),
462
+ ref,
463
+ ...props
464
+ }
465
+ );
466
+ }
467
+ );
468
+ Button.displayName = "Button";
469
+
470
+ // src/components/alert-dialog.tsx
471
+ var import_jsx_runtime4 = require("react/jsx-runtime");
472
+ var AlertDialog = AlertDialogPrimitive.Root;
473
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
474
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
475
+ var AlertDialogOverlay = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
476
+ AlertDialogPrimitive.Overlay,
477
+ {
478
+ className: cn(
479
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
480
+ className
481
+ ),
482
+ ...props,
483
+ ref
484
+ }
485
+ ));
486
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
487
+ var AlertDialogContent = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(AlertDialogPortal, { children: [
488
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertDialogOverlay, {}),
489
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
490
+ AlertDialogPrimitive.Content,
491
+ {
492
+ ref,
493
+ className: cn(
494
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg translate-[-50%]",
495
+ className
496
+ ),
497
+ ...props
498
+ }
499
+ )
500
+ ] }));
501
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
502
+ var AlertDialogHeader = ({
503
+ className,
504
+ ...props
505
+ }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
506
+ "div",
507
+ {
508
+ className: cn(
509
+ "flex flex-col space-y-2 text-center sm:text-left",
510
+ className
511
+ ),
512
+ ...props
513
+ }
514
+ );
515
+ AlertDialogHeader.displayName = "AlertDialogHeader";
516
+ var AlertDialogFooter = ({
517
+ className,
518
+ ...props
519
+ }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
520
+ "div",
521
+ {
522
+ className: cn(
523
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
524
+ className
525
+ ),
526
+ ...props
527
+ }
528
+ );
529
+ AlertDialogFooter.displayName = "AlertDialogFooter";
530
+ var AlertDialogTitle = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
531
+ AlertDialogPrimitive.Title,
532
+ {
533
+ ref,
534
+ className: cn("text-lg font-semibold", className),
535
+ ...props
536
+ }
537
+ ));
538
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
539
+ var AlertDialogDescription = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
540
+ AlertDialogPrimitive.Description,
541
+ {
542
+ ref,
543
+ className: cn("text-sm text-muted-foreground", className),
544
+ ...props
545
+ }
546
+ ));
547
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
548
+ var AlertDialogAction = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
549
+ AlertDialogPrimitive.Action,
550
+ {
551
+ ref,
552
+ className: cn(buttonVariants(), className),
553
+ ...props
554
+ }
555
+ ));
556
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
557
+ var AlertDialogCancel = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
558
+ AlertDialogPrimitive.Cancel,
559
+ {
560
+ ref,
561
+ className: cn(
562
+ buttonVariants({ variant: "outline" }),
563
+ "mt-2 sm:mt-0",
564
+ className
565
+ ),
566
+ ...props
567
+ }
568
+ ));
569
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
570
+
571
+ // src/components/alert.tsx
572
+ var React6 = __toESM(require("react"), 1);
573
+ var import_class_variance_authority2 = require("class-variance-authority");
574
+ var import_jsx_runtime5 = require("react/jsx-runtime");
575
+ var alertVariants = (0, import_class_variance_authority2.cva)(
576
+ "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
577
+ {
578
+ variants: {
579
+ variant: {
580
+ default: "bg-background text-foreground",
581
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
582
+ }
583
+ },
584
+ defaultVariants: {
585
+ variant: "default"
586
+ }
587
+ }
588
+ );
589
+ var Alert = React6.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
590
+ "div",
591
+ {
592
+ ref,
593
+ role: "alert",
594
+ className: cn(alertVariants({ variant }), className),
595
+ ...props
596
+ }
597
+ ));
598
+ Alert.displayName = "Alert";
599
+ var AlertTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
600
+ "h5",
601
+ {
602
+ ref,
603
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
604
+ ...props
605
+ }
606
+ ));
607
+ AlertTitle.displayName = "AlertTitle";
608
+ var AlertDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
609
+ "div",
610
+ {
611
+ ref,
612
+ className: cn("text-sm [&_p]:leading-relaxed", className),
613
+ ...props
614
+ }
615
+ ));
616
+ AlertDescription.displayName = "AlertDescription";
617
+
618
+ // src/components/aspect-ratio.tsx
619
+ var AspectRatioPrimitive = __toESM(require("@radix-ui/react-aspect-ratio"), 1);
620
+ var AspectRatio = AspectRatioPrimitive.Root;
621
+
622
+ // src/components/avatar.tsx
623
+ var React7 = __toESM(require("react"), 1);
624
+ var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
625
+ var import_jsx_runtime6 = require("react/jsx-runtime");
626
+ var Avatar = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
627
+ AvatarPrimitive.Root,
628
+ {
629
+ ref,
630
+ className: cn(
631
+ "relative flex shrink-0 overflow-hidden rounded-full size-10",
632
+ className
633
+ ),
634
+ ...props
635
+ }
636
+ ));
637
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
638
+ var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
639
+ AvatarPrimitive.Image,
640
+ {
641
+ ref,
642
+ className: cn("aspect-square size-full", className),
643
+ ...props
644
+ }
645
+ ));
646
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
647
+ var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
648
+ AvatarPrimitive.Fallback,
649
+ {
650
+ ref,
651
+ className: cn(
652
+ "flex items-center justify-center rounded-full bg-muted size-full",
653
+ className
654
+ ),
655
+ ...props
656
+ }
657
+ ));
658
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
659
+
660
+ // src/components/badge.tsx
661
+ var import_class_variance_authority3 = require("class-variance-authority");
662
+ var import_jsx_runtime7 = require("react/jsx-runtime");
663
+ var badgeVariants = (0, import_class_variance_authority3.cva)(
664
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
665
+ {
666
+ variants: {
667
+ variant: {
668
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
669
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
670
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
671
+ outline: "text-foreground"
672
+ }
673
+ },
674
+ defaultVariants: {
675
+ variant: "default"
676
+ }
677
+ }
678
+ );
679
+ function Badge({ className, variant, ...props }) {
680
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
681
+ }
682
+
683
+ // src/components/breadcrumb.tsx
684
+ var React8 = __toESM(require("react"), 1);
685
+ var import_react_slot2 = require("@radix-ui/react-slot");
686
+ var import_lucide_react2 = require("lucide-react");
687
+ var import_jsx_runtime8 = require("react/jsx-runtime");
688
+ var Breadcrumb = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("nav", { ref, "aria-label": "breadcrumb", ...props }));
689
+ Breadcrumb.displayName = "Breadcrumb";
690
+ var BreadcrumbList = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
691
+ "ol",
692
+ {
693
+ ref,
694
+ className: cn(
695
+ "flex flex-wrap items-center gap-1.5 wrap-break-word text-sm text-muted-foreground sm:gap-2.5",
696
+ className
697
+ ),
698
+ ...props
699
+ }
700
+ ));
701
+ BreadcrumbList.displayName = "BreadcrumbList";
702
+ var BreadcrumbItem = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
703
+ "li",
704
+ {
705
+ ref,
706
+ className: cn("inline-flex items-center gap-1.5", className),
707
+ ...props
708
+ }
709
+ ));
710
+ BreadcrumbItem.displayName = "BreadcrumbItem";
711
+ var BreadcrumbLink = React8.forwardRef(({ asChild, className, ...props }, ref) => {
712
+ const Comp = asChild ? import_react_slot2.Slot : "a";
713
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
714
+ Comp,
715
+ {
716
+ ref,
717
+ className: cn("transition-colors hover:text-foreground", className),
718
+ ...props
719
+ }
720
+ );
721
+ });
722
+ BreadcrumbLink.displayName = "BreadcrumbLink";
723
+ var BreadcrumbPage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
724
+ "span",
725
+ {
726
+ ref,
727
+ role: "link",
728
+ "aria-disabled": "true",
729
+ "aria-current": "page",
730
+ className: cn("font-normal text-foreground", className),
731
+ ...props
732
+ }
733
+ ));
734
+ BreadcrumbPage.displayName = "BreadcrumbPage";
735
+ var BreadcrumbSeparator = ({
736
+ children,
737
+ className,
738
+ ...props
739
+ }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
740
+ "li",
741
+ {
742
+ role: "presentation",
743
+ "aria-hidden": "true",
744
+ className: cn("[&>svg]:size-3.5", className),
745
+ ...props,
746
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react2.ChevronRight, {})
747
+ }
748
+ );
749
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
750
+ var BreadcrumbEllipsis = ({
751
+ className,
752
+ ...props
753
+ }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
754
+ "span",
755
+ {
756
+ role: "presentation",
757
+ "aria-hidden": "true",
758
+ className: cn("flex items-center justify-center size-9", className),
759
+ ...props,
760
+ children: [
761
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react2.MoreHorizontal, { className: "size-4" }),
762
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "More" })
763
+ ]
764
+ }
765
+ );
766
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
767
+
768
+ // src/components/calendar.tsx
769
+ var React9 = __toESM(require("react"), 1);
770
+ var import_lucide_react3 = require("lucide-react");
771
+ var import_react_day_picker = require("react-day-picker");
772
+ var import_jsx_runtime9 = require("react/jsx-runtime");
773
+ function Calendar({
774
+ className,
775
+ classNames,
776
+ showOutsideDays = true,
777
+ captionLayout = "label",
778
+ buttonVariant = "ghost",
779
+ formatters,
780
+ components,
781
+ ...props
782
+ }) {
783
+ const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
784
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
785
+ import_react_day_picker.DayPicker,
786
+ {
787
+ showOutsideDays,
788
+ className: cn(
789
+ "group/calendar p-3 [--cell-size:2rem] in-data-[slot=card-content]:bg-transparent",
790
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
791
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
792
+ className
793
+ ),
794
+ captionLayout,
795
+ formatters: {
796
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
797
+ ...formatters
798
+ },
799
+ classNames: {
800
+ root: cn("w-fit", defaultClassNames.root),
801
+ months: cn(
802
+ "relative flex flex-col gap-4 md:flex-row",
803
+ defaultClassNames.months
804
+ ),
805
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
806
+ nav: cn(
807
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
808
+ defaultClassNames.nav
809
+ ),
810
+ button_previous: cn(
811
+ buttonVariants({ variant: buttonVariant }),
812
+ "select-none p-0 aria-disabled:opacity-50 size-(--cell-size)",
813
+ defaultClassNames.button_previous
814
+ ),
815
+ button_next: cn(
816
+ buttonVariants({ variant: buttonVariant }),
817
+ "select-none p-0 aria-disabled:opacity-50 size-(--cell-size)",
818
+ defaultClassNames.button_next
819
+ ),
820
+ month_caption: cn(
821
+ "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
822
+ defaultClassNames.month_caption
823
+ ),
824
+ dropdowns: cn(
825
+ "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
826
+ defaultClassNames.dropdowns
827
+ ),
828
+ dropdown_root: cn(
829
+ "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
830
+ defaultClassNames.dropdown_root
831
+ ),
832
+ dropdown: cn(
833
+ "bg-popover absolute inset-0 opacity-0",
834
+ defaultClassNames.dropdown
835
+ ),
836
+ caption_label: cn(
837
+ "select-none font-medium",
838
+ captionLayout === "label" ? "text-sm" : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
839
+ defaultClassNames.caption_label
840
+ ),
841
+ table: "w-full border-collapse",
842
+ weekdays: cn("flex", defaultClassNames.weekdays),
843
+ weekday: cn(
844
+ "text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",
845
+ defaultClassNames.weekday
846
+ ),
847
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
848
+ week_number_header: cn(
849
+ "w-(--cell-size) select-none",
850
+ defaultClassNames.week_number_header
851
+ ),
852
+ week_number: cn(
853
+ "text-muted-foreground select-none text-[0.8rem]",
854
+ defaultClassNames.week_number
855
+ ),
856
+ day: cn(
857
+ "group/day relative aspect-square select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md size-full",
858
+ defaultClassNames.day
859
+ ),
860
+ range_start: cn(
861
+ "bg-accent rounded-l-md",
862
+ defaultClassNames.range_start
863
+ ),
864
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
865
+ range_end: cn("bg-accent rounded-r-md", defaultClassNames.range_end),
866
+ today: cn(
867
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
868
+ defaultClassNames.today
869
+ ),
870
+ outside: cn(
871
+ "text-muted-foreground aria-selected:text-muted-foreground",
872
+ defaultClassNames.outside
873
+ ),
874
+ disabled: cn(
875
+ "text-muted-foreground opacity-50",
876
+ defaultClassNames.disabled
877
+ ),
878
+ hidden: cn("invisible", defaultClassNames.hidden),
879
+ ...classNames
880
+ },
881
+ components: {
882
+ Root: ({ className: className2, rootRef, ...props2 }) => {
883
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
884
+ "div",
885
+ {
886
+ "data-slot": "calendar",
887
+ ref: rootRef,
888
+ className: cn(className2),
889
+ ...props2
890
+ }
891
+ );
892
+ },
893
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
894
+ if (orientation === "left") {
895
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
896
+ }
897
+ if (orientation === "right") {
898
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
899
+ import_lucide_react3.ChevronRightIcon,
900
+ {
901
+ className: cn("size-4", className2),
902
+ ...props2
903
+ }
904
+ );
905
+ }
906
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
907
+ },
908
+ DayButton: CalendarDayButton,
909
+ WeekNumber: ({ children, ...props2 }) => {
910
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("td", { ...props2, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
911
+ },
912
+ ...components
913
+ },
914
+ ...props
915
+ }
916
+ );
917
+ }
918
+ function CalendarDayButton({
919
+ className,
920
+ day,
921
+ modifiers,
922
+ ...props
923
+ }) {
924
+ const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
925
+ const ref = React9.useRef(null);
926
+ React9.useEffect(() => {
927
+ if (modifiers["focused"]) ref.current?.focus();
928
+ }, [modifiers]);
929
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
930
+ Button,
931
+ {
932
+ ref,
933
+ variant: "ghost",
934
+ size: "icon",
935
+ "data-day": day.date.toLocaleDateString(),
936
+ "data-selected-single": modifiers["selected"] && !modifiers["range_start"] && !modifiers["range_end"] && !modifiers["range_middle"],
937
+ "data-range-start": modifiers["range_start"],
938
+ "data-range-end": modifiers["range_end"],
939
+ "data-range-middle": modifiers["range_middle"],
940
+ className: cn(
941
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-(--cell-size) flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
942
+ defaultClassNames.day,
943
+ className
944
+ ),
945
+ ...props
946
+ }
947
+ );
948
+ }
949
+
950
+ // src/components/card.tsx
951
+ var React10 = __toESM(require("react"), 1);
952
+ var import_jsx_runtime10 = require("react/jsx-runtime");
953
+ var Card = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
954
+ "div",
955
+ {
956
+ ref,
957
+ className: cn(
958
+ "rounded-xl border bg-card text-card-foreground shadow",
959
+ className
960
+ ),
961
+ ...props
962
+ }
963
+ ));
964
+ Card.displayName = "Card";
965
+ var CardHeader = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
966
+ "div",
967
+ {
968
+ ref,
969
+ className: cn("flex flex-col space-y-1.5 p-6", className),
970
+ ...props
971
+ }
972
+ ));
973
+ CardHeader.displayName = "CardHeader";
974
+ var CardTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
975
+ "div",
976
+ {
977
+ ref,
978
+ className: cn("font-semibold leading-none tracking-tight", className),
979
+ ...props
980
+ }
981
+ ));
982
+ CardTitle.displayName = "CardTitle";
983
+ var CardDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
984
+ "div",
985
+ {
986
+ ref,
987
+ className: cn("text-sm text-muted-foreground", className),
988
+ ...props
989
+ }
990
+ ));
991
+ CardDescription.displayName = "CardDescription";
992
+ var CardContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cn("p-6 pt-0", className), ...props }));
993
+ CardContent.displayName = "CardContent";
994
+ var CardFooter = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
995
+ "div",
996
+ {
997
+ ref,
998
+ className: cn("flex items-center p-6 pt-0", className),
999
+ ...props
1000
+ }
1001
+ ));
1002
+ CardFooter.displayName = "CardFooter";
1003
+
1004
+ // src/components/carousel.tsx
1005
+ var React11 = __toESM(require("react"), 1);
1006
+ var import_embla_carousel_react = __toESM(require("embla-carousel-react"), 1);
1007
+ var import_lucide_react4 = require("lucide-react");
1008
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1009
+ var CarouselContext = React11.createContext(null);
1010
+ function useCarousel() {
1011
+ const context = React11.useContext(CarouselContext);
1012
+ if (!context) {
1013
+ throw new Error("useCarousel must be used within a <Carousel />");
1014
+ }
1015
+ return context;
1016
+ }
1017
+ var Carousel = React11.forwardRef(
1018
+ ({
1019
+ orientation = "horizontal",
1020
+ opts,
1021
+ setApi,
1022
+ plugins,
1023
+ className,
1024
+ children,
1025
+ ...props
1026
+ }, ref) => {
1027
+ const [carouselRef, api] = (0, import_embla_carousel_react.default)(
1028
+ {
1029
+ ...opts,
1030
+ axis: orientation === "horizontal" ? "x" : "y"
1031
+ },
1032
+ plugins
1033
+ );
1034
+ const [canScrollPrev, setCanScrollPrev] = React11.useState(false);
1035
+ const [canScrollNext, setCanScrollNext] = React11.useState(false);
1036
+ const onSelect = React11.useCallback((api2) => {
1037
+ if (!api2) {
1038
+ return;
1039
+ }
1040
+ setCanScrollPrev(api2.canScrollPrev());
1041
+ setCanScrollNext(api2.canScrollNext());
1042
+ }, []);
1043
+ const scrollPrev = React11.useCallback(() => {
1044
+ api?.scrollPrev();
1045
+ }, [api]);
1046
+ const scrollNext = React11.useCallback(() => {
1047
+ api?.scrollNext();
1048
+ }, [api]);
1049
+ const handleKeyDown = React11.useCallback(
1050
+ (event) => {
1051
+ if (event.key === "ArrowLeft") {
1052
+ event.preventDefault();
1053
+ scrollPrev();
1054
+ } else if (event.key === "ArrowRight") {
1055
+ event.preventDefault();
1056
+ scrollNext();
1057
+ }
1058
+ },
1059
+ [scrollPrev, scrollNext]
1060
+ );
1061
+ React11.useEffect(() => {
1062
+ if (!api || !setApi) {
1063
+ return;
1064
+ }
1065
+ setApi(api);
1066
+ }, [api, setApi]);
1067
+ React11.useEffect(() => {
1068
+ if (!api) {
1069
+ return;
1070
+ }
1071
+ onSelect(api);
1072
+ api.on("reInit", onSelect);
1073
+ api.on("select", onSelect);
1074
+ return () => {
1075
+ api?.off("select", onSelect);
1076
+ };
1077
+ }, [api, onSelect]);
1078
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1079
+ CarouselContext.Provider,
1080
+ {
1081
+ value: {
1082
+ carouselRef,
1083
+ api,
1084
+ opts,
1085
+ orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
1086
+ scrollPrev,
1087
+ scrollNext,
1088
+ canScrollPrev,
1089
+ canScrollNext
1090
+ },
1091
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1092
+ "div",
1093
+ {
1094
+ ref,
1095
+ onKeyDownCapture: handleKeyDown,
1096
+ className: cn("relative", className),
1097
+ role: "region",
1098
+ "aria-roledescription": "carousel",
1099
+ ...props,
1100
+ children
1101
+ }
1102
+ )
1103
+ }
1104
+ );
1105
+ }
1106
+ );
1107
+ Carousel.displayName = "Carousel";
1108
+ var CarouselContent = React11.forwardRef(({ className, ...props }, ref) => {
1109
+ const { carouselRef, orientation } = useCarousel();
1110
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1111
+ "div",
1112
+ {
1113
+ ref,
1114
+ className: cn(
1115
+ "flex",
1116
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
1117
+ className
1118
+ ),
1119
+ ...props
1120
+ }
1121
+ ) });
1122
+ });
1123
+ CarouselContent.displayName = "CarouselContent";
1124
+ var CarouselItem = React11.forwardRef(({ className, ...props }, ref) => {
1125
+ const { orientation } = useCarousel();
1126
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1127
+ "div",
1128
+ {
1129
+ ref,
1130
+ role: "group",
1131
+ "aria-roledescription": "slide",
1132
+ className: cn(
1133
+ "min-w-0 shrink-0 grow-0 basis-full",
1134
+ orientation === "horizontal" ? "pl-4" : "pt-4",
1135
+ className
1136
+ ),
1137
+ ...props
1138
+ }
1139
+ );
1140
+ });
1141
+ CarouselItem.displayName = "CarouselItem";
1142
+ var CarouselPrevious = React11.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
1143
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
1144
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1145
+ Button,
1146
+ {
1147
+ ref,
1148
+ variant,
1149
+ size,
1150
+ className: cn(
1151
+ "absolute rounded-full size-8",
1152
+ orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
1153
+ className
1154
+ ),
1155
+ disabled: !canScrollPrev,
1156
+ onClick: scrollPrev,
1157
+ ...props,
1158
+ children: [
1159
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react4.ArrowLeft, { className: "size-4" }),
1160
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", children: "Previous slide" })
1161
+ ]
1162
+ }
1163
+ );
1164
+ });
1165
+ CarouselPrevious.displayName = "CarouselPrevious";
1166
+ var CarouselNext = React11.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
1167
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
1168
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1169
+ Button,
1170
+ {
1171
+ ref,
1172
+ variant,
1173
+ size,
1174
+ className: cn(
1175
+ "absolute rounded-full size-8",
1176
+ orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
1177
+ className
1178
+ ),
1179
+ disabled: !canScrollNext,
1180
+ onClick: scrollNext,
1181
+ ...props,
1182
+ children: [
1183
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react4.ArrowRight, { className: "size-4" }),
1184
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", children: "Next slide" })
1185
+ ]
1186
+ }
1187
+ );
1188
+ });
1189
+ CarouselNext.displayName = "CarouselNext";
1190
+
1191
+ // src/components/chart.tsx
1192
+ var React12 = __toESM(require("react"), 1);
1193
+ var RechartsPrimitive = __toESM(require("recharts"), 1);
1194
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1195
+ var THEMES = { light: "", dark: ".dark" };
1196
+ var ChartContext = React12.createContext(null);
1197
+ function useChart() {
1198
+ const context = React12.useContext(ChartContext);
1199
+ if (!context) {
1200
+ throw new Error("useChart must be used within a <ChartContainer />");
1201
+ }
1202
+ return context;
1203
+ }
1204
+ var ChartContainer = React12.forwardRef(({ id, className, children, config, ...props }, ref) => {
1205
+ const uniqueId = React12.useId();
1206
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
1207
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1208
+ "div",
1209
+ {
1210
+ "data-chart": chartId,
1211
+ ref,
1212
+ className: cn(
1213
+ "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-layer]:outline-none",
1214
+ className
1215
+ ),
1216
+ ...props,
1217
+ children: [
1218
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChartStyle, { id: chartId, config }),
1219
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RechartsPrimitive.ResponsiveContainer, { children })
1220
+ ]
1221
+ }
1222
+ ) });
1223
+ });
1224
+ ChartContainer.displayName = "Chart";
1225
+ var ChartStyle = ({ id, config }) => {
1226
+ const colorConfig = Object.entries(config).filter(
1227
+ ([, config2]) => config2.theme || config2.color
1228
+ );
1229
+ if (!colorConfig.length) {
1230
+ return null;
1231
+ }
1232
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1233
+ "style",
1234
+ {
1235
+ dangerouslySetInnerHTML: {
1236
+ __html: Object.entries(THEMES).map(
1237
+ ([theme, prefix]) => `
1238
+ ${prefix} [data-chart=${id}] {
1239
+ ${colorConfig.map(([key, itemConfig]) => {
1240
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
1241
+ return color ? ` --color-${key}: ${color};` : null;
1242
+ }).join("\n")}
1243
+ }
1244
+ `
1245
+ ).join("\n")
1246
+ }
1247
+ }
1248
+ );
1249
+ };
1250
+ var ChartTooltip = RechartsPrimitive.Tooltip;
1251
+ var ChartTooltipContent = React12.forwardRef(
1252
+ ({
1253
+ active,
1254
+ payload,
1255
+ className,
1256
+ indicator = "dot",
1257
+ hideLabel = false,
1258
+ hideIndicator = false,
1259
+ label,
1260
+ labelFormatter,
1261
+ labelClassName,
1262
+ formatter,
1263
+ color,
1264
+ nameKey,
1265
+ labelKey
1266
+ }, ref) => {
1267
+ const { config } = useChart();
1268
+ const tooltipLabel = React12.useMemo(() => {
1269
+ if (hideLabel || !payload?.length) {
1270
+ return null;
1271
+ }
1272
+ const [item] = payload;
1273
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
1274
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1275
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
1276
+ if (labelFormatter) {
1277
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
1278
+ }
1279
+ if (!value) {
1280
+ return null;
1281
+ }
1282
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn("font-medium", labelClassName), children: value });
1283
+ }, [
1284
+ label,
1285
+ labelFormatter,
1286
+ payload,
1287
+ hideLabel,
1288
+ labelClassName,
1289
+ config,
1290
+ labelKey
1291
+ ]);
1292
+ if (!active || !payload?.length) {
1293
+ return null;
1294
+ }
1295
+ const nestLabel = payload.length === 1 && indicator !== "dot";
1296
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1297
+ "div",
1298
+ {
1299
+ ref,
1300
+ className: cn(
1301
+ "grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
1302
+ className
1303
+ ),
1304
+ children: [
1305
+ !nestLabel ? tooltipLabel : null,
1306
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
1307
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
1308
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1309
+ const indicatorColor = color || item.payload.fill || item.color;
1310
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1311
+ "div",
1312
+ {
1313
+ className: cn(
1314
+ "flex flex-wrap items-stretch gap-2 [&>svg]:text-muted-foreground [&>svg]:size-2.5",
1315
+ indicator === "dot" && "items-center"
1316
+ ),
1317
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
1318
+ itemConfig?.icon ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1319
+ "div",
1320
+ {
1321
+ className: cn(
1322
+ "shrink-0 rounded-xs border-border bg-(--color-bg)",
1323
+ {
1324
+ "h-2.5 w-2.5": indicator === "dot",
1325
+ "w-1": indicator === "line",
1326
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
1327
+ "my-0.5": nestLabel && indicator === "dashed"
1328
+ }
1329
+ ),
1330
+ style: {
1331
+ "--color-bg": indicatorColor,
1332
+ "--color-border": indicatorColor
1333
+ }
1334
+ }
1335
+ ),
1336
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1337
+ "div",
1338
+ {
1339
+ className: cn(
1340
+ "flex flex-1 justify-between leading-none",
1341
+ nestLabel ? "items-end" : "items-center"
1342
+ ),
1343
+ children: [
1344
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "grid gap-1.5", children: [
1345
+ nestLabel ? tooltipLabel : null,
1346
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
1347
+ ] }),
1348
+ item.value && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
1349
+ ]
1350
+ }
1351
+ )
1352
+ ] })
1353
+ },
1354
+ item.dataKey
1355
+ );
1356
+ }) })
1357
+ ]
1358
+ }
1359
+ );
1360
+ }
1361
+ );
1362
+ ChartTooltipContent.displayName = "ChartTooltip";
1363
+ var ChartLegend = RechartsPrimitive.Legend;
1364
+ var ChartLegendContent = React12.forwardRef(
1365
+ ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
1366
+ const { config } = useChart();
1367
+ if (!payload?.length) {
1368
+ return null;
1369
+ }
1370
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1371
+ "div",
1372
+ {
1373
+ ref,
1374
+ className: cn(
1375
+ "flex items-center justify-center gap-4",
1376
+ verticalAlign === "top" ? "pb-3" : "pt-3",
1377
+ className
1378
+ ),
1379
+ children: payload.filter((item) => item.type !== "none").map((item) => {
1380
+ const key = `${nameKey || item.dataKey || "value"}`;
1381
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
1382
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1383
+ "div",
1384
+ {
1385
+ className: cn(
1386
+ "flex items-center gap-1.5 [&>svg]:text-muted-foreground [&>svg]:size-3"
1387
+ ),
1388
+ children: [
1389
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(itemConfig.icon, {}) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1390
+ "div",
1391
+ {
1392
+ className: "shrink-0 rounded-xs size-2",
1393
+ style: {
1394
+ backgroundColor: item.color
1395
+ }
1396
+ }
1397
+ ),
1398
+ itemConfig?.label
1399
+ ]
1400
+ },
1401
+ item.value
1402
+ );
1403
+ })
1404
+ }
1405
+ );
1406
+ }
1407
+ );
1408
+ ChartLegendContent.displayName = "ChartLegend";
1409
+ function getPayloadConfigFromPayload(config, payload, key) {
1410
+ if (typeof payload !== "object" || payload === null) {
1411
+ return void 0;
1412
+ }
1413
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
1414
+ let configLabelKey = key;
1415
+ if (key in payload && typeof payload[key] === "string") {
1416
+ configLabelKey = payload[key];
1417
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
1418
+ configLabelKey = payloadPayload[key];
1419
+ }
1420
+ return configLabelKey in config ? config[configLabelKey] : config[key];
1421
+ }
1422
+
1423
+ // src/components/checkbox.tsx
1424
+ var React13 = __toESM(require("react"), 1);
1425
+ var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
1426
+ var import_lucide_react5 = require("lucide-react");
1427
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1428
+ var Checkbox = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1429
+ CheckboxPrimitive.Root,
1430
+ {
1431
+ ref,
1432
+ className: cn(
1433
+ "grid place-content-center peer shrink-0 rounded-sm border border-primary shadow cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground size-4",
1434
+ className
1435
+ ),
1436
+ ...props,
1437
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1438
+ CheckboxPrimitive.Indicator,
1439
+ {
1440
+ className: cn("grid place-content-center text-current"),
1441
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react5.Check, { className: "size-4" })
1442
+ }
1443
+ )
1444
+ }
1445
+ ));
1446
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
1447
+
1448
+ // src/components/collapsible.tsx
1449
+ var CollapsiblePrimitive = __toESM(require("@radix-ui/react-collapsible"), 1);
1450
+ var Collapsible = CollapsiblePrimitive.Root;
1451
+ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
1452
+ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
1453
+
1454
+ // src/components/command.tsx
1455
+ var React15 = __toESM(require("react"), 1);
1456
+ var import_cmdk = require("cmdk");
1457
+ var import_lucide_react7 = require("lucide-react");
1458
+
1459
+ // src/components/dialog.tsx
1460
+ var React14 = __toESM(require("react"), 1);
1461
+ var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
1462
+ var import_lucide_react6 = require("lucide-react");
1463
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1464
+ var Dialog = DialogPrimitive.Root;
1465
+ var DialogTrigger = DialogPrimitive.Trigger;
1466
+ var DialogPortal = DialogPrimitive.Portal;
1467
+ var DialogClose = DialogPrimitive.Close;
1468
+ var DialogOverlay = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1469
+ DialogPrimitive.Overlay,
1470
+ {
1471
+ ref,
1472
+ className: cn(
1473
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1474
+ className
1475
+ ),
1476
+ ...props
1477
+ }
1478
+ ));
1479
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1480
+ var DialogContent = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(DialogPortal, { children: [
1481
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DialogOverlay, {}),
1482
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1483
+ DialogPrimitive.Content,
1484
+ {
1485
+ ref,
1486
+ className: cn(
1487
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg translate-[-50%]",
1488
+ className
1489
+ ),
1490
+ ...props,
1491
+ children: [
1492
+ children,
1493
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background cursor-pointer transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
1494
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react6.X, { className: "size-4" }),
1495
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "sr-only", children: "Close" })
1496
+ ] })
1497
+ ]
1498
+ }
1499
+ )
1500
+ ] }));
1501
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
1502
+ var DialogHeader = ({
1503
+ className,
1504
+ ...props
1505
+ }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1506
+ "div",
1507
+ {
1508
+ className: cn(
1509
+ "flex flex-col space-y-1.5 text-center sm:text-left",
1510
+ className
1511
+ ),
1512
+ ...props
1513
+ }
1514
+ );
1515
+ DialogHeader.displayName = "DialogHeader";
1516
+ var DialogFooter = ({
1517
+ className,
1518
+ ...props
1519
+ }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1520
+ "div",
1521
+ {
1522
+ className: cn(
1523
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1524
+ className
1525
+ ),
1526
+ ...props
1527
+ }
1528
+ );
1529
+ DialogFooter.displayName = "DialogFooter";
1530
+ var DialogTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1531
+ DialogPrimitive.Title,
1532
+ {
1533
+ ref,
1534
+ className: cn(
1535
+ "text-lg font-semibold leading-none tracking-tight",
1536
+ className
1537
+ ),
1538
+ ...props
1539
+ }
1540
+ ));
1541
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
1542
+ var DialogDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1543
+ DialogPrimitive.Description,
1544
+ {
1545
+ ref,
1546
+ className: cn("text-sm text-muted-foreground", className),
1547
+ ...props
1548
+ }
1549
+ ));
1550
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
1551
+
1552
+ // src/components/command.tsx
1553
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1554
+ var Command = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1555
+ import_cmdk.Command,
1556
+ {
1557
+ ref,
1558
+ className: cn(
1559
+ "flex flex-col overflow-hidden rounded-md bg-popover text-popover-foreground size-full",
1560
+ className
1561
+ ),
1562
+ ...props
1563
+ }
1564
+ ));
1565
+ Command.displayName = import_cmdk.Command.displayName;
1566
+ var CommandDialog = ({ children, ...props }) => {
1567
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Dialog, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Command, { className: "**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-item]]:py-3 [&_[cmdk-input-wrapper]_svg]:size-5", children }) }) });
1568
+ };
1569
+ var CommandInput = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
1570
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react7.Search, { className: "mr-2 shrink-0 opacity-50 size-4" }),
1571
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1572
+ import_cmdk.Command.Input,
1573
+ {
1574
+ ref,
1575
+ className: cn(
1576
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1577
+ className
1578
+ ),
1579
+ ...props
1580
+ }
1581
+ )
1582
+ ] }));
1583
+ CommandInput.displayName = import_cmdk.Command.Input.displayName;
1584
+ var CommandList = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1585
+ import_cmdk.Command.List,
1586
+ {
1587
+ ref,
1588
+ className: cn("max-h-75 overflow-y-auto overflow-x-hidden", className),
1589
+ ...props
1590
+ }
1591
+ ));
1592
+ CommandList.displayName = import_cmdk.Command.List.displayName;
1593
+ var CommandEmpty = React15.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1594
+ import_cmdk.Command.Empty,
1595
+ {
1596
+ ref,
1597
+ className: "py-6 text-center text-sm",
1598
+ ...props
1599
+ }
1600
+ ));
1601
+ CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
1602
+ var CommandGroup = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1603
+ import_cmdk.Command.Group,
1604
+ {
1605
+ ref,
1606
+ className: cn(
1607
+ "overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",
1608
+ className
1609
+ ),
1610
+ ...props
1611
+ }
1612
+ ));
1613
+ CommandGroup.displayName = import_cmdk.Command.Group.displayName;
1614
+ var CommandSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1615
+ import_cmdk.Command.Separator,
1616
+ {
1617
+ ref,
1618
+ className: cn("-mx-1 h-px bg-border", className),
1619
+ ...props
1620
+ }
1621
+ ));
1622
+ CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
1623
+ var CommandItem = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1624
+ import_cmdk.Command.Item,
1625
+ {
1626
+ ref,
1627
+ className: cn(
1628
+ "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",
1629
+ className
1630
+ ),
1631
+ ...props
1632
+ }
1633
+ ));
1634
+ CommandItem.displayName = import_cmdk.Command.Item.displayName;
1635
+ var CommandShortcut = ({
1636
+ className,
1637
+ ...props
1638
+ }) => {
1639
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1640
+ "span",
1641
+ {
1642
+ className: cn(
1643
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1644
+ className
1645
+ ),
1646
+ ...props
1647
+ }
1648
+ );
1649
+ };
1650
+ CommandShortcut.displayName = "CommandShortcut";
1651
+
1652
+ // src/components/context-menu.tsx
1653
+ var React16 = __toESM(require("react"), 1);
1654
+ var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"), 1);
1655
+ var import_lucide_react8 = require("lucide-react");
1656
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1657
+ var ContextMenu = ContextMenuPrimitive.Root;
1658
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1659
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
1660
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
1661
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
1662
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1663
+ var ContextMenuSubTrigger = React16.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1664
+ ContextMenuPrimitive.SubTrigger,
1665
+ {
1666
+ ref,
1667
+ className: cn(
1668
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground",
1669
+ inset && "pl-8",
1670
+ className
1671
+ ),
1672
+ ...props,
1673
+ children: [
1674
+ children,
1675
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.ChevronRight, { className: "ml-auto size-4" })
1676
+ ]
1677
+ }
1678
+ ));
1679
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1680
+ var ContextMenuSubContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1681
+ ContextMenuPrimitive.SubContent,
1682
+ {
1683
+ ref,
1684
+ className: cn(
1685
+ "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-context-menu-content-transform-origin)",
1686
+ className
1687
+ ),
1688
+ ...props
1689
+ }
1690
+ ));
1691
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1692
+ var ContextMenuContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1693
+ ContextMenuPrimitive.Content,
1694
+ {
1695
+ ref,
1696
+ className: cn(
1697
+ "z-50 max-h-(--radix-context-menu-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-context-menu-content-transform-origin)",
1698
+ className
1699
+ ),
1700
+ ...props
1701
+ }
1702
+ ) }));
1703
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1704
+ var ContextMenuItem = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1705
+ ContextMenuPrimitive.Item,
1706
+ {
1707
+ ref,
1708
+ className: cn(
1709
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1710
+ inset && "pl-8",
1711
+ className
1712
+ ),
1713
+ ...props
1714
+ }
1715
+ ));
1716
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1717
+ var ContextMenuCheckboxItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1718
+ ContextMenuPrimitive.CheckboxItem,
1719
+ {
1720
+ ref,
1721
+ className: cn(
1722
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1723
+ className
1724
+ ),
1725
+ ...props,
1726
+ children: [
1727
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.Check, { className: "size-4" }) }) }),
1728
+ children
1729
+ ]
1730
+ }
1731
+ ));
1732
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1733
+ var ContextMenuRadioItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1734
+ ContextMenuPrimitive.RadioItem,
1735
+ {
1736
+ ref,
1737
+ className: cn(
1738
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1739
+ className
1740
+ ),
1741
+ ...props,
1742
+ children: [
1743
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.Circle, { className: "fill-current size-4" }) }) }),
1744
+ children
1745
+ ]
1746
+ }
1747
+ ));
1748
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1749
+ var ContextMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1750
+ ContextMenuPrimitive.Label,
1751
+ {
1752
+ ref,
1753
+ className: cn(
1754
+ "px-2 py-1.5 text-sm font-semibold text-foreground",
1755
+ inset && "pl-8",
1756
+ className
1757
+ ),
1758
+ ...props
1759
+ }
1760
+ ));
1761
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1762
+ var ContextMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1763
+ ContextMenuPrimitive.Separator,
1764
+ {
1765
+ ref,
1766
+ className: cn("-mx-1 my-1 h-px bg-border", className),
1767
+ ...props
1768
+ }
1769
+ ));
1770
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1771
+ var ContextMenuShortcut = ({
1772
+ className,
1773
+ ...props
1774
+ }) => {
1775
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1776
+ "span",
1777
+ {
1778
+ className: cn(
1779
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1780
+ className
1781
+ ),
1782
+ ...props
1783
+ }
1784
+ );
1785
+ };
1786
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
1787
+
1788
+ // src/components/drawer.tsx
1789
+ var React17 = __toESM(require("react"), 1);
1790
+ var import_vaul = require("vaul");
1791
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1792
+ var Drawer = ({
1793
+ shouldScaleBackground = true,
1794
+ ...props
1795
+ }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1796
+ import_vaul.Drawer.Root,
1797
+ {
1798
+ shouldScaleBackground,
1799
+ ...props
1800
+ }
1801
+ );
1802
+ Drawer.displayName = "Drawer";
1803
+ var DrawerTrigger = import_vaul.Drawer.Trigger;
1804
+ var DrawerPortal = import_vaul.Drawer.Portal;
1805
+ var DrawerClose = import_vaul.Drawer.Close;
1806
+ var DrawerOverlay = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1807
+ import_vaul.Drawer.Overlay,
1808
+ {
1809
+ ref,
1810
+ className: cn("fixed inset-0 z-50 bg-black/80", className),
1811
+ ...props
1812
+ }
1813
+ ));
1814
+ DrawerOverlay.displayName = import_vaul.Drawer.Overlay.displayName;
1815
+ var DrawerContent = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DrawerPortal, { children: [
1816
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DrawerOverlay, {}),
1817
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1818
+ import_vaul.Drawer.Content,
1819
+ {
1820
+ ref,
1821
+ className: cn(
1822
+ "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
1823
+ className
1824
+ ),
1825
+ ...props,
1826
+ children: [
1827
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "mx-auto mt-4 h-2 w-25 rounded-full bg-muted" }),
1828
+ children
1829
+ ]
1830
+ }
1831
+ )
1832
+ ] }));
1833
+ DrawerContent.displayName = "DrawerContent";
1834
+ var DrawerHeader = ({
1835
+ className,
1836
+ ...props
1837
+ }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1838
+ "div",
1839
+ {
1840
+ className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
1841
+ ...props
1842
+ }
1843
+ );
1844
+ DrawerHeader.displayName = "DrawerHeader";
1845
+ var DrawerFooter = ({
1846
+ className,
1847
+ ...props
1848
+ }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1849
+ "div",
1850
+ {
1851
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1852
+ ...props
1853
+ }
1854
+ );
1855
+ DrawerFooter.displayName = "DrawerFooter";
1856
+ var DrawerTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1857
+ import_vaul.Drawer.Title,
1858
+ {
1859
+ ref,
1860
+ className: cn(
1861
+ "text-lg font-semibold leading-none tracking-tight",
1862
+ className
1863
+ ),
1864
+ ...props
1865
+ }
1866
+ ));
1867
+ DrawerTitle.displayName = import_vaul.Drawer.Title.displayName;
1868
+ var DrawerDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1869
+ import_vaul.Drawer.Description,
1870
+ {
1871
+ ref,
1872
+ className: cn("text-sm text-muted-foreground", className),
1873
+ ...props
1874
+ }
1875
+ ));
1876
+ DrawerDescription.displayName = import_vaul.Drawer.Description.displayName;
1877
+
1878
+ // src/components/dropdown-menu.tsx
1879
+ var React18 = __toESM(require("react"), 1);
1880
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
1881
+ var import_lucide_react9 = require("lucide-react");
1882
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1883
+ var DropdownMenu = DropdownMenuPrimitive.Root;
1884
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1885
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1886
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1887
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1888
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1889
+ var DropdownMenuSubTrigger = React18.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1890
+ DropdownMenuPrimitive.SubTrigger,
1891
+ {
1892
+ ref,
1893
+ className: cn(
1894
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1895
+ inset && "pl-8",
1896
+ className
1897
+ ),
1898
+ ...props,
1899
+ children: [
1900
+ children,
1901
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react9.ChevronRight, { className: "ml-auto" })
1902
+ ]
1903
+ }
1904
+ ));
1905
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1906
+ var DropdownMenuSubContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1907
+ DropdownMenuPrimitive.SubContent,
1908
+ {
1909
+ ref,
1910
+ className: cn(
1911
+ "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-dropdown-menu-content-transform-origin)",
1912
+ className
1913
+ ),
1914
+ ...props
1915
+ }
1916
+ ));
1917
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1918
+ var DropdownMenuContent = React18.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1919
+ DropdownMenuPrimitive.Content,
1920
+ {
1921
+ ref,
1922
+ sideOffset,
1923
+ className: cn(
1924
+ "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1925
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-dropdown-menu-content-transform-origin)",
1926
+ className
1927
+ ),
1928
+ ...props
1929
+ }
1930
+ ) }));
1931
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1932
+ var DropdownMenuItem = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1933
+ DropdownMenuPrimitive.Item,
1934
+ {
1935
+ ref,
1936
+ className: cn(
1937
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
1938
+ inset && "pl-8",
1939
+ className
1940
+ ),
1941
+ ...props
1942
+ }
1943
+ ));
1944
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1945
+ var DropdownMenuCheckboxItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1946
+ DropdownMenuPrimitive.CheckboxItem,
1947
+ {
1948
+ ref,
1949
+ className: cn(
1950
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1951
+ className
1952
+ ),
1953
+ ...props,
1954
+ children: [
1955
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react9.Check, { className: "size-4" }) }) }),
1956
+ children
1957
+ ]
1958
+ }
1959
+ ));
1960
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1961
+ var DropdownMenuRadioItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1962
+ DropdownMenuPrimitive.RadioItem,
1963
+ {
1964
+ ref,
1965
+ className: cn(
1966
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1967
+ className
1968
+ ),
1969
+ ...props,
1970
+ children: [
1971
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react9.Circle, { className: "fill-current size-2" }) }) }),
1972
+ children
1973
+ ]
1974
+ }
1975
+ ));
1976
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1977
+ var DropdownMenuLabel = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1978
+ DropdownMenuPrimitive.Label,
1979
+ {
1980
+ ref,
1981
+ className: cn(
1982
+ "px-2 py-1.5 text-sm font-semibold",
1983
+ inset && "pl-8",
1984
+ className
1985
+ ),
1986
+ ...props
1987
+ }
1988
+ ));
1989
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1990
+ var DropdownMenuSeparator = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1991
+ DropdownMenuPrimitive.Separator,
1992
+ {
1993
+ ref,
1994
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1995
+ ...props
1996
+ }
1997
+ ));
1998
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1999
+ var DropdownMenuShortcut = ({
2000
+ className,
2001
+ ...props
2002
+ }) => {
2003
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2004
+ "span",
2005
+ {
2006
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
2007
+ ...props
2008
+ }
2009
+ );
2010
+ };
2011
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
2012
+
2013
+ // src/components/form.tsx
2014
+ var React20 = __toESM(require("react"), 1);
2015
+ var import_react_slot3 = require("@radix-ui/react-slot");
2016
+ var import_react_hook_form = require("react-hook-form");
2017
+
2018
+ // src/components/label.tsx
2019
+ var React19 = __toESM(require("react"), 1);
2020
+ var LabelPrimitive = __toESM(require("@radix-ui/react-label"), 1);
2021
+ var import_class_variance_authority4 = require("class-variance-authority");
2022
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2023
+ var labelVariants = (0, import_class_variance_authority4.cva)(
2024
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
2025
+ );
2026
+ var Label3 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2027
+ LabelPrimitive.Root,
2028
+ {
2029
+ ref,
2030
+ className: cn(labelVariants(), className),
2031
+ ...props
2032
+ }
2033
+ ));
2034
+ Label3.displayName = LabelPrimitive.Root.displayName;
2035
+
2036
+ // src/components/form.tsx
2037
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2038
+ var Form = import_react_hook_form.FormProvider;
2039
+ var FormFieldContext = React20.createContext(
2040
+ null
2041
+ );
2042
+ var FormField = ({
2043
+ ...props
2044
+ }) => {
2045
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_hook_form.Controller, { ...props }) });
2046
+ };
2047
+ var useFormField = () => {
2048
+ const fieldContext = React20.useContext(FormFieldContext);
2049
+ const itemContext = React20.useContext(FormItemContext);
2050
+ const { getFieldState, formState } = (0, import_react_hook_form.useFormContext)();
2051
+ if (!fieldContext) {
2052
+ throw new Error("useFormField should be used within <FormField>");
2053
+ }
2054
+ if (!itemContext) {
2055
+ throw new Error("useFormField should be used within <FormItem>");
2056
+ }
2057
+ const fieldState = getFieldState(fieldContext.name, formState);
2058
+ const { id } = itemContext;
2059
+ return {
2060
+ id,
2061
+ name: fieldContext.name,
2062
+ formItemId: `${id}-form-item`,
2063
+ formDescriptionId: `${id}-form-item-description`,
2064
+ formMessageId: `${id}-form-item-message`,
2065
+ ...fieldState
2066
+ };
2067
+ };
2068
+ var FormItemContext = React20.createContext(null);
2069
+ var FormItem = React20.forwardRef(({ className, ...props }, ref) => {
2070
+ const id = React20.useId();
2071
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref, className: cn("space-y-2", className), ...props }) });
2072
+ });
2073
+ FormItem.displayName = "FormItem";
2074
+ var FormLabel = React20.forwardRef(({ className, ...props }, ref) => {
2075
+ const { error, formItemId } = useFormField();
2076
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2077
+ Label3,
2078
+ {
2079
+ ref,
2080
+ className: cn(error && "text-destructive", className),
2081
+ htmlFor: formItemId,
2082
+ ...props
2083
+ }
2084
+ );
2085
+ });
2086
+ FormLabel.displayName = "FormLabel";
2087
+ var FormControl = React20.forwardRef(({ ...props }, ref) => {
2088
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
2089
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2090
+ import_react_slot3.Slot,
2091
+ {
2092
+ ref,
2093
+ id: formItemId,
2094
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
2095
+ "aria-invalid": !!error,
2096
+ ...props
2097
+ }
2098
+ );
2099
+ });
2100
+ FormControl.displayName = "FormControl";
2101
+ var FormDescription = React20.forwardRef(({ className, ...props }, ref) => {
2102
+ const { formDescriptionId } = useFormField();
2103
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2104
+ "p",
2105
+ {
2106
+ ref,
2107
+ id: formDescriptionId,
2108
+ className: cn("text-[0.8rem] text-muted-foreground", className),
2109
+ ...props
2110
+ }
2111
+ );
2112
+ });
2113
+ FormDescription.displayName = "FormDescription";
2114
+ var FormMessage = React20.forwardRef(({ className, children, ...props }, ref) => {
2115
+ const { error, formMessageId } = useFormField();
2116
+ const body = error ? String(error?.message ?? "") : children;
2117
+ if (!body) {
2118
+ return null;
2119
+ }
2120
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2121
+ "p",
2122
+ {
2123
+ ref,
2124
+ id: formMessageId,
2125
+ className: cn("text-[0.8rem] font-medium text-destructive", className),
2126
+ ...props,
2127
+ children: body
2128
+ }
2129
+ );
2130
+ });
2131
+ FormMessage.displayName = "FormMessage";
2132
+
2133
+ // src/components/hover-card.tsx
2134
+ var React21 = __toESM(require("react"), 1);
2135
+ var HoverCardPrimitive = __toESM(require("@radix-ui/react-hover-card"), 1);
2136
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2137
+ var HoverCard = HoverCardPrimitive.Root;
2138
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
2139
+ var HoverCardContent = React21.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2140
+ HoverCardPrimitive.Content,
2141
+ {
2142
+ ref,
2143
+ align,
2144
+ sideOffset,
2145
+ className: cn(
2146
+ "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-hover-card-content-transform-origin)",
2147
+ className
2148
+ ),
2149
+ ...props
2150
+ }
2151
+ ));
2152
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
2153
+
2154
+ // src/components/input-otp.tsx
2155
+ var React22 = __toESM(require("react"), 1);
2156
+ var import_input_otp = require("input-otp");
2157
+ var import_lucide_react10 = require("lucide-react");
2158
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2159
+ var InputOTP = React22.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2160
+ import_input_otp.OTPInput,
2161
+ {
2162
+ ref,
2163
+ containerClassName: cn(
2164
+ "flex items-center gap-2 has-disabled:opacity-50",
2165
+ containerClassName
2166
+ ),
2167
+ className: cn("disabled:cursor-not-allowed", className),
2168
+ ...props
2169
+ }
2170
+ ));
2171
+ InputOTP.displayName = "InputOTP";
2172
+ var InputOTPGroup = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
2173
+ InputOTPGroup.displayName = "InputOTPGroup";
2174
+ var InputOTPSlot = React22.forwardRef(({ index, className, ...props }, ref) => {
2175
+ const inputOTPContext = React22.useContext(import_input_otp.OTPInputContext);
2176
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index] ?? {
2177
+ char: null,
2178
+ hasFakeCaret: false,
2179
+ isActive: false
2180
+ };
2181
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2182
+ "div",
2183
+ {
2184
+ ref,
2185
+ className: cn(
2186
+ "relative flex items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md size-9",
2187
+ isActive && "z-10 ring-1 ring-ring",
2188
+ className
2189
+ ),
2190
+ ...props,
2191
+ children: [
2192
+ char,
2193
+ hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
2194
+ ]
2195
+ }
2196
+ );
2197
+ });
2198
+ InputOTPSlot.displayName = "InputOTPSlot";
2199
+ var InputOTPSeparator = React22.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react10.Minus, {}) }));
2200
+ InputOTPSeparator.displayName = "InputOTPSeparator";
2201
+
2202
+ // src/components/input.tsx
2203
+ var React23 = __toESM(require("react"), 1);
2204
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2205
+ var Input = React23.forwardRef(
2206
+ ({ className, type, ...props }, ref) => {
2207
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2208
+ "input",
2209
+ {
2210
+ type,
2211
+ className: cn(
2212
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2213
+ className
2214
+ ),
2215
+ ref,
2216
+ ...props
2217
+ }
2218
+ );
2219
+ }
2220
+ );
2221
+ Input.displayName = "Input";
2222
+
2223
+ // src/components/menubar.tsx
2224
+ var React24 = __toESM(require("react"), 1);
2225
+ var MenubarPrimitive = __toESM(require("@radix-ui/react-menubar"), 1);
2226
+ var import_lucide_react11 = require("lucide-react");
2227
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2228
+ function MenubarMenu({
2229
+ ...props
2230
+ }) {
2231
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.Menu, { ...props });
2232
+ }
2233
+ function MenubarGroup({
2234
+ ...props
2235
+ }) {
2236
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.Group, { ...props });
2237
+ }
2238
+ function MenubarPortal({
2239
+ ...props
2240
+ }) {
2241
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.Portal, { ...props });
2242
+ }
2243
+ function MenubarRadioGroup({
2244
+ ...props
2245
+ }) {
2246
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.RadioGroup, { ...props });
2247
+ }
2248
+ function MenubarSub({
2249
+ ...props
2250
+ }) {
2251
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
2252
+ }
2253
+ var Menubar = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2254
+ MenubarPrimitive.Root,
2255
+ {
2256
+ ref,
2257
+ className: cn(
2258
+ "flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
2259
+ className
2260
+ ),
2261
+ ...props
2262
+ }
2263
+ ));
2264
+ Menubar.displayName = MenubarPrimitive.Root.displayName;
2265
+ var MenubarTrigger = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2266
+ MenubarPrimitive.Trigger,
2267
+ {
2268
+ ref,
2269
+ className: cn(
2270
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2271
+ className
2272
+ ),
2273
+ ...props
2274
+ }
2275
+ ));
2276
+ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
2277
+ var MenubarSubTrigger = React24.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2278
+ MenubarPrimitive.SubTrigger,
2279
+ {
2280
+ ref,
2281
+ className: cn(
2282
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2283
+ inset && "pl-8",
2284
+ className
2285
+ ),
2286
+ ...props,
2287
+ children: [
2288
+ children,
2289
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.ChevronRight, { className: "ml-auto size-4" })
2290
+ ]
2291
+ }
2292
+ ));
2293
+ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
2294
+ var MenubarSubContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2295
+ MenubarPrimitive.SubContent,
2296
+ {
2297
+ ref,
2298
+ className: cn(
2299
+ "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin)",
2300
+ className
2301
+ ),
2302
+ ...props
2303
+ }
2304
+ ));
2305
+ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
2306
+ var MenubarContent = React24.forwardRef(
2307
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2308
+ MenubarPrimitive.Content,
2309
+ {
2310
+ ref,
2311
+ align,
2312
+ alignOffset,
2313
+ sideOffset,
2314
+ className: cn(
2315
+ "z-50 min-w-48 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin)",
2316
+ className
2317
+ ),
2318
+ ...props
2319
+ }
2320
+ ) })
2321
+ );
2322
+ MenubarContent.displayName = MenubarPrimitive.Content.displayName;
2323
+ var MenubarItem = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2324
+ MenubarPrimitive.Item,
2325
+ {
2326
+ ref,
2327
+ className: cn(
2328
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2329
+ inset && "pl-8",
2330
+ className
2331
+ ),
2332
+ ...props
2333
+ }
2334
+ ));
2335
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName;
2336
+ var MenubarCheckboxItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2337
+ MenubarPrimitive.CheckboxItem,
2338
+ {
2339
+ ref,
2340
+ className: cn(
2341
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2342
+ className
2343
+ ),
2344
+ ...props,
2345
+ children: [
2346
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Check, { className: "size-4" }) }) }),
2347
+ children
2348
+ ]
2349
+ }
2350
+ ));
2351
+ MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
2352
+ var MenubarRadioItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2353
+ MenubarPrimitive.RadioItem,
2354
+ {
2355
+ ref,
2356
+ className: cn(
2357
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2358
+ className
2359
+ ),
2360
+ ...props,
2361
+ children: [
2362
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Circle, { className: "fill-current size-4" }) }) }),
2363
+ children
2364
+ ]
2365
+ }
2366
+ ));
2367
+ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
2368
+ var MenubarLabel = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2369
+ MenubarPrimitive.Label,
2370
+ {
2371
+ ref,
2372
+ className: cn(
2373
+ "px-2 py-1.5 text-sm font-semibold",
2374
+ inset && "pl-8",
2375
+ className
2376
+ ),
2377
+ ...props
2378
+ }
2379
+ ));
2380
+ MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
2381
+ var MenubarSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2382
+ MenubarPrimitive.Separator,
2383
+ {
2384
+ ref,
2385
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2386
+ ...props
2387
+ }
2388
+ ));
2389
+ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
2390
+ var MenubarShortcut = ({
2391
+ className,
2392
+ ...props
2393
+ }) => {
2394
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2395
+ "span",
2396
+ {
2397
+ className: cn(
2398
+ "ml-auto text-xs tracking-widest text-muted-foreground",
2399
+ className
2400
+ ),
2401
+ ...props
2402
+ }
2403
+ );
2404
+ };
2405
+ MenubarShortcut.displayname = "MenubarShortcut";
2406
+
2407
+ // src/components/navigation-menu.tsx
2408
+ var React25 = __toESM(require("react"), 1);
2409
+ var NavigationMenuPrimitive = __toESM(require("@radix-ui/react-navigation-menu"), 1);
2410
+ var import_class_variance_authority5 = require("class-variance-authority");
2411
+ var import_lucide_react12 = require("lucide-react");
2412
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2413
+ var NavigationMenu = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2414
+ NavigationMenuPrimitive.Root,
2415
+ {
2416
+ ref,
2417
+ className: cn(
2418
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
2419
+ className
2420
+ ),
2421
+ ...props,
2422
+ children: [
2423
+ children,
2424
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(NavigationMenuViewport, {})
2425
+ ]
2426
+ }
2427
+ ));
2428
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2429
+ var NavigationMenuList = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2430
+ NavigationMenuPrimitive.List,
2431
+ {
2432
+ ref,
2433
+ className: cn(
2434
+ "group flex flex-1 list-none items-center justify-center space-x-1",
2435
+ className
2436
+ ),
2437
+ ...props
2438
+ }
2439
+ ));
2440
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
2441
+ var NavigationMenuItem = NavigationMenuPrimitive.Item;
2442
+ var navigationMenuTriggerStyle = (0, import_class_variance_authority5.cva)(
2443
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium cursor-pointer transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
2444
+ );
2445
+ var NavigationMenuTrigger = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2446
+ NavigationMenuPrimitive.Trigger,
2447
+ {
2448
+ ref,
2449
+ className: cn(navigationMenuTriggerStyle(), "group", className),
2450
+ ...props,
2451
+ children: [
2452
+ children,
2453
+ " ",
2454
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2455
+ import_lucide_react12.ChevronDown,
2456
+ {
2457
+ className: "relative top-px ml-1 transition duration-300 group-data-[state=open]:rotate-180 size-3",
2458
+ "aria-hidden": "true"
2459
+ }
2460
+ )
2461
+ ]
2462
+ }
2463
+ ));
2464
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2465
+ var NavigationMenuContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2466
+ NavigationMenuPrimitive.Content,
2467
+ {
2468
+ ref,
2469
+ className: cn(
2470
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
2471
+ className
2472
+ ),
2473
+ ...props
2474
+ }
2475
+ ));
2476
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2477
+ var NavigationMenuLink = NavigationMenuPrimitive.Link;
2478
+ var NavigationMenuViewport = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2479
+ NavigationMenuPrimitive.Viewport,
2480
+ {
2481
+ className: cn(
2482
+ "origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-(--radix-navigation-menu-viewport-width)",
2483
+ className
2484
+ ),
2485
+ ref,
2486
+ ...props
2487
+ }
2488
+ ) }));
2489
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2490
+ var NavigationMenuIndicator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2491
+ NavigationMenuPrimitive.Indicator,
2492
+ {
2493
+ ref,
2494
+ className: cn(
2495
+ "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2496
+ className
2497
+ ),
2498
+ ...props,
2499
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "relative top-[60%] rotate-45 rounded-tl-sm bg-border shadow-md size-2" })
2500
+ }
2501
+ ));
2502
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
2503
+
2504
+ // src/components/pagination.tsx
2505
+ var React26 = __toESM(require("react"), 1);
2506
+ var import_lucide_react13 = require("lucide-react");
2507
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2508
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2509
+ "nav",
2510
+ {
2511
+ role: "navigation",
2512
+ "aria-label": "pagination",
2513
+ className: cn("mx-auto flex w-full justify-center", className),
2514
+ ...props
2515
+ }
2516
+ );
2517
+ Pagination.displayName = "Pagination";
2518
+ var PaginationContent = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2519
+ "ul",
2520
+ {
2521
+ ref,
2522
+ className: cn("flex flex-row items-center gap-1", className),
2523
+ ...props
2524
+ }
2525
+ ));
2526
+ PaginationContent.displayName = "PaginationContent";
2527
+ var PaginationItem = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("li", { ref, className: cn("", className), ...props }));
2528
+ PaginationItem.displayName = "PaginationItem";
2529
+ var PaginationLink = ({
2530
+ className,
2531
+ isActive,
2532
+ size = "icon",
2533
+ ...props
2534
+ }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2535
+ "a",
2536
+ {
2537
+ "aria-current": isActive ? "page" : void 0,
2538
+ className: cn(
2539
+ buttonVariants({
2540
+ variant: isActive ? "outline" : "ghost",
2541
+ size
2542
+ }),
2543
+ className
2544
+ ),
2545
+ ...props
2546
+ }
2547
+ );
2548
+ PaginationLink.displayName = "PaginationLink";
2549
+ var PaginationPrevious = ({
2550
+ className,
2551
+ ...props
2552
+ }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2553
+ PaginationLink,
2554
+ {
2555
+ "aria-label": "Go to previous page",
2556
+ size: "default",
2557
+ className: cn("gap-1 pl-2.5", className),
2558
+ ...props,
2559
+ children: [
2560
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react13.ChevronLeft, { className: "size-4" }),
2561
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: "Previous" })
2562
+ ]
2563
+ }
2564
+ );
2565
+ PaginationPrevious.displayName = "PaginationPrevious";
2566
+ var PaginationNext = ({
2567
+ className,
2568
+ ...props
2569
+ }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2570
+ PaginationLink,
2571
+ {
2572
+ "aria-label": "Go to next page",
2573
+ size: "default",
2574
+ className: cn("gap-1 pr-2.5", className),
2575
+ ...props,
2576
+ children: [
2577
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: "Next" }),
2578
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react13.ChevronRight, { className: "size-4" })
2579
+ ]
2580
+ }
2581
+ );
2582
+ PaginationNext.displayName = "PaginationNext";
2583
+ var PaginationEllipsis = ({
2584
+ className,
2585
+ ...props
2586
+ }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2587
+ "span",
2588
+ {
2589
+ "aria-hidden": true,
2590
+ className: cn("flex items-center justify-center size-9", className),
2591
+ ...props,
2592
+ children: [
2593
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react13.MoreHorizontal, { className: "size-4" }),
2594
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "sr-only", children: "More pages" })
2595
+ ]
2596
+ }
2597
+ );
2598
+ PaginationEllipsis.displayName = "PaginationEllipsis";
2599
+
2600
+ // src/components/popover.tsx
2601
+ var React27 = __toESM(require("react"), 1);
2602
+ var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
2603
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2604
+ var Popover = PopoverPrimitive.Root;
2605
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2606
+ var PopoverAnchor = PopoverPrimitive.Anchor;
2607
+ var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2608
+ PopoverPrimitive.Content,
2609
+ {
2610
+ ref,
2611
+ align,
2612
+ sideOffset,
2613
+ className: cn(
2614
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-popover-content-transform-origin)",
2615
+ className
2616
+ ),
2617
+ ...props
2618
+ }
2619
+ ) }));
2620
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2621
+
2622
+ // src/components/progress.tsx
2623
+ var React28 = __toESM(require("react"), 1);
2624
+ var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"), 1);
2625
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2626
+ var Progress = React28.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2627
+ ProgressPrimitive.Root,
2628
+ {
2629
+ ref,
2630
+ className: cn(
2631
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
2632
+ className
2633
+ ),
2634
+ ...props,
2635
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2636
+ ProgressPrimitive.Indicator,
2637
+ {
2638
+ className: "flex-1 bg-primary transition-all size-full",
2639
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
2640
+ }
2641
+ )
2642
+ }
2643
+ ));
2644
+ Progress.displayName = ProgressPrimitive.Root.displayName;
2645
+
2646
+ // src/components/radio-group.tsx
2647
+ var React29 = __toESM(require("react"), 1);
2648
+ var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
2649
+ var import_lucide_react14 = require("lucide-react");
2650
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2651
+ var RadioGroup4 = React29.forwardRef(({ className, ...props }, ref) => {
2652
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2653
+ RadioGroupPrimitive.Root,
2654
+ {
2655
+ className: cn("grid gap-2", className),
2656
+ ...props,
2657
+ ref
2658
+ }
2659
+ );
2660
+ });
2661
+ RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
2662
+ var RadioGroupItem = React29.forwardRef(({ className, ...props }, ref) => {
2663
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2664
+ RadioGroupPrimitive.Item,
2665
+ {
2666
+ ref,
2667
+ className: cn(
2668
+ "aspect-square rounded-full border border-primary text-primary shadow cursor-pointer focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 size-4",
2669
+ className
2670
+ ),
2671
+ ...props,
2672
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.Circle, { className: "fill-primary size-3.5" }) })
2673
+ }
2674
+ );
2675
+ });
2676
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2677
+
2678
+ // src/components/resizable.tsx
2679
+ var import_lucide_react15 = require("lucide-react");
2680
+ var import_react_resizable_panels = require("react-resizable-panels");
2681
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2682
+ var ResizablePanelGroup = ({
2683
+ className,
2684
+ ...props
2685
+ }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2686
+ import_react_resizable_panels.Group,
2687
+ {
2688
+ className: cn(
2689
+ "flex data-[panel-group-direction=vertical]:flex-col size-full",
2690
+ className
2691
+ ),
2692
+ ...props
2693
+ }
2694
+ );
2695
+ var ResizablePanel = import_react_resizable_panels.Panel;
2696
+ var ResizableHandle = ({
2697
+ withHandle,
2698
+ className,
2699
+ ...props
2700
+ }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2701
+ import_react_resizable_panels.Separator,
2702
+ {
2703
+ className: cn(
2704
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
2705
+ className
2706
+ ),
2707
+ ...props,
2708
+ children: withHandle && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.GripVertical, { className: "size-2.5" }) })
2709
+ }
2710
+ );
2711
+
2712
+ // src/components/scroll-area.tsx
2713
+ var React30 = __toESM(require("react"), 1);
2714
+ var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
2715
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2716
+ var ScrollArea = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2717
+ ScrollAreaPrimitive.Root,
2718
+ {
2719
+ ref,
2720
+ className: cn("relative overflow-hidden", className),
2721
+ ...props,
2722
+ children: [
2723
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ScrollAreaPrimitive.Viewport, { className: "rounded-[inherit] size-full", children }),
2724
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ScrollBar, {}),
2725
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ScrollAreaPrimitive.Corner, {})
2726
+ ]
2727
+ }
2728
+ ));
2729
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2730
+ var ScrollBar = React30.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2731
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
2732
+ {
2733
+ ref,
2734
+ orientation,
2735
+ className: cn(
2736
+ "flex touch-none select-none transition-colors",
2737
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px",
2738
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px",
2739
+ className
2740
+ ),
2741
+ ...props,
2742
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
2743
+ }
2744
+ ));
2745
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2746
+
2747
+ // src/components/select.tsx
2748
+ var React31 = __toESM(require("react"), 1);
2749
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
2750
+ var import_lucide_react16 = require("lucide-react");
2751
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2752
+ var Select = SelectPrimitive.Root;
2753
+ var SelectGroup = SelectPrimitive.Group;
2754
+ var SelectValue = SelectPrimitive.Value;
2755
+ var SelectTrigger = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2756
+ SelectPrimitive.Trigger,
2757
+ {
2758
+ ref,
2759
+ className: cn(
2760
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background cursor-pointer data-placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2761
+ className
2762
+ ),
2763
+ ...props,
2764
+ children: [
2765
+ children,
2766
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react16.ChevronDown, { className: "opacity-50 size-4" }) })
2767
+ ]
2768
+ }
2769
+ ));
2770
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2771
+ var SelectScrollUpButton = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2772
+ SelectPrimitive.ScrollUpButton,
2773
+ {
2774
+ ref,
2775
+ className: cn(
2776
+ "flex cursor-default items-center justify-center py-1",
2777
+ className
2778
+ ),
2779
+ ...props,
2780
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react16.ChevronUp, { className: "size-4" })
2781
+ }
2782
+ ));
2783
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2784
+ var SelectScrollDownButton = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2785
+ SelectPrimitive.ScrollDownButton,
2786
+ {
2787
+ ref,
2788
+ className: cn(
2789
+ "flex cursor-default items-center justify-center py-1",
2790
+ className
2791
+ ),
2792
+ ...props,
2793
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react16.ChevronDown, { className: "size-4" })
2794
+ }
2795
+ ));
2796
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2797
+ var SelectContent = React31.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2798
+ SelectPrimitive.Content,
2799
+ {
2800
+ ref,
2801
+ className: cn(
2802
+ "relative z-50 max-h-(--radix-select-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-select-content-transform-origin)",
2803
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
2804
+ className
2805
+ ),
2806
+ position,
2807
+ ...props,
2808
+ children: [
2809
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectScrollUpButton, {}),
2810
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2811
+ SelectPrimitive.Viewport,
2812
+ {
2813
+ className: cn(
2814
+ "p-1",
2815
+ position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
2816
+ ),
2817
+ children
2818
+ }
2819
+ ),
2820
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectScrollDownButton, {})
2821
+ ]
2822
+ }
2823
+ ) }));
2824
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
2825
+ var SelectLabel = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2826
+ SelectPrimitive.Label,
2827
+ {
2828
+ ref,
2829
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
2830
+ ...props
2831
+ }
2832
+ ));
2833
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
2834
+ var SelectItem = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2835
+ SelectPrimitive.Item,
2836
+ {
2837
+ ref,
2838
+ className: cn(
2839
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2840
+ className
2841
+ ),
2842
+ ...props,
2843
+ children: [
2844
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "absolute right-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react16.Check, { className: "size-4" }) }) }),
2845
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.ItemText, { children })
2846
+ ]
2847
+ }
2848
+ ));
2849
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
2850
+ var SelectSeparator = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2851
+ SelectPrimitive.Separator,
2852
+ {
2853
+ ref,
2854
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2855
+ ...props
2856
+ }
2857
+ ));
2858
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2859
+
2860
+ // src/components/separator.tsx
2861
+ var React32 = __toESM(require("react"), 1);
2862
+ var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
2863
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2864
+ var Separator6 = React32.forwardRef(
2865
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2866
+ SeparatorPrimitive.Root,
2867
+ {
2868
+ ref,
2869
+ decorative,
2870
+ orientation,
2871
+ className: cn(
2872
+ "shrink-0 bg-border",
2873
+ orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
2874
+ className
2875
+ ),
2876
+ ...props
2877
+ }
2878
+ )
2879
+ );
2880
+ Separator6.displayName = SeparatorPrimitive.Root.displayName;
2881
+
2882
+ // src/components/sheet.tsx
2883
+ var React33 = __toESM(require("react"), 1);
2884
+ var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
2885
+ var import_class_variance_authority6 = require("class-variance-authority");
2886
+ var import_lucide_react17 = require("lucide-react");
2887
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2888
+ var Sheet = SheetPrimitive.Root;
2889
+ var SheetTrigger = SheetPrimitive.Trigger;
2890
+ var SheetClose = SheetPrimitive.Close;
2891
+ var SheetPortal = SheetPrimitive.Portal;
2892
+ var SheetOverlay = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2893
+ SheetPrimitive.Overlay,
2894
+ {
2895
+ className: cn(
2896
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2897
+ className
2898
+ ),
2899
+ ...props,
2900
+ ref
2901
+ }
2902
+ ));
2903
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
2904
+ var sheetVariants = (0, import_class_variance_authority6.cva)(
2905
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2906
+ {
2907
+ variants: {
2908
+ side: {
2909
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2910
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2911
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2912
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
2913
+ }
2914
+ },
2915
+ defaultVariants: {
2916
+ side: "right"
2917
+ }
2918
+ }
2919
+ );
2920
+ var SheetContent = React33.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(SheetPortal, { children: [
2921
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SheetOverlay, {}),
2922
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2923
+ SheetPrimitive.Content,
2924
+ {
2925
+ ref,
2926
+ className: cn(sheetVariants({ side }), className),
2927
+ ...props,
2928
+ children: [
2929
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background cursor-pointer transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
2930
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react17.X, { className: "size-4" }),
2931
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "sr-only", children: "Close" })
2932
+ ] }),
2933
+ children
2934
+ ]
2935
+ }
2936
+ )
2937
+ ] }));
2938
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
2939
+ var SheetHeader = ({
2940
+ className,
2941
+ ...props
2942
+ }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2943
+ "div",
2944
+ {
2945
+ className: cn(
2946
+ "flex flex-col space-y-2 text-center sm:text-left",
2947
+ className
2948
+ ),
2949
+ ...props
2950
+ }
2951
+ );
2952
+ SheetHeader.displayName = "SheetHeader";
2953
+ var SheetFooter = ({
2954
+ className,
2955
+ ...props
2956
+ }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2957
+ "div",
2958
+ {
2959
+ className: cn(
2960
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2961
+ className
2962
+ ),
2963
+ ...props
2964
+ }
2965
+ );
2966
+ SheetFooter.displayName = "SheetFooter";
2967
+ var SheetTitle = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2968
+ SheetPrimitive.Title,
2969
+ {
2970
+ ref,
2971
+ className: cn("text-lg font-semibold text-foreground", className),
2972
+ ...props
2973
+ }
2974
+ ));
2975
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
2976
+ var SheetDescription = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2977
+ SheetPrimitive.Description,
2978
+ {
2979
+ ref,
2980
+ className: cn("text-sm text-muted-foreground", className),
2981
+ ...props
2982
+ }
2983
+ ));
2984
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
2985
+
2986
+ // src/components/sidebar.tsx
2987
+ var React35 = __toESM(require("react"), 1);
2988
+ var import_react_slot4 = require("@radix-ui/react-slot");
2989
+ var import_class_variance_authority7 = require("class-variance-authority");
2990
+ var import_lucide_react18 = require("lucide-react");
2991
+
2992
+ // src/components/skeleton.tsx
2993
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2994
+ function Skeleton({
2995
+ className,
2996
+ ...props
2997
+ }) {
2998
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2999
+ "div",
3000
+ {
3001
+ className: cn("animate-pulse rounded-md bg-primary/10", className),
3002
+ ...props
3003
+ }
3004
+ );
3005
+ }
3006
+
3007
+ // src/components/tooltip.tsx
3008
+ var React34 = __toESM(require("react"), 1);
3009
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
3010
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3011
+ var TooltipProvider = TooltipPrimitive.Provider;
3012
+ var Tooltip2 = TooltipPrimitive.Root;
3013
+ var TooltipTrigger = TooltipPrimitive.Trigger;
3014
+ var TooltipContent = React34.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3015
+ TooltipPrimitive.Content,
3016
+ {
3017
+ ref,
3018
+ sideOffset,
3019
+ className: cn(
3020
+ "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-tooltip-content-transform-origin)",
3021
+ className
3022
+ ),
3023
+ ...props
3024
+ }
3025
+ ) }));
3026
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
3027
+
3028
+ // src/components/sidebar.tsx
3029
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3030
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
3031
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
3032
+ var SIDEBAR_WIDTH = "16rem";
3033
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
3034
+ var SIDEBAR_WIDTH_ICON = "3rem";
3035
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
3036
+ var SidebarContext = React35.createContext(null);
3037
+ function useSidebar() {
3038
+ const context = React35.useContext(SidebarContext);
3039
+ if (!context) {
3040
+ throw new Error("useSidebar must be used within a SidebarProvider.");
3041
+ }
3042
+ return context;
3043
+ }
3044
+ var SidebarProvider = React35.forwardRef(
3045
+ ({
3046
+ defaultOpen = true,
3047
+ open: openProp,
3048
+ onOpenChange: setOpenProp,
3049
+ className,
3050
+ style,
3051
+ children,
3052
+ ...props
3053
+ }, ref) => {
3054
+ const isMobile = useIsMobile();
3055
+ const [openMobile, setOpenMobile] = React35.useState(false);
3056
+ const [_open, _setOpen] = React35.useState(defaultOpen);
3057
+ const open = openProp ?? _open;
3058
+ const setOpen = React35.useCallback(
3059
+ (value) => {
3060
+ const openState = typeof value === "function" ? value(open) : value;
3061
+ if (setOpenProp) {
3062
+ setOpenProp(openState);
3063
+ } else {
3064
+ _setOpen(openState);
3065
+ }
3066
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
3067
+ },
3068
+ [setOpenProp, open]
3069
+ );
3070
+ const toggleSidebar = React35.useCallback(() => {
3071
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
3072
+ }, [isMobile, setOpen, setOpenMobile]);
3073
+ React35.useEffect(() => {
3074
+ const handleKeyDown = (event) => {
3075
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
3076
+ event.preventDefault();
3077
+ toggleSidebar();
3078
+ }
3079
+ };
3080
+ window.addEventListener("keydown", handleKeyDown);
3081
+ return () => window.removeEventListener("keydown", handleKeyDown);
3082
+ }, [toggleSidebar]);
3083
+ const state = open ? "expanded" : "collapsed";
3084
+ const contextValue = React35.useMemo(
3085
+ () => ({
3086
+ state,
3087
+ open,
3088
+ setOpen,
3089
+ isMobile,
3090
+ openMobile,
3091
+ setOpenMobile,
3092
+ toggleSidebar
3093
+ }),
3094
+ [
3095
+ state,
3096
+ open,
3097
+ setOpen,
3098
+ isMobile,
3099
+ openMobile,
3100
+ setOpenMobile,
3101
+ toggleSidebar
3102
+ ]
3103
+ );
3104
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3105
+ "div",
3106
+ {
3107
+ style: {
3108
+ "--sidebar-width": SIDEBAR_WIDTH,
3109
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
3110
+ ...style
3111
+ },
3112
+ className: cn(
3113
+ "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",
3114
+ className
3115
+ ),
3116
+ ref,
3117
+ ...props,
3118
+ children
3119
+ }
3120
+ ) }) });
3121
+ }
3122
+ );
3123
+ SidebarProvider.displayName = "SidebarProvider";
3124
+ var Sidebar = React35.forwardRef(
3125
+ ({
3126
+ side = "left",
3127
+ variant = "sidebar",
3128
+ collapsible = "offcanvas",
3129
+ className,
3130
+ children,
3131
+ ...props
3132
+ }, ref) => {
3133
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
3134
+ if (collapsible === "none") {
3135
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3136
+ "div",
3137
+ {
3138
+ className: cn(
3139
+ "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
3140
+ className
3141
+ ),
3142
+ ref,
3143
+ ...props,
3144
+ children
3145
+ }
3146
+ );
3147
+ }
3148
+ if (isMobile) {
3149
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3150
+ SheetContent,
3151
+ {
3152
+ "data-sidebar": "sidebar",
3153
+ "data-mobile": "true",
3154
+ className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
3155
+ style: {
3156
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
3157
+ },
3158
+ side,
3159
+ children: [
3160
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(SheetHeader, { className: "sr-only", children: [
3161
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SheetTitle, { children: "Sidebar" }),
3162
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
3163
+ ] }),
3164
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-col size-full", children })
3165
+ ]
3166
+ }
3167
+ ) });
3168
+ }
3169
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3170
+ "div",
3171
+ {
3172
+ ref,
3173
+ className: "group peer hidden text-sidebar-foreground md:block",
3174
+ "data-state": state,
3175
+ "data-collapsible": state === "collapsed" ? collapsible : "",
3176
+ "data-variant": variant,
3177
+ "data-side": side,
3178
+ children: [
3179
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3180
+ "div",
3181
+ {
3182
+ className: cn(
3183
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
3184
+ "group-data-[collapsible=offcanvas]:w-0",
3185
+ "group-data-[side=right]:rotate-180",
3186
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
3187
+ )
3188
+ }
3189
+ ),
3190
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3191
+ "div",
3192
+ {
3193
+ className: cn(
3194
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
3195
+ side === "left" ? "left-0 group-data-[collapsible=offcanvas]:-left-(--sidebar-width)" : "right-0 group-data-[collapsible=offcanvas]:-right-(--sidebar-width)",
3196
+ // Adjust the padding for floating and inset variants.
3197
+ variant === "floating" || variant === "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",
3198
+ className
3199
+ ),
3200
+ ...props,
3201
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3202
+ "div",
3203
+ {
3204
+ "data-sidebar": "sidebar",
3205
+ className: "flex flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow size-full",
3206
+ children
3207
+ }
3208
+ )
3209
+ }
3210
+ )
3211
+ ]
3212
+ }
3213
+ );
3214
+ }
3215
+ );
3216
+ Sidebar.displayName = "Sidebar";
3217
+ var SidebarTrigger = React35.forwardRef(({ className, onClick, ...props }, ref) => {
3218
+ const { toggleSidebar } = useSidebar();
3219
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3220
+ Button,
3221
+ {
3222
+ ref,
3223
+ "data-sidebar": "trigger",
3224
+ variant: "ghost",
3225
+ size: "icon",
3226
+ className: cn("size-7", className),
3227
+ onClick: (event) => {
3228
+ onClick?.(event);
3229
+ toggleSidebar();
3230
+ },
3231
+ ...props,
3232
+ children: [
3233
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react18.PanelLeft, {}),
3234
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
3235
+ ]
3236
+ }
3237
+ );
3238
+ });
3239
+ SidebarTrigger.displayName = "SidebarTrigger";
3240
+ var SidebarRail = React35.forwardRef(({ className, ...props }, ref) => {
3241
+ const { toggleSidebar } = useSidebar();
3242
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3243
+ "button",
3244
+ {
3245
+ ref,
3246
+ "data-sidebar": "rail",
3247
+ "aria-label": "Toggle Sidebar",
3248
+ tabIndex: -1,
3249
+ onClick: toggleSidebar,
3250
+ title: "Toggle Sidebar",
3251
+ className: cn(
3252
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
3253
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
3254
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
3255
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
3256
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
3257
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
3258
+ className
3259
+ ),
3260
+ ...props
3261
+ }
3262
+ );
3263
+ });
3264
+ SidebarRail.displayName = "SidebarRail";
3265
+ var SidebarInset = React35.forwardRef(({ className, ...props }, ref) => {
3266
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3267
+ "main",
3268
+ {
3269
+ ref,
3270
+ className: cn(
3271
+ "relative flex w-full flex-1 flex-col bg-background",
3272
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
3273
+ className
3274
+ ),
3275
+ ...props
3276
+ }
3277
+ );
3278
+ });
3279
+ SidebarInset.displayName = "SidebarInset";
3280
+ var SidebarInput = React35.forwardRef(({ className, ...props }, ref) => {
3281
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3282
+ Input,
3283
+ {
3284
+ ref,
3285
+ "data-sidebar": "input",
3286
+ className: cn(
3287
+ "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
3288
+ className
3289
+ ),
3290
+ ...props
3291
+ }
3292
+ );
3293
+ });
3294
+ SidebarInput.displayName = "SidebarInput";
3295
+ var SidebarHeader = React35.forwardRef(({ className, ...props }, ref) => {
3296
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3297
+ "div",
3298
+ {
3299
+ ref,
3300
+ "data-sidebar": "header",
3301
+ className: cn("flex flex-col gap-2 p-2", className),
3302
+ ...props
3303
+ }
3304
+ );
3305
+ });
3306
+ SidebarHeader.displayName = "SidebarHeader";
3307
+ var SidebarFooter = React35.forwardRef(({ className, ...props }, ref) => {
3308
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3309
+ "div",
3310
+ {
3311
+ ref,
3312
+ "data-sidebar": "footer",
3313
+ className: cn("flex flex-col gap-2 p-2", className),
3314
+ ...props
3315
+ }
3316
+ );
3317
+ });
3318
+ SidebarFooter.displayName = "SidebarFooter";
3319
+ var SidebarSeparator = React35.forwardRef(({ className, ...props }, ref) => {
3320
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3321
+ Separator6,
3322
+ {
3323
+ ref,
3324
+ "data-sidebar": "separator",
3325
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
3326
+ ...props
3327
+ }
3328
+ );
3329
+ });
3330
+ SidebarSeparator.displayName = "SidebarSeparator";
3331
+ var SidebarContent = React35.forwardRef(({ className, ...props }, ref) => {
3332
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3333
+ "div",
3334
+ {
3335
+ ref,
3336
+ "data-sidebar": "content",
3337
+ className: cn(
3338
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
3339
+ className
3340
+ ),
3341
+ ...props
3342
+ }
3343
+ );
3344
+ });
3345
+ SidebarContent.displayName = "SidebarContent";
3346
+ var SidebarGroup = React35.forwardRef(({ className, ...props }, ref) => {
3347
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3348
+ "div",
3349
+ {
3350
+ ref,
3351
+ "data-sidebar": "group",
3352
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
3353
+ ...props
3354
+ }
3355
+ );
3356
+ });
3357
+ SidebarGroup.displayName = "SidebarGroup";
3358
+ var SidebarGroupLabel = React35.forwardRef(({ className, asChild = false, ...props }, ref) => {
3359
+ const Comp = asChild ? import_react_slot4.Slot : "div";
3360
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3361
+ Comp,
3362
+ {
3363
+ ref,
3364
+ "data-sidebar": "group-label",
3365
+ className: cn(
3366
+ "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3367
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
3368
+ className
3369
+ ),
3370
+ ...props
3371
+ }
3372
+ );
3373
+ });
3374
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
3375
+ var SidebarGroupAction = React35.forwardRef(({ className, asChild = false, ...props }, ref) => {
3376
+ const Comp = asChild ? import_react_slot4.Slot : "button";
3377
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3378
+ Comp,
3379
+ {
3380
+ ref,
3381
+ "data-sidebar": "group-action",
3382
+ className: cn(
3383
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3384
+ // Increases the hit area of the button on mobile.
3385
+ "after:absolute after:-inset-2 after:md:hidden",
3386
+ "group-data-[collapsible=icon]:hidden",
3387
+ className
3388
+ ),
3389
+ ...props
3390
+ }
3391
+ );
3392
+ });
3393
+ SidebarGroupAction.displayName = "SidebarGroupAction";
3394
+ var SidebarGroupContent = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3395
+ "div",
3396
+ {
3397
+ ref,
3398
+ "data-sidebar": "group-content",
3399
+ className: cn("w-full text-sm", className),
3400
+ ...props
3401
+ }
3402
+ ));
3403
+ SidebarGroupContent.displayName = "SidebarGroupContent";
3404
+ var SidebarMenu = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3405
+ "ul",
3406
+ {
3407
+ ref,
3408
+ "data-sidebar": "menu",
3409
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
3410
+ ...props
3411
+ }
3412
+ ));
3413
+ SidebarMenu.displayName = "SidebarMenu";
3414
+ var SidebarMenuItem = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3415
+ "li",
3416
+ {
3417
+ ref,
3418
+ "data-sidebar": "menu-item",
3419
+ className: cn("group/menu-item relative", className),
3420
+ ...props
3421
+ }
3422
+ ));
3423
+ SidebarMenuItem.displayName = "SidebarMenuItem";
3424
+ var sidebarMenuButtonVariants = (0, import_class_variance_authority7.cva)(
3425
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring cursor-pointer transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
3426
+ {
3427
+ variants: {
3428
+ variant: {
3429
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
3430
+ outline: "bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"
3431
+ },
3432
+ size: {
3433
+ default: "h-8 text-sm",
3434
+ sm: "h-7 text-xs",
3435
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
3436
+ }
3437
+ },
3438
+ defaultVariants: {
3439
+ variant: "default",
3440
+ size: "default"
3441
+ }
3442
+ }
3443
+ );
3444
+ var SidebarMenuButton = React35.forwardRef(
3445
+ ({
3446
+ asChild = false,
3447
+ isActive = false,
3448
+ variant = "default",
3449
+ size = "default",
3450
+ tooltip,
3451
+ className,
3452
+ ...props
3453
+ }, ref) => {
3454
+ const Comp = asChild ? import_react_slot4.Slot : "button";
3455
+ const { isMobile, state } = useSidebar();
3456
+ const button = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3457
+ Comp,
3458
+ {
3459
+ ref,
3460
+ "data-sidebar": "menu-button",
3461
+ "data-size": size,
3462
+ "data-active": isActive,
3463
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
3464
+ ...props
3465
+ }
3466
+ );
3467
+ if (!tooltip) {
3468
+ return button;
3469
+ }
3470
+ if (typeof tooltip === "string") {
3471
+ tooltip = {
3472
+ children: tooltip
3473
+ };
3474
+ }
3475
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Tooltip2, { children: [
3476
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipTrigger, { asChild: true, children: button }),
3477
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3478
+ TooltipContent,
3479
+ {
3480
+ side: "right",
3481
+ align: "center",
3482
+ hidden: state !== "collapsed" || isMobile,
3483
+ ...tooltip
3484
+ }
3485
+ )
3486
+ ] });
3487
+ }
3488
+ );
3489
+ SidebarMenuButton.displayName = "SidebarMenuButton";
3490
+ var SidebarMenuAction = React35.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
3491
+ const Comp = asChild ? import_react_slot4.Slot : "button";
3492
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3493
+ Comp,
3494
+ {
3495
+ ref,
3496
+ "data-sidebar": "menu-action",
3497
+ className: cn(
3498
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
3499
+ // Increases the hit area of the button on mobile.
3500
+ "after:absolute after:-inset-2 after:md:hidden",
3501
+ "peer-data-[size=sm]/menu-button:top-1",
3502
+ "peer-data-[size=default]/menu-button:top-1.5",
3503
+ "peer-data-[size=lg]/menu-button:top-2.5",
3504
+ "group-data-[collapsible=icon]:hidden",
3505
+ showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
3506
+ className
3507
+ ),
3508
+ ...props
3509
+ }
3510
+ );
3511
+ });
3512
+ SidebarMenuAction.displayName = "SidebarMenuAction";
3513
+ var SidebarMenuBadge = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3514
+ "div",
3515
+ {
3516
+ ref,
3517
+ "data-sidebar": "menu-badge",
3518
+ className: cn(
3519
+ "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground",
3520
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
3521
+ "peer-data-[size=sm]/menu-button:top-1",
3522
+ "peer-data-[size=default]/menu-button:top-1.5",
3523
+ "peer-data-[size=lg]/menu-button:top-2.5",
3524
+ "group-data-[collapsible=icon]:hidden",
3525
+ className
3526
+ ),
3527
+ ...props
3528
+ }
3529
+ ));
3530
+ SidebarMenuBadge.displayName = "SidebarMenuBadge";
3531
+ var SidebarMenuSkeleton = React35.forwardRef(({ className, showIcon = false, ...props }, ref) => {
3532
+ const width = React35.useMemo(() => {
3533
+ return `${Math.floor(Math.random() * 40) + 50}%`;
3534
+ }, []);
3535
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3536
+ "div",
3537
+ {
3538
+ ref,
3539
+ "data-sidebar": "menu-skeleton",
3540
+ className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
3541
+ ...props,
3542
+ children: [
3543
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3544
+ Skeleton,
3545
+ {
3546
+ className: "size-4 rounded-md",
3547
+ "data-sidebar": "menu-skeleton-icon"
3548
+ }
3549
+ ),
3550
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3551
+ Skeleton,
3552
+ {
3553
+ className: "h-4 max-w-(--skeleton-width) flex-1",
3554
+ "data-sidebar": "menu-skeleton-text",
3555
+ style: {
3556
+ "--skeleton-width": width
3557
+ }
3558
+ }
3559
+ )
3560
+ ]
3561
+ }
3562
+ );
3563
+ });
3564
+ SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
3565
+ var SidebarMenuSub = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3566
+ "ul",
3567
+ {
3568
+ ref,
3569
+ "data-sidebar": "menu-sub",
3570
+ className: cn(
3571
+ "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
3572
+ "group-data-[collapsible=icon]:hidden",
3573
+ className
3574
+ ),
3575
+ ...props
3576
+ }
3577
+ ));
3578
+ SidebarMenuSub.displayName = "SidebarMenuSub";
3579
+ var SidebarMenuSubItem = React35.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { ref, ...props }));
3580
+ SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
3581
+ var SidebarMenuSubButton = React35.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
3582
+ const Comp = asChild ? import_react_slot4.Slot : "a";
3583
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3584
+ Comp,
3585
+ {
3586
+ ref,
3587
+ "data-sidebar": "menu-sub-button",
3588
+ "data-size": size,
3589
+ "data-active": isActive,
3590
+ className: cn(
3591
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
3592
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
3593
+ size === "sm" && "text-xs",
3594
+ size === "md" && "text-sm",
3595
+ "group-data-[collapsible=icon]:hidden",
3596
+ className
3597
+ ),
3598
+ ...props
3599
+ }
3600
+ );
3601
+ });
3602
+ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
3603
+
3604
+ // src/components/slider.tsx
3605
+ var React36 = __toESM(require("react"), 1);
3606
+ var SliderPrimitive = __toESM(require("@radix-ui/react-slider"), 1);
3607
+ var import_jsx_runtime38 = require("react/jsx-runtime");
3608
+ var Slider = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3609
+ SliderPrimitive.Root,
3610
+ {
3611
+ ref,
3612
+ className: cn(
3613
+ "relative flex w-full touch-none select-none items-center",
3614
+ className
3615
+ ),
3616
+ ...props,
3617
+ children: [
3618
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
3619
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SliderPrimitive.Thumb, { className: "block rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 size-4" })
3620
+ ]
3621
+ }
3622
+ ));
3623
+ Slider.displayName = SliderPrimitive.Root.displayName;
3624
+
3625
+ // src/components/sonner.tsx
3626
+ var import_sonner = require("sonner");
3627
+ var import_jsx_runtime39 = require("react/jsx-runtime");
3628
+ var Toaster = ({ ...props }) => {
3629
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3630
+ import_sonner.Toaster,
3631
+ {
3632
+ className: "toaster group",
3633
+ toastOptions: {
3634
+ classNames: {
3635
+ toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
3636
+ description: "group-[.toast]:text-muted-foreground",
3637
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
3638
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
3639
+ }
3640
+ },
3641
+ ...props
3642
+ }
3643
+ );
3644
+ };
3645
+
3646
+ // src/components/switch.tsx
3647
+ var React37 = __toESM(require("react"), 1);
3648
+ var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
3649
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3650
+ var Switch = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3651
+ SwitchPrimitives.Root,
3652
+ {
3653
+ className: cn(
3654
+ "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
3655
+ className
3656
+ ),
3657
+ ...props,
3658
+ ref,
3659
+ children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3660
+ SwitchPrimitives.Thumb,
3661
+ {
3662
+ className: cn(
3663
+ "pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0 size-4"
3664
+ )
3665
+ }
3666
+ )
3667
+ }
3668
+ ));
3669
+ Switch.displayName = SwitchPrimitives.Root.displayName;
3670
+
3671
+ // src/components/table.tsx
3672
+ var React38 = __toESM(require("react"), 1);
3673
+ var import_jsx_runtime41 = require("react/jsx-runtime");
3674
+ var Table = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3675
+ "table",
3676
+ {
3677
+ ref,
3678
+ className: cn("w-full caption-bottom text-sm", className),
3679
+ ...props
3680
+ }
3681
+ ) }));
3682
+ Table.displayName = "Table";
3683
+ var TableHeader = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
3684
+ TableHeader.displayName = "TableHeader";
3685
+ var TableBody = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3686
+ "tbody",
3687
+ {
3688
+ ref,
3689
+ className: cn("[&_tr:last-child]:border-0", className),
3690
+ ...props
3691
+ }
3692
+ ));
3693
+ TableBody.displayName = "TableBody";
3694
+ var TableFooter = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3695
+ "tfoot",
3696
+ {
3697
+ ref,
3698
+ className: cn(
3699
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
3700
+ className
3701
+ ),
3702
+ ...props
3703
+ }
3704
+ ));
3705
+ TableFooter.displayName = "TableFooter";
3706
+ var TableRow = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3707
+ "tr",
3708
+ {
3709
+ ref,
3710
+ className: cn(
3711
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
3712
+ className
3713
+ ),
3714
+ ...props
3715
+ }
3716
+ ));
3717
+ TableRow.displayName = "TableRow";
3718
+ var TableHead = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3719
+ "th",
3720
+ {
3721
+ ref,
3722
+ className: cn(
3723
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground has-[[role=checkbox]]:pr-0 *:[[role=checkbox]]:translate-y-[2px]",
3724
+ className
3725
+ ),
3726
+ ...props
3727
+ }
3728
+ ));
3729
+ TableHead.displayName = "TableHead";
3730
+ var TableCell = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3731
+ "td",
3732
+ {
3733
+ ref,
3734
+ className: cn(
3735
+ "p-2 align-middle has-[[role=checkbox]]:pr-0 *:[[role=checkbox]]:translate-y-[2px]",
3736
+ className
3737
+ ),
3738
+ ...props
3739
+ }
3740
+ ));
3741
+ TableCell.displayName = "TableCell";
3742
+ var TableCaption = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3743
+ "caption",
3744
+ {
3745
+ ref,
3746
+ className: cn("mt-4 text-sm text-muted-foreground", className),
3747
+ ...props
3748
+ }
3749
+ ));
3750
+ TableCaption.displayName = "TableCaption";
3751
+
3752
+ // src/components/tabs.tsx
3753
+ var React39 = __toESM(require("react"), 1);
3754
+ var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
3755
+ var import_jsx_runtime42 = require("react/jsx-runtime");
3756
+ var Tabs = TabsPrimitive.Root;
3757
+ var TabsList = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3758
+ TabsPrimitive.List,
3759
+ {
3760
+ ref,
3761
+ className: cn(
3762
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
3763
+ className
3764
+ ),
3765
+ ...props
3766
+ }
3767
+ ));
3768
+ TabsList.displayName = TabsPrimitive.List.displayName;
3769
+ var TabsTrigger = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3770
+ TabsPrimitive.Trigger,
3771
+ {
3772
+ ref,
3773
+ className: cn(
3774
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background cursor-pointer transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
3775
+ className
3776
+ ),
3777
+ ...props
3778
+ }
3779
+ ));
3780
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3781
+ var TabsContent = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3782
+ TabsPrimitive.Content,
3783
+ {
3784
+ ref,
3785
+ className: cn(
3786
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
3787
+ className
3788
+ ),
3789
+ ...props
3790
+ }
3791
+ ));
3792
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
3793
+
3794
+ // src/components/textarea.tsx
3795
+ var React40 = __toESM(require("react"), 1);
3796
+ var import_jsx_runtime43 = require("react/jsx-runtime");
3797
+ var Textarea = React40.forwardRef(({ className, ...props }, ref) => {
3798
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
3799
+ "textarea",
3800
+ {
3801
+ className: cn(
3802
+ "flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
3803
+ className
3804
+ ),
3805
+ ref,
3806
+ ...props
3807
+ }
3808
+ );
3809
+ });
3810
+ Textarea.displayName = "Textarea";
3811
+
3812
+ // src/components/toggle-group.tsx
3813
+ var React42 = __toESM(require("react"), 1);
3814
+ var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
3815
+
3816
+ // src/components/toggle.tsx
3817
+ var React41 = __toESM(require("react"), 1);
3818
+ var TogglePrimitive = __toESM(require("@radix-ui/react-toggle"), 1);
3819
+ var import_class_variance_authority8 = require("class-variance-authority");
3820
+ var import_jsx_runtime44 = require("react/jsx-runtime");
3821
+ var toggleVariants = (0, import_class_variance_authority8.cva)(
3822
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium cursor-pointer transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3823
+ {
3824
+ variants: {
3825
+ variant: {
3826
+ default: "bg-transparent",
3827
+ outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
3828
+ },
3829
+ size: {
3830
+ default: "h-9 px-2 min-w-9",
3831
+ sm: "h-8 px-1.5 min-w-8",
3832
+ lg: "h-10 px-2.5 min-w-10"
3833
+ }
3834
+ },
3835
+ defaultVariants: {
3836
+ variant: "default",
3837
+ size: "default"
3838
+ }
3839
+ }
3840
+ );
3841
+ var Toggle = React41.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3842
+ TogglePrimitive.Root,
3843
+ {
3844
+ ref,
3845
+ className: cn(toggleVariants({ variant, size, className })),
3846
+ ...props
3847
+ }
3848
+ ));
3849
+ Toggle.displayName = TogglePrimitive.Root.displayName;
3850
+
3851
+ // src/components/toggle-group.tsx
3852
+ var import_jsx_runtime45 = require("react/jsx-runtime");
3853
+ var ToggleGroupContext = React42.createContext({
3854
+ size: "default",
3855
+ variant: "default"
3856
+ });
3857
+ var ToggleGroup = React42.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3858
+ ToggleGroupPrimitive.Root,
3859
+ {
3860
+ ref,
3861
+ className: cn("flex items-center justify-center gap-1", className),
3862
+ ...props,
3863
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
3864
+ }
3865
+ ));
3866
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
3867
+ var ToggleGroupItem = React42.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3868
+ const context = React42.useContext(ToggleGroupContext);
3869
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3870
+ ToggleGroupPrimitive.Item,
3871
+ {
3872
+ ref,
3873
+ className: cn(
3874
+ toggleVariants({
3875
+ variant: context.variant || variant,
3876
+ size: context.size || size
3877
+ }),
3878
+ className
3879
+ ),
3880
+ ...props,
3881
+ children
3882
+ }
3883
+ );
3884
+ });
3885
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
3886
+
3887
+ // src/components/panel.tsx
3888
+ var React43 = __toESM(require("react"), 1);
3889
+ var import_jsx_runtime46 = require("react/jsx-runtime");
3890
+ var Panel2 = React43.forwardRef(
3891
+ ({ title, meta, children, className, ...props }, ref) => {
3892
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
3893
+ "section",
3894
+ {
3895
+ ref,
3896
+ className: cn("rounded-lg border border-border bg-card p-4", className),
3897
+ ...props,
3898
+ children: [
3899
+ title ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "mb-3 flex items-center gap-2", children: [
3900
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("h2", { className: "font-display text-sm font-semibold", children: title }),
3901
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "ml-auto font-mono text-[10px] text-muted-foreground", children: meta }) : null
3902
+ ] }) : null,
3903
+ children
3904
+ ]
3905
+ }
3906
+ );
3907
+ }
3908
+ );
3909
+ Panel2.displayName = "Panel";
3910
+
3911
+ // src/components/status-chip.tsx
3912
+ var React44 = __toESM(require("react"), 1);
3913
+ var import_jsx_runtime47 = require("react/jsx-runtime");
3914
+ var statusTone = {
3915
+ active: "border-primary/30 bg-primary/10 text-primary",
3916
+ running: "border-primary/30 bg-primary/10 text-primary",
3917
+ completed: "border-border bg-secondary text-muted-foreground",
3918
+ done: "border-border bg-secondary text-muted-foreground",
3919
+ indexed: "border-primary/30 bg-primary/10 text-primary",
3920
+ enabled: "border-primary/30 bg-primary/10 text-primary",
3921
+ available: "border-primary/30 bg-primary/10 text-primary",
3922
+ published: "border-primary/30 bg-primary/10 text-primary",
3923
+ ok: "border-primary/30 bg-primary/10 text-primary",
3924
+ waiting: "border-warning/35 bg-warning/10 text-warning",
3925
+ paused: "border-warning/35 bg-warning/10 text-warning",
3926
+ processing: "border-warning/35 bg-warning/10 text-warning",
3927
+ degraded: "border-warning/35 bg-warning/10 text-warning",
3928
+ warn: "border-warning/35 bg-warning/10 text-warning",
3929
+ "requires-approval": "border-warning/35 bg-warning/10 text-warning",
3930
+ draft: "border-warning/35 bg-warning/10 text-warning",
3931
+ failed: "border-destructive/35 bg-destructive/10 text-destructive",
3932
+ error: "border-destructive/35 bg-destructive/10 text-destructive",
3933
+ offline: "border-destructive/35 bg-destructive/10 text-destructive"
3934
+ };
3935
+ var StatusChip = React44.forwardRef(
3936
+ ({ status, className, ...props }, ref) => {
3937
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
3938
+ "span",
3939
+ {
3940
+ ref,
3941
+ className: cn(
3942
+ "inline-flex items-center gap-1.5 rounded-md border px-2 py-0.5 font-mono text-[10px]",
3943
+ statusTone[status] ?? "border-border bg-secondary text-muted-foreground",
3944
+ className
3945
+ ),
3946
+ ...props,
3947
+ children: [
3948
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "size-1.5 rounded-full bg-current" }),
3949
+ status
3950
+ ]
3951
+ }
3952
+ );
3953
+ }
3954
+ );
3955
+ StatusChip.displayName = "StatusChip";
3956
+
3957
+ // src/components/date-picker.tsx
3958
+ var React45 = __toESM(require("react"), 1);
3959
+ var import_date_fns = require("date-fns");
3960
+ var import_lucide_react19 = require("lucide-react");
3961
+ var import_jsx_runtime48 = require("react/jsx-runtime");
3962
+ function DatePicker({
3963
+ value,
3964
+ onChange,
3965
+ placeholder = "Pick a date",
3966
+ className,
3967
+ disabled
3968
+ }) {
3969
+ const date = React45.useMemo(() => {
3970
+ if (!value) return void 0;
3971
+ const parts = value.split("-");
3972
+ if (parts.length !== 3) {
3973
+ const d = new Date(value);
3974
+ return isNaN(d.getTime()) ? void 0 : d;
3975
+ }
3976
+ const year = parseInt(parts[0], 10);
3977
+ const month = parseInt(parts[1], 10) - 1;
3978
+ const day = parseInt(parts[2], 10);
3979
+ return new Date(year, month, day, 12, 0, 0);
3980
+ }, [value]);
3981
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(Popover, { children: [
3982
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3983
+ Button,
3984
+ {
3985
+ variant: "outline",
3986
+ type: "button",
3987
+ disabled,
3988
+ className: cn(
3989
+ "border-border/80 bg-secondary/40 hover:bg-secondary/60 hover:text-foreground h-9 w-full justify-start text-left font-normal",
3990
+ !value && "text-muted-foreground",
3991
+ className
3992
+ ),
3993
+ children: [
3994
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react19.Calendar, { className: "mr-2 size-4" }),
3995
+ date && !isNaN(date.getTime()) ? (0, import_date_fns.format)(date, "PPP") : /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { children: placeholder })
3996
+ ]
3997
+ }
3998
+ ) }),
3999
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
4000
+ Calendar,
4001
+ {
4002
+ mode: "single",
4003
+ selected: date,
4004
+ onSelect: (selectedDate) => onChange?.(selectedDate ? (0, import_date_fns.format)(selectedDate, "yyyy-MM-dd") : ""),
4005
+ initialFocus: true
4006
+ }
4007
+ ) })
4008
+ ] });
4009
+ }
4010
+
4011
+ // src/components/searchable-select.tsx
4012
+ var React46 = __toESM(require("react"), 1);
4013
+ var import_lucide_react20 = require("lucide-react");
4014
+ var import_jsx_runtime49 = require("react/jsx-runtime");
4015
+ function SearchableSelect({
4016
+ options,
4017
+ value,
4018
+ onChange,
4019
+ placeholder = "Select an option...",
4020
+ searchPlaceholder = "Search...",
4021
+ onAddNew,
4022
+ addNewLabel = "Add new",
4023
+ disabled = false,
4024
+ className,
4025
+ id
4026
+ }) {
4027
+ const [open, setOpen] = React46.useState(false);
4028
+ const [search, setSearch] = React46.useState("");
4029
+ const [highlightedIndex, setHighlightedIndex] = React46.useState(0);
4030
+ const listRef = React46.useRef(null);
4031
+ const selectedOption = React46.useMemo(() => {
4032
+ return options.find((opt) => opt.value === value);
4033
+ }, [options, value]);
4034
+ const filteredOptions = React46.useMemo(() => {
4035
+ if (!search.trim()) return options;
4036
+ const q = search.toLowerCase();
4037
+ return options.filter(
4038
+ (opt) => opt.label.toLowerCase().includes(q) || opt.group && opt.group.toLowerCase().includes(q)
4039
+ );
4040
+ }, [options, search]);
4041
+ const handleOpenChange = (newOpen) => {
4042
+ setOpen(newOpen);
4043
+ if (newOpen) {
4044
+ const idx = filteredOptions.findIndex((opt) => opt.value === value);
4045
+ setHighlightedIndex(idx >= 0 ? idx : 0);
4046
+ } else {
4047
+ setSearch("");
4048
+ }
4049
+ };
4050
+ const handleSearchChange = (newSearch) => {
4051
+ setSearch(newSearch);
4052
+ setHighlightedIndex(0);
4053
+ };
4054
+ React46.useEffect(() => {
4055
+ if (open && listRef.current) {
4056
+ const activeEl = listRef.current.querySelector(
4057
+ "[data-highlighted='true']"
4058
+ );
4059
+ if (activeEl) {
4060
+ activeEl.scrollIntoView({ block: "nearest" });
4061
+ }
4062
+ }
4063
+ }, [highlightedIndex, open]);
4064
+ const groupedOptions = React46.useMemo(() => {
4065
+ const hasGroups = filteredOptions.some((opt) => opt.group);
4066
+ if (!hasGroups) return { Default: filteredOptions };
4067
+ return filteredOptions.reduce(
4068
+ (acc, opt) => {
4069
+ const g = opt.group || "Other";
4070
+ if (!acc[g]) acc[g] = [];
4071
+ acc[g].push(opt);
4072
+ return acc;
4073
+ },
4074
+ {}
4075
+ );
4076
+ }, [filteredOptions]);
4077
+ const handleSelect = (val) => {
4078
+ onChange?.(val);
4079
+ setOpen(false);
4080
+ setSearch("");
4081
+ };
4082
+ const handleAddNew = () => {
4083
+ onAddNew?.(search.trim());
4084
+ setOpen(false);
4085
+ setSearch("");
4086
+ };
4087
+ const handleKeyDown = (e) => {
4088
+ if (!open) {
4089
+ if (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") {
4090
+ e.preventDefault();
4091
+ handleOpenChange(true);
4092
+ }
4093
+ return;
4094
+ }
4095
+ switch (e.key) {
4096
+ case "ArrowDown":
4097
+ e.preventDefault();
4098
+ setHighlightedIndex(
4099
+ (prev) => prev < filteredOptions.length - 1 ? prev + 1 : prev
4100
+ );
4101
+ break;
4102
+ case "ArrowUp":
4103
+ e.preventDefault();
4104
+ setHighlightedIndex((prev) => prev > 0 ? prev - 1 : 0);
4105
+ break;
4106
+ case "Enter":
4107
+ e.preventDefault();
4108
+ if (filteredOptions.length > 0 && filteredOptions[highlightedIndex]) {
4109
+ handleSelect(filteredOptions[highlightedIndex].value);
4110
+ } else if (onAddNew && search.trim()) {
4111
+ handleAddNew();
4112
+ }
4113
+ break;
4114
+ case "Escape":
4115
+ case "Tab":
4116
+ e.preventDefault();
4117
+ handleOpenChange(false);
4118
+ break;
4119
+ }
4120
+ };
4121
+ let currentIndex = 0;
4122
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Popover, { open, onOpenChange: handleOpenChange, children: [
4123
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
4124
+ Button,
4125
+ {
4126
+ id,
4127
+ variant: "outline",
4128
+ role: "combobox",
4129
+ "aria-expanded": open,
4130
+ disabled,
4131
+ onKeyDown: handleKeyDown,
4132
+ className: cn(
4133
+ "bg-background border-input hover:bg-accent/50 h-9 w-full justify-between px-3 text-left font-normal",
4134
+ !selectedOption && "text-muted-foreground",
4135
+ className
4136
+ ),
4137
+ children: [
4138
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder }),
4139
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.ChevronDown, { className: "ml-2 size-4 shrink-0 opacity-50" })
4140
+ ]
4141
+ }
4142
+ ) }),
4143
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
4144
+ PopoverContent,
4145
+ {
4146
+ align: "start",
4147
+ className: "border-border bg-popover w-(--radix-popover-trigger-width) min-w-55 border p-0 shadow-lg",
4148
+ onKeyDown: handleKeyDown,
4149
+ children: [
4150
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "border-border flex items-center gap-2 border-b p-2", children: [
4151
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Search, { className: "text-muted-foreground size-4 shrink-0 opacity-50" }),
4152
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
4153
+ Input,
4154
+ {
4155
+ placeholder: searchPlaceholder,
4156
+ value: search,
4157
+ onChange: (e) => handleSearchChange(e.target.value),
4158
+ className: "h-8 border-none bg-transparent px-1 text-sm focus-visible:ring-0 focus-visible:ring-offset-0",
4159
+ autoFocus: true
4160
+ }
4161
+ )
4162
+ ] }),
4163
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
4164
+ "div",
4165
+ {
4166
+ ref: listRef,
4167
+ onWheel: (e) => e.stopPropagation(),
4168
+ className: "max-h-60 overflow-y-auto overscroll-contain p-1 text-sm",
4169
+ children: Object.keys(groupedOptions).length === 0 || filteredOptions.length === 0 && !onAddNew ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "text-muted-foreground py-6 text-center text-xs", children: "No matching options found." }) : Object.entries(groupedOptions).map(([groupName, groupOpts]) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "py-1", children: [
4170
+ groupName !== "Default" && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "text-muted-foreground/70 px-2 py-1 text-[10px] font-bold tracking-wider uppercase", children: groupName }),
4171
+ groupOpts.map((option) => {
4172
+ const isSelected = option.value === value;
4173
+ const itemIndex = currentIndex++;
4174
+ const isHighlighted = itemIndex === highlightedIndex;
4175
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
4176
+ "div",
4177
+ {
4178
+ "data-highlighted": isHighlighted,
4179
+ onClick: () => handleSelect(option.value),
4180
+ onMouseEnter: () => setHighlightedIndex(itemIndex),
4181
+ className: cn(
4182
+ "relative flex cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-sm transition-colors outline-none select-none",
4183
+ isHighlighted && "bg-accent text-accent-foreground font-medium",
4184
+ isSelected && !isHighlighted && "bg-accent/40 text-accent-foreground font-medium"
4185
+ ),
4186
+ children: [
4187
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "flex-1 truncate", children: option.label }),
4188
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Check, { className: "text-primary ml-2 size-4 shrink-0" })
4189
+ ]
4190
+ },
4191
+ option.value
4192
+ );
4193
+ })
4194
+ ] }, groupName))
4195
+ }
4196
+ ),
4197
+ onAddNew && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "border-border bg-muted/30 border-t p-1", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
4198
+ "button",
4199
+ {
4200
+ type: "button",
4201
+ onClick: handleAddNew,
4202
+ className: "text-primary hover:bg-primary/10 flex w-full items-center gap-2 rounded-sm px-2.5 py-2 text-xs font-semibold transition-colors",
4203
+ children: [
4204
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Plus, { className: "size-3.5 shrink-0" }),
4205
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "truncate", children: search.trim() ? `${addNewLabel} "${search.trim()}"` : `${addNewLabel}` })
4206
+ ]
4207
+ }
4208
+ ) })
4209
+ ]
4210
+ }
4211
+ )
4212
+ ] });
4213
+ }
4214
+
4215
+ // src/components/confirm-dialog.tsx
4216
+ var import_jsx_runtime50 = require("react/jsx-runtime");
4217
+ function ConfirmDialog({
4218
+ open,
4219
+ onOpenChange,
4220
+ title,
4221
+ description,
4222
+ onConfirm,
4223
+ confirmText = "Confirm",
4224
+ cancelText = "Cancel",
4225
+ destructive = false
4226
+ }) {
4227
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(AlertDialogContent, { children: [
4228
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(AlertDialogHeader, { children: [
4229
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AlertDialogTitle, { children: title }),
4230
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AlertDialogDescription, { children: description })
4231
+ ] }),
4232
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(AlertDialogFooter, { children: [
4233
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AlertDialogCancel, { children: cancelText }),
4234
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
4235
+ AlertDialogAction,
4236
+ {
4237
+ onClick: onConfirm,
4238
+ className: destructive ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : "",
4239
+ children: confirmText
4240
+ }
4241
+ )
4242
+ ] })
4243
+ ] }) });
4244
+ }
4245
+
4246
+ // src/components/loading-state.tsx
4247
+ var import_jsx_runtime51 = require("react/jsx-runtime");
4248
+ function LoadingState({
4249
+ rows = 3,
4250
+ className,
4251
+ ...props
4252
+ }) {
4253
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: cn("w-full space-y-4 p-2", className), ...props, children: [
4254
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Skeleton, { className: "h-8 w-1/3" }),
4255
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "space-y-2", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Skeleton, { className: "h-16 w-full rounded-xl" }, i)) })
4256
+ ] });
4257
+ }
4258
+ // Annotate the CommonJS export names for ESM import in node:
4259
+ 0 && (module.exports = {
4260
+ Accordion,
4261
+ AccordionContent,
4262
+ AccordionItem,
4263
+ AccordionTrigger,
4264
+ Alert,
4265
+ AlertDescription,
4266
+ AlertDialog,
4267
+ AlertDialogAction,
4268
+ AlertDialogCancel,
4269
+ AlertDialogContent,
4270
+ AlertDialogDescription,
4271
+ AlertDialogFooter,
4272
+ AlertDialogHeader,
4273
+ AlertDialogOverlay,
4274
+ AlertDialogPortal,
4275
+ AlertDialogTitle,
4276
+ AlertDialogTrigger,
4277
+ AlertTitle,
4278
+ AspectRatio,
4279
+ Avatar,
4280
+ AvatarFallback,
4281
+ AvatarImage,
4282
+ Badge,
4283
+ Breadcrumb,
4284
+ BreadcrumbEllipsis,
4285
+ BreadcrumbItem,
4286
+ BreadcrumbLink,
4287
+ BreadcrumbList,
4288
+ BreadcrumbPage,
4289
+ BreadcrumbSeparator,
4290
+ Button,
4291
+ Calendar,
4292
+ CalendarDayButton,
4293
+ Card,
4294
+ CardContent,
4295
+ CardDescription,
4296
+ CardFooter,
4297
+ CardHeader,
4298
+ CardTitle,
4299
+ Carousel,
4300
+ CarouselContent,
4301
+ CarouselItem,
4302
+ CarouselNext,
4303
+ CarouselPrevious,
4304
+ ChartContainer,
4305
+ ChartLegend,
4306
+ ChartLegendContent,
4307
+ ChartStyle,
4308
+ ChartTooltip,
4309
+ ChartTooltipContent,
4310
+ Checkbox,
4311
+ Collapsible,
4312
+ CollapsibleContent,
4313
+ CollapsibleTrigger,
4314
+ Command,
4315
+ CommandDialog,
4316
+ CommandEmpty,
4317
+ CommandGroup,
4318
+ CommandInput,
4319
+ CommandItem,
4320
+ CommandList,
4321
+ CommandSeparator,
4322
+ CommandShortcut,
4323
+ ConfirmDialog,
4324
+ ContextMenu,
4325
+ ContextMenuCheckboxItem,
4326
+ ContextMenuContent,
4327
+ ContextMenuGroup,
4328
+ ContextMenuItem,
4329
+ ContextMenuLabel,
4330
+ ContextMenuPortal,
4331
+ ContextMenuRadioGroup,
4332
+ ContextMenuRadioItem,
4333
+ ContextMenuSeparator,
4334
+ ContextMenuShortcut,
4335
+ ContextMenuSub,
4336
+ ContextMenuSubContent,
4337
+ ContextMenuSubTrigger,
4338
+ ContextMenuTrigger,
4339
+ DatePicker,
4340
+ Dialog,
4341
+ DialogClose,
4342
+ DialogContent,
4343
+ DialogDescription,
4344
+ DialogFooter,
4345
+ DialogHeader,
4346
+ DialogOverlay,
4347
+ DialogPortal,
4348
+ DialogTitle,
4349
+ DialogTrigger,
4350
+ Drawer,
4351
+ DrawerClose,
4352
+ DrawerContent,
4353
+ DrawerDescription,
4354
+ DrawerFooter,
4355
+ DrawerHeader,
4356
+ DrawerOverlay,
4357
+ DrawerPortal,
4358
+ DrawerTitle,
4359
+ DrawerTrigger,
4360
+ DropdownMenu,
4361
+ DropdownMenuCheckboxItem,
4362
+ DropdownMenuContent,
4363
+ DropdownMenuGroup,
4364
+ DropdownMenuItem,
4365
+ DropdownMenuLabel,
4366
+ DropdownMenuPortal,
4367
+ DropdownMenuRadioGroup,
4368
+ DropdownMenuRadioItem,
4369
+ DropdownMenuSeparator,
4370
+ DropdownMenuShortcut,
4371
+ DropdownMenuSub,
4372
+ DropdownMenuSubContent,
4373
+ DropdownMenuSubTrigger,
4374
+ DropdownMenuTrigger,
4375
+ Form,
4376
+ FormControl,
4377
+ FormDescription,
4378
+ FormField,
4379
+ FormItem,
4380
+ FormLabel,
4381
+ FormMessage,
4382
+ HoverCard,
4383
+ HoverCardContent,
4384
+ HoverCardTrigger,
4385
+ Input,
4386
+ InputOTP,
4387
+ InputOTPGroup,
4388
+ InputOTPSeparator,
4389
+ InputOTPSlot,
4390
+ Label,
4391
+ LoadingState,
4392
+ Menubar,
4393
+ MenubarCheckboxItem,
4394
+ MenubarContent,
4395
+ MenubarGroup,
4396
+ MenubarItem,
4397
+ MenubarLabel,
4398
+ MenubarMenu,
4399
+ MenubarPortal,
4400
+ MenubarRadioGroup,
4401
+ MenubarRadioItem,
4402
+ MenubarSeparator,
4403
+ MenubarShortcut,
4404
+ MenubarSub,
4405
+ MenubarSubContent,
4406
+ MenubarSubTrigger,
4407
+ MenubarTrigger,
4408
+ NavigationMenu,
4409
+ NavigationMenuContent,
4410
+ NavigationMenuIndicator,
4411
+ NavigationMenuItem,
4412
+ NavigationMenuLink,
4413
+ NavigationMenuList,
4414
+ NavigationMenuTrigger,
4415
+ NavigationMenuViewport,
4416
+ Pagination,
4417
+ PaginationContent,
4418
+ PaginationEllipsis,
4419
+ PaginationItem,
4420
+ PaginationLink,
4421
+ PaginationNext,
4422
+ PaginationPrevious,
4423
+ Panel,
4424
+ Popover,
4425
+ PopoverAnchor,
4426
+ PopoverContent,
4427
+ PopoverTrigger,
4428
+ Progress,
4429
+ RadioGroup,
4430
+ RadioGroupItem,
4431
+ ResizableHandle,
4432
+ ResizablePanel,
4433
+ ResizablePanelGroup,
4434
+ ScrollArea,
4435
+ ScrollBar,
4436
+ SearchableSelect,
4437
+ Select,
4438
+ SelectContent,
4439
+ SelectGroup,
4440
+ SelectItem,
4441
+ SelectLabel,
4442
+ SelectScrollDownButton,
4443
+ SelectScrollUpButton,
4444
+ SelectSeparator,
4445
+ SelectTrigger,
4446
+ SelectValue,
4447
+ Separator,
4448
+ Sheet,
4449
+ SheetClose,
4450
+ SheetContent,
4451
+ SheetDescription,
4452
+ SheetFooter,
4453
+ SheetHeader,
4454
+ SheetOverlay,
4455
+ SheetPortal,
4456
+ SheetTitle,
4457
+ SheetTrigger,
4458
+ Sidebar,
4459
+ SidebarContent,
4460
+ SidebarFooter,
4461
+ SidebarGroup,
4462
+ SidebarGroupAction,
4463
+ SidebarGroupContent,
4464
+ SidebarGroupLabel,
4465
+ SidebarHeader,
4466
+ SidebarInput,
4467
+ SidebarInset,
4468
+ SidebarMenu,
4469
+ SidebarMenuAction,
4470
+ SidebarMenuBadge,
4471
+ SidebarMenuButton,
4472
+ SidebarMenuItem,
4473
+ SidebarMenuSkeleton,
4474
+ SidebarMenuSub,
4475
+ SidebarMenuSubButton,
4476
+ SidebarMenuSubItem,
4477
+ SidebarProvider,
4478
+ SidebarRail,
4479
+ SidebarSeparator,
4480
+ SidebarTrigger,
4481
+ Skeleton,
4482
+ Slider,
4483
+ StatusChip,
4484
+ Switch,
4485
+ Table,
4486
+ TableBody,
4487
+ TableCaption,
4488
+ TableCell,
4489
+ TableFooter,
4490
+ TableHead,
4491
+ TableHeader,
4492
+ TableRow,
4493
+ Tabs,
4494
+ TabsContent,
4495
+ TabsList,
4496
+ TabsTrigger,
4497
+ Textarea,
4498
+ ThemeProvider,
4499
+ Toaster,
4500
+ Toggle,
4501
+ ToggleGroup,
4502
+ ToggleGroupItem,
4503
+ Tooltip,
4504
+ TooltipContent,
4505
+ TooltipProvider,
4506
+ TooltipTrigger,
4507
+ badgeVariants,
4508
+ buttonVariants,
4509
+ cn,
4510
+ navigationMenuTriggerStyle,
4511
+ toast,
4512
+ toggleVariants,
4513
+ useFormField,
4514
+ useIsMobile,
4515
+ useSidebar,
4516
+ useTheme
4517
+ });
4518
+ //# sourceMappingURL=index.cjs.map