@womp/kookie-ui 0.25.0 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/components.css +5 -2
  2. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/base-button.js +1 -1
  4. package/dist/cjs/components/_internal/base-button.js.map +4 -4
  5. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  6. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  7. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  8. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  9. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  10. package/dist/cjs/components/_internal/shell-resizable.d.ts +6 -0
  11. package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -1
  12. package/dist/cjs/components/_internal/shell-resizable.js +1 -1
  13. package/dist/cjs/components/_internal/shell-resizable.js.map +3 -3
  14. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  15. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  16. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  17. package/dist/cjs/components/accordion.js +1 -1
  18. package/dist/cjs/components/accordion.js.map +4 -4
  19. package/dist/cjs/components/alert-dialog.js +1 -1
  20. package/dist/cjs/components/alert-dialog.js.map +4 -4
  21. package/dist/cjs/components/avatar.js +1 -1
  22. package/dist/cjs/components/avatar.js.map +4 -4
  23. package/dist/cjs/components/button.js +1 -1
  24. package/dist/cjs/components/button.js.map +4 -4
  25. package/dist/cjs/components/card.js +1 -1
  26. package/dist/cjs/components/card.js.map +4 -4
  27. package/dist/cjs/components/chatbar.js +1 -1
  28. package/dist/cjs/components/chatbar.js.map +4 -4
  29. package/dist/cjs/components/checkbox-group.js +1 -1
  30. package/dist/cjs/components/checkbox-group.js.map +4 -4
  31. package/dist/cjs/components/checkbox.js +1 -1
  32. package/dist/cjs/components/checkbox.js.map +4 -4
  33. package/dist/cjs/components/chip.js +1 -1
  34. package/dist/cjs/components/chip.js.map +4 -4
  35. package/dist/cjs/components/combobox.js +1 -1
  36. package/dist/cjs/components/combobox.js.map +4 -4
  37. package/dist/cjs/components/context-menu.js +1 -1
  38. package/dist/cjs/components/context-menu.js.map +4 -4
  39. package/dist/cjs/components/dialog.js +1 -1
  40. package/dist/cjs/components/dialog.js.map +4 -4
  41. package/dist/cjs/components/dropdown-menu.js +1 -1
  42. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  43. package/dist/cjs/components/index.js +2 -2
  44. package/dist/cjs/components/index.js.map +4 -4
  45. package/dist/cjs/components/message-scroller.js +1 -1
  46. package/dist/cjs/components/message-scroller.js.map +4 -4
  47. package/dist/cjs/components/navbar.js +1 -1
  48. package/dist/cjs/components/navbar.js.map +4 -4
  49. package/dist/cjs/components/notice.js +1 -1
  50. package/dist/cjs/components/notice.js.map +4 -4
  51. package/dist/cjs/components/popover.js +1 -1
  52. package/dist/cjs/components/popover.js.map +4 -4
  53. package/dist/cjs/components/radio-group.js +1 -1
  54. package/dist/cjs/components/radio-group.js.map +4 -4
  55. package/dist/cjs/components/radio.js +1 -1
  56. package/dist/cjs/components/radio.js.map +4 -4
  57. package/dist/cjs/components/segmented-control.js +1 -1
  58. package/dist/cjs/components/segmented-control.js.map +4 -4
  59. package/dist/cjs/components/select.js +1 -1
  60. package/dist/cjs/components/select.js.map +4 -4
  61. package/dist/cjs/components/sheet.js +1 -1
  62. package/dist/cjs/components/sheet.js.map +4 -4
  63. package/dist/cjs/components/shell.js +1 -1
  64. package/dist/cjs/components/shell.js.map +4 -4
  65. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  66. package/dist/cjs/components/sidebar.js +1 -1
  67. package/dist/cjs/components/sidebar.js.map +4 -4
  68. package/dist/cjs/components/slider.js +1 -1
  69. package/dist/cjs/components/slider.js.map +4 -4
  70. package/dist/cjs/components/switch.js +1 -1
  71. package/dist/cjs/components/switch.js.map +4 -4
  72. package/dist/cjs/components/table.js +1 -1
  73. package/dist/cjs/components/table.js.map +4 -4
  74. package/dist/cjs/components/tabs.js +1 -1
  75. package/dist/cjs/components/tabs.js.map +4 -4
  76. package/dist/cjs/components/text-area.js +1 -1
  77. package/dist/cjs/components/text-area.js.map +4 -4
  78. package/dist/cjs/components/text-field.js +2 -2
  79. package/dist/cjs/components/text-field.js.map +4 -4
  80. package/dist/cjs/components/theme.js +1 -1
  81. package/dist/cjs/components/theme.js.map +4 -4
  82. package/dist/cjs/components/toggle.js +1 -1
  83. package/dist/cjs/components/toggle.js.map +4 -4
  84. package/dist/cjs/components/toolbar.d.ts.map +1 -1
  85. package/dist/cjs/components/toolbar.js +1 -1
  86. package/dist/cjs/components/toolbar.js.map +4 -4
  87. package/dist/cjs/components/tooltip.js +1 -1
  88. package/dist/cjs/components/tooltip.js.map +4 -4
  89. package/dist/cjs/helpers/index.d.ts +1 -0
  90. package/dist/cjs/helpers/index.d.ts.map +1 -1
  91. package/dist/cjs/helpers/index.js +4 -4
  92. package/dist/cjs/helpers/index.js.map +3 -3
  93. package/dist/cjs/helpers/theme-size.d.ts +8 -30
  94. package/dist/cjs/helpers/theme-size.d.ts.map +1 -1
  95. package/dist/cjs/helpers/theme-size.js +1 -1
  96. package/dist/cjs/helpers/theme-size.js.map +3 -3
  97. package/dist/cjs/hooks/theme-size.d.ts +32 -0
  98. package/dist/cjs/hooks/theme-size.d.ts.map +1 -0
  99. package/dist/cjs/hooks/theme-size.js +3 -0
  100. package/dist/cjs/hooks/theme-size.js.map +7 -0
  101. package/dist/cjs/index.js +4 -4
  102. package/dist/cjs/index.js.map +4 -4
  103. package/dist/cjs/props/index.js +1 -1
  104. package/dist/cjs/props/index.js.map +4 -4
  105. package/dist/esm/chunk-3B25RLWX.js +3 -0
  106. package/dist/esm/chunk-3B25RLWX.js.map +7 -0
  107. package/dist/esm/{chunk-PF67GJ5D.js → chunk-3CY6H4TE.js} +2 -2
  108. package/dist/esm/chunk-3CY6H4TE.js.map +7 -0
  109. package/dist/esm/{chunk-2EXOL2BR.js → chunk-3L2MDOYC.js} +2 -2
  110. package/dist/esm/chunk-3L2MDOYC.js.map +7 -0
  111. package/dist/esm/{chunk-KNBSG2WA.js → chunk-5CFSNNYS.js} +2 -2
  112. package/dist/esm/chunk-5CFSNNYS.js.map +7 -0
  113. package/dist/esm/{chunk-4ABQ6CDI.js → chunk-5EBJOOXE.js} +2 -2
  114. package/dist/esm/chunk-5EBJOOXE.js.map +7 -0
  115. package/dist/esm/{chunk-E4EMG3RC.js → chunk-5L4DZ2D3.js} +2 -2
  116. package/dist/esm/chunk-5L4DZ2D3.js.map +7 -0
  117. package/dist/esm/chunk-5ON3XLRD.js +3 -0
  118. package/dist/esm/chunk-5ON3XLRD.js.map +7 -0
  119. package/dist/esm/{chunk-UZAS4PYM.js → chunk-5TJH35TF.js} +2 -2
  120. package/dist/esm/{chunk-GPQSC6GL.js → chunk-5XR5PTDR.js} +2 -2
  121. package/dist/esm/chunk-5XR5PTDR.js.map +7 -0
  122. package/dist/esm/{chunk-AOBY2OUZ.js → chunk-63MUJFVF.js} +2 -2
  123. package/dist/esm/chunk-63MUJFVF.js.map +7 -0
  124. package/dist/esm/chunk-6AUIIXXE.js +2 -0
  125. package/dist/esm/chunk-6AUIIXXE.js.map +7 -0
  126. package/dist/esm/{chunk-4Q5PUIDJ.js → chunk-6RJQ5LLP.js} +2 -2
  127. package/dist/esm/{chunk-YVZTQA2L.js → chunk-7B3XDZXZ.js} +2 -2
  128. package/dist/esm/chunk-7B3XDZXZ.js.map +7 -0
  129. package/dist/esm/{chunk-7IHBNDCE.js → chunk-7X7VWR3F.js} +2 -2
  130. package/dist/esm/chunk-7X7VWR3F.js.map +7 -0
  131. package/dist/esm/{chunk-45O3JZWQ.js → chunk-7XHE6TOA.js} +2 -2
  132. package/dist/esm/chunk-7XHE6TOA.js.map +7 -0
  133. package/dist/esm/chunk-AQ7VUGQQ.js +3 -0
  134. package/dist/esm/chunk-AQ7VUGQQ.js.map +7 -0
  135. package/dist/esm/{chunk-54HUG34P.js → chunk-BVFHJP5E.js} +2 -2
  136. package/dist/esm/chunk-BVFHJP5E.js.map +7 -0
  137. package/dist/esm/{chunk-CRCYUJMK.js → chunk-BXZSJKWA.js} +2 -2
  138. package/dist/esm/chunk-BXZSJKWA.js.map +7 -0
  139. package/dist/esm/{chunk-IQ2RMFOM.js → chunk-CQG4U5BR.js} +2 -2
  140. package/dist/esm/{chunk-YNCI5PY6.js → chunk-FPGBCCML.js} +2 -2
  141. package/dist/esm/chunk-FPGBCCML.js.map +7 -0
  142. package/dist/esm/{chunk-A7QRPXXB.js → chunk-HHSFAOIO.js} +2 -2
  143. package/dist/esm/chunk-HHSFAOIO.js.map +7 -0
  144. package/dist/esm/{chunk-NMQGDBLD.js → chunk-MQEWEAH5.js} +2 -2
  145. package/dist/esm/chunk-MQEWEAH5.js.map +7 -0
  146. package/dist/esm/{chunk-YIKLO2XL.js → chunk-N3QLHFHB.js} +2 -2
  147. package/dist/esm/chunk-N3QLHFHB.js.map +7 -0
  148. package/dist/esm/{chunk-LCG3JZ3C.js → chunk-N5H7C3PZ.js} +2 -2
  149. package/dist/esm/chunk-N5H7C3PZ.js.map +7 -0
  150. package/dist/esm/{chunk-N53NJCEM.js → chunk-OQWD63AI.js} +2 -2
  151. package/dist/esm/chunk-OQWD63AI.js.map +7 -0
  152. package/dist/esm/chunk-PCLO3ZZY.js +3 -0
  153. package/dist/esm/chunk-PCLO3ZZY.js.map +7 -0
  154. package/dist/esm/{chunk-2XZ7477Y.js → chunk-PZZJH2LR.js} +2 -2
  155. package/dist/esm/chunk-PZZJH2LR.js.map +7 -0
  156. package/dist/esm/chunk-QKCNGEX4.js +3 -0
  157. package/dist/esm/chunk-QKCNGEX4.js.map +7 -0
  158. package/dist/esm/{chunk-PPQ7URZL.js → chunk-R4PGFURL.js} +2 -2
  159. package/dist/esm/{chunk-UUQGOQ5H.js → chunk-RB5VHWAW.js} +2 -2
  160. package/dist/esm/chunk-RB5VHWAW.js.map +7 -0
  161. package/dist/esm/{chunk-AG2YETE6.js → chunk-VPRAXHLL.js} +2 -2
  162. package/dist/esm/chunk-VPRAXHLL.js.map +7 -0
  163. package/dist/esm/{chunk-7J7RPEPB.js → chunk-VRQEWMC6.js} +2 -2
  164. package/dist/esm/chunk-VRQEWMC6.js.map +7 -0
  165. package/dist/esm/{chunk-UFJGZUKK.js → chunk-W4MQ6TEK.js} +2 -2
  166. package/dist/esm/chunk-W4MQ6TEK.js.map +7 -0
  167. package/dist/esm/{chunk-3223MHQK.js → chunk-WJ4H2O2G.js} +2 -2
  168. package/dist/esm/chunk-WMODMXEU.js +3 -0
  169. package/dist/esm/chunk-WMODMXEU.js.map +7 -0
  170. package/dist/esm/{chunk-JZVLP2VF.js → chunk-XPVRXQSW.js} +2 -2
  171. package/dist/esm/chunk-XPVRXQSW.js.map +7 -0
  172. package/dist/esm/{chunk-BUZGRMDD.js → chunk-Y2BTPKK6.js} +2 -2
  173. package/dist/esm/chunk-YOSCUA6Z.js +3 -0
  174. package/dist/esm/chunk-YOSCUA6Z.js.map +7 -0
  175. package/dist/esm/{chunk-X272YV2E.js → chunk-Z563IAE3.js} +2 -2
  176. package/dist/esm/chunk-Z563IAE3.js.map +7 -0
  177. package/dist/esm/{chunk-GZ333J7L.js → chunk-ZDSY6CJL.js} +2 -2
  178. package/dist/esm/chunk-ZDSY6CJL.js.map +7 -0
  179. package/dist/esm/{chunk-ENAW44VE.js → chunk-ZYKJTNAT.js} +2 -2
  180. package/dist/esm/chunk-ZYKJTNAT.js.map +7 -0
  181. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  182. package/dist/esm/components/_internal/base-button.js +1 -1
  183. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  184. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  185. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  186. package/dist/esm/components/_internal/shell-resizable.d.ts +6 -0
  187. package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -1
  188. package/dist/esm/components/_internal/shell-resizable.js +1 -1
  189. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  190. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  191. package/dist/esm/components/accordion.js +1 -1
  192. package/dist/esm/components/alert-dialog.js +1 -1
  193. package/dist/esm/components/avatar.js +1 -1
  194. package/dist/esm/components/button.js +1 -1
  195. package/dist/esm/components/card.js +1 -1
  196. package/dist/esm/components/chatbar.js +1 -1
  197. package/dist/esm/components/checkbox-group.js +1 -1
  198. package/dist/esm/components/checkbox.js +1 -1
  199. package/dist/esm/components/chip.js +1 -1
  200. package/dist/esm/components/combobox.js +1 -1
  201. package/dist/esm/components/context-menu.js +1 -1
  202. package/dist/esm/components/dialog.js +1 -1
  203. package/dist/esm/components/dropdown-menu.js +1 -1
  204. package/dist/esm/components/index.js +1 -1
  205. package/dist/esm/components/message-scroller.js +1 -1
  206. package/dist/esm/components/navbar.js +1 -1
  207. package/dist/esm/components/notice.js +1 -1
  208. package/dist/esm/components/popover.js +1 -1
  209. package/dist/esm/components/radio-group.js +1 -1
  210. package/dist/esm/components/radio.js +1 -1
  211. package/dist/esm/components/segmented-control.js +1 -1
  212. package/dist/esm/components/select.js +1 -1
  213. package/dist/esm/components/sheet.js +1 -1
  214. package/dist/esm/components/shell.js +1 -1
  215. package/dist/esm/components/sidebar.d.ts.map +1 -1
  216. package/dist/esm/components/sidebar.js +1 -1
  217. package/dist/esm/components/slider.js +1 -1
  218. package/dist/esm/components/switch.js +1 -1
  219. package/dist/esm/components/table.js +1 -1
  220. package/dist/esm/components/tabs.js +1 -1
  221. package/dist/esm/components/text-area.js +1 -1
  222. package/dist/esm/components/text-field.js +1 -1
  223. package/dist/esm/components/theme.js +1 -1
  224. package/dist/esm/components/toggle.js +1 -1
  225. package/dist/esm/components/toolbar.d.ts.map +1 -1
  226. package/dist/esm/components/toolbar.js +1 -1
  227. package/dist/esm/components/tooltip.js +1 -1
  228. package/dist/esm/helpers/index.d.ts +1 -0
  229. package/dist/esm/helpers/index.d.ts.map +1 -1
  230. package/dist/esm/helpers/index.js +1 -1
  231. package/dist/esm/helpers/index.js.map +4 -4
  232. package/dist/esm/helpers/theme-size.d.ts +8 -30
  233. package/dist/esm/helpers/theme-size.d.ts.map +1 -1
  234. package/dist/esm/helpers/theme-size.js +1 -1
  235. package/dist/esm/hooks/theme-size.d.ts +32 -0
  236. package/dist/esm/hooks/theme-size.d.ts.map +1 -0
  237. package/dist/esm/hooks/theme-size.js +3 -0
  238. package/dist/esm/hooks/theme-size.js.map +7 -0
  239. package/dist/esm/index.js +1 -1
  240. package/dist/esm/props/font-family.prop.js +1 -1
  241. package/dist/esm/props/font-family.prop.js.map +4 -4
  242. package/dist/esm/props/index.js +1 -1
  243. package/dist/esm/props/index.js.map +4 -4
  244. package/package.json +1 -1
  245. package/src/components/_internal/base-button.tsx +56 -42
  246. package/src/components/_internal/shell-inspector.tsx +3 -1
  247. package/src/components/_internal/shell-resizable.tsx +13 -0
  248. package/src/components/_internal/shell-sidebar.tsx +3 -1
  249. package/src/components/accordion.tsx +1 -1
  250. package/src/components/alert-dialog.tsx +1 -1
  251. package/src/components/avatar.tsx +1 -1
  252. package/src/components/card.tsx +1 -1
  253. package/src/components/chatbar.tsx +1 -1
  254. package/src/components/checkbox-group.tsx +1 -1
  255. package/src/components/checkbox.tsx +1 -1
  256. package/src/components/combobox.tsx +1 -1
  257. package/src/components/context-menu.tsx +1 -1
  258. package/src/components/dialog.tsx +1 -1
  259. package/src/components/dropdown-menu.tsx +1 -1
  260. package/src/components/navbar.tsx +1 -1
  261. package/src/components/notice.tsx +1 -1
  262. package/src/components/popover.css +4 -2
  263. package/src/components/popover.tsx +1 -1
  264. package/src/components/radio-group.tsx +1 -1
  265. package/src/components/radio.tsx +1 -1
  266. package/src/components/segmented-control.tsx +1 -1
  267. package/src/components/select.tsx +1 -1
  268. package/src/components/sheet.css +4 -2
  269. package/src/components/sheet.tsx +1 -1
  270. package/src/components/shell.tsx +1 -1
  271. package/src/components/sidebar.tsx +16 -1
  272. package/src/components/slider.tsx +1 -1
  273. package/src/components/switch.tsx +1 -1
  274. package/src/components/table.tsx +1 -1
  275. package/src/components/tabs.tsx +1 -1
  276. package/src/components/text-area.tsx +1 -1
  277. package/src/components/text-field.tsx +1 -1
  278. package/src/components/theme.tsx +1 -1
  279. package/src/components/toolbar.tsx +17 -8
  280. package/src/helpers/index.ts +3 -0
  281. package/src/helpers/theme-size.ts +8 -46
  282. package/src/hooks/theme-size.ts +50 -0
  283. package/src/styles/tokens/color.css +3 -0
  284. package/styles.css +7 -2
  285. package/tokens/base.css +2 -0
  286. package/tokens.css +2 -0
  287. package/dist/esm/chunk-2EXOL2BR.js.map +0 -7
  288. package/dist/esm/chunk-2IUGM657.js +0 -3
  289. package/dist/esm/chunk-2IUGM657.js.map +0 -7
  290. package/dist/esm/chunk-2XZ7477Y.js.map +0 -7
  291. package/dist/esm/chunk-3WZLXGUE.js +0 -3
  292. package/dist/esm/chunk-3WZLXGUE.js.map +0 -7
  293. package/dist/esm/chunk-3YLYGKFB.js +0 -2
  294. package/dist/esm/chunk-3YLYGKFB.js.map +0 -7
  295. package/dist/esm/chunk-45O3JZWQ.js.map +0 -7
  296. package/dist/esm/chunk-4ABQ6CDI.js.map +0 -7
  297. package/dist/esm/chunk-54HUG34P.js.map +0 -7
  298. package/dist/esm/chunk-7IHBNDCE.js.map +0 -7
  299. package/dist/esm/chunk-7J7RPEPB.js.map +0 -7
  300. package/dist/esm/chunk-A7QRPXXB.js.map +0 -7
  301. package/dist/esm/chunk-AG2YETE6.js.map +0 -7
  302. package/dist/esm/chunk-AOBY2OUZ.js.map +0 -7
  303. package/dist/esm/chunk-CRCYUJMK.js.map +0 -7
  304. package/dist/esm/chunk-DI7RUMLO.js +0 -3
  305. package/dist/esm/chunk-DI7RUMLO.js.map +0 -7
  306. package/dist/esm/chunk-E4EMG3RC.js.map +0 -7
  307. package/dist/esm/chunk-ENAW44VE.js.map +0 -7
  308. package/dist/esm/chunk-EVCQ6TG5.js +0 -3
  309. package/dist/esm/chunk-EVCQ6TG5.js.map +0 -7
  310. package/dist/esm/chunk-G32GSPNO.js +0 -3
  311. package/dist/esm/chunk-G32GSPNO.js.map +0 -7
  312. package/dist/esm/chunk-GPQSC6GL.js.map +0 -7
  313. package/dist/esm/chunk-GZ333J7L.js.map +0 -7
  314. package/dist/esm/chunk-JIF77MRB.js +0 -3
  315. package/dist/esm/chunk-JIF77MRB.js.map +0 -7
  316. package/dist/esm/chunk-JZVLP2VF.js.map +0 -7
  317. package/dist/esm/chunk-KNBSG2WA.js.map +0 -7
  318. package/dist/esm/chunk-LB2HB4NG.js +0 -3
  319. package/dist/esm/chunk-LB2HB4NG.js.map +0 -7
  320. package/dist/esm/chunk-LCG3JZ3C.js.map +0 -7
  321. package/dist/esm/chunk-N53NJCEM.js.map +0 -7
  322. package/dist/esm/chunk-NMQGDBLD.js.map +0 -7
  323. package/dist/esm/chunk-PF67GJ5D.js.map +0 -7
  324. package/dist/esm/chunk-UFJGZUKK.js.map +0 -7
  325. package/dist/esm/chunk-UUQGOQ5H.js.map +0 -7
  326. package/dist/esm/chunk-VCV7RACK.js +0 -2
  327. package/dist/esm/chunk-VCV7RACK.js.map +0 -7
  328. package/dist/esm/chunk-X272YV2E.js.map +0 -7
  329. package/dist/esm/chunk-YIKLO2XL.js.map +0 -7
  330. package/dist/esm/chunk-YNCI5PY6.js.map +0 -7
  331. package/dist/esm/chunk-YVZTQA2L.js.map +0 -7
  332. /package/dist/esm/{chunk-UZAS4PYM.js.map → chunk-5TJH35TF.js.map} +0 -0
  333. /package/dist/esm/{chunk-4Q5PUIDJ.js.map → chunk-6RJQ5LLP.js.map} +0 -0
  334. /package/dist/esm/{chunk-IQ2RMFOM.js.map → chunk-CQG4U5BR.js.map} +0 -0
  335. /package/dist/esm/{chunk-PPQ7URZL.js.map → chunk-R4PGFURL.js.map} +0 -0
  336. /package/dist/esm/{chunk-3223MHQK.js.map → chunk-WJ4H2O2G.js.map} +0 -0
  337. /package/dist/esm/{chunk-BUZGRMDD.js.map → chunk-Y2BTPKK6.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/sidebar.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from './slot.js';\nimport * as Accordion from '@radix-ui/react-accordion';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport * as Popover from './popover.js';\n\nimport { Separator } from './separator.js';\nimport { ThickChevronRightIcon } from './icons.js';\nimport { Kbd } from './kbd.js';\nimport { Chip } from './chip.js';\nimport { ShellSizeContext, useSidebarVisual } from './_internal/pane-chrome.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { ChipProps } from './chip.js';\n\n// Chip configuration for the `badge` slot of sidebar menu buttons\ntype BadgeConfig = {\n content: React.ReactNode;\n variant?: ChipProps['variant'];\n size?: ChipProps['size'];\n color?: ChipProps['color'];\n radius?: ChipProps['radius'];\n};\n\n// Sidebar separator\ninterface SidebarSeparatorProps extends ComponentPropsWithout<typeof Separator, RemovedProps> {}\n\nconst SidebarSeparator = React.forwardRef<React.ComponentRef<typeof Separator>, SidebarSeparatorProps>(({ className, ...props }, forwardedRef) => (\n <Separator {...props} ref={forwardedRef} className={classNames('kui-SidebarSeparator', className)} />\n));\nSidebarSeparator.displayName = 'Sidebar.Separator';\n\n// Menu components - styled like dropdown menus, but semantically a navigation list.\n// No menu/menuitem roles: those promise an application menu, which a list of links is not.\ninterface SidebarMenuProps extends React.ComponentPropsWithoutRef<'ul'> {}\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, SidebarMenuProps>(({ className, ...props }, forwardedRef) => (\n <ul {...props} ref={forwardedRef} className={classNames('kui-SidebarMenu', className)} />\n));\nSidebarMenu.displayName = 'Sidebar.Menu';\n\ninterface SidebarMenuItemProps extends React.ComponentPropsWithoutRef<'li'> {}\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, SidebarMenuItemProps>(({ className, ...props }, forwardedRef) => (\n <li {...props} ref={forwardedRef} className={classNames('kui-SidebarMenuItem', className)} />\n));\nSidebarMenuItem.displayName = 'Sidebar.MenuItem';\n\ninterface SidebarMenuButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n isActive?: boolean;\n shortcut?: React.ReactNode;\n badge?: string | BadgeConfig;\n}\n\n// The name a component type goes by: a function, or the function inside forwardRef or memo.\nfunction componentName(type: unknown): string | undefined {\n if (typeof type === 'function') {\n const fn = type as { displayName?: string; name?: string };\n return fn.displayName || fn.name;\n }\n if (type && typeof type === 'object') {\n const wrapped = type as { displayName?: string; render?: unknown; type?: unknown };\n return wrapped.displayName || componentName(wrapped.render) || componentName(wrapped.type);\n }\n return undefined;\n}\n\nfunction isIconElement(el: React.ReactElement<{ icon?: unknown }>): boolean {\n if (el.type === 'svg') return true;\n if (el.props?.icon) return true;\n return componentName(el.type)?.includes('Icon') ?? false;\n}\n\nfunction isText(node: React.ReactNode): node is string | number {\n return typeof node === 'string' || typeof node === 'number';\n}\n\n// Thin mode puts the row's icon in a wrapper that carries the hover and active tile. An icon is\n// an svg, a HugeiconsIcon, or a component named *Icon. Failing that, the first element ahead of\n// other content is taken as the icon (Lucide and other icon sets).\nfunction separateIconsAndLabels(node: React.ReactNode): { icons: React.ReactNode[]; labels: React.ReactNode[] } {\n const children = React.Children.toArray(node);\n const icons: React.ReactNode[] = [];\n const labels: React.ReactNode[] = [];\n\n for (const child of children) {\n if (React.isValidElement<{ icon?: unknown }>(child) && isIconElement(child)) icons.push(child);\n else labels.push(isText(child) ? <span key={labels.length} className=\"kui-SidebarMenuLabel\">{child}</span> : child);\n }\n\n if (icons.length === 0 && children.length > 1 && React.isValidElement(children[0])) {\n icons.push(children[0]);\n labels.shift();\n }\n\n return { icons, labels };\n}\n\n// Wraps the row's own text in a label span. Text inside the caller's elements is left alone.\nfunction wrapTextNodes(node: React.ReactNode): React.ReactNode {\n return React.Children.map(node, (child) => (isText(child) ? <span className=\"kui-SidebarMenuLabel\">{child}</span> : child));\n}\n\n// Arrow Up and Down move between the visible buttons of the same sidebar, as a\n// convenience on top of Tab. Sub-menu triggers take part, so the one-item Accordion\n// behind each sub-menu doesn't keep focus on its own trigger.\nfunction focusAdjacentSidebarButton(event: React.KeyboardEvent<HTMLElement>) {\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n const scope = event.currentTarget.closest('.kui-SidebarContent, .kui-SidebarSearchPopover');\n const buttons = scope\n ? Array.from(scope.querySelectorAll<HTMLElement>('.kui-SidebarMenuButton')).filter((el) => el.offsetParent !== null)\n : [];\n const index = buttons.indexOf(event.currentTarget);\n const next = buttons[index + (event.key === 'ArrowDown' ? 1 : -1)];\n if (index !== -1 && next) {\n event.preventDefault();\n next.focus();\n }\n}\n\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n ({ asChild = false, isActive = false, shortcut, badge, className, children, onKeyDown, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n // A pane with no scope (Inspector, Bottom) still takes the Shell's index.\n const shellSize = React.useContext(ShellSizeContext);\n const sidebarSize = visual?.size ?? shellSize;\n const isThinMode = visual?.presentation === 'thin';\n\n const Comp = asChild ? Slot : 'button';\n\n // Enter and Space are left to the native button or link. The caller's handler runs first,\n // so it can preventDefault to keep the arrow keys for itself.\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (!event.defaultPrevented) focusAdjacentSidebarButton(event);\n };\n\n const extras = isThinMode ? null : (\n <>\n {badge && (\n <div className=\"kui-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Chip size={sidebarSize} variant=\"soft\">\n {badge}\n </Chip>\n ) : (\n <Chip size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} radius={badge.radius}>\n {badge.content}\n </Chip>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"kui-BaseMenuShortcut kui-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n );\n\n const renderContent = (content: React.ReactNode): React.ReactNode => {\n if (isThinMode) {\n const { icons, labels } = separateIconsAndLabels(content);\n if (icons.length > 0) {\n return (\n <>\n <span className=\"kui-SidebarMenuIconWrapper\">{icons}</span>\n {labels}\n </>\n );\n }\n }\n return (\n <>\n {wrapTextNodes(content)}\n {extras}\n </>\n );\n };\n\n // When rendering asChild, Slot expects a single child element. The row's content goes\n // inside that element, so a Link gets the label, icon tile, badge and shortcut.\n let body: React.ReactNode;\n if (asChild && React.isValidElement<{ children?: React.ReactNode }>(children) && React.Children.count(children) === 1) {\n body = React.cloneElement(children, undefined, renderContent(children.props.children));\n } else if (asChild) {\n body = children;\n } else {\n body = renderContent(children);\n }\n\n return (\n <Comp\n type={asChild ? undefined : 'button'}\n {...props}\n ref={forwardedRef}\n aria-current={isActive ? 'page' : undefined}\n className={classNames('kui-reset', 'kui-BaseMenuItem', 'kui-SidebarMenuButton', className)}\n data-active={isActive || undefined}\n onKeyDown={handleKeyDown}\n >\n {body}\n </Comp>\n );\n },\n);\nSidebarMenuButton.displayName = 'Sidebar.MenuButton';\n\n// Sub-menu components: Accordion in expanded, Dropdown in thin\nconst SidebarSubMenuModeContext = React.createContext<'accordion' | 'dropdown'>('accordion');\ninterface SidebarMenuSubProps extends React.ComponentPropsWithoutRef<'div'> {\n defaultOpen?: boolean;\n}\n\nconst SidebarMenuSub = React.forwardRef<HTMLDivElement, SidebarMenuSubProps>(({ defaultOpen = false, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode: 'accordion' | 'dropdown' = visual?.presentation === 'thin' ? 'dropdown' : 'accordion';\n\n if (mode === 'dropdown') {\n return (\n <div {...props} ref={forwardedRef}>\n <DropdownMenu.Root>\n <SidebarSubMenuModeContext.Provider value=\"dropdown\">{children}</SidebarSubMenuModeContext.Provider>\n </DropdownMenu.Root>\n </div>\n );\n }\n\n return (\n <div {...props} ref={forwardedRef}>\n <SidebarSubMenuModeContext.Provider value=\"accordion\">\n <Accordion.Root type=\"single\" collapsible defaultValue={defaultOpen ? 'item' : undefined}>\n <Accordion.Item value=\"item\">{children}</Accordion.Item>\n </Accordion.Root>\n </SidebarSubMenuModeContext.Provider>\n </div>\n );\n});\nSidebarMenuSub.displayName = 'Sidebar.MenuSub';\n\ninterface SidebarMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof Accordion.Trigger> {\n asChild?: boolean;\n}\n\nconst SidebarMenuSubTrigger = React.forwardRef<React.ElementRef<typeof Accordion.Trigger>, SidebarMenuSubTriggerProps>(\n ({ asChild = false, className, children, onKeyDown, ...props }, forwardedRef) => {\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n return (\n <DropdownMenu.Trigger>\n <button\n {...(props as any)}\n onKeyDown={onKeyDown}\n ref={forwardedRef as any}\n type=\"button\"\n aria-haspopup=\"menu\"\n className={classNames('kui-reset', 'kui-BaseMenuItem', 'kui-SidebarMenuButton', 'kui-SidebarMenuSubTrigger', className)}\n >\n {children}\n </button>\n </DropdownMenu.Trigger>\n );\n }\n\n return (\n <Accordion.Header asChild>\n <div>\n <Accordion.Trigger\n {...props}\n onKeyDown={(event) => {\n // Runs before the Accordion's own arrow handling, which would keep focus here.\n focusAdjacentSidebarButton(event);\n onKeyDown?.(event);\n }}\n ref={forwardedRef}\n asChild={asChild}\n className={classNames('kui-reset', 'kui-BaseMenuItem', 'kui-SidebarMenuButton', 'kui-SidebarMenuSubTrigger', className)}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <ThickChevronRightIcon className={classNames('kui-BaseMenuSubTriggerIcon', 'kui-SidebarMenuSubTriggerIcon')} />\n </>\n )}\n </Accordion.Trigger>\n </div>\n </Accordion.Header>\n );\n },\n);\nSidebarMenuSubTrigger.displayName = 'Sidebar.MenuSubTrigger';\n\ninterface SidebarMenuSubContentProps extends React.ComponentPropsWithoutRef<typeof Accordion.Content> {}\n\n// In a Rail a sub-menu is a dropdown. Each row becomes a menu item: a MenuButton hands the item\n// its props (onClick, disabled, active), and an asChild one hands it its link.\nfunction toDropdownItem(node: React.ReactNode, key: React.Key): React.ReactNode {\n if (React.isValidElement<SidebarMenuButtonProps>(node) && node.type === SidebarMenuButton) {\n // The badge and shortcut have no place in a dropdown row; `type` belongs to a button only.\n const { asChild, isActive, shortcut, badge, type, children, ...rest } = node.props;\n const itemProps = {\n ...(rest as Omit<React.ComponentPropsWithoutRef<typeof DropdownMenu.Item>, 'color'>),\n 'data-active': isActive || undefined,\n 'aria-current': isActive ? ('page' as const) : undefined,\n };\n if (asChild && React.isValidElement(children) && React.Children.count(children) === 1) {\n return (\n <DropdownMenu.Item key={key} {...itemProps} asChild>\n {children}\n </DropdownMenu.Item>\n );\n }\n return (\n <DropdownMenu.Item key={key} {...itemProps}>\n {children}\n </DropdownMenu.Item>\n );\n }\n if (React.isValidElement(node)) {\n return (\n <DropdownMenu.Item key={key} asChild>\n {node}\n </DropdownMenu.Item>\n );\n }\n return <DropdownMenu.Item key={key}>{node}</DropdownMenu.Item>;\n}\n\n// The sub-list is a <ul>, so each row needs its own <li>. A MenuButton written straight into\n// MenuSubContent gets a MenuItem around it, rather than leaving an <a> or <button> in the list.\nfunction wrapBareMenuButtons(children: React.ReactNode): React.ReactNode {\n return React.Children.map(children, (child, index) =>\n React.isValidElement(child) && child.type === SidebarMenuButton ? (\n <SidebarMenuItem key={child.key ?? index}>{child}</SidebarMenuItem>\n ) : (\n child\n ),\n );\n}\n\nconst SidebarMenuSubContent = React.forwardRef<React.ElementRef<typeof Accordion.Content>, SidebarMenuSubContentProps>(({ className, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n const items = React.Children.map(children, (child, index) => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === SidebarMenuItem) {\n const rows = React.Children.toArray(child.props.children);\n return toDropdownItem(rows.length === 1 ? rows[0] : rows, index);\n }\n return toDropdownItem(child, index);\n });\n\n return (\n <DropdownMenu.Content\n {...(props as Omit<React.ComponentPropsWithoutRef<typeof DropdownMenu.Content>, 'color'>)}\n ref={forwardedRef}\n size={visual?.size}\n className={classNames(className)}\n >\n <DropdownMenu.Group>{items}</DropdownMenu.Group>\n </DropdownMenu.Content>\n );\n }\n\n return (\n <Accordion.Content {...props} ref={forwardedRef} className={classNames('kui-SidebarMenuSubContent', className)}>\n <ul className=\"kui-SidebarMenuSubList\">{wrapBareMenuButtons(children)}</ul>\n </Accordion.Content>\n );\n});\nSidebarMenuSubContent.displayName = 'Sidebar.MenuSubContent';\n\n// Group components. A group with a label is a named group; one without stays a plain div, so it\n// isn't announced as an empty group.\ntype SidebarGroupContextValue = { labelId: string; setLabelId: (id: string | null) => void };\nconst SidebarGroupContext = React.createContext<SidebarGroupContextValue | null>(null);\n\ninterface SidebarGroupProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(({ className, ...props }, forwardedRef) => {\n const labelId = React.useId();\n const [renderedLabelId, setLabelId] = React.useState<string | null>(null);\n const context = React.useMemo(() => ({ labelId, setLabelId }), [labelId]);\n return (\n <SidebarGroupContext.Provider value={context}>\n <div\n role={renderedLabelId ? 'group' : undefined}\n aria-labelledby={renderedLabelId ?? undefined}\n {...props}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuGroup', 'kui-SidebarGroup', className)}\n />\n </SidebarGroupContext.Provider>\n );\n});\nSidebarGroup.displayName = 'Sidebar.Group';\n\ninterface SidebarGroupLabelProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n}\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>(({ asChild = false, className, id, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'div';\n const group = React.useContext(SidebarGroupContext);\n const labelId = id ?? group?.labelId;\n const setLabelId = group?.setLabelId;\n\n React.useEffect(() => {\n if (!setLabelId || !labelId) return;\n setLabelId(labelId);\n return () => setLabelId(null);\n }, [setLabelId, labelId]);\n\n return <Comp {...props} id={labelId} ref={forwardedRef} className={classNames('kui-BaseMenuLabel', 'kui-SidebarGroupLabel', className)} />;\n});\nSidebarGroupLabel.displayName = 'Sidebar.GroupLabel';\n\ninterface SidebarGroupContentProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, SidebarGroupContentProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('kui-SidebarGroupContent', className)} />\n));\nSidebarGroupContent.displayName = 'Sidebar.GroupContent';\n\n// Search component: inline input in expanded, popover trigger in thin\ninterface SidebarSearchProps extends React.ComponentPropsWithoutRef<'div'> {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n children?: React.ReactNode;\n}\n\nconst SearchIcon = ({ className }: { className?: string }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nconst ClearIcon = ({ className }: { className?: string }) => (\n <svg className={className} width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\nconst SidebarSearch = React.forwardRef<HTMLDivElement, SidebarSearchProps>(\n ({ value, onValueChange, placeholder = 'Search...', children, className, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const isThin = visual?.presentation === 'thin';\n const inputRef = React.useRef<HTMLInputElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const searchId = React.useId();\n const resultsId = `${searchId}-results`;\n\n // Stable refs for values used in callbacks \u2014 avoids recreating handlers on every keystroke\n const valueRef = React.useRef(value);\n valueRef.current = value;\n const onValueChangeRef = React.useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n // Derive a clean aria-label from placeholder (strip trailing dots/ellipsis)\n const searchLabel = placeholder.replace(/\\.+$/, '');\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape' && valueRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onValueChangeRef.current('');\n inputRef.current?.focus();\n }\n },\n [],\n );\n\n // Arrow key navigation within the popover (input \u2194 results)\n const handlePopoverKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n // A result row already moved focus with its own arrow handling (focusAdjacentSidebarButton\n // scopes to this popover); moving again would skip a row.\n if (e.defaultPrevented) return;\n const container = popoverRef.current;\n if (!container) return;\n\n const resultsGroup = container.querySelector('[role=\"group\"]');\n if (!resultsGroup) return;\n\n const items = Array.from(\n resultsGroup.querySelectorAll<HTMLElement>('a, button'),\n );\n if (items.length === 0) return;\n\n const active = document.activeElement as HTMLElement;\n const isOnInput = active === inputRef.current;\n const currentIndex = items.indexOf(active);\n\n // Typing while a result is focused \u2192 redirect focus to input\n if (\n e.key.length === 1 &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey &&\n !isOnInput &&\n currentIndex !== -1\n ) {\n inputRef.current?.focus();\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (isOnInput || currentIndex === -1) {\n items[0]?.focus();\n } else if (currentIndex < items.length - 1) {\n items[currentIndex + 1]?.focus();\n }\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (currentIndex <= 0) {\n inputRef.current?.focus();\n } else {\n items[currentIndex - 1]?.focus();\n }\n break;\n }\n case 'Home': {\n // Only intercept when focused on a result, not the input (where Home moves cursor)\n if (!isOnInput) {\n e.preventDefault();\n items[0]?.focus();\n }\n break;\n }\n case 'End': {\n if (!isOnInput) {\n e.preventDefault();\n items[items.length - 1]?.focus();\n }\n break;\n }\n }\n },\n [],\n );\n\n if (isThin) {\n return (\n <div {...props} ref={forwardedRef} className={classNames('kui-SidebarSearch', 'kui-SidebarSearch--thin', className)}>\n <Popover.Root>\n <Popover.Trigger>\n <button\n type=\"button\"\n className={classNames('kui-reset', 'kui-BaseMenuItem', 'kui-SidebarMenuButton', 'kui-SidebarSearchTrigger')}\n aria-label={searchLabel}\n >\n <span className=\"kui-SidebarMenuIconWrapper\">\n <SearchIcon />\n </span>\n <span className=\"kui-SidebarMenuLabel\">Search</span>\n </button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" size=\"2\" width=\"280px\" aria-label={searchLabel}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- keyDown manages arrow-key navigation between input and results, which is accessibility-enhancing */}\n <div\n ref={popoverRef}\n className=\"kui-SidebarSearchPopover\"\n role=\"search\"\n onKeyDown={handlePopoverKeyDown}\n >\n <div className=\"kui-SidebarSearchInputWrapper\">\n <SearchIcon className=\"kui-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"kui-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n aria-controls={children ? resultsId : undefined}\n // eslint-disable-next-line jsx-a11y/no-autofocus -- intentional: popover opens on user action, focusing the input is expected UX\n autoFocus\n />\n {value && (\n <button\n type=\"button\"\n className=\"kui-reset kui-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n {children && (\n <div id={resultsId} role=\"group\" aria-label=\"Search results\">\n {children}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Root>\n </div>\n );\n }\n\n // Expanded mode: inline input\n return (\n <div {...props} ref={forwardedRef} className={classNames('kui-SidebarSearch', 'kui-SidebarSearch--expanded', 'kui-ShellPaneChrome', `kui-r-size-${visual?.size ?? '2'}`, className)} role=\"search\">\n <div className=\"kui-SidebarSearchInputWrapper\">\n <SearchIcon className=\"kui-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"kui-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n />\n {value && (\n <button\n type=\"button\"\n className=\"kui-reset kui-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n </div>\n );\n },\n);\nSidebarSearch.displayName = 'Sidebar.Search';\n\n// Export all components following shadcn's pattern\nexport {\n SidebarSeparator as Separator,\n SidebarMenu as Menu,\n SidebarMenuItem as MenuItem,\n SidebarMenuButton as MenuButton,\n SidebarMenuSub as MenuSub,\n SidebarMenuSubTrigger as MenuSubTrigger,\n SidebarMenuSubContent as MenuSubContent,\n SidebarGroup as Group,\n SidebarGroupLabel as GroupLabel,\n SidebarGroupContent as GroupContent,\n SidebarSearch as Search,\n};\n\nexport type { BadgeConfig };\n"],
5
+ "mappings": "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",
6
+ "names": ["sidebar_exports", "__export", "SidebarGroup", "SidebarGroupContent", "SidebarGroupLabel", "SidebarMenu", "SidebarMenuButton", "SidebarMenuItem", "SidebarMenuSub", "SidebarMenuSubContent", "SidebarMenuSubTrigger", "SidebarSearch", "SidebarSeparator", "React", "classNames", "Accordion", "SidebarSeparator", "className", "props", "forwardedRef", "Separator", "classNames", "SidebarMenu", "SidebarMenuItem", "componentName", "type", "fn", "wrapped", "isIconElement", "el", "isText", "node", "separateIconsAndLabels", "children", "icons", "labels", "child", "wrapTextNodes", "focusAdjacentSidebarButton", "event", "scope", "buttons", "index", "next", "SidebarMenuButton", "asChild", "isActive", "shortcut", "badge", "onKeyDown", "visual", "useSidebarVisual", "shellSize", "ShellSizeContext", "sidebarSize", "isThinMode", "Comp", "Slot", "handleKeyDown", "extras", "Chip", "Kbd", "renderContent", "content", "body", "SidebarSubMenuModeContext", "SidebarMenuSub", "defaultOpen", "DropdownMenuRoot", "SidebarMenuSubTrigger", "DropdownMenuTrigger", "ThickChevronRightIcon", "toDropdownItem", "key", "rest", "itemProps", "DropdownMenuItem", "wrapBareMenuButtons", "SidebarMenuSubContent", "items", "rows", "DropdownMenuContent", "DropdownMenuGroup", "SidebarGroupContext", "SidebarGroup", "labelId", "renderedLabelId", "setLabelId", "context", "SidebarGroupLabel", "id", "group", "SidebarGroupContent", "SearchIcon", "ClearIcon", "SidebarSearch", "value", "onValueChange", "placeholder", "isThin", "inputRef", "popoverRef", "resultsId", "valueRef", "onValueChangeRef", "searchLabel", "e", "handlePopoverKeyDown", "container", "resultsGroup", "active", "isOnInput", "currentIndex", "PopoverRoot", "PopoverTrigger", "PopoverContent"]
7
+ }
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a as k}from"./chunk-FFJE25TJ.js";import{c as j}from"./chunk-2IUGM657.js";import{c as L}from"./chunk-OKQAVYW4.js";import*as t from"react";import Z from"classnames";import{Direction as _,Slider as S}from"radix-ui";var ee=t.forwardRef((z,I)=>{let K=j(z,k.size),{className:O,color:W,radius:B,tabIndex:T,...G}=L(K,k),{ticks:c,unit:i,showTickLabels:A,snapToTicks:P,value:g,defaultValue:H,onValueChange:$,onValueCommit:C,"aria-label":U,"aria-labelledby":q,...o}=G,p=o.min??0,d=o.max??100,[F,J]=t.useState(()=>H??[p]),v=g!==void 0,l=v?g:F,x=t.useId(),Q=o.step,s=t.useMemo(()=>c?[...c].sort((e,a)=>e.value-a.value):[],[c]),b=t.useCallback(e=>{let a=s[0].value;for(let r of s)Math.abs(r.value-e)<Math.abs(a-e)&&(a=r.value);return a},[s]),N=t.useCallback((e,a)=>{let r=b(e);return e>a&&r<=a?s.find(n=>n.value>a)?.value??a:e<a&&r>=a?[...s].reverse().find(n=>n.value<a)?.value??a:r},[b,s]),h=t.useRef(!1),V=t.useCallback(e=>{let a=r=>i?`${r} ${i}`:r.toString();return e.length===1?`${a(e[0])} out of ${a(d)}`:e.length===2?`${a(e[0])} to ${a(e[1])} out of ${a(d)}`:`${e.map(a).join(", ")} out of ${a(d)}`},[i,d]),X=_.useDirection(o.dir),R=o.orientation??"horizontal",D=R==="vertical"?!o.inverted:X==="rtl"!=!!o.inverted,y=t.useMemo(()=>c?c.map((e,a)=>{let r=(e.value-p)/(d-p)*100;return{...e,percentage:D?100-r:r,index:a}}):null,[c,p,d,D]),m=t.useRef(null),f=t.useRef(null),Y=t.useCallback(e=>{m.current&&(m.current.textContent=V(e),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{m.current&&(m.current.textContent="")},1e3))},[V]),M=t.useCallback(e=>{let r=P&&s.length>0?e.map((n,u)=>h.current&&l[u]!==void 0?N(n,l[u]):b(n)):e;v||J(r),$?.(r)},[P,s,N,b,l,$,v]);return t.useEffect(()=>()=>{f.current&&clearTimeout(f.current)},[]),t.createElement("div",{className:"kui-SliderContainer","data-orientation":R,"data-has-ticks":y?"":void 0},t.createElement("div",{ref:m,"aria-live":"polite","aria-atomic":"true",className:"kui-sr-only"}),t.createElement(S.Root,{"data-accent-color":W,"data-radius":B,ref:I,...o,value:l,step:Q,onKeyDown:e=>{h.current=!0,o.onKeyDown?.(e)},onPointerDown:e=>{h.current=!1,o.onPointerDown?.(e)},onValueChange:M,onValueCommit:C,asChild:!1,className:Z("kui-SliderRoot",O)},t.createElement(S.Track,{className:"kui-SliderTrack"},t.createElement(S.Range,{className:"kui-SliderRange","data-inverted":o.inverted?"":void 0})),l.map((e,a)=>t.createElement(S.Thumb,{key:a,className:"kui-SliderThumb",...T!==void 0?{tabIndex:T}:void 0,"aria-label":U,"aria-labelledby":q,"aria-valuetext":i?`${e} ${i}`:void 0}))),y&&t.createElement("div",{className:"kui-SliderTicks","data-orientation":R,role:"group","aria-label":"Slider tick marks"},y.map(e=>t.createElement("button",{key:e.index,className:"kui-SliderTick",style:R==="vertical"?{top:`${e.percentage}%`}:{left:`${e.percentage}%`},disabled:o.disabled,onClick:()=>{let a=0;l.forEach((n,u)=>{let w=Math.abs(n-e.value),E=Math.abs(l[a]-e.value);(w<E||w===E&&e.value>n)&&(a=u)});let r=l.map((n,u)=>u===a?e.value:n).sort((n,u)=>n-u);h.current=!1,M(r),C?.(r),Y(r)},"aria-label":`Set to ${e.label||(i?`${e.value} ${i}`:e.value)}`,"aria-describedby":e.label?void 0:`${x}-tick-${e.index}`,type:"button"},t.createElement("div",{className:"kui-SliderTickMark"}),e.label&&A!==!1&&t.createElement("div",{className:"kui-SliderTickLabel"},e.label),!e.label&&t.createElement("span",{id:`${x}-tick-${e.index}`,className:"kui-sr-only"},i?`${e.value} ${i}`:e.value)))))});ee.displayName="Slider";export{ee as a};
3
- //# sourceMappingURL=chunk-PF67GJ5D.js.map
2
+ import{a as k}from"./chunk-FFJE25TJ.js";import{c as j}from"./chunk-5ON3XLRD.js";import{c as L}from"./chunk-OKQAVYW4.js";import*as t from"react";import Z from"classnames";import{Direction as _,Slider as S}from"radix-ui";var ee=t.forwardRef((z,I)=>{let K=j(z,k.size),{className:O,color:W,radius:B,tabIndex:T,...G}=L(K,k),{ticks:c,unit:i,showTickLabels:A,snapToTicks:P,value:g,defaultValue:H,onValueChange:$,onValueCommit:C,"aria-label":U,"aria-labelledby":q,...o}=G,p=o.min??0,d=o.max??100,[F,J]=t.useState(()=>H??[p]),v=g!==void 0,l=v?g:F,x=t.useId(),Q=o.step,s=t.useMemo(()=>c?[...c].sort((e,a)=>e.value-a.value):[],[c]),b=t.useCallback(e=>{let a=s[0].value;for(let r of s)Math.abs(r.value-e)<Math.abs(a-e)&&(a=r.value);return a},[s]),N=t.useCallback((e,a)=>{let r=b(e);return e>a&&r<=a?s.find(n=>n.value>a)?.value??a:e<a&&r>=a?[...s].reverse().find(n=>n.value<a)?.value??a:r},[b,s]),h=t.useRef(!1),V=t.useCallback(e=>{let a=r=>i?`${r} ${i}`:r.toString();return e.length===1?`${a(e[0])} out of ${a(d)}`:e.length===2?`${a(e[0])} to ${a(e[1])} out of ${a(d)}`:`${e.map(a).join(", ")} out of ${a(d)}`},[i,d]),X=_.useDirection(o.dir),R=o.orientation??"horizontal",D=R==="vertical"?!o.inverted:X==="rtl"!=!!o.inverted,y=t.useMemo(()=>c?c.map((e,a)=>{let r=(e.value-p)/(d-p)*100;return{...e,percentage:D?100-r:r,index:a}}):null,[c,p,d,D]),m=t.useRef(null),f=t.useRef(null),Y=t.useCallback(e=>{m.current&&(m.current.textContent=V(e),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{m.current&&(m.current.textContent="")},1e3))},[V]),M=t.useCallback(e=>{let r=P&&s.length>0?e.map((n,u)=>h.current&&l[u]!==void 0?N(n,l[u]):b(n)):e;v||J(r),$?.(r)},[P,s,N,b,l,$,v]);return t.useEffect(()=>()=>{f.current&&clearTimeout(f.current)},[]),t.createElement("div",{className:"kui-SliderContainer","data-orientation":R,"data-has-ticks":y?"":void 0},t.createElement("div",{ref:m,"aria-live":"polite","aria-atomic":"true",className:"kui-sr-only"}),t.createElement(S.Root,{"data-accent-color":W,"data-radius":B,ref:I,...o,value:l,step:Q,onKeyDown:e=>{h.current=!0,o.onKeyDown?.(e)},onPointerDown:e=>{h.current=!1,o.onPointerDown?.(e)},onValueChange:M,onValueCommit:C,asChild:!1,className:Z("kui-SliderRoot",O)},t.createElement(S.Track,{className:"kui-SliderTrack"},t.createElement(S.Range,{className:"kui-SliderRange","data-inverted":o.inverted?"":void 0})),l.map((e,a)=>t.createElement(S.Thumb,{key:a,className:"kui-SliderThumb",...T!==void 0?{tabIndex:T}:void 0,"aria-label":U,"aria-labelledby":q,"aria-valuetext":i?`${e} ${i}`:void 0}))),y&&t.createElement("div",{className:"kui-SliderTicks","data-orientation":R,role:"group","aria-label":"Slider tick marks"},y.map(e=>t.createElement("button",{key:e.index,className:"kui-SliderTick",style:R==="vertical"?{top:`${e.percentage}%`}:{left:`${e.percentage}%`},disabled:o.disabled,onClick:()=>{let a=0;l.forEach((n,u)=>{let w=Math.abs(n-e.value),E=Math.abs(l[a]-e.value);(w<E||w===E&&e.value>n)&&(a=u)});let r=l.map((n,u)=>u===a?e.value:n).sort((n,u)=>n-u);h.current=!1,M(r),C?.(r),Y(r)},"aria-label":`Set to ${e.label||(i?`${e.value} ${i}`:e.value)}`,"aria-describedby":e.label?void 0:`${x}-tick-${e.index}`,type:"button"},t.createElement("div",{className:"kui-SliderTickMark"}),e.label&&A!==!1&&t.createElement("div",{className:"kui-SliderTickLabel"},e.label),!e.label&&t.createElement("span",{id:`${x}-tick-${e.index}`,className:"kui-sr-only"},i?`${e.value} ${i}`:e.value)))))});ee.displayName="Slider";export{ee as a};
3
+ //# sourceMappingURL=chunk-3CY6H4TE.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/slider.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Direction, Slider as SliderPrimitive } from 'radix-ui';\n\nimport { sliderPropDefs } from './slider.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSizeProps } from '../hooks/theme-size.js';\n\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SliderElement = React.ElementRef<typeof SliderPrimitive.Root>;\ntype SliderOwnProps = GetPropDefTypes<typeof sliderPropDefs>;\ninterface SliderProps extends ComponentPropsWithout<typeof SliderPrimitive.Root, 'asChild' | 'color' | 'children' | 'defaultChecked'>, SliderOwnProps {\n ticks?: Array<{ value: number; label?: string }>;\n unit?: string;\n}\nconst Slider = React.forwardRef<SliderElement, SliderProps>((ownProps, forwardedRef) => {\n const props = useThemeSizeProps(ownProps, sliderPropDefs.size);\n const { className, color, radius, tabIndex, ...sliderProps } = extractProps(props, sliderPropDefs);\n const {\n ticks,\n unit,\n showTickLabels,\n snapToTicks,\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueCommit,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rootProps\n } = sliderProps;\n const min = rootProps.min ?? 0;\n const max = rootProps.max ?? 100;\n\n // The slider keeps its own copy of the value when uncontrolled, so the handles, their\n // labels and a tick press all read the current value rather than the first one.\n const [uncontrolledValue, setUncontrolledValue] = React.useState<number[]>(() => defaultValue ?? [min]);\n const isControlled = valueProp !== undefined;\n const currentValue = isControlled ? valueProp : uncontrolledValue;\n const tickIdPrefix = React.useId();\n\n // For snapping to ticks, we need to handle this differently\n // Radix slider doesn't support arbitrary step values, so we'll handle snapping in the onValueChange\n const step = rootProps.step;\n\n // Optimized snap-to-ticks with memoized sorted ticks\n const sortedTicks = React.useMemo(() => (ticks ? [...ticks].sort((a, b) => a.value - b.value) : []), [ticks]);\n\n // The nearest tick to a value.\n const snapToNearestTick = React.useCallback(\n (value: number): number => {\n let nearest = sortedTicks[0].value;\n for (const tick of sortedTicks) {\n if (Math.abs(tick.value - value) < Math.abs(nearest - value)) nearest = tick.value;\n }\n return nearest;\n },\n [sortedTicks],\n );\n\n // A key press moves the handle one step, which the nearest tick would undo. So a key press\n // that does not reach another tick goes on to the next tick the way it moved.\n const snapKeyStep = React.useCallback(\n (value: number, previous: number): number => {\n const nearest = snapToNearestTick(value);\n if (value > previous && nearest <= previous) {\n return sortedTicks.find((tick) => tick.value > previous)?.value ?? previous;\n }\n if (value < previous && nearest >= previous) {\n return [...sortedTicks].reverse().find((tick) => tick.value < previous)?.value ?? previous;\n }\n return nearest;\n },\n [snapToNearestTick, sortedTicks],\n );\n\n // Whether the change under way came from the keyboard, so snapping knows how to read it.\n const keyboardChangeRef = React.useRef(false);\n\n // Format value text for accessibility\n const formatValueText = React.useCallback(\n (values: number[]): string => {\n const formatValue = (val: number) => (unit ? `${val} ${unit}` : val.toString());\n\n if (values.length === 1) {\n return `${formatValue(values[0])} out of ${formatValue(max)}`;\n } else if (values.length === 2) {\n return `${formatValue(values[0])} to ${formatValue(values[1])} out of ${formatValue(max)}`;\n } else {\n return `${values.map(formatValue).join(', ')} out of ${formatValue(max)}`;\n }\n },\n [unit, max],\n );\n\n // Ticks sit where the handle sits for their value. Radix flips the handle for a right to\n // left slider and for `inverted`, and runs a vertical slider from the bottom.\n const direction = Direction.useDirection(rootProps.dir);\n const orientation = rootProps.orientation ?? 'horizontal';\n const flipped = orientation === 'vertical' ? !rootProps.inverted : (direction === 'rtl') !== Boolean(rootProps.inverted);\n\n const tickElements = React.useMemo(() => {\n if (!ticks) return null;\n\n return ticks.map((tick, index) => {\n const percentage = ((tick.value - min) / (max - min)) * 100;\n return { ...tick, percentage: flipped ? 100 - percentage : percentage, index };\n });\n }, [ticks, min, max, flipped]);\n\n // Live region ref for accessibility announcements (no state = no re-renders)\n const announceRef = React.useRef<HTMLDivElement>(null);\n const announceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Says the new value after a tick press. Focus stays on the tick, so nothing else reports\n // it. The handle reports its own value on key presses and drags.\n const announce = React.useCallback(\n (values: number[]) => {\n if (!announceRef.current) return;\n announceRef.current.textContent = formatValueText(values);\n if (announceTimeoutRef.current) clearTimeout(announceTimeoutRef.current);\n announceTimeoutRef.current = setTimeout(() => {\n if (announceRef.current) announceRef.current.textContent = '';\n }, 1000);\n },\n [formatValueText],\n );\n\n // Handle value changes with snapping\n const handleValueChange = React.useCallback(\n (newValue: number[]) => {\n const snapping = snapToTicks && sortedTicks.length > 0;\n const finalValue = !snapping ? newValue : newValue.map((v, i) => (keyboardChangeRef.current && currentValue[i] !== undefined ? snapKeyStep(v, currentValue[i]) : snapToNearestTick(v)));\n\n if (!isControlled) setUncontrolledValue(finalValue);\n onValueChange?.(finalValue);\n },\n [snapToTicks, sortedTicks, snapKeyStep, snapToNearestTick, currentValue, onValueChange, isControlled],\n );\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (announceTimeoutRef.current) {\n clearTimeout(announceTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div className=\"kui-SliderContainer\" data-orientation={orientation} data-has-ticks={tickElements ? '' : undefined}>\n {/* Live region for screen reader announcements */}\n <div ref={announceRef} aria-live=\"polite\" aria-atomic=\"true\" className=\"kui-sr-only\" />\n\n <SliderPrimitive.Root\n data-accent-color={color}\n data-radius={radius}\n ref={forwardedRef}\n {...rootProps}\n value={currentValue}\n step={step}\n onKeyDown={(event) => {\n keyboardChangeRef.current = true;\n rootProps.onKeyDown?.(event);\n }}\n onPointerDown={(event) => {\n keyboardChangeRef.current = false;\n rootProps.onPointerDown?.(event);\n }}\n onValueChange={handleValueChange}\n onValueCommit={onValueCommit}\n asChild={false}\n className={classNames('kui-SliderRoot', className)}\n >\n <SliderPrimitive.Track className=\"kui-SliderTrack\">\n <SliderPrimitive.Range className=\"kui-SliderRange\" data-inverted={rootProps.inverted ? '' : undefined} />\n </SliderPrimitive.Track>\n {currentValue.map((value, index) => (\n <SliderPrimitive.Thumb\n key={index}\n className=\"kui-SliderThumb\"\n {...(tabIndex !== undefined ? { tabIndex } : undefined)}\n // The caller's name goes to every handle. Without one, Radix names the two\n // handles of a range \"Minimum\" and \"Maximum\".\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuetext={unit ? `${value} ${unit}` : undefined}\n />\n ))}\n </SliderPrimitive.Root>\n {tickElements && (\n <div className=\"kui-SliderTicks\" data-orientation={orientation} role=\"group\" aria-label=\"Slider tick marks\">\n {tickElements.map((tick) => {\n return (\n <button\n key={tick.index}\n className=\"kui-SliderTick\"\n // Only the offset varies per tick; the centring transform lives in `.kui-SliderTick`.\n style={orientation === 'vertical' ? { top: `${tick.percentage}%` } : { left: `${tick.percentage}%` }}\n disabled={rootProps.disabled}\n onClick={() => {\n // Move only the handle nearest the tick. When handles share a value, a\n // tick above it moves the last of them and a tick below moves the first.\n let nearest = 0;\n currentValue.forEach((v, i) => {\n const distance = Math.abs(v - tick.value);\n const best = Math.abs(currentValue[nearest] - tick.value);\n if (distance < best || (distance === best && tick.value > v)) nearest = i;\n });\n const newValue = currentValue.map((v, i) => (i === nearest ? tick.value : v)).sort((x, y) => x - y);\n\n keyboardChangeRef.current = false;\n handleValueChange(newValue);\n onValueCommit?.(newValue);\n announce(newValue);\n }}\n aria-label={`Set to ${tick.label || (unit ? `${tick.value} ${unit}` : tick.value)}`}\n aria-describedby={tick.label ? undefined : `${tickIdPrefix}-tick-${tick.index}`}\n type=\"button\"\n >\n <div className=\"kui-SliderTickMark\" />\n {tick.label && showTickLabels !== false && <div className=\"kui-SliderTickLabel\">{tick.label}</div>}\n {!tick.label && (\n <span id={`${tickIdPrefix}-tick-${tick.index}`} className=\"kui-sr-only\">\n {unit ? `${tick.value} ${unit}` : tick.value}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n});\nSlider.displayName = 'Slider';\n\nexport { Slider };\nexport type { SliderProps };\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "classNames", "Direction", "SliderPrimitive", "Slider", "ownProps", "forwardedRef", "props", "useThemeSizeProps", "sliderPropDefs", "className", "color", "radius", "tabIndex", "sliderProps", "extractProps", "ticks", "unit", "showTickLabels", "snapToTicks", "valueProp", "defaultValue", "onValueChange", "onValueCommit", "ariaLabel", "ariaLabelledBy", "rootProps", "min", "max", "uncontrolledValue", "setUncontrolledValue", "isControlled", "currentValue", "tickIdPrefix", "step", "sortedTicks", "a", "b", "snapToNearestTick", "value", "nearest", "tick", "snapKeyStep", "previous", "keyboardChangeRef", "formatValueText", "values", "formatValue", "val", "direction", "Direction", "orientation", "flipped", "tickElements", "index", "percentage", "announceRef", "announceTimeoutRef", "announce", "handleValueChange", "newValue", "finalValue", "v", "i", "SliderPrimitive", "event", "classNames", "distance", "best", "x", "y"]
7
+ }
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a as v,b as G,c as O}from"./chunk-PT4KBXXP.js";import{b as D,c as L}from"./chunk-YIKLO2XL.js";import{a as x}from"./chunk-KOAWATCI.js";import{a as b}from"./chunk-ILWS2JUE.js";import{b as N,c as E}from"./chunk-GKDGNPBD.js";import{b as w}from"./chunk-2IUGM657.js";import{c as y}from"./chunk-OKQAVYW4.js";import{a as F}from"./chunk-VQPANPMI.js";var J={};F(J,{Content:()=>z,Group:()=>W,Item:()=>V,Label:()=>K,Root:()=>A,Separator:()=>H,Trigger:()=>B});import*as e from"react";import S from"classnames";import{Select as r,ScrollArea as C}from"radix-ui";var M={size:v.size},_=[" ","Enter","ArrowUp","ArrowDown"],g=e.createContext({}),A=o=>{let{children:t,size:a,open:n,defaultOpen:c,onOpenChange:s,...P}=o,p=w(a,v.size),[u,i]=e.useState(c??!1),m=n??u,f=e.useCallback(d=>{i(d),s?.(d)},[s]);return e.createElement(r.Root,{...P,open:m,onOpenChange:f},e.createElement(g.Provider,{value:e.useMemo(()=>({size:p,open:m}),[p,m])},t))};A.displayName="Select.Root";var B=e.forwardRef((o,t)=>{let a=e.useContext(g),{children:n,className:c,color:s,radius:P,placeholder:p,error:u,loading:i,disabled:m,readOnly:f,...d}=y({size:a?.size,...o},M,G),{"aria-invalid":R,"aria-busy":h,"aria-disabled":T,"aria-readonly":I}=d,k=!!u||R===!0||R==="true",j=e.useMemo(()=>({"aria-invalid":k?!0:R,"aria-busy":i||h,"aria-disabled":m||T,"aria-readonly":f||I}),[k,R,i,h,m,T,f,I]),U=!!(f||i)?{onPointerDown:l=>l.preventDefault(),onClick:l=>{l.preventDefault(),l.currentTarget.focus()},onKeyDown:l=>{let Y=l.ctrlKey||l.altKey||l.metaKey;(_.includes(l.key)||!Y&&l.key.length===1)&&l.preventDefault()}}:void 0;return e.createElement(r.Trigger,{asChild:!0,disabled:m,...U},e.createElement("button",{"data-accent-color":s,"data-radius":P,"data-error":u,"data-loading":i,...d,...j,ref:t,className:S("kui-reset","kui-SelectTrigger",c)},e.createElement("span",{className:"kui-SelectTriggerInner"},e.createElement(r.Value,{placeholder:p},n)),e.createElement(r.Icon,{asChild:!0},i?e.createElement("span",{className:"kui-SelectIcon kui-SelectLoadingIcon","aria-hidden":"true"},e.createElement(b,null)):e.createElement(E,{className:"kui-SelectIcon"}))))});B.displayName="Select.Trigger";var z=e.forwardRef((o,t)=>{let a=e.useContext(g),{className:n,children:c,color:s,container:P,...p}=y({size:a?.size,...o},M,O),u=D();if(a.open===!1&&!p.forceMount)return e.createElement(r.Portal,{container:P},e.createElement(r.Content,{...p,asChild:!1,ref:t},c));let i=s||u.accentColor;return e.createElement(r.Portal,{container:P},e.createElement(L,{asChild:!0},e.createElement(r.Content,{"data-accent-color":i,sideOffset:4,...p,asChild:!1,ref:t,className:S("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-SelectContent",n)},e.createElement(q,null,c))))});z.displayName="Select.Content";function q({children:o}){let t=x();return e.createElement(C.Root,{type:"auto",className:"kui-ScrollAreaRoot"},e.createElement(r.Viewport,{asChild:!0,className:S("kui-BaseMenuViewport","kui-SelectViewport")},e.createElement(C.Viewport,{ref:t,className:"kui-ScrollAreaViewport",style:{overflowY:void 0}},o)),e.createElement(C.Scrollbar,{className:"kui-ScrollAreaScrollbar",orientation:"vertical"},e.createElement(C.Thumb,{className:"kui-ScrollAreaThumb"})))}var V=e.forwardRef((o,t)=>{let{className:a,children:n,...c}=o,s=typeof n!="string";return e.createElement(r.Item,{...c,asChild:!1,ref:t,className:S("kui-reset","kui-BaseMenuItem","kui-SelectItem",{"kui-SelectItemRich":s},a)},e.createElement(r.ItemIndicator,{className:"kui-SelectItemIndicator"},e.createElement(N,{className:"kui-SelectItemIndicatorIcon"})),e.createElement(r.ItemText,null,n))});V.displayName="Select.Item";var W=e.forwardRef(({className:o,...t},a)=>e.createElement(r.Group,{...t,asChild:!1,ref:a,className:S("kui-SelectGroup",o)}));W.displayName="Select.Group";var K=e.forwardRef(({className:o,...t},a)=>e.createElement(r.Label,{...t,asChild:!1,ref:a,className:S("kui-BaseMenuLabel","kui-SelectLabel",o)}));K.displayName="Select.Label";var H=e.forwardRef(({className:o,...t},a)=>e.createElement(r.Separator,{...t,asChild:!1,ref:a,className:S("kui-BaseMenuSeparator","kui-SelectSeparator",o)}));H.displayName="Select.Separator";export{A as a,B as b,z as c,V as d,W as e,K as f,H as g,J as h};
3
- //# sourceMappingURL=chunk-2EXOL2BR.js.map
2
+ import{a as v,b as G,c as O}from"./chunk-PT4KBXXP.js";import{b as D,c as L}from"./chunk-N3QLHFHB.js";import{a as x}from"./chunk-KOAWATCI.js";import{a as b}from"./chunk-ILWS2JUE.js";import{b as N,c as E}from"./chunk-GKDGNPBD.js";import{b as w}from"./chunk-5ON3XLRD.js";import{c as y}from"./chunk-OKQAVYW4.js";import{a as F}from"./chunk-VQPANPMI.js";var J={};F(J,{Content:()=>z,Group:()=>W,Item:()=>V,Label:()=>K,Root:()=>A,Separator:()=>H,Trigger:()=>B});import*as e from"react";import S from"classnames";import{Select as r,ScrollArea as C}from"radix-ui";var M={size:v.size},_=[" ","Enter","ArrowUp","ArrowDown"],g=e.createContext({}),A=o=>{let{children:t,size:a,open:n,defaultOpen:c,onOpenChange:s,...P}=o,p=w(a,v.size),[u,i]=e.useState(c??!1),m=n??u,f=e.useCallback(d=>{i(d),s?.(d)},[s]);return e.createElement(r.Root,{...P,open:m,onOpenChange:f},e.createElement(g.Provider,{value:e.useMemo(()=>({size:p,open:m}),[p,m])},t))};A.displayName="Select.Root";var B=e.forwardRef((o,t)=>{let a=e.useContext(g),{children:n,className:c,color:s,radius:P,placeholder:p,error:u,loading:i,disabled:m,readOnly:f,...d}=y({size:a?.size,...o},M,G),{"aria-invalid":R,"aria-busy":h,"aria-disabled":T,"aria-readonly":I}=d,k=!!u||R===!0||R==="true",j=e.useMemo(()=>({"aria-invalid":k?!0:R,"aria-busy":i||h,"aria-disabled":m||T,"aria-readonly":f||I}),[k,R,i,h,m,T,f,I]),U=!!(f||i)?{onPointerDown:l=>l.preventDefault(),onClick:l=>{l.preventDefault(),l.currentTarget.focus()},onKeyDown:l=>{let Y=l.ctrlKey||l.altKey||l.metaKey;(_.includes(l.key)||!Y&&l.key.length===1)&&l.preventDefault()}}:void 0;return e.createElement(r.Trigger,{asChild:!0,disabled:m,...U},e.createElement("button",{"data-accent-color":s,"data-radius":P,"data-error":u,"data-loading":i,...d,...j,ref:t,className:S("kui-reset","kui-SelectTrigger",c)},e.createElement("span",{className:"kui-SelectTriggerInner"},e.createElement(r.Value,{placeholder:p},n)),e.createElement(r.Icon,{asChild:!0},i?e.createElement("span",{className:"kui-SelectIcon kui-SelectLoadingIcon","aria-hidden":"true"},e.createElement(b,null)):e.createElement(E,{className:"kui-SelectIcon"}))))});B.displayName="Select.Trigger";var z=e.forwardRef((o,t)=>{let a=e.useContext(g),{className:n,children:c,color:s,container:P,...p}=y({size:a?.size,...o},M,O),u=D();if(a.open===!1&&!p.forceMount)return e.createElement(r.Portal,{container:P},e.createElement(r.Content,{...p,asChild:!1,ref:t},c));let i=s||u.accentColor;return e.createElement(r.Portal,{container:P},e.createElement(L,{asChild:!0},e.createElement(r.Content,{"data-accent-color":i,sideOffset:4,...p,asChild:!1,ref:t,className:S("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-SelectContent",n)},e.createElement(q,null,c))))});z.displayName="Select.Content";function q({children:o}){let t=x();return e.createElement(C.Root,{type:"auto",className:"kui-ScrollAreaRoot"},e.createElement(r.Viewport,{asChild:!0,className:S("kui-BaseMenuViewport","kui-SelectViewport")},e.createElement(C.Viewport,{ref:t,className:"kui-ScrollAreaViewport",style:{overflowY:void 0}},o)),e.createElement(C.Scrollbar,{className:"kui-ScrollAreaScrollbar",orientation:"vertical"},e.createElement(C.Thumb,{className:"kui-ScrollAreaThumb"})))}var V=e.forwardRef((o,t)=>{let{className:a,children:n,...c}=o,s=typeof n!="string";return e.createElement(r.Item,{...c,asChild:!1,ref:t,className:S("kui-reset","kui-BaseMenuItem","kui-SelectItem",{"kui-SelectItemRich":s},a)},e.createElement(r.ItemIndicator,{className:"kui-SelectItemIndicator"},e.createElement(N,{className:"kui-SelectItemIndicatorIcon"})),e.createElement(r.ItemText,null,n))});V.displayName="Select.Item";var W=e.forwardRef(({className:o,...t},a)=>e.createElement(r.Group,{...t,asChild:!1,ref:a,className:S("kui-SelectGroup",o)}));W.displayName="Select.Group";var K=e.forwardRef(({className:o,...t},a)=>e.createElement(r.Label,{...t,asChild:!1,ref:a,className:S("kui-BaseMenuLabel","kui-SelectLabel",o)}));K.displayName="Select.Label";var H=e.forwardRef(({className:o,...t},a)=>e.createElement(r.Separator,{...t,asChild:!1,ref:a,className:S("kui-BaseMenuSeparator","kui-SelectSeparator",o)}));H.displayName="Select.Separator";export{A as a,B as b,z as c,V as d,W as e,K as f,H as g,J as h};
3
+ //# sourceMappingURL=chunk-3L2MDOYC.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/select.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Select as SelectPrimitive, ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport { Spinner } from './spinner.js';\nimport {\n selectRootPropDefs,\n selectTriggerPropDefs,\n selectContentPropDefs,\n} from './select.props.js';\nimport { useThemeContext, Theme } from './theme.js';\nimport { useThumbSync } from '../hooks/use-thumb-sync.js';\n\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SelectRootOwnProps = GetPropDefTypes<typeof selectRootPropDefs>;\n\n// Trigger and Content pass the size prop def as its own record. It is hoisted because\n// extractProps caches its compiled prop defs on the identity of each record it is given:\n// a literal written at the call site would be a new object, and a recompile, every render.\nconst selectSizePropDefs = { size: selectRootPropDefs.size };\n\n// Keys that open the list from the trigger, as in Radix.\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown'];\n\ninterface SelectContextValue extends SelectRootOwnProps {\n /** Whether the list is open. Undefined when Content is rendered outside a Kookie Select.Root. */\n open?: boolean;\n}\nconst SelectContext = React.createContext<SelectContextValue>({});\n\ninterface SelectRootProps extends SelectPrimitive.SelectProps, SelectRootOwnProps {}\nconst SelectRoot: React.FC<SelectRootProps> = (props) => {\n const {\n children,\n size: sizeProp,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...rootProps\n } = props;\n const size = useThemeSize(sizeProp, selectRootPropDefs.size);\n\n // Root owns the open state and hands Radix a controlled `open`, so Content learns of a\n // change in the same render Radix does. Radix's uncontrolled state reports changes from an\n // effect, a render late, which would mount the open list once without its wrappers.\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const open = openProp ?? uncontrolledOpen;\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [onOpenChange],\n );\n\n return (\n <SelectPrimitive.Root {...rootProps} open={open} onOpenChange={handleOpenChange}>\n <SelectContext.Provider value={React.useMemo(() => ({ size, open }), [size, open])}>\n {children}\n </SelectContext.Provider>\n </SelectPrimitive.Root>\n );\n};\nSelectRoot.displayName = 'Select.Root';\n\ntype SelectTriggerElement = React.ElementRef<typeof SelectPrimitive.Trigger>;\ntype SelectTriggerOwnProps = GetPropDefTypes<typeof selectTriggerPropDefs>;\ninterface SelectTriggerProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Trigger, RemovedProps>,\n SelectTriggerOwnProps {}\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const {\n children,\n className,\n color,\n radius,\n placeholder,\n error,\n loading,\n disabled,\n readOnly,\n ...triggerProps\n } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n selectSizePropDefs,\n selectTriggerPropDefs,\n );\n\n // The props win when set; otherwise a caller's own aria-* (a form library's aria-invalid)\n // stays, so both paths reach the accessibility tree and the CSS, as on TextField.\n const {\n 'aria-invalid': ariaInvalid,\n 'aria-busy': ariaBusy,\n 'aria-disabled': ariaDisabled,\n 'aria-readonly': ariaReadOnly,\n } = triggerProps;\n const isInvalid = Boolean(error) || ariaInvalid === true || ariaInvalid === 'true';\n const ariaProps = React.useMemo(\n () => ({\n 'aria-invalid': isInvalid ? true : ariaInvalid,\n 'aria-busy': loading || ariaBusy,\n 'aria-disabled': disabled || ariaDisabled,\n 'aria-readonly': readOnly || ariaReadOnly,\n }),\n [isInvalid, ariaInvalid, loading, ariaBusy, disabled, ariaDisabled, readOnly, ariaReadOnly],\n );\n\n // Read-only and loading triggers stay focusable but do not open or take typeahead,\n // as on Combobox. Radix skips its own handler when the event is default-prevented.\n const isBlocked = Boolean(readOnly || loading);\n const blockedHandlers = isBlocked\n ? {\n onPointerDown: (event: React.PointerEvent<HTMLButtonElement>) => event.preventDefault(),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.currentTarget.focus();\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (OPEN_KEYS.includes(event.key) || (!isModifierKey && event.key.length === 1)) {\n event.preventDefault();\n }\n },\n }\n : undefined;\n\n return (\n // `disabled` goes to Radix, which merges it with Root's and sets the native attribute.\n <SelectPrimitive.Trigger asChild disabled={disabled} {...blockedHandlers}>\n <button\n data-accent-color={color}\n data-radius={radius}\n data-error={error}\n data-loading={loading}\n {...triggerProps}\n {...ariaProps}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-SelectTrigger', className)}\n >\n <span className=\"kui-SelectTriggerInner\">\n <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>\n </span>\n <SelectPrimitive.Icon asChild>\n {loading ? (\n <span className=\"kui-SelectIcon kui-SelectLoadingIcon\" aria-hidden=\"true\">\n <Spinner />\n </span>\n ) : (\n <ChevronDownIcon className=\"kui-SelectIcon\" />\n )}\n </SelectPrimitive.Icon>\n </button>\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'Select.Trigger';\n\ntype SelectContentElement = React.ElementRef<typeof SelectPrimitive.Content>;\ntype SelectContentOwnProps = GetPropDefTypes<typeof selectContentPropDefs>;\ninterface SelectContentProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Content, RemovedProps>,\n SelectContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Portal>['container'];\n}\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const { className, children, color, container, ...contentProps } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n selectSizePropDefs,\n selectContentPropDefs,\n );\n const themeContext = useThemeContext();\n\n // While closed, Radix still renders Content's children, into a detached fragment: the\n // items must exist for the trigger's value label, typeahead and the native form select.\n // Nothing in that fragment is ever shown, so the theme wrapper and the scroll area, with\n // its two resize observers, are left out until the list opens.\n if (context.open === false && !contentProps.forceMount) {\n return (\n <SelectPrimitive.Portal container={container}>\n <SelectPrimitive.Content {...contentProps} asChild={false} ref={forwardedRef}>\n {children}\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n }\n\n const resolvedColor = color || themeContext.accentColor;\n return (\n <SelectPrimitive.Portal container={container}>\n <Theme asChild>\n <SelectPrimitive.Content\n data-accent-color={resolvedColor}\n sideOffset={4}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'kui-PopperContent',\n 'kui-BaseMenuContent',\n 'kui-variant-soft',\n 'kui-SelectContent',\n className,\n )}\n >\n <SelectScrollArea>{children}</SelectScrollArea>\n </SelectPrimitive.Content>\n </Theme>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'Select.Content';\n\n/** The open list's scroll area. Its own component so the thumb sync hook runs only while open. */\nfunction SelectScrollArea({ children }: { children: React.ReactNode }) {\n const setThumbViewport = useThumbSync<HTMLDivElement>();\n return (\n <ScrollAreaPrimitive.Root type=\"auto\" className=\"kui-ScrollAreaRoot\">\n <SelectPrimitive.Viewport\n asChild\n className={classNames('kui-BaseMenuViewport', 'kui-SelectViewport')}\n >\n <ScrollAreaPrimitive.Viewport\n ref={setThumbViewport}\n className=\"kui-ScrollAreaViewport\"\n style={{ overflowY: undefined }}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n </SelectPrimitive.Viewport>\n <ScrollAreaPrimitive.Scrollbar className=\"kui-ScrollAreaScrollbar\" orientation=\"vertical\">\n <ScrollAreaPrimitive.Thumb className=\"kui-ScrollAreaThumb\" />\n </ScrollAreaPrimitive.Scrollbar>\n </ScrollAreaPrimitive.Root>\n );\n}\n\ntype SelectItemElement = React.ElementRef<typeof SelectPrimitive.Item>;\ninterface SelectItemProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Item, RemovedProps> {}\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>((props, forwardedRef) => {\n const { className, children, ...itemProps } = props;\n\n // Detect if this is rich content (not just a string)\n const isRichContent = typeof children !== 'string';\n\n return (\n <SelectPrimitive.Item\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'kui-reset',\n 'kui-BaseMenuItem',\n 'kui-SelectItem',\n { 'kui-SelectItemRich': isRichContent },\n className,\n )}\n >\n <SelectPrimitive.ItemIndicator className=\"kui-SelectItemIndicator\">\n <ThickCheckIcon className=\"kui-SelectItemIndicatorIcon\" />\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = 'Select.Item';\n\ntype SelectGroupElement = React.ElementRef<typeof SelectPrimitive.Group>;\ninterface SelectGroupProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Group, RemovedProps> {}\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-SelectGroup', className)}\n />\n ),\n);\nSelectGroup.displayName = 'Select.Group';\n\ntype SelectLabelElement = React.ElementRef<typeof SelectPrimitive.Label>;\ninterface SelectLabelProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Label, RemovedProps> {}\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuLabel', 'kui-SelectLabel', className)}\n />\n ),\n);\nSelectLabel.displayName = 'Select.Label';\n\ntype SelectSeparatorElement = React.ElementRef<typeof SelectPrimitive.Separator>;\ninterface SelectSeparatorProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Separator, RemovedProps> {}\nconst SelectSeparator = React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuSeparator', 'kui-SelectSeparator', className)}\n />\n ),\n);\nSelectSeparator.displayName = 'Select.Separator';\n\nexport {\n SelectRoot as Root,\n SelectTrigger as Trigger,\n SelectContent as Content,\n SelectItem as Item,\n SelectGroup as Group,\n SelectLabel as Label,\n SelectSeparator as Separator,\n};\n\nexport type {\n SelectRootProps as RootProps,\n SelectTriggerProps as TriggerProps,\n SelectContentProps as ContentProps,\n SelectItemProps as ItemProps,\n SelectGroupProps as GroupProps,\n SelectLabelProps as LabelProps,\n SelectSeparatorProps as SeparatorProps,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["select_exports", "__export", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectRoot", "SelectSeparator", "SelectTrigger", "React", "classNames", "SelectPrimitive", "ScrollAreaPrimitive", "selectSizePropDefs", "selectRootPropDefs", "OPEN_KEYS", "SelectContext", "SelectRoot", "props", "children", "sizeProp", "openProp", "defaultOpen", "onOpenChange", "rootProps", "size", "useThemeSize", "uncontrolledOpen", "setUncontrolledOpen", "open", "handleOpenChange", "next", "SelectPrimitive", "SelectTrigger", "forwardedRef", "context", "className", "color", "radius", "placeholder", "error", "loading", "disabled", "readOnly", "triggerProps", "extractProps", "selectTriggerPropDefs", "ariaInvalid", "ariaBusy", "ariaDisabled", "ariaReadOnly", "isInvalid", "ariaProps", "blockedHandlers", "event", "isModifierKey", "classNames", "Spinner", "ChevronDownIcon", "SelectContent", "container", "contentProps", "selectContentPropDefs", "themeContext", "useThemeContext", "resolvedColor", "Theme", "SelectScrollArea", "setThumbViewport", "useThumbSync", "ScrollAreaPrimitive", "SelectItem", "itemProps", "isRichContent", "ThickCheckIcon", "SelectGroup", "SelectLabel", "SelectSeparator"]
7
+ }
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a as re,b as ae}from"./chunk-YNCI5PY6.js";import{a as B,b as te,c as D}from"./chunk-7ROKZHH2.js";import{a as oe}from"./chunk-WUCBFB25.js";import{a as ee}from"./chunk-TGRHRMQI.js";import{b as Y,c as Z}from"./chunk-YIKLO2XL.js";import{a as U}from"./chunk-ILWS2JUE.js";import{b as J,c as Q}from"./chunk-GKDGNPBD.js";import{c as _}from"./chunk-5KMEUZWN.js";import{b as X}from"./chunk-2IUGM657.js";import{c as O}from"./chunk-OKQAVYW4.js";import{a as Ie}from"./chunk-VQPANPMI.js";var Fe={};Ie(Fe,{Content:()=>xe,Empty:()=>Re,Group:()=>ye,Input:()=>Pe,Item:()=>Se,Label:()=>he,List:()=>ge,Root:()=>de,Separator:()=>ve,Trigger:()=>Ce,Value:()=>fe});import*as e from"react";import d from"classnames";import{Popover as ne}from"radix-ui";import{useCallbackRef as A,useComposedRefs as le,useControllableState as G,useLayoutEffect as W}from"radix-ui/internal";import{Command as T,useCommandState as se}from"cmdk";var we={size:B.size},Ne={size:D.size},ie=new Set;function Le(o){ie.has(o)||(ie.add(o),console.warn(o))}function Oe(o){let r=o,t=new Set;return{get:()=>r,set:a=>{Object.is(a,r)||(r=a,t.forEach(n=>n()))},subscribe:a=>(t.add(a),()=>{t.delete(a)})}}var me=e.createContext(null),M=o=>{let r=e.useContext(me);if(!r)throw new Error(`Combobox.${o} must be used within Combobox.Root`);return r},ce=e.createContext(null),be=e.createContext(null),ue=e.createContext(null),pe=()=>e.useContext(ue);function De(o){let r=o.getAttribute("aria-label")?.trim();if(r)return r;let t=o.getAttribute("aria-labelledby");if(t){let n=t.split(/\s+/).map(s=>o.ownerDocument.getElementById(s)?.textContent?.trim()).filter(Boolean).join(" ");if(n)return n}let a=o.labels;if(a&&a.length>0){let n=Array.from(a).map(s=>s.textContent?.trim()).filter(Boolean).join(" ");if(n)return n}}var de=o=>{let{children:r,size:t,value:a,defaultValue:n=null,onValueChange:s,open:m,defaultOpen:C=!1,onOpenChange:l,placeholder:c="Select an option",searchPlaceholder:P="Search...",searchValue:g,defaultSearchValue:R="",onSearchValueChange:y,filter:f,shouldFilter:i=!0,loop:b=!0,disabled:h,resetSearchOnSelect:x=!0,resetSearchOnClose:S=!0,color:V,displayValue:v,...k}=o,p=X(t,B.size),[E,I]=G({prop:m,defaultProp:C,onChange:l}),[u,Ve]=G({prop:a,defaultProp:n,onChange:s}),[j,w]=G({prop:g,defaultProp:R,onChange:y}),K=typeof v=="function"?v(u):v,[N]=e.useState(()=>Oe(u));W(()=>{N.set(u)},[N,u]);let F=A(L=>{I(L),!L&&S&&w("")}),q=A(L=>{Ve(L),I(!1),x&&w("")}),z=e.useRef(null),$=e.useCallback(()=>z.current?De(z.current):void 0,[]),Ee=e.useMemo(()=>({value:u,displayValue:K,setOpen:F,size:p,placeholder:c,searchPlaceholder:P,disabled:h,color:V,loop:b,shouldFilter:i,filter:f,triggerRef:z,getTriggerLabel:$}),[u,K,F,p,c,P,h,V,b,i,f,$]),ke=e.useMemo(()=>({value:j,setValue:w}),[j,w]),Te=e.useMemo(()=>({store:N,onSelect:q,disabled:h}),[N,q,h]);return e.createElement(me.Provider,{value:Ee},e.createElement(ce.Provider,{value:ke},e.createElement(be.Provider,{value:Te},e.createElement(re,{open:E,onOpenChange:F,...k},r))))};de.displayName="Combobox.Root";var Ce=e.forwardRef((o,r)=>{let t=M("Trigger"),{children:a,className:n,placeholder:s,disabled:m,readOnly:C,error:l,loading:c,color:P,radius:g,onClick:R,onKeyDown:y,type:f,...i}=O({size:t.size,...o},we,te),b=m??t.disabled,h=P??t.color,x=!!(C||c),S=t.value==null&&t.displayValue==null,V=le(r,t.triggerRef),{getTriggerLabel:v}=t;e.useEffect(()=>{},[v]);let k=u=>{R?.(u),x&&u.preventDefault()},p=u=>{y?.(u),!(u.defaultPrevented||x||b)&&(u.key==="ArrowDown"||u.key==="ArrowUp")&&(u.preventDefault(),t.setOpen(!0))},E=e.createElement("span",{className:"kui-SelectIcon kui-SelectLoadingIcon","aria-hidden":"true"},e.createElement(U,null)),I=e.createElement(e.Fragment,null,e.createElement("span",{className:"kui-SelectTriggerInner"},e.createElement("span",{className:"kui-ComboboxValue"},t.displayValue??t.value??s??t.placeholder)),c?E:e.createElement(Q,{className:"kui-SelectIcon"}));return e.createElement(ae,{disabled:b},e.createElement("button",{"data-accent-color":h,"data-radius":g,"data-error":l,"data-loading":c,"data-disabled":b||void 0,"data-read-only":C||void 0,"data-placeholder":S?"":void 0,...i,role:"combobox","aria-disabled":b||i["aria-disabled"],"aria-readonly":C||i["aria-readonly"],"aria-invalid":l||i["aria-invalid"],"aria-busy":c||i["aria-busy"],type:f??"button",disabled:b,onClick:k,onKeyDown:p,ref:V,className:d("kui-reset","kui-SelectTrigger","kui-ComboboxTrigger",n)},a?e.createElement(e.Fragment,null,ee(a),c?E:null):I))});Ce.displayName="Combobox.Trigger";var fe=e.forwardRef(({placeholder:o,children:r,className:t,...a},n)=>{let s=M("Value"),m=s.displayValue??s.value??void 0;return e.createElement("span",{...a,ref:n,className:d("kui-ComboboxValue",t)},m??r??o??s.placeholder)});fe.displayName="Combobox.Value";function Me(){let o=se(n=>n.filtered.count),r=se(n=>n.search),[t,a]=e.useState("");return e.useEffect(()=>{let n=r?o===0?"No results":`${o} result${o===1?"":"s"}`:"",s=window.setTimeout(()=>a(n),r?400:0);return()=>window.clearTimeout(s)},[o,r]),e.createElement(oe,{role:"status","aria-live":"polite","aria-atomic":"true"},t)}var xe=e.forwardRef((o,r)=>{let t=M("Content"),a=Y(),n=o.size??t.size??D.size.default,{className:s,children:m,color:C,forceMount:l,container:c,onOpenAutoFocus:P,"aria-label":g,"aria-labelledby":R,...y}=O({...o,size:n},D),f=C||t.color||a.accentColor,{getTriggerLabel:i}=t,[b,h]=e.useState(i);W(()=>{if(b!==void 0)return;let p=i();p!==void 0&&h(p)},[i,b]);let x=o["aria-label"]??b,S=e.useMemo(()=>({sizeClassName:O({size:n},Ne).className||void 0,color:f,label:x}),[n,f,x]),V=e.useRef(null),v=p=>{if(P?.(p),p.defaultPrevented)return;let E=V.current;if(!E||E.querySelector("[cmdk-input]"))return;p.preventDefault(),(E.querySelector("[cmdk-list]")??E).focus({preventScroll:!0})},k=t.value?.trim()||void 0;return e.createElement(ne.Portal,{container:c,forceMount:l?!0:void 0},e.createElement(Z,{asChild:!0},e.createElement(ne.Content,{"data-accent-color":f,align:"start",sideOffset:4,collisionPadding:10,"aria-label":R?void 0:x,"aria-labelledby":R,...y,forceMount:l?!0:void 0,onOpenAutoFocus:v,ref:r,className:d("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-ComboboxContent",s)},e.createElement(ue.Provider,{value:S},e.createElement(T,{ref:V,loop:t.loop,shouldFilter:t.shouldFilter,filter:t.filter,label:x,defaultValue:k,className:"kui-ComboboxCommand"},m,e.createElement(Me,null))))))});xe.displayName="Combobox.Content";var Pe=e.forwardRef(({className:o,startAdornment:r,endAdornment:t,placeholder:a,variant:n,value:s,onValueChange:m,...C},l)=>{let c=M("Input"),P=e.useContext(ce),g=pe(),R=n??"soft",y=s??P?.value??"",f=m??P?.setValue,i=e.createElement("div",{className:d("kui-TextFieldRoot","kui-ComboboxInputRoot",g?.sizeClassName,`kui-variant-${R}`),"data-accent-color":g?.color},r?e.createElement("div",{className:"kui-TextFieldSlot"},r):null,e.createElement(T.Input,{...C,ref:l,value:y,onValueChange:f,placeholder:a??c.searchPlaceholder,className:d("kui-reset","kui-TextFieldInput",o)}),t?e.createElement("div",{className:"kui-TextFieldSlot","data-side":"right"},t):null);return g?e.createElement("div",{className:"kui-ComboboxSearch"},i):i});Pe.displayName="Combobox.Input";var ge=e.forwardRef(({className:o,children:r,label:t,...a},n)=>{let s=pe();return e.createElement("div",{className:"kui-ComboboxScrollArea"},e.createElement("div",{className:d("kui-BaseMenuViewport","kui-ComboboxViewport")},e.createElement(T.List,{...a,label:t??s?.label,ref:n,className:d("kui-ComboboxList",o)},r)))});ge.displayName="Combobox.List";var Re=e.forwardRef(({className:o,...r},t)=>e.createElement(T.Empty,{...r,ref:t,className:d("kui-ComboboxEmpty",o)}));Re.displayName="Combobox.Empty";var ye=e.forwardRef(({className:o,...r},t)=>e.createElement(T.Group,{...r,ref:t,className:d("kui-BaseMenuGroup","kui-ComboboxGroup",o)}));ye.displayName="Combobox.Group";var he=e.forwardRef(({className:o,id:r,...t},a)=>{let n=e.useId(),s=r??n,m=e.useRef(null),C=le(a,m);return W(()=>{let l=m.current?.closest("[cmdk-group-items]");if(!(!l||l.hasAttribute("aria-labelledby")))return l.setAttribute("aria-labelledby",s),()=>{l.getAttribute("aria-labelledby")===s&&l.removeAttribute("aria-labelledby")}},[s]),e.createElement("div",{...t,id:s,ref:C,className:d("kui-BaseMenuLabel","kui-ComboboxLabel",o)})});he.displayName="Combobox.Label";var ve=e.forwardRef(({className:o,...r},t)=>e.createElement(T.Separator,{...r,ref:t,className:d("kui-BaseMenuSeparator","kui-ComboboxSeparator",o)}));ve.displayName="Combobox.Separator";function H(o){return o==null||typeof o=="boolean"?"":typeof o=="string"||typeof o=="number"?String(o):Array.isArray(o)?o.map(H).join(""):e.isValidElement(o)?H(o.props.children):""}var Se=e.forwardRef(({className:o,children:r,label:t,value:a,disabled:n,onSelect:s,keywords:m,...C},l)=>{let c=e.useContext(be);if(!c)throw new Error("Combobox.Item must be used within Combobox.Root");let{store:P,onSelect:g,disabled:R}=c,y=a??(typeof r=="string"?r.trim():void 0),f=()=>y!==void 0&&P.get()===y,i=e.useSyncExternalStore(P.subscribe,f,f),b=A(s),h=e.useCallback(k=>{let p=a??k;g(p),b(p)},[a,g,b]),x=(t??H(r)).replace(/\s+/g," ").trim(),S=x?m?[x,...m]:[x]:m,V=S?S.join("\0"):"",v=n??R??!1;return e.createElement(T.Item,{key:V,...C,value:a,keywords:S,"aria-checked":i,disabled:v||void 0,ref:l,onSelect:h,className:d("kui-reset","kui-BaseMenuItem","kui-ComboboxItem",o)},i?e.createElement("span",{className:d("kui-BaseMenuItemIndicator","kui-ComboboxItemIndicator")},e.createElement(J,{className:d("kui-BaseMenuItemIndicatorIcon","kui-ComboboxItemIndicatorIcon")})):null,e.createElement(_,null,r))});Se.displayName="Combobox.Item";export{de as a,Ce as b,fe as c,xe as d,Pe as e,ge as f,Re as g,ye as h,he as i,ve as j,Se as k,Fe as l};
3
- //# sourceMappingURL=chunk-KNBSG2WA.js.map
2
+ import{a as re,b as ae}from"./chunk-FPGBCCML.js";import{a as B,b as te,c as D}from"./chunk-7ROKZHH2.js";import{a as oe}from"./chunk-WUCBFB25.js";import{a as ee}from"./chunk-TGRHRMQI.js";import{b as Y,c as Z}from"./chunk-N3QLHFHB.js";import{a as U}from"./chunk-ILWS2JUE.js";import{b as J,c as Q}from"./chunk-GKDGNPBD.js";import{c as _}from"./chunk-5KMEUZWN.js";import{b as X}from"./chunk-5ON3XLRD.js";import{c as O}from"./chunk-OKQAVYW4.js";import{a as Ie}from"./chunk-VQPANPMI.js";var Fe={};Ie(Fe,{Content:()=>xe,Empty:()=>Re,Group:()=>ye,Input:()=>Pe,Item:()=>Se,Label:()=>he,List:()=>ge,Root:()=>de,Separator:()=>ve,Trigger:()=>Ce,Value:()=>fe});import*as e from"react";import d from"classnames";import{Popover as ne}from"radix-ui";import{useCallbackRef as A,useComposedRefs as le,useControllableState as G,useLayoutEffect as W}from"radix-ui/internal";import{Command as T,useCommandState as se}from"cmdk";var we={size:B.size},Ne={size:D.size},ie=new Set;function Le(o){ie.has(o)||(ie.add(o),console.warn(o))}function Oe(o){let r=o,t=new Set;return{get:()=>r,set:a=>{Object.is(a,r)||(r=a,t.forEach(n=>n()))},subscribe:a=>(t.add(a),()=>{t.delete(a)})}}var me=e.createContext(null),M=o=>{let r=e.useContext(me);if(!r)throw new Error(`Combobox.${o} must be used within Combobox.Root`);return r},ce=e.createContext(null),be=e.createContext(null),ue=e.createContext(null),pe=()=>e.useContext(ue);function De(o){let r=o.getAttribute("aria-label")?.trim();if(r)return r;let t=o.getAttribute("aria-labelledby");if(t){let n=t.split(/\s+/).map(s=>o.ownerDocument.getElementById(s)?.textContent?.trim()).filter(Boolean).join(" ");if(n)return n}let a=o.labels;if(a&&a.length>0){let n=Array.from(a).map(s=>s.textContent?.trim()).filter(Boolean).join(" ");if(n)return n}}var de=o=>{let{children:r,size:t,value:a,defaultValue:n=null,onValueChange:s,open:m,defaultOpen:C=!1,onOpenChange:l,placeholder:c="Select an option",searchPlaceholder:P="Search...",searchValue:g,defaultSearchValue:R="",onSearchValueChange:y,filter:f,shouldFilter:i=!0,loop:b=!0,disabled:h,resetSearchOnSelect:x=!0,resetSearchOnClose:S=!0,color:V,displayValue:v,...k}=o,p=X(t,B.size),[E,I]=G({prop:m,defaultProp:C,onChange:l}),[u,Ve]=G({prop:a,defaultProp:n,onChange:s}),[j,w]=G({prop:g,defaultProp:R,onChange:y}),K=typeof v=="function"?v(u):v,[N]=e.useState(()=>Oe(u));W(()=>{N.set(u)},[N,u]);let F=A(L=>{I(L),!L&&S&&w("")}),q=A(L=>{Ve(L),I(!1),x&&w("")}),z=e.useRef(null),$=e.useCallback(()=>z.current?De(z.current):void 0,[]),Ee=e.useMemo(()=>({value:u,displayValue:K,setOpen:F,size:p,placeholder:c,searchPlaceholder:P,disabled:h,color:V,loop:b,shouldFilter:i,filter:f,triggerRef:z,getTriggerLabel:$}),[u,K,F,p,c,P,h,V,b,i,f,$]),ke=e.useMemo(()=>({value:j,setValue:w}),[j,w]),Te=e.useMemo(()=>({store:N,onSelect:q,disabled:h}),[N,q,h]);return e.createElement(me.Provider,{value:Ee},e.createElement(ce.Provider,{value:ke},e.createElement(be.Provider,{value:Te},e.createElement(re,{open:E,onOpenChange:F,...k},r))))};de.displayName="Combobox.Root";var Ce=e.forwardRef((o,r)=>{let t=M("Trigger"),{children:a,className:n,placeholder:s,disabled:m,readOnly:C,error:l,loading:c,color:P,radius:g,onClick:R,onKeyDown:y,type:f,...i}=O({size:t.size,...o},we,te),b=m??t.disabled,h=P??t.color,x=!!(C||c),S=t.value==null&&t.displayValue==null,V=le(r,t.triggerRef),{getTriggerLabel:v}=t;e.useEffect(()=>{},[v]);let k=u=>{R?.(u),x&&u.preventDefault()},p=u=>{y?.(u),!(u.defaultPrevented||x||b)&&(u.key==="ArrowDown"||u.key==="ArrowUp")&&(u.preventDefault(),t.setOpen(!0))},E=e.createElement("span",{className:"kui-SelectIcon kui-SelectLoadingIcon","aria-hidden":"true"},e.createElement(U,null)),I=e.createElement(e.Fragment,null,e.createElement("span",{className:"kui-SelectTriggerInner"},e.createElement("span",{className:"kui-ComboboxValue"},t.displayValue??t.value??s??t.placeholder)),c?E:e.createElement(Q,{className:"kui-SelectIcon"}));return e.createElement(ae,{disabled:b},e.createElement("button",{"data-accent-color":h,"data-radius":g,"data-error":l,"data-loading":c,"data-disabled":b||void 0,"data-read-only":C||void 0,"data-placeholder":S?"":void 0,...i,role:"combobox","aria-disabled":b||i["aria-disabled"],"aria-readonly":C||i["aria-readonly"],"aria-invalid":l||i["aria-invalid"],"aria-busy":c||i["aria-busy"],type:f??"button",disabled:b,onClick:k,onKeyDown:p,ref:V,className:d("kui-reset","kui-SelectTrigger","kui-ComboboxTrigger",n)},a?e.createElement(e.Fragment,null,ee(a),c?E:null):I))});Ce.displayName="Combobox.Trigger";var fe=e.forwardRef(({placeholder:o,children:r,className:t,...a},n)=>{let s=M("Value"),m=s.displayValue??s.value??void 0;return e.createElement("span",{...a,ref:n,className:d("kui-ComboboxValue",t)},m??r??o??s.placeholder)});fe.displayName="Combobox.Value";function Me(){let o=se(n=>n.filtered.count),r=se(n=>n.search),[t,a]=e.useState("");return e.useEffect(()=>{let n=r?o===0?"No results":`${o} result${o===1?"":"s"}`:"",s=window.setTimeout(()=>a(n),r?400:0);return()=>window.clearTimeout(s)},[o,r]),e.createElement(oe,{role:"status","aria-live":"polite","aria-atomic":"true"},t)}var xe=e.forwardRef((o,r)=>{let t=M("Content"),a=Y(),n=o.size??t.size??D.size.default,{className:s,children:m,color:C,forceMount:l,container:c,onOpenAutoFocus:P,"aria-label":g,"aria-labelledby":R,...y}=O({...o,size:n},D),f=C||t.color||a.accentColor,{getTriggerLabel:i}=t,[b,h]=e.useState(i);W(()=>{if(b!==void 0)return;let p=i();p!==void 0&&h(p)},[i,b]);let x=o["aria-label"]??b,S=e.useMemo(()=>({sizeClassName:O({size:n},Ne).className||void 0,color:f,label:x}),[n,f,x]),V=e.useRef(null),v=p=>{if(P?.(p),p.defaultPrevented)return;let E=V.current;if(!E||E.querySelector("[cmdk-input]"))return;p.preventDefault(),(E.querySelector("[cmdk-list]")??E).focus({preventScroll:!0})},k=t.value?.trim()||void 0;return e.createElement(ne.Portal,{container:c,forceMount:l?!0:void 0},e.createElement(Z,{asChild:!0},e.createElement(ne.Content,{"data-accent-color":f,align:"start",sideOffset:4,collisionPadding:10,"aria-label":R?void 0:x,"aria-labelledby":R,...y,forceMount:l?!0:void 0,onOpenAutoFocus:v,ref:r,className:d("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-ComboboxContent",s)},e.createElement(ue.Provider,{value:S},e.createElement(T,{ref:V,loop:t.loop,shouldFilter:t.shouldFilter,filter:t.filter,label:x,defaultValue:k,className:"kui-ComboboxCommand"},m,e.createElement(Me,null))))))});xe.displayName="Combobox.Content";var Pe=e.forwardRef(({className:o,startAdornment:r,endAdornment:t,placeholder:a,variant:n,value:s,onValueChange:m,...C},l)=>{let c=M("Input"),P=e.useContext(ce),g=pe(),R=n??"soft",y=s??P?.value??"",f=m??P?.setValue,i=e.createElement("div",{className:d("kui-TextFieldRoot","kui-ComboboxInputRoot",g?.sizeClassName,`kui-variant-${R}`),"data-accent-color":g?.color},r?e.createElement("div",{className:"kui-TextFieldSlot"},r):null,e.createElement(T.Input,{...C,ref:l,value:y,onValueChange:f,placeholder:a??c.searchPlaceholder,className:d("kui-reset","kui-TextFieldInput",o)}),t?e.createElement("div",{className:"kui-TextFieldSlot","data-side":"right"},t):null);return g?e.createElement("div",{className:"kui-ComboboxSearch"},i):i});Pe.displayName="Combobox.Input";var ge=e.forwardRef(({className:o,children:r,label:t,...a},n)=>{let s=pe();return e.createElement("div",{className:"kui-ComboboxScrollArea"},e.createElement("div",{className:d("kui-BaseMenuViewport","kui-ComboboxViewport")},e.createElement(T.List,{...a,label:t??s?.label,ref:n,className:d("kui-ComboboxList",o)},r)))});ge.displayName="Combobox.List";var Re=e.forwardRef(({className:o,...r},t)=>e.createElement(T.Empty,{...r,ref:t,className:d("kui-ComboboxEmpty",o)}));Re.displayName="Combobox.Empty";var ye=e.forwardRef(({className:o,...r},t)=>e.createElement(T.Group,{...r,ref:t,className:d("kui-BaseMenuGroup","kui-ComboboxGroup",o)}));ye.displayName="Combobox.Group";var he=e.forwardRef(({className:o,id:r,...t},a)=>{let n=e.useId(),s=r??n,m=e.useRef(null),C=le(a,m);return W(()=>{let l=m.current?.closest("[cmdk-group-items]");if(!(!l||l.hasAttribute("aria-labelledby")))return l.setAttribute("aria-labelledby",s),()=>{l.getAttribute("aria-labelledby")===s&&l.removeAttribute("aria-labelledby")}},[s]),e.createElement("div",{...t,id:s,ref:C,className:d("kui-BaseMenuLabel","kui-ComboboxLabel",o)})});he.displayName="Combobox.Label";var ve=e.forwardRef(({className:o,...r},t)=>e.createElement(T.Separator,{...r,ref:t,className:d("kui-BaseMenuSeparator","kui-ComboboxSeparator",o)}));ve.displayName="Combobox.Separator";function H(o){return o==null||typeof o=="boolean"?"":typeof o=="string"||typeof o=="number"?String(o):Array.isArray(o)?o.map(H).join(""):e.isValidElement(o)?H(o.props.children):""}var Se=e.forwardRef(({className:o,children:r,label:t,value:a,disabled:n,onSelect:s,keywords:m,...C},l)=>{let c=e.useContext(be);if(!c)throw new Error("Combobox.Item must be used within Combobox.Root");let{store:P,onSelect:g,disabled:R}=c,y=a??(typeof r=="string"?r.trim():void 0),f=()=>y!==void 0&&P.get()===y,i=e.useSyncExternalStore(P.subscribe,f,f),b=A(s),h=e.useCallback(k=>{let p=a??k;g(p),b(p)},[a,g,b]),x=(t??H(r)).replace(/\s+/g," ").trim(),S=x?m?[x,...m]:[x]:m,V=S?S.join("\0"):"",v=n??R??!1;return e.createElement(T.Item,{key:V,...C,value:a,keywords:S,"aria-checked":i,disabled:v||void 0,ref:l,onSelect:h,className:d("kui-reset","kui-BaseMenuItem","kui-ComboboxItem",o)},i?e.createElement("span",{className:d("kui-BaseMenuItemIndicator","kui-ComboboxItemIndicator")},e.createElement(J,{className:d("kui-BaseMenuItemIndicatorIcon","kui-ComboboxItemIndicatorIcon")})):null,e.createElement(_,null,r))});Se.displayName="Combobox.Item";export{de as a,Ce as b,fe as c,xe as d,Pe as e,ge as f,Re as g,ye as h,he as i,ve as j,Se as k,Fe as l};
3
+ //# sourceMappingURL=chunk-5CFSNNYS.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/combobox.tsx"],
4
+ "sourcesContent": ["'use client';\n\n/**\n * Combobox: Radix Popover for positioning, dismissal and focus; cmdk for search,\n * filtering and keyboard navigation.\n *\n * Render path. State is split so an interaction re-renders only what reads it:\n * - `ComboboxContext` (Trigger, Value, Content): config and the selected value.\n * Open state is not in it, so opening and closing re-render no consumer.\n * - `ComboboxSearchContext` (Input only): the search text.\n * - `ComboboxItemContext` (Items): stable values only. Items read \"am I selected\"\n * from a store through `useSyncExternalStore`, so a selection re-renders the old\n * and the new selected item, not all N.\n *\n * Highlight. cmdk's `data-selected` is the single highlight source, driven by both\n * the pointer and the keyboard. There is no separate CSS `:hover` highlight, so two\n * items are never lit at once and Enter always picks the lit item.\n */\n\nimport { warnDeprecated } from '../helpers/warn-deprecated.js';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\nimport { useCallbackRef, useComposedRefs, useControllableState, useLayoutEffect } from 'radix-ui/internal';\nimport { Command as CommandPrimitive, useCommandState } from 'cmdk';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { comboboxRootPropDefs, comboboxTriggerPropDefs, comboboxContentPropDefs } from './combobox.props.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport { Spinner } from './spinner.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport * as Popover from './popover.js';\nimport { Slottable } from './slot.js';\nimport { VisuallyHidden } from './visually-hidden.js';\n\nimport type { textFieldRootPropDefs } from './text-field.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TextFieldVariant = (typeof textFieldRootPropDefs.variant.values)[number];\ntype ComboboxValue = string | null;\ntype CommandFilter = (value: string, search: string, keywords?: string[]) => number;\n\n// Hoisted so extractProps' compiled prop-def cache (keyed by object identity) hits.\nconst triggerSizingPropDefs = { size: comboboxRootPropDefs.size };\nconst contentSizePropDefs = { size: comboboxContentPropDefs.size };\n\nconst warned = new Set<string>();\nfunction warnOnce(message: string) {\n if (warned.has(message)) return;\n warned.add(message);\n console.warn(message);\n}\n\n// ============================================================================\n// Selection store\n// ============================================================================\n\ninterface SelectionStore {\n get: () => ComboboxValue;\n set: (value: ComboboxValue) => void;\n subscribe: (listener: () => void) => () => void;\n}\n\nfunction createSelectionStore(initial: ComboboxValue): SelectionStore {\n let current = initial;\n const listeners = new Set<() => void>();\n return {\n get: () => current,\n set: (next) => {\n if (Object.is(next, current)) return;\n current = next;\n listeners.forEach((listener) => listener());\n },\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\n// ============================================================================\n// Contexts\n// ============================================================================\n\ninterface ComboboxContextValue {\n value: ComboboxValue;\n displayValue?: string;\n setOpen: (open: boolean) => void;\n size?: ComboboxRootOwnProps['size'];\n placeholder?: string;\n searchPlaceholder?: string;\n disabled?: boolean;\n color?: string;\n loop: boolean;\n shouldFilter: boolean;\n filter?: CommandFilter;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n /** Reads the trigger's accessible name from the DOM (aria-label, aria-labelledby or <label>). */\n getTriggerLabel: () => string | undefined;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue | null>(null);\n\nconst useComboboxContext = (componentName: string) => {\n const ctx = React.useContext(ComboboxContext);\n if (!ctx) {\n throw new Error(`Combobox.${componentName} must be used within Combobox.Root`);\n }\n return ctx;\n};\n\ninterface ComboboxSearchContextValue {\n value: string;\n setValue: (value: string) => void;\n}\n\nconst ComboboxSearchContext = React.createContext<ComboboxSearchContextValue | null>(null);\n\ninterface ComboboxItemContextValue {\n store: SelectionStore;\n onSelect: (value: string) => void;\n disabled?: boolean;\n}\n\nconst ComboboxItemContext = React.createContext<ComboboxItemContextValue | null>(null);\n\n/** Values resolved by Content and read by Input and List. */\ninterface ComboboxContentContextValue {\n sizeClassName?: string;\n color?: string;\n label?: string;\n}\n\nconst ComboboxContentContext = React.createContext<ComboboxContentContextValue | null>(null);\n\nconst useComboboxContentContext = () => React.useContext(ComboboxContentContext);\n\n// ============================================================================\n// Root\n// ============================================================================\n\ntype ComboboxRootOwnProps = GetPropDefTypes<typeof comboboxRootPropDefs> & {\n value?: ComboboxValue;\n defaultValue?: ComboboxValue;\n onValueChange?: (value: ComboboxValue) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n filter?: CommandFilter;\n shouldFilter?: boolean;\n loop?: boolean;\n disabled?: boolean;\n /** Clear the search text when an option is selected. Defaults to true. */\n resetSearchOnSelect?: boolean;\n /** Clear the search text when the popup is dismissed without a selection. Defaults to true. */\n resetSearchOnClose?: boolean;\n color?: (typeof comboboxTriggerPropDefs.color.values)[number];\n /**\n * Text shown in the trigger for the selected value. Without it the raw value is shown.\n * Can be a string or a function that receives the current value. Pass a stable\n * function (module scope or `useCallback`): an inline function runs on every render.\n * @example displayValue={(v) => items.find(i => i.value === v)?.label}\n */\n displayValue?: string | ((value: ComboboxValue) => string | undefined);\n};\n\ntype PopoverRootProps = React.ComponentPropsWithoutRef<typeof Popover.Root>;\ninterface ComboboxRootProps extends PopoverRootProps, ComboboxRootOwnProps {}\n\nfunction readElementLabel(el: HTMLElement): string | undefined {\n const ariaLabel = el.getAttribute('aria-label')?.trim();\n if (ariaLabel) return ariaLabel;\n\n const labelledBy = el.getAttribute('aria-labelledby');\n if (labelledBy) {\n const text = labelledBy\n .split(/\\s+/)\n .map((id) => el.ownerDocument.getElementById(id)?.textContent?.trim())\n .filter(Boolean)\n .join(' ');\n if (text) return text;\n }\n\n const labels = (el as HTMLButtonElement).labels;\n if (labels && labels.length > 0) {\n const text = Array.from(labels)\n .map((label) => label.textContent?.trim())\n .filter(Boolean)\n .join(' ');\n if (text) return text;\n }\n\n return undefined;\n}\n\nconst ComboboxRoot: React.FC<ComboboxRootProps> = (props) => {\n const {\n children,\n size: sizeProp,\n value: valueProp,\n defaultValue = null,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placeholder = 'Select an option',\n searchPlaceholder = 'Search...',\n searchValue: searchValueProp,\n defaultSearchValue = '',\n onSearchValueChange,\n filter,\n shouldFilter = true,\n loop = true,\n disabled,\n resetSearchOnSelect = true,\n resetSearchOnClose = true,\n color,\n displayValue: displayValueProp,\n ...rootProps\n } = props;\n const size = useThemeSize(sizeProp, comboboxRootPropDefs.size);\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [value, setValue] = useControllableState<ComboboxValue>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n const [searchValue, setSearchValue] = useControllableState<string>({\n prop: searchValueProp,\n defaultProp: defaultSearchValue,\n onChange: onSearchValueChange,\n });\n\n const resolvedDisplayValue = typeof displayValueProp === 'function' ? displayValueProp(value) : displayValueProp;\n\n // Items subscribe to this store instead of the context, so a selection\n // re-renders only the items whose selected state flips.\n const [store] = React.useState(() => createSelectionStore(value));\n useLayoutEffect(() => {\n store.set(value);\n }, [store, value]);\n\n // The radix setters change identity whenever their controlled prop changes.\n // Reading them through callback refs keeps these handlers stable, so the\n // contexts below do not change on every keystroke or selection.\n const handleOpenChange = useCallbackRef((nextOpen: boolean) => {\n setOpen(nextOpen);\n if (!nextOpen && resetSearchOnClose) setSearchValue('');\n });\n\n const onSelect = useCallbackRef((nextValue: string) => {\n setValue(nextValue);\n setOpen(false);\n if (resetSearchOnSelect) setSearchValue('');\n });\n\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const getTriggerLabel = React.useCallback(() => (triggerRef.current ? readElementLabel(triggerRef.current) : undefined), []);\n\n const contextValue = React.useMemo<ComboboxContextValue>(\n () => ({\n value,\n displayValue: resolvedDisplayValue,\n setOpen: handleOpenChange,\n size,\n placeholder,\n searchPlaceholder,\n disabled,\n color,\n loop,\n shouldFilter,\n filter,\n triggerRef,\n getTriggerLabel,\n }),\n [value, resolvedDisplayValue, handleOpenChange, size, placeholder, searchPlaceholder, disabled, color, loop, shouldFilter, filter, getTriggerLabel],\n );\n\n const searchContextValue = React.useMemo<ComboboxSearchContextValue>(() => ({ value: searchValue, setValue: setSearchValue }), [searchValue, setSearchValue]);\n\n const itemContextValue = React.useMemo<ComboboxItemContextValue>(() => ({ store, onSelect, disabled }), [store, onSelect, disabled]);\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <ComboboxSearchContext.Provider value={searchContextValue}>\n <ComboboxItemContext.Provider value={itemContextValue}>\n <Popover.Root open={open} onOpenChange={handleOpenChange} {...rootProps}>\n {children}\n </Popover.Root>\n </ComboboxItemContext.Provider>\n </ComboboxSearchContext.Provider>\n </ComboboxContext.Provider>\n );\n};\nComboboxRoot.displayName = 'Combobox.Root';\n\n// ============================================================================\n// Trigger\n// ============================================================================\n\ntype ComboboxTriggerElement = HTMLButtonElement;\ntype ComboboxTriggerOwnProps = GetPropDefTypes<typeof comboboxTriggerPropDefs>;\ntype NativeTriggerProps = Omit<React.ComponentPropsWithoutRef<'button'>, 'color'>;\ninterface ComboboxTriggerProps extends NativeTriggerProps, ComboboxTriggerOwnProps {}\n\nconst ComboboxTrigger = React.forwardRef<ComboboxTriggerElement, ComboboxTriggerProps>((props, forwardedRef) => {\n const ctx = useComboboxContext('Trigger');\n\n const {\n children,\n className,\n placeholder,\n disabled,\n readOnly,\n error,\n loading,\n color,\n radius,\n onClick,\n onKeyDown,\n type: buttonType,\n ...triggerProps\n } = extractProps({ size: ctx.size, ...props }, triggerSizingPropDefs, comboboxTriggerPropDefs);\n\n const isDisabled = disabled ?? ctx.disabled;\n const resolvedColor = color ?? ctx.color;\n // Read-only and loading triggers stay focusable but do not open.\n const isBlocked = Boolean(readOnly || loading);\n const isPlaceholder = ctx.value == null && ctx.displayValue == null;\n\n const composedRef = useComposedRefs(forwardedRef, ctx.triggerRef);\n\n const { getTriggerLabel } = ctx;\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (!getTriggerLabel()) {\n warnOnce(\n 'Combobox.Trigger has no accessible name. The combobox role does not take its name from its content. Add `aria-label`, `aria-labelledby`, or a `<label htmlFor>` that points at the trigger.',\n );\n }\n }, [getTriggerLabel]);\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n // Radix skips its open toggle when the event is default-prevented.\n if (isBlocked) event.preventDefault();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || isBlocked || isDisabled) return;\n // Both arrows open the list, as on Select (APG select-only combobox).\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n ctx.setOpen(true);\n }\n };\n\n const loadingIcon = (\n <span className=\"kui-SelectIcon kui-SelectLoadingIcon\" aria-hidden=\"true\">\n <Spinner />\n </span>\n );\n\n const defaultContent = (\n <>\n <span className=\"kui-SelectTriggerInner\">\n <span className=\"kui-ComboboxValue\">{ctx.displayValue ?? ctx.value ?? placeholder ?? ctx.placeholder}</span>\n </span>\n {loading ? loadingIcon : <ChevronDownIcon className=\"kui-SelectIcon\" />}\n </>\n );\n\n // Radix Popover.Trigger supplies aria-expanded, aria-controls (the popup id) and\n // aria-haspopup=\"dialog\", which matches the Popover dialog this opens.\n return (\n <Popover.Trigger disabled={isDisabled}>\n <button\n data-accent-color={resolvedColor}\n data-radius={radius}\n data-error={error}\n data-loading={loading}\n data-disabled={isDisabled || undefined}\n data-read-only={readOnly || undefined}\n data-placeholder={isPlaceholder ? '' : undefined}\n {...triggerProps}\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props -- Popover.Trigger (Slot) adds aria-expanded and aria-controls\n role=\"combobox\"\n // The props win when set; otherwise a caller's own aria-* (a form library's aria-invalid) stays, as on Select.\n aria-disabled={isDisabled || triggerProps['aria-disabled']}\n aria-readonly={readOnly || triggerProps['aria-readonly']}\n aria-invalid={error || triggerProps['aria-invalid']}\n aria-busy={loading || triggerProps['aria-busy']}\n type={buttonType ?? 'button'}\n disabled={isDisabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={composedRef}\n className={classNames('kui-reset', 'kui-SelectTrigger', 'kui-ComboboxTrigger', className)}\n >\n {/* Custom children replace the value and chevron; the spinner still shows while loading. */}\n {children ? (\n <>\n {requireReactElement(children)}\n {loading ? loadingIcon : null}\n </>\n ) : (\n defaultContent\n )}\n </button>\n </Popover.Trigger>\n );\n});\nComboboxTrigger.displayName = 'Combobox.Trigger';\n\n// ============================================================================\n// Value (standalone, for custom trigger layouts)\n// ============================================================================\n\ntype ComboboxValueElement = HTMLSpanElement;\ninterface ComboboxValueProps extends React.ComponentPropsWithoutRef<'span'> {\n placeholder?: string;\n}\n\nconst ComboboxValue = React.forwardRef<ComboboxValueElement, ComboboxValueProps>(({ placeholder, children, className, ...valueProps }, forwardedRef) => {\n const ctx = useComboboxContext('Value');\n const display = ctx.displayValue ?? ctx.value ?? undefined;\n return (\n <span {...valueProps} ref={forwardedRef} className={classNames('kui-ComboboxValue', className)}>\n {display ?? children ?? placeholder ?? ctx.placeholder}\n </span>\n );\n});\nComboboxValue.displayName = 'Combobox.Value';\n\n// ============================================================================\n// Content\n// ============================================================================\n\ntype ComboboxContentElement = React.ElementRef<typeof PopoverPrimitive.Content>;\ntype ComboboxContentOwnProps = GetPropDefTypes<typeof comboboxContentPropDefs> & {\n container?: React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Portal>['container'];\n};\ninterface ComboboxContentProps extends Omit<ComponentPropsWithout<typeof PopoverPrimitive.Content, RemovedProps>, 'size'>, ComboboxContentOwnProps {}\n\n/** Announces the filtered result count to screen readers after typing settles. */\nfunction ComboboxAnnouncer() {\n const count = useCommandState((state) => state.filtered.count);\n const search = useCommandState((state) => state.search);\n const [message, setMessage] = React.useState('');\n\n React.useEffect(() => {\n const next = !search ? '' : count === 0 ? 'No results' : `${count} result${count === 1 ? '' : 's'}`;\n const timeout = window.setTimeout(() => setMessage(next), search ? 400 : 0);\n return () => window.clearTimeout(timeout);\n }, [count, search]);\n\n return (\n <VisuallyHidden role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {message}\n </VisuallyHidden>\n );\n}\n\nconst ComboboxContent = React.forwardRef<ComboboxContentElement, ComboboxContentProps>((props, forwardedRef) => {\n const ctx = useComboboxContext('Content');\n const themeContext = useThemeContext();\n\n // The list takes the field's size.\n const size = props.size ?? ctx.size ?? comboboxContentPropDefs.size.default;\n\n const {\n className,\n children,\n color,\n forceMount,\n container,\n onOpenAutoFocus,\n 'aria-label': _ariaLabel,\n 'aria-labelledby': ariaLabelledByProp,\n ...contentProps\n } = extractProps({ ...props, size }, comboboxContentPropDefs);\n\n const resolvedColor = color || ctx.color || themeContext.accentColor;\n\n\n // The trigger's name labels the popup, the search field and the listbox.\n // Read once per mount (the content remounts on every open); fall back to a\n // layout effect when the trigger was not attached yet (defaultOpen, forceMount).\n const { getTriggerLabel } = ctx;\n const [triggerLabel, setTriggerLabel] = React.useState(getTriggerLabel);\n useLayoutEffect(() => {\n if (triggerLabel !== undefined) return;\n const label = getTriggerLabel();\n if (label !== undefined) setTriggerLabel(label);\n }, [getTriggerLabel, triggerLabel]);\n\n const label = props['aria-label'] ?? triggerLabel;\n\n const contentContextValue = React.useMemo<ComboboxContentContextValue>(\n () => ({\n // Responsive-aware size class for the search field (never String() a responsive object).\n sizeClassName: extractProps({ size }, contentSizePropDefs).className || undefined,\n color: resolvedColor,\n label,\n }),\n [size, resolvedColor, label],\n );\n\n const commandRef = React.useRef<HTMLDivElement>(null);\n\n // Without a search field, focus would land on the popup itself, outside cmdk's\n // keydown handler. Focus the listbox instead so arrow keys and Enter work.\n const handleOpenAutoFocus = (event: Event) => {\n onOpenAutoFocus?.(event);\n if (event.defaultPrevented) return;\n const command = commandRef.current;\n if (!command || command.querySelector('[cmdk-input]')) return;\n event.preventDefault();\n const list = command.querySelector<HTMLElement>('[cmdk-list]');\n (list ?? command).focus({ preventScroll: true });\n };\n\n // Start the highlight on the selected option (cmdk trims item values).\n const initialHighlight = ctx.value?.trim() || undefined;\n\n return (\n <PopoverPrimitive.Portal container={container} forceMount={forceMount ? true : undefined}>\n <Theme asChild>\n <PopoverPrimitive.Content\n data-accent-color={resolvedColor}\n align=\"start\"\n sideOffset={4}\n collisionPadding={10}\n aria-label={ariaLabelledByProp ? undefined : label}\n aria-labelledby={ariaLabelledByProp}\n {...contentProps}\n forceMount={forceMount ? true : undefined}\n onOpenAutoFocus={handleOpenAutoFocus}\n ref={forwardedRef}\n className={classNames('kui-PopperContent', 'kui-BaseMenuContent',\n 'kui-variant-soft', 'kui-ComboboxContent', className)}\n >\n <ComboboxContentContext.Provider value={contentContextValue}>\n <CommandPrimitive\n ref={commandRef}\n loop={ctx.loop}\n shouldFilter={ctx.shouldFilter}\n filter={ctx.filter}\n label={label}\n defaultValue={initialHighlight}\n className=\"kui-ComboboxCommand\"\n >\n {children}\n <ComboboxAnnouncer />\n </CommandPrimitive>\n </ComboboxContentContext.Provider>\n </PopoverPrimitive.Content>\n </Theme>\n </PopoverPrimitive.Portal>\n );\n});\nComboboxContent.displayName = 'Combobox.Content';\n\n// ============================================================================\n// Input\n// ============================================================================\n\ntype ComboboxInputElement = React.ElementRef<typeof CommandPrimitive.Input>;\ninterface ComboboxInputProps extends Omit<React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>, 'value' | 'onValueChange'> {\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n variant?: TextFieldVariant;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nconst ComboboxInput = React.forwardRef<ComboboxInputElement, ComboboxInputProps>(\n ({ className, startAdornment, endAdornment, placeholder, variant: inputVariant, value, onValueChange, ...inputProps }, forwardedRef) => {\n const ctx = useComboboxContext('Input');\n const search = React.useContext(ComboboxSearchContext);\n const contentContext = useComboboxContentContext();\n\n const textFieldVariant = inputVariant ?? 'soft';\n\n // The search text lives in Root; only this component subscribes to it.\n const searchValue = value ?? search?.value ?? '';\n const handleSearchChange = onValueChange ?? search?.setValue;\n\n const inputField = (\n <div\n className={classNames('kui-TextFieldRoot', 'kui-ComboboxInputRoot', contentContext?.sizeClassName, `kui-variant-${textFieldVariant}`)}\n data-accent-color={contentContext?.color}\n >\n {startAdornment ? <div className=\"kui-TextFieldSlot\">{startAdornment}</div> : null}\n <CommandPrimitive.Input\n {...inputProps}\n ref={forwardedRef}\n value={searchValue}\n onValueChange={handleSearchChange}\n placeholder={placeholder ?? ctx.searchPlaceholder}\n className={classNames('kui-reset', 'kui-TextFieldInput', className)}\n />\n {endAdornment ? (\n <div className=\"kui-TextFieldSlot\" data-side=\"right\">\n {endAdornment}\n </div>\n ) : null}\n </div>\n );\n\n return contentContext ? <div className=\"kui-ComboboxSearch\">{inputField}</div> : inputField;\n },\n);\nComboboxInput.displayName = 'Combobox.Input';\n\n// ============================================================================\n// List\n// ============================================================================\n\ntype ComboboxListElement = React.ElementRef<typeof CommandPrimitive.List>;\ninterface ComboboxListProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> {}\n\n// cmdk's List owns its id (referenced by the input's aria-controls), role and\n// aria-label (set from `label`), so none of them are overridden here.\nconst ComboboxList = React.forwardRef<ComboboxListElement, ComboboxListProps>(({ className, children, label, ...listProps }, forwardedRef) => {\n const contentContext = useComboboxContentContext();\n return (\n <div className=\"kui-ComboboxScrollArea\">\n <div className={classNames('kui-BaseMenuViewport', 'kui-ComboboxViewport')}>\n <CommandPrimitive.List {...listProps} label={label ?? contentContext?.label} ref={forwardedRef} className={classNames('kui-ComboboxList', className)}>\n {children}\n </CommandPrimitive.List>\n </div>\n </div>\n );\n});\nComboboxList.displayName = 'Combobox.List';\n\n// ============================================================================\n// Empty\n// ============================================================================\n\ntype ComboboxEmptyElement = React.ElementRef<typeof CommandPrimitive.Empty>;\ninterface ComboboxEmptyProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty> {}\n\nconst ComboboxEmpty = React.forwardRef<ComboboxEmptyElement, ComboboxEmptyProps>(({ className, ...emptyProps }, forwardedRef) => (\n <CommandPrimitive.Empty {...emptyProps} ref={forwardedRef} className={classNames('kui-ComboboxEmpty', className)} />\n));\nComboboxEmpty.displayName = 'Combobox.Empty';\n\n// ============================================================================\n// Group\n// ============================================================================\n\ntype ComboboxGroupElement = React.ElementRef<typeof CommandPrimitive.Group>;\ninterface ComboboxGroupProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group> {}\n\nconst ComboboxGroup = React.forwardRef<ComboboxGroupElement, ComboboxGroupProps>(({ className, ...groupProps }, forwardedRef) => (\n <CommandPrimitive.Group {...groupProps} ref={forwardedRef} className={classNames('kui-BaseMenuGroup', 'kui-ComboboxGroup', className)} />\n));\nComboboxGroup.displayName = 'Combobox.Group';\n\n// ============================================================================\n// Label\n// ============================================================================\n\ntype ComboboxLabelElement = React.ElementRef<'div'>;\ninterface ComboboxLabelProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst ComboboxLabel = React.forwardRef<ComboboxLabelElement, ComboboxLabelProps>(({ className, id: idProp, ...labelProps }, forwardedRef) => {\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const localRef = React.useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs(forwardedRef, localRef);\n\n // cmdk renders the group's role=\"group\" element itself and gives no way to\n // label it from a child, so name it after this label when inside a Group.\n useLayoutEffect(() => {\n const group = localRef.current?.closest('[cmdk-group-items]');\n if (!group || group.hasAttribute('aria-labelledby')) return;\n group.setAttribute('aria-labelledby', id);\n return () => {\n if (group.getAttribute('aria-labelledby') === id) group.removeAttribute('aria-labelledby');\n };\n }, [id]);\n\n return <div {...labelProps} id={id} ref={composedRef} className={classNames('kui-BaseMenuLabel', 'kui-ComboboxLabel', className)} />;\n});\nComboboxLabel.displayName = 'Combobox.Label';\n\n// ============================================================================\n// Separator\n// ============================================================================\n\ntype ComboboxSeparatorElement = React.ElementRef<typeof CommandPrimitive.Separator>;\ninterface ComboboxSeparatorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator> {}\n\nconst ComboboxSeparator = React.forwardRef<ComboboxSeparatorElement, ComboboxSeparatorProps>(({ className, ...separatorProps }, forwardedRef) => (\n <CommandPrimitive.Separator {...separatorProps} ref={forwardedRef} className={classNames('kui-BaseMenuSeparator', 'kui-ComboboxSeparator', className)} />\n));\nComboboxSeparator.displayName = 'Combobox.Separator';\n\n// ============================================================================\n// Item\n// ============================================================================\n\n/** Plain text of a React node tree, used as the item's search text. */\nfunction getNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join('');\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) return getNodeText(node.props.children);\n return '';\n}\n\ntype ComboboxItemElement = React.ElementRef<typeof CommandPrimitive.Item>;\ninterface ComboboxItemProps extends Omit<React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>, 'keywords' | 'onSelect'> {\n /**\n * Text matched by search. Defaults to the text of `children`. Set it when the\n * children are components whose text is not in the JSX (it cannot be read).\n */\n label?: string;\n /** Additional keywords for search filtering. */\n keywords?: string[];\n /** Called when the item is selected. */\n onSelect?: (value: string) => void;\n}\n\nconst ComboboxItem = React.forwardRef<ComboboxItemElement, ComboboxItemProps>(\n ({ className, children, label, value, disabled, onSelect, keywords, ...itemProps }, forwardedRef) => {\n const itemContext = React.useContext(ComboboxItemContext);\n if (!itemContext) {\n throw new Error('Combobox.Item must be used within Combobox.Root');\n }\n const { store, onSelect: onSelectFromRoot, disabled: rootDisabled } = itemContext;\n\n // Without `value`, cmdk uses the trimmed text of string children.\n const itemValue = value ?? (typeof children === 'string' ? children.trim() : undefined);\n const getIsSelected = () => itemValue !== undefined && store.get() === itemValue;\n const isSelected = React.useSyncExternalStore(store.subscribe, getIsSelected, getIsSelected);\n\n const onSelectProp = useCallbackRef(onSelect);\n // cmdk passes its resolved value (the `value` prop, or the text when `value` is omitted).\n const handleSelect = React.useCallback(\n (resolvedValue: string) => {\n const nextValue = value ?? resolvedValue;\n onSelectFromRoot(nextValue);\n onSelectProp(nextValue);\n },\n [value, onSelectFromRoot, onSelectProp],\n );\n\n // cmdk matches only `value` and `keywords`, so add the visible text as a keyword.\n const text = (label ?? getNodeText(children)).replace(/\\s+/g, ' ').trim();\n const searchKeywords = text ? (keywords ? [text, ...keywords] : [text]) : keywords;\n // cmdk stores keywords only when `value` changes. Remount the cmdk item when\n // they change so a new label or keyword list is picked up.\n const keywordsKey = searchKeywords ? searchKeywords.join('\\u0000') : '';\n\n const isDisabled = disabled ?? rootDisabled ?? false;\n\n return (\n <CommandPrimitive.Item\n key={keywordsKey}\n {...itemProps}\n value={value}\n keywords={searchKeywords}\n // cmdk owns aria-selected (the highlighted option); the chosen option is aria-checked.\n aria-checked={isSelected}\n disabled={isDisabled || undefined}\n ref={forwardedRef}\n onSelect={handleSelect}\n className={classNames('kui-reset', 'kui-BaseMenuItem', 'kui-ComboboxItem', className)}\n >\n {isSelected ? (\n <span className={classNames('kui-BaseMenuItemIndicator', 'kui-ComboboxItemIndicator')}>\n <ThickCheckIcon className={classNames('kui-BaseMenuItemIndicatorIcon', 'kui-ComboboxItemIndicatorIcon')} />\n </span>\n ) : null}\n <Slottable>{children}</Slottable>\n </CommandPrimitive.Item>\n );\n },\n);\nComboboxItem.displayName = 'Combobox.Item';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n ComboboxRoot as Root,\n ComboboxTrigger as Trigger,\n ComboboxValue as Value,\n ComboboxContent as Content,\n ComboboxInput as Input,\n ComboboxList as List,\n ComboboxEmpty as Empty,\n ComboboxGroup as Group,\n ComboboxLabel as Label,\n ComboboxSeparator as Separator,\n ComboboxItem as Item,\n};\n\nexport type {\n ComboboxRootProps as RootProps,\n ComboboxTriggerProps as TriggerProps,\n ComboboxValueProps as ValueProps,\n ComboboxContentProps as ContentProps,\n ComboboxInputProps as InputProps,\n ComboboxListProps as ListProps,\n ComboboxEmptyProps as EmptyProps,\n ComboboxGroupProps as GroupProps,\n ComboboxLabelProps as LabelProps,\n ComboboxSeparatorProps as SeparatorProps,\n ComboboxItemProps as ItemProps,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["combobox_exports", "__export", "ComboboxContent", "ComboboxEmpty", "ComboboxGroup", "ComboboxInput", "ComboboxItem", "ComboboxLabel", "ComboboxList", "ComboboxRoot", "ComboboxSeparator", "ComboboxTrigger", "ComboboxValue", "React", "classNames", "PopoverPrimitive", "useCallbackRef", "useComposedRefs", "useControllableState", "useLayoutEffect", "CommandPrimitive", "useCommandState", "triggerSizingPropDefs", "comboboxRootPropDefs", "contentSizePropDefs", "comboboxContentPropDefs", "warned", "warnOnce", "message", "createSelectionStore", "initial", "current", "listeners", "next", "listener", "ComboboxContext", "useComboboxContext", "componentName", "ctx", "ComboboxSearchContext", "ComboboxItemContext", "ComboboxContentContext", "useComboboxContentContext", "readElementLabel", "el", "ariaLabel", "labelledBy", "text", "id", "labels", "label", "ComboboxRoot", "props", "children", "sizeProp", "valueProp", "defaultValue", "onValueChange", "openProp", "defaultOpen", "onOpenChange", "placeholder", "searchPlaceholder", "searchValueProp", "defaultSearchValue", "onSearchValueChange", "filter", "shouldFilter", "loop", "disabled", "resetSearchOnSelect", "resetSearchOnClose", "color", "displayValueProp", "rootProps", "size", "useThemeSize", "open", "setOpen", "useControllableState", "value", "setValue", "searchValue", "setSearchValue", "resolvedDisplayValue", "store", "useLayoutEffect", "handleOpenChange", "useCallbackRef", "nextOpen", "onSelect", "nextValue", "triggerRef", "getTriggerLabel", "contextValue", "searchContextValue", "itemContextValue", "PopoverRoot", "ComboboxTrigger", "forwardedRef", "className", "readOnly", "error", "loading", "radius", "onClick", "onKeyDown", "buttonType", "triggerProps", "extractProps", "comboboxTriggerPropDefs", "isDisabled", "resolvedColor", "isBlocked", "isPlaceholder", "composedRef", "useComposedRefs", "handleClick", "event", "handleKeyDown", "loadingIcon", "Spinner", "defaultContent", "ChevronDownIcon", "PopoverTrigger", "classNames", "requireReactElement", "ComboboxValue", "valueProps", "display", "ComboboxAnnouncer", "count", "useCommandState", "state", "search", "setMessage", "timeout", "VisuallyHidden", "ComboboxContent", "themeContext", "useThemeContext", "forceMount", "container", "onOpenAutoFocus", "_ariaLabel", "ariaLabelledByProp", "contentProps", "triggerLabel", "setTriggerLabel", "contentContextValue", "commandRef", "handleOpenAutoFocus", "command", "initialHighlight", "PopoverPrimitive", "Theme", "CommandPrimitive", "ComboboxInput", "startAdornment", "endAdornment", "inputVariant", "inputProps", "contentContext", "textFieldVariant", "handleSearchChange", "inputField", "ComboboxList", "listProps", "ComboboxEmpty", "emptyProps", "ComboboxGroup", "groupProps", "ComboboxLabel", "idProp", "labelProps", "generatedId", "localRef", "group", "ComboboxSeparator", "separatorProps", "getNodeText", "node", "ComboboxItem", "keywords", "itemProps", "itemContext", "onSelectFromRoot", "rootDisabled", "itemValue", "getIsSelected", "isSelected", "onSelectProp", "handleSelect", "resolvedValue", "searchKeywords", "keywordsKey", "ThickCheckIcon", "Slottable"]
7
+ }
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{c as P}from"./chunk-2IUGM657.js";import{c as b}from"./chunk-OKQAVYW4.js";import{a as T}from"./chunk-WT2SYGTU.js";import{a as R}from"./chunk-VQPANPMI.js";var y={};R(y,{Content:()=>l,List:()=>c,Root:()=>f,Trigger:()=>g});import*as e from"react";import a from"classnames";import{Tabs as i}from"radix-ui";var f=e.forwardRef((t,o)=>{let{className:r,...s}=t;return e.createElement(i.Root,{...s,ref:o,className:a("kui-TabsRoot",r)})});f.displayName="Tabs.Root";var c=e.forwardRef((t,o)=>{let r=P(t,T.size),{className:s,color:p,...n}=b(r,T);return e.createElement(i.List,{"data-accent-color":p,...n,asChild:!1,ref:o,className:a("kui-BaseTabList","kui-TabsList",s)})});c.displayName="Tabs.List";var g=e.forwardRef((t,o)=>{let{className:r,children:s,...p}=t,n=e.Children.toArray(s).every(m=>typeof m=="string"||typeof m=="number");return e.createElement(i.Trigger,{...p,asChild:!1,ref:o,className:a("kui-reset","kui-BaseTabListTrigger","kui-TabsTrigger",r)},e.createElement("span",{className:"kui-BaseTabListTriggerInner kui-TabsTriggerInner"},s),n?e.createElement("span",{className:"kui-BaseTabListTriggerInnerHidden kui-TabsTriggerInnerHidden","aria-hidden":!0},s):null)});g.displayName="Tabs.Trigger";var l=e.forwardRef((t,o)=>{let{className:r,...s}=t;return e.createElement(i.Content,{...s,ref:o,className:a("kui-TabsContent",r)})});l.displayName="Tabs.Content";export{f as a,c as b,g as c,l as d,y as e};
3
- //# sourceMappingURL=chunk-4ABQ6CDI.js.map
2
+ import{c as P}from"./chunk-5ON3XLRD.js";import{c as b}from"./chunk-OKQAVYW4.js";import{a as T}from"./chunk-WT2SYGTU.js";import{a as R}from"./chunk-VQPANPMI.js";var y={};R(y,{Content:()=>l,List:()=>c,Root:()=>f,Trigger:()=>g});import*as e from"react";import a from"classnames";import{Tabs as i}from"radix-ui";var f=e.forwardRef((t,o)=>{let{className:r,...s}=t;return e.createElement(i.Root,{...s,ref:o,className:a("kui-TabsRoot",r)})});f.displayName="Tabs.Root";var c=e.forwardRef((t,o)=>{let r=P(t,T.size),{className:s,color:p,...n}=b(r,T);return e.createElement(i.List,{"data-accent-color":p,...n,asChild:!1,ref:o,className:a("kui-BaseTabList","kui-TabsList",s)})});c.displayName="Tabs.List";var g=e.forwardRef((t,o)=>{let{className:r,children:s,...p}=t,n=e.Children.toArray(s).every(m=>typeof m=="string"||typeof m=="number");return e.createElement(i.Trigger,{...p,asChild:!1,ref:o,className:a("kui-reset","kui-BaseTabListTrigger","kui-TabsTrigger",r)},e.createElement("span",{className:"kui-BaseTabListTriggerInner kui-TabsTriggerInner"},s),n?e.createElement("span",{className:"kui-BaseTabListTriggerInnerHidden kui-TabsTriggerInnerHidden","aria-hidden":!0},s):null)});g.displayName="Tabs.Trigger";var l=e.forwardRef((t,o)=>{let{className:r,...s}=t;return e.createElement(i.Content,{...s,ref:o,className:a("kui-TabsContent",r)})});l.displayName="Tabs.Content";export{f as a,c as b,g as c,l as d,y as e};
3
+ //# sourceMappingURL=chunk-5EBJOOXE.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/tabs.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { tabsListPropDefs } from './tabs.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSizeProps } from '../hooks/theme-size.js';\n\nimport type { tabsContentPropDefs, tabsRootPropDefs } from './tabs.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TabsRootElement = React.ElementRef<typeof TabsPrimitive.Root>;\ntype TabsRootOwnProps = GetPropDefTypes<typeof tabsRootPropDefs>;\ninterface TabsRootProps\n extends ComponentPropsWithout<typeof TabsPrimitive.Root, 'asChild' | 'color' | 'defaultChecked'>,\n TabsRootOwnProps {}\nconst TabsRoot = React.forwardRef<TabsRootElement, TabsRootProps>((props, forwardedRef) => {\n const { className, ...rootProps } = props;\n return (\n <TabsPrimitive.Root\n {...rootProps}\n ref={forwardedRef}\n className={classNames('kui-TabsRoot', className)}\n />\n );\n});\nTabsRoot.displayName = 'Tabs.Root';\n\ntype TabsListElement = React.ElementRef<typeof TabsPrimitive.List>;\ntype TabsListOwnProps = GetPropDefTypes<typeof tabsListPropDefs>;\ninterface TabsListProps\n extends ComponentPropsWithout<typeof TabsPrimitive.List, RemovedProps>,\n TabsListOwnProps {}\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>((ownProps, forwardedRef) => {\n const props = useThemeSizeProps(ownProps, tabsListPropDefs.size);\n const { className, color, ...listProps } = extractProps(\n props,\n tabsListPropDefs,\n );\n return (\n <TabsPrimitive.List\n data-accent-color={color}\n {...listProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseTabList', 'kui-TabsList', className)}\n />\n );\n});\nTabsList.displayName = 'Tabs.List';\n\ntype TabsTriggerElement = React.ElementRef<typeof TabsPrimitive.Trigger>;\ninterface TabsTriggerProps\n extends ComponentPropsWithout<typeof TabsPrimitive.Trigger, RemovedProps> {}\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props, forwardedRef) => {\n const { className, children, ...triggerProps } = props;\n // A hidden bold copy reserves the active width. Only plain text is copied: copying elements\n // would duplicate their ids and mount them twice.\n const isText = React.Children.toArray(children).every(\n (child) => typeof child === 'string' || typeof child === 'number',\n );\n return (\n <TabsPrimitive.Trigger\n {...triggerProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-BaseTabListTrigger', 'kui-TabsTrigger', className)}\n >\n <span className=\"kui-BaseTabListTriggerInner kui-TabsTriggerInner\">{children}</span>\n {isText ? (\n <span className=\"kui-BaseTabListTriggerInnerHidden kui-TabsTriggerInnerHidden\" aria-hidden>\n {children}\n </span>\n ) : null}\n </TabsPrimitive.Trigger>\n );\n },\n);\nTabsTrigger.displayName = 'Tabs.Trigger';\n\ntype TabsContentElement = React.ElementRef<typeof TabsPrimitive.Content>;\ntype TabsContentOwnProps = GetPropDefTypes<typeof tabsContentPropDefs>;\ninterface TabsContentProps\n extends ComponentPropsWithout<typeof TabsPrimitive.Content, RemovedProps>,\n TabsContentOwnProps {}\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props, forwardedRef) => {\n const { className, ...contentProps } = props;\n return (\n <TabsPrimitive.Content\n {...contentProps}\n ref={forwardedRef}\n className={classNames('kui-TabsContent', className)}\n />\n );\n },\n);\nTabsContent.displayName = 'Tabs.Content';\n\nexport { TabsRoot as Root, TabsList as List, TabsTrigger as Trigger, TabsContent as Content };\nexport type {\n TabsRootProps as RootProps,\n TabsListProps as ListProps,\n TabsTriggerProps as TriggerProps,\n TabsContentProps as ContentProps,\n};\n"],
5
+ "mappings": ";gKAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,SAAAC,EAAA,SAAAC,EAAA,YAAAC,IAAA,UAAYC,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,QAAQC,MAAqB,WAetC,IAAMC,EAAiB,aAA2C,CAACC,EAAOC,IAAiB,CACzF,GAAM,CAAE,UAAAC,EAAW,GAAGC,CAAU,EAAIH,EACpC,OACE,gBAACI,EAAc,KAAd,CACE,GAAGD,EACJ,IAAKF,EACL,UAAWI,EAAW,eAAgBH,CAAS,EACjD,CAEJ,CAAC,EACDH,EAAS,YAAc,YAOvB,IAAMO,EAAiB,aAA2C,CAACC,EAAUN,IAAiB,CAC5F,IAAMD,EAAQQ,EAAkBD,EAAUE,EAAiB,IAAI,EACzD,CAAE,UAAAP,EAAW,MAAAQ,EAAO,GAAGC,CAAU,EAAIC,EACzCZ,EACAS,CACF,EACA,OACE,gBAACL,EAAc,KAAd,CACC,oBAAmBM,EAClB,GAAGC,EACJ,QAAS,GACT,IAAKV,EACL,UAAWI,EAAW,kBAAmB,eAAgBH,CAAS,EACpE,CAEJ,CAAC,EACDI,EAAS,YAAc,YAKvB,IAAMO,EAAoB,aACxB,CAACb,EAAOC,IAAiB,CACvB,GAAM,CAAE,UAAAC,EAAW,SAAAY,EAAU,GAAGC,CAAa,EAAIf,EAG3CgB,EAAe,WAAS,QAAQF,CAAQ,EAAE,MAC7CG,GAAU,OAAOA,GAAU,UAAY,OAAOA,GAAU,QAC3D,EACA,OACE,gBAACb,EAAc,QAAd,CACE,GAAGW,EACJ,QAAS,GACT,IAAKd,EACL,UAAWI,EAAW,YAAa,yBAA0B,kBAAmBH,CAAS,GAEzF,gBAAC,QAAK,UAAU,oDAAoDY,CAAS,EAC5EE,EACC,gBAAC,QAAK,UAAU,+DAA+D,cAAW,IACvFF,CACH,EACE,IACN,CAEJ,CACF,EACAD,EAAY,YAAc,eAO1B,IAAMK,EAAoB,aACxB,CAAClB,EAAOC,IAAiB,CACvB,GAAM,CAAE,UAAAC,EAAW,GAAGiB,CAAa,EAAInB,EACvC,OACE,gBAACI,EAAc,QAAd,CACE,GAAGe,EACJ,IAAKlB,EACL,UAAWI,EAAW,kBAAmBH,CAAS,EACpD,CAEJ,CACF,EACAgB,EAAY,YAAc",
6
+ "names": ["tabs_exports", "__export", "TabsContent", "TabsList", "TabsRoot", "TabsTrigger", "React", "classNames", "TabsPrimitive", "TabsRoot", "props", "forwardedRef", "className", "rootProps", "TabsPrimitive", "classNames", "TabsList", "ownProps", "useThemeSizeProps", "baseTabListPropDefs", "color", "listProps", "extractProps", "TabsTrigger", "children", "triggerProps", "isText", "child", "TabsContent", "contentProps"]
7
+ }
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a as te}from"./chunk-TGRHRMQI.js";import{b as re,c as G}from"./chunk-YIKLO2XL.js";import{c as B,e as oe,g as y,h as O,i as ne}from"./chunk-CV7QQTI3.js";import{a as L}from"./chunk-RVPLXLRA.js";import{b as A,c as F,d as S,e as j,f as H}from"./chunk-GKDGNPBD.js";import{c as U}from"./chunk-2IUGM657.js";import{b as g,c as k,d as Y,e as q,f as X}from"./chunk-I6SMGWS5.js";import{b as h,c as $,d as T,e as x}from"./chunk-XL5OHW6Z.js";import{c as I}from"./chunk-OKQAVYW4.js";import{a as M,b as v,c as J,d as Q,e as E,f as Z,g as ee,h as N}from"./chunk-5JYSYTHA.js";import{a as he}from"./chunk-VQPANPMI.js";var Oe={};he(Oe,{CheckboxItem:()=>Me,Content:()=>de,Group:()=>me,Item:()=>ce,Label:()=>le,RadioGroup:()=>we,RadioItem:()=>De,Root:()=>ue,Separator:()=>Re,Sub:()=>fe,SubContent:()=>be,SubTrigger:()=>Pe,Trigger:()=>se,TriggerIcon:()=>ge});import*as e from"react";import l from"classnames";import{DropdownMenu as s,Slot as _}from"radix-ui";import{useCallbackRef as ie}from"radix-ui/internal";var ae=e.createContext(!1),ue=o=>{let{open:n,defaultOpen:t=!1,onOpenChange:u}=o,[i,r]=e.useState(t),a=n??i,c=ie(u),p=e.useCallback(w=>{r(w),c(w)},[c]),m=e.useCallback(()=>p(!1),[p]);return e.createElement(ae.Provider,{value:a},e.createElement(oe,{value:m},e.createElement(s.Root,{...o,open:a,onOpenChange:p})))};ue.displayName="DropdownMenu.Root";var se=e.forwardRef(({children:o,...n},t)=>e.createElement(s.Trigger,{...n,ref:t,asChild:!0},te(o)));se.displayName="DropdownMenu.Trigger";var z=e.createContext({}),Te={ltr:"ArrowLeft",rtl:"ArrowRight"},xe={ltr:"ArrowRight",rtl:"ArrowLeft"};function Ee(o){return o instanceof HTMLElement&&(o.isContentEditable||o.tagName==="INPUT"||o.tagName==="TEXTAREA")}function pe(o){return o?.closest("[dir]")?.getAttribute("dir")==="rtl"?"rtl":"ltr"}var de=e.forwardRef((o,n)=>{let t=U(o,g.size),u=re(),{size:i=g.size.default}=t,{className:r,children:a,color:c,container:p,forceMount:m,submenuBehavior:w,virtualized:d=!1,onEscapeKeyDown:P,onKeyDown:b,...f}=I(t,g),R=c||u.accentColor,K=h(w,"cascade"),V=K==="drill-down",ye=e.useContext(ae),C=J(),Ie=D=>{P?.(D),!(D.defaultPrevented||!V||C.getDepth()===0)&&(D.preventDefault(),C.pop("keyboard"))},Se=D=>{b?.(D),!(D.defaultPrevented||!V||C.getDepth()===0)&&(Ee(D.target)||D.key===Te[pe(D.currentTarget)]&&(D.preventDefault(),C.pop("keyboard")))},ke=e.useMemo(()=>({size:i,color:R}),[i,R]),W=e.createElement(B,{size:i},e.createElement(z.Provider,{value:ke},e.createElement(Q,{store:C,behavior:K,open:ye},a)));return e.createElement(s.Portal,{container:p,forceMount:m},e.createElement(G,{asChild:!0},e.createElement(s.Content,{"data-accent-color":R,align:"start",sideOffset:4,collisionPadding:10,...f,onEscapeKeyDown:Ie,onKeyDown:Se,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-DropdownMenuContent",r)},d?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},W):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},W)))))});de.displayName="DropdownMenu.Content";var le=e.forwardRef(({className:o,id:n,...t},u)=>{let i=e.useContext(M),r=ne(n,i);return i?e.createElement(s.Label,{...t,id:r,asChild:!1,ref:u,className:l("kui-BaseMenuLabel","kui-DropdownMenuLabel",o)}):null});le.displayName="DropdownMenu.Label";var ce=e.forwardRef((o,n)=>{let{className:t,children:u,color:i=Y.color.default,shortcut:r,...a}=o;return e.useContext(M)?e.createElement(s.Item,{"data-accent-color":i,"aria-keyshortcuts":r?T(r):void 0,...a,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem",t)},e.createElement(_.Slottable,null,u),r&&e.createElement(x,{shortcut:r,className:"kui-DropdownMenuShortcut"})):null});ce.displayName="DropdownMenu.Item";var me=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(y,{value:r},e.createElement(s.Group,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuGroup","kui-DropdownMenuGroup",o)}))});me.displayName="DropdownMenu.Group";var we=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(y,{value:r},e.createElement(s.RadioGroup,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuRadioGroup","kui-DropdownMenuRadioGroup",o)}))});we.displayName="DropdownMenu.RadioGroup";var De=e.forwardRef((o,n)=>{let{children:t,className:u,color:i=X.color.default,...r}=o;return e.useContext(M)?e.createElement(s.RadioItem,{...r,asChild:!1,ref:n,"data-accent-color":i,className:l("kui-BaseMenuItem","kui-BaseMenuRadioItem","kui-DropdownMenuItem","kui-DropdownMenuRadioItem",u)},e.createElement(_.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(H,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"}))):null});De.displayName="DropdownMenu.RadioItem";var Me=e.forwardRef((o,n)=>{let{children:t,className:u,shortcut:i,color:r=q.color.default,...a}=o;return e.useContext(M)?e.createElement(s.CheckboxItem,{"aria-keyshortcuts":i?T(i):void 0,...a,asChild:!1,ref:n,"data-accent-color":r,className:l("kui-BaseMenuItem","kui-BaseMenuCheckboxItem","kui-DropdownMenuItem","kui-DropdownMenuCheckboxItem",u)},e.createElement(_.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(A,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"})),i&&e.createElement(x,{shortcut:i,className:"kui-DropdownMenuShortcut"})):null});Me.displayName="DropdownMenu.CheckboxItem";var fe=({label:o="Back",open:n,defaultOpen:t,onOpenChange:u,children:i})=>{let r=v(),a=e.useId(),c=e.useMemo(()=>({id:a,label:o}),[a,o]),p=E(r,a)!=="closed",m=ie(u),w=n!==void 0;e.useLayoutEffect(()=>{if(!(!r||!w))return r.setController(a,m),()=>r.setController(a,null)},[r,w,a,m]),e.useLayoutEffect(()=>{!r||n===void 0||(n&&!r.isOpen(a)?r.open(a,r.takePendingModality(a)):!n&&r.isOpen(a)&&r.close(a,r.takePendingModality(a)))},[r,n,a]);let d=e.useRef(n===void 0&&!!t);e.useLayoutEffect(()=>{r&&d.current?r.open(a):d.current=!1},[]);let P=e.useRef(p);return e.useEffect(()=>{if(!(!r||P.current===p)){if(P.current=p,p&&d.current){d.current=!1;return}n!==void 0&&n===p||m(p)}},[r,p,m,n]),e.createElement(ee.Provider,{value:c},e.createElement(s.Sub,{open:n,defaultOpen:t,onOpenChange:r?void 0:u},i))};fe.displayName="DropdownMenu.Sub";var Pe=e.forwardRef((o,n)=>{let{className:t,children:u,onKeyDown:i,...r}=o,a=v(),c=N(),p=e.useContext(M);if(a&&c){if(!p)return null;let m=d=>{d.preventDefault(),a.push(c.id)},w=d=>{i?.(d),!(d.defaultPrevented||r.disabled)&&d.key===xe[pe(d.currentTarget)]&&(d.preventDefault(),a.push(c.id,"keyboard"))};return e.createElement(s.Item,{...r,"data-drill-down-trigger":c.id,"data-drill-down-name":r.textValue,onSelect:m,onKeyDown:w,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger","kui-DropdownMenuDrillDownSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(S,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))}return e.createElement(s.SubTrigger,{...r,onKeyDown:i,asChild:!1,ref:n,className:l("kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(S,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))});Pe.displayName="DropdownMenu.SubTrigger";var Re=e.forwardRef(({className:o,...n},t)=>e.useContext(M)?e.createElement(s.Separator,{...n,asChild:!1,ref:t,className:l("kui-BaseMenuSeparator","kui-DropdownMenuSeparator",o)}):null);Re.displayName="DropdownMenu.Separator";function Ne({label:o,name:n}){let t=v(),u=e.useCallback(a=>{a.preventDefault(),t?.pop()},[t]),i=typeof o=="string"?o:n,r=i&&i!=="Back"?`Back from ${i}`:void 0;return e.createElement(s.Item,{"aria-label":r,textValue:i||"Back",onSelect:u,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem","kui-DropdownMenuDrillDownBackItem")},e.createElement(j,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuDrillDownBackIcon"}),e.createElement("span",{className:"kui-DropdownMenuDrillDownBackLabel"},o))}function Be(o){let{loop:n,onEscapeKeyDown:t,onPointerDownOutside:u,onFocusOutside:i,onInteractOutside:r,sideOffset:a,alignOffset:c,avoidCollisions:p,collisionBoundary:m,collisionPadding:w,arrowPadding:d,sticky:P,hideWhenDetached:b,updatePositionStrategy:f,...R}=o;return R}var be=e.forwardRef((o,n)=>{let t=v(),u=N();return t&&u?e.createElement(ve,{...o,ref:n,store:t,sub:u}):e.createElement(Ce,{...o,ref:n})});be.displayName="DropdownMenu.SubContent";var Ce=e.forwardRef((o,n)=>{let t=e.useContext(z),u=o.size??t.size,i=o.color??t.color,{className:r,children:a,container:c,forceMount:p,color:m,virtualized:w=!1,...d}=I({...o,size:u},k),P=h(u,k.size.default),b=e.useMemo(()=>({size:u,color:i}),[u,i]),f=e.createElement(B,{size:u},e.createElement(z.Provider,{value:b},a));return e.createElement(s.Portal,{container:c,forceMount:p},e.createElement(G,{asChild:!0},e.createElement(s.SubContent,{"data-accent-color":i,alignOffset:$(P),sideOffset:1,collisionPadding:10,...d,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-BaseMenuSubContent","kui-DropdownMenuContent","kui-DropdownMenuSubContent",r)},w?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},f):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},f)))))});Ce.displayName="DropdownMenu.CascadeSubContent";var ve=e.forwardRef(({store:o,sub:n,...t},u)=>{let i=E(o,n.id),r=Z(o,n.id);if(i==="closed")return null;let{className:a,children:c,container:p,forceMount:m,virtualized:w,size:d,color:P,...b}=Be(t),f=i==="top",R=r?.name||(typeof n.label=="string"?n.label:"");return e.createElement("div",{role:"group","aria-label":R||void 0,...b,ref:u,"data-drill-down-panel":n.id,"data-drill-down-active":f?!0:void 0,className:l("kui-DropdownMenuDrillDownPanel",a)},f&&e.createElement(e.Fragment,null,e.createElement(Ne,{label:n.label,name:R}),e.createElement(s.Separator,{className:"kui-BaseMenuSeparator kui-DropdownMenuSeparator"})),e.createElement(y,{value:null},e.createElement(M.Provider,{value:f},c)))});ve.displayName="DropdownMenu.DrillDownPanel";var ge=e.forwardRef(({className:o,...n},t)=>e.createElement(F,{...n,ref:t,className:l("kui-DropdownMenuTriggerIcon",o)}));ge.displayName="DropdownMenu.TriggerIcon";export{ue as a,se as b,de as c,le as d,ce as e,me as f,we as g,De as h,Me as i,fe as j,Pe as k,Re as l,be as m,ge as n,Oe as o};
3
- //# sourceMappingURL=chunk-E4EMG3RC.js.map
2
+ import{a as te}from"./chunk-TGRHRMQI.js";import{b as re,c as G}from"./chunk-N3QLHFHB.js";import{c as B,e as oe,g as y,h as O,i as ne}from"./chunk-CV7QQTI3.js";import{a as L}from"./chunk-RVPLXLRA.js";import{b as A,c as F,d as S,e as j,f as H}from"./chunk-GKDGNPBD.js";import{c as U}from"./chunk-5ON3XLRD.js";import{b as g,c as k,d as Y,e as q,f as X}from"./chunk-I6SMGWS5.js";import{b as h,c as $,d as T,e as x}from"./chunk-XL5OHW6Z.js";import{c as I}from"./chunk-OKQAVYW4.js";import{a as M,b as v,c as J,d as Q,e as E,f as Z,g as ee,h as N}from"./chunk-5JYSYTHA.js";import{a as he}from"./chunk-VQPANPMI.js";var Oe={};he(Oe,{CheckboxItem:()=>Me,Content:()=>de,Group:()=>me,Item:()=>ce,Label:()=>le,RadioGroup:()=>we,RadioItem:()=>De,Root:()=>ue,Separator:()=>Re,Sub:()=>fe,SubContent:()=>be,SubTrigger:()=>Pe,Trigger:()=>se,TriggerIcon:()=>ge});import*as e from"react";import l from"classnames";import{DropdownMenu as s,Slot as _}from"radix-ui";import{useCallbackRef as ie}from"radix-ui/internal";var ae=e.createContext(!1),ue=o=>{let{open:n,defaultOpen:t=!1,onOpenChange:u}=o,[i,r]=e.useState(t),a=n??i,c=ie(u),p=e.useCallback(w=>{r(w),c(w)},[c]),m=e.useCallback(()=>p(!1),[p]);return e.createElement(ae.Provider,{value:a},e.createElement(oe,{value:m},e.createElement(s.Root,{...o,open:a,onOpenChange:p})))};ue.displayName="DropdownMenu.Root";var se=e.forwardRef(({children:o,...n},t)=>e.createElement(s.Trigger,{...n,ref:t,asChild:!0},te(o)));se.displayName="DropdownMenu.Trigger";var z=e.createContext({}),Te={ltr:"ArrowLeft",rtl:"ArrowRight"},xe={ltr:"ArrowRight",rtl:"ArrowLeft"};function Ee(o){return o instanceof HTMLElement&&(o.isContentEditable||o.tagName==="INPUT"||o.tagName==="TEXTAREA")}function pe(o){return o?.closest("[dir]")?.getAttribute("dir")==="rtl"?"rtl":"ltr"}var de=e.forwardRef((o,n)=>{let t=U(o,g.size),u=re(),{size:i=g.size.default}=t,{className:r,children:a,color:c,container:p,forceMount:m,submenuBehavior:w,virtualized:d=!1,onEscapeKeyDown:P,onKeyDown:b,...f}=I(t,g),R=c||u.accentColor,K=h(w,"cascade"),V=K==="drill-down",ye=e.useContext(ae),C=J(),Ie=D=>{P?.(D),!(D.defaultPrevented||!V||C.getDepth()===0)&&(D.preventDefault(),C.pop("keyboard"))},Se=D=>{b?.(D),!(D.defaultPrevented||!V||C.getDepth()===0)&&(Ee(D.target)||D.key===Te[pe(D.currentTarget)]&&(D.preventDefault(),C.pop("keyboard")))},ke=e.useMemo(()=>({size:i,color:R}),[i,R]),W=e.createElement(B,{size:i},e.createElement(z.Provider,{value:ke},e.createElement(Q,{store:C,behavior:K,open:ye},a)));return e.createElement(s.Portal,{container:p,forceMount:m},e.createElement(G,{asChild:!0},e.createElement(s.Content,{"data-accent-color":R,align:"start",sideOffset:4,collisionPadding:10,...f,onEscapeKeyDown:Ie,onKeyDown:Se,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-DropdownMenuContent",r)},d?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},W):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},W)))))});de.displayName="DropdownMenu.Content";var le=e.forwardRef(({className:o,id:n,...t},u)=>{let i=e.useContext(M),r=ne(n,i);return i?e.createElement(s.Label,{...t,id:r,asChild:!1,ref:u,className:l("kui-BaseMenuLabel","kui-DropdownMenuLabel",o)}):null});le.displayName="DropdownMenu.Label";var ce=e.forwardRef((o,n)=>{let{className:t,children:u,color:i=Y.color.default,shortcut:r,...a}=o;return e.useContext(M)?e.createElement(s.Item,{"data-accent-color":i,"aria-keyshortcuts":r?T(r):void 0,...a,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem",t)},e.createElement(_.Slottable,null,u),r&&e.createElement(x,{shortcut:r,className:"kui-DropdownMenuShortcut"})):null});ce.displayName="DropdownMenu.Item";var me=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(y,{value:r},e.createElement(s.Group,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuGroup","kui-DropdownMenuGroup",o)}))});me.displayName="DropdownMenu.Group";var we=e.forwardRef(({className:o,"aria-labelledby":n,...t},u)=>{let[i,r]=O(n),a=e.useContext(M);return e.createElement(y,{value:r},e.createElement(s.RadioGroup,{...a?{"aria-labelledby":i}:{role:"none"},...t,asChild:!1,ref:u,className:l("kui-BaseMenuRadioGroup","kui-DropdownMenuRadioGroup",o)}))});we.displayName="DropdownMenu.RadioGroup";var De=e.forwardRef((o,n)=>{let{children:t,className:u,color:i=X.color.default,...r}=o;return e.useContext(M)?e.createElement(s.RadioItem,{...r,asChild:!1,ref:n,"data-accent-color":i,className:l("kui-BaseMenuItem","kui-BaseMenuRadioItem","kui-DropdownMenuItem","kui-DropdownMenuRadioItem",u)},e.createElement(_.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(H,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"}))):null});De.displayName="DropdownMenu.RadioItem";var Me=e.forwardRef((o,n)=>{let{children:t,className:u,shortcut:i,color:r=q.color.default,...a}=o;return e.useContext(M)?e.createElement(s.CheckboxItem,{"aria-keyshortcuts":i?T(i):void 0,...a,asChild:!1,ref:n,"data-accent-color":r,className:l("kui-BaseMenuItem","kui-BaseMenuCheckboxItem","kui-DropdownMenuItem","kui-DropdownMenuCheckboxItem",u)},e.createElement(_.Slottable,null,t),e.createElement(s.ItemIndicator,{className:"kui-BaseMenuItemIndicator kui-DropdownMenuItemIndicator"},e.createElement(A,{className:"kui-BaseMenuItemIndicatorIcon kui-DropdownMenuItemIndicatorIcon"})),i&&e.createElement(x,{shortcut:i,className:"kui-DropdownMenuShortcut"})):null});Me.displayName="DropdownMenu.CheckboxItem";var fe=({label:o="Back",open:n,defaultOpen:t,onOpenChange:u,children:i})=>{let r=v(),a=e.useId(),c=e.useMemo(()=>({id:a,label:o}),[a,o]),p=E(r,a)!=="closed",m=ie(u),w=n!==void 0;e.useLayoutEffect(()=>{if(!(!r||!w))return r.setController(a,m),()=>r.setController(a,null)},[r,w,a,m]),e.useLayoutEffect(()=>{!r||n===void 0||(n&&!r.isOpen(a)?r.open(a,r.takePendingModality(a)):!n&&r.isOpen(a)&&r.close(a,r.takePendingModality(a)))},[r,n,a]);let d=e.useRef(n===void 0&&!!t);e.useLayoutEffect(()=>{r&&d.current?r.open(a):d.current=!1},[]);let P=e.useRef(p);return e.useEffect(()=>{if(!(!r||P.current===p)){if(P.current=p,p&&d.current){d.current=!1;return}n!==void 0&&n===p||m(p)}},[r,p,m,n]),e.createElement(ee.Provider,{value:c},e.createElement(s.Sub,{open:n,defaultOpen:t,onOpenChange:r?void 0:u},i))};fe.displayName="DropdownMenu.Sub";var Pe=e.forwardRef((o,n)=>{let{className:t,children:u,onKeyDown:i,...r}=o,a=v(),c=N(),p=e.useContext(M);if(a&&c){if(!p)return null;let m=d=>{d.preventDefault(),a.push(c.id)},w=d=>{i?.(d),!(d.defaultPrevented||r.disabled)&&d.key===xe[pe(d.currentTarget)]&&(d.preventDefault(),a.push(c.id,"keyboard"))};return e.createElement(s.Item,{...r,"data-drill-down-trigger":c.id,"data-drill-down-name":r.textValue,onSelect:m,onKeyDown:w,ref:n,className:l("kui-reset","kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger","kui-DropdownMenuDrillDownSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(S,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))}return e.createElement(s.SubTrigger,{...r,onKeyDown:i,asChild:!1,ref:n,className:l("kui-BaseMenuItem","kui-BaseMenuSubTrigger","kui-DropdownMenuItem","kui-DropdownMenuSubTrigger",t)},u,e.createElement("div",{className:"kui-BaseMenuShortcut kui-DropdownMenuShortcut"},e.createElement(S,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuSubTriggerIcon"})))});Pe.displayName="DropdownMenu.SubTrigger";var Re=e.forwardRef(({className:o,...n},t)=>e.useContext(M)?e.createElement(s.Separator,{...n,asChild:!1,ref:t,className:l("kui-BaseMenuSeparator","kui-DropdownMenuSeparator",o)}):null);Re.displayName="DropdownMenu.Separator";function Ne({label:o,name:n}){let t=v(),u=e.useCallback(a=>{a.preventDefault(),t?.pop()},[t]),i=typeof o=="string"?o:n,r=i&&i!=="Back"?`Back from ${i}`:void 0;return e.createElement(s.Item,{"aria-label":r,textValue:i||"Back",onSelect:u,className:l("kui-reset","kui-BaseMenuItem","kui-DropdownMenuItem","kui-DropdownMenuDrillDownBackItem")},e.createElement(j,{className:"kui-BaseMenuSubTriggerIcon kui-DropdownMenuDrillDownBackIcon"}),e.createElement("span",{className:"kui-DropdownMenuDrillDownBackLabel"},o))}function Be(o){let{loop:n,onEscapeKeyDown:t,onPointerDownOutside:u,onFocusOutside:i,onInteractOutside:r,sideOffset:a,alignOffset:c,avoidCollisions:p,collisionBoundary:m,collisionPadding:w,arrowPadding:d,sticky:P,hideWhenDetached:b,updatePositionStrategy:f,...R}=o;return R}var be=e.forwardRef((o,n)=>{let t=v(),u=N();return t&&u?e.createElement(ve,{...o,ref:n,store:t,sub:u}):e.createElement(Ce,{...o,ref:n})});be.displayName="DropdownMenu.SubContent";var Ce=e.forwardRef((o,n)=>{let t=e.useContext(z),u=o.size??t.size,i=o.color??t.color,{className:r,children:a,container:c,forceMount:p,color:m,virtualized:w=!1,...d}=I({...o,size:u},k),P=h(u,k.size.default),b=e.useMemo(()=>({size:u,color:i}),[u,i]),f=e.createElement(B,{size:u},e.createElement(z.Provider,{value:b},a));return e.createElement(s.Portal,{container:c,forceMount:p},e.createElement(G,{asChild:!0},e.createElement(s.SubContent,{"data-accent-color":i,alignOffset:$(P),sideOffset:1,collisionPadding:10,...d,asChild:!1,ref:n,className:l("kui-PopperContent","kui-BaseMenuContent","kui-variant-soft","kui-BaseMenuSubContent","kui-DropdownMenuContent","kui-DropdownMenuSubContent",r)},w?e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport","kui-virtualized")},f):e.createElement(L,{type:"auto",scrollbars:"vertical"},e.createElement("div",{className:l("kui-BaseMenuViewport","kui-DropdownMenuViewport")},f)))))});Ce.displayName="DropdownMenu.CascadeSubContent";var ve=e.forwardRef(({store:o,sub:n,...t},u)=>{let i=E(o,n.id),r=Z(o,n.id);if(i==="closed")return null;let{className:a,children:c,container:p,forceMount:m,virtualized:w,size:d,color:P,...b}=Be(t),f=i==="top",R=r?.name||(typeof n.label=="string"?n.label:"");return e.createElement("div",{role:"group","aria-label":R||void 0,...b,ref:u,"data-drill-down-panel":n.id,"data-drill-down-active":f?!0:void 0,className:l("kui-DropdownMenuDrillDownPanel",a)},f&&e.createElement(e.Fragment,null,e.createElement(Ne,{label:n.label,name:R}),e.createElement(s.Separator,{className:"kui-BaseMenuSeparator kui-DropdownMenuSeparator"})),e.createElement(y,{value:null},e.createElement(M.Provider,{value:f},c)))});ve.displayName="DropdownMenu.DrillDownPanel";var ge=e.forwardRef(({className:o,...n},t)=>e.createElement(F,{...n,ref:t,className:l("kui-DropdownMenuTriggerIcon",o)}));ge.displayName="DropdownMenu.TriggerIcon";export{ue as a,se as b,de as c,le as d,ce as e,me as f,we as g,De as h,Me as i,fe as j,Pe as k,Re as l,be as m,ge as n,Oe as o};
3
+ //# sourceMappingURL=chunk-5L4DZ2D3.js.map