@alfadocs/ui-kit 0.1.3 → 0.1.5

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 (274) hide show
  1. package/dist/_chunks/{agenda-card-C_hQGErS.js → agenda-card-DIWDvWum.js} +10 -10
  2. package/dist/_chunks/agenda-card-DIWDvWum.js.map +1 -0
  3. package/dist/_chunks/{agenda-tray-CBaVMJLO.js → agenda-tray-BqQZwiHc.js} +5 -5
  4. package/dist/_chunks/{agenda-tray-CBaVMJLO.js.map → agenda-tray-BqQZwiHc.js.map} +1 -1
  5. package/dist/_chunks/{ai-prompt-input-K94oVLG2.js → ai-prompt-input-CI27KmZ1.js} +4 -4
  6. package/dist/_chunks/ai-prompt-input-CI27KmZ1.js.map +1 -0
  7. package/dist/_chunks/{alert-rOM4EG0P.js → alert-BlOUMkXj.js} +39 -39
  8. package/dist/_chunks/alert-BlOUMkXj.js.map +1 -0
  9. package/dist/_chunks/{audio-recorder-Cn8z2zC9.js → audio-recorder-B-8SKgKn.js} +5 -5
  10. package/dist/_chunks/{audio-recorder-Cn8z2zC9.js.map → audio-recorder-B-8SKgKn.js.map} +1 -1
  11. package/dist/_chunks/{autocomplete.agent-DRrp-Rsx.js → autocomplete.agent-DqOy0_1P.js} +31 -31
  12. package/dist/_chunks/autocomplete.agent-DqOy0_1P.js.map +1 -0
  13. package/dist/_chunks/{avatar-Biffh-_H.js → avatar-Dcr6XuDQ.js} +19 -19
  14. package/dist/_chunks/avatar-Dcr6XuDQ.js.map +1 -0
  15. package/dist/_chunks/{balance-cell-renderer-CiyezQhi.js → balance-cell-renderer-BRWt3neo.js} +166 -166
  16. package/dist/_chunks/balance-cell-renderer-BRWt3neo.js.map +1 -0
  17. package/dist/_chunks/breadcrumb-D6xpsP7n.js +293 -0
  18. package/dist/_chunks/breadcrumb-D6xpsP7n.js.map +1 -0
  19. package/dist/_chunks/{button-7dTew-IV.js → button-7mLWcMp_.js} +9 -9
  20. package/dist/_chunks/{button-7dTew-IV.js.map → button-7mLWcMp_.js.map} +1 -1
  21. package/dist/_chunks/{calendar-BkDeDTaX.js → calendar-nGEgelJs.js} +100 -100
  22. package/dist/_chunks/calendar-nGEgelJs.js.map +1 -0
  23. package/dist/_chunks/{chat-input-xiBIujMv.js → chat-input-DsIrWM4f.js} +2 -2
  24. package/dist/_chunks/{chat-input-xiBIujMv.js.map → chat-input-DsIrWM4f.js.map} +1 -1
  25. package/dist/_chunks/{chat-message-BtxUyugB.js → chat-message-ByouZpPP.js} +3 -3
  26. package/dist/_chunks/{chat-message-BtxUyugB.js.map → chat-message-ByouZpPP.js.map} +1 -1
  27. package/dist/_chunks/{checkbox-Ni6C_KJg.js → checkbox-DNK4qS2_.js} +13 -13
  28. package/dist/_chunks/checkbox-DNK4qS2_.js.map +1 -0
  29. package/dist/_chunks/{checkbox-group-BFZ4oN5t.js → checkbox-group-CWpGZEF6.js} +13 -13
  30. package/dist/_chunks/checkbox-group-CWpGZEF6.js.map +1 -0
  31. package/dist/_chunks/{collapsible-fFMqzpdL.js → collapsible-D4LOdLxp.js} +18 -18
  32. package/dist/_chunks/collapsible-D4LOdLxp.js.map +1 -0
  33. package/dist/_chunks/{color-picker-Cl3KdjJd.js → color-picker-e9PmpaGH.js} +161 -161
  34. package/dist/_chunks/color-picker-e9PmpaGH.js.map +1 -0
  35. package/dist/_chunks/{combobox.agent-DjdivI3X.js → combobox.agent-ByobCLJ_.js} +28 -28
  36. package/dist/_chunks/combobox.agent-ByobCLJ_.js.map +1 -0
  37. package/dist/_chunks/{command-palette.agent-BUjzr2ET.js → command-palette.agent-js2rxgeR.js} +117 -117
  38. package/dist/_chunks/command-palette.agent-js2rxgeR.js.map +1 -0
  39. package/dist/_chunks/{description-list-C_1NX8P3.js → description-list-DvJbp6Yg.js} +2 -2
  40. package/dist/_chunks/{description-list-C_1NX8P3.js.map → description-list-DvJbp6Yg.js.map} +1 -1
  41. package/dist/_chunks/{dialog.agent-C2lP9H0h.js → dialog.agent-DEG_fVzG.js} +42 -42
  42. package/dist/_chunks/dialog.agent-DEG_fVzG.js.map +1 -0
  43. package/dist/_chunks/{dropdown-menu-2HgU1Emf.js → dropdown-menu-JNo66A-j.js} +2 -2
  44. package/dist/_chunks/dropdown-menu-JNo66A-j.js.map +1 -0
  45. package/dist/_chunks/{empty-state-BHrItOiE.js → empty-state-DQPtRp2b.js} +2 -2
  46. package/dist/_chunks/{empty-state-BHrItOiE.js.map → empty-state-DQPtRp2b.js.map} +1 -1
  47. package/dist/_chunks/{file-upload.agent-LlC0W468.js → file-upload.agent-B9AN82LA.js} +2 -2
  48. package/dist/_chunks/{file-upload.agent-LlC0W468.js.map → file-upload.agent-B9AN82LA.js.map} +1 -1
  49. package/dist/_chunks/{freemium-paywall-Dr9aOtOC.js → freemium-paywall-CkefGLM_.js} +4 -4
  50. package/dist/_chunks/{freemium-paywall-Dr9aOtOC.js.map → freemium-paywall-CkefGLM_.js.map} +1 -1
  51. package/dist/_chunks/{header-BpU9U-1X.js → header-BGn1mRp8.js} +2 -2
  52. package/dist/_chunks/{header-BpU9U-1X.js.map → header-BGn1mRp8.js.map} +1 -1
  53. package/dist/_chunks/{icon-button-CNjWCD1X.js → icon-button-Wnnde5lc.js} +6 -6
  54. package/dist/_chunks/icon-button-Wnnde5lc.js.map +1 -0
  55. package/dist/_chunks/input-surface-u4QB0lxe.js +32 -0
  56. package/dist/_chunks/input-surface-u4QB0lxe.js.map +1 -0
  57. package/dist/_chunks/{key-value-pair-C9hpjC_B.js → key-value-pair-JRFS9Xrh.js} +10 -10
  58. package/dist/_chunks/key-value-pair-JRFS9Xrh.js.map +1 -0
  59. package/dist/_chunks/{leo-sidebar-CNjZqljo.js → leo-sidebar-BzN4pJ7j.js} +16 -16
  60. package/dist/_chunks/leo-sidebar-BzN4pJ7j.js.map +1 -0
  61. package/dist/_chunks/{message-card-CZzNO4ov.js → message-card-qAp2-WQK.js} +12 -12
  62. package/dist/_chunks/message-card-qAp2-WQK.js.map +1 -0
  63. package/dist/_chunks/{message-tray-BWbjXW3F.js → message-tray-VaLpQU5t.js} +5 -5
  64. package/dist/_chunks/{message-tray-BWbjXW3F.js.map → message-tray-VaLpQU5t.js.map} +1 -1
  65. package/dist/_chunks/{multi-select.agent-BSGEW10d.js → multi-select.agent-CNsyW3n9.js} +66 -66
  66. package/dist/_chunks/multi-select.agent-CNsyW3n9.js.map +1 -0
  67. package/dist/_chunks/navigation-menu-EVFau1O2.js +180 -0
  68. package/dist/_chunks/navigation-menu-EVFau1O2.js.map +1 -0
  69. package/dist/_chunks/{notification-card-DgW-vVg-.js → notification-card-BF2_veHy.js} +11 -11
  70. package/dist/_chunks/notification-card-BF2_veHy.js.map +1 -0
  71. package/dist/_chunks/{notification-tray-CKUgl2jc.js → notification-tray-Bq-08ReD.js} +5 -5
  72. package/dist/_chunks/{notification-tray-CKUgl2jc.js.map → notification-tray-Bq-08ReD.js.map} +1 -1
  73. package/dist/_chunks/{number-input-BPPhekLu.js → number-input-DjpT_RXJ.js} +46 -46
  74. package/dist/_chunks/number-input-DjpT_RXJ.js.map +1 -0
  75. package/dist/_chunks/pagination.agent-oEaqmtx5.js +380 -0
  76. package/dist/_chunks/pagination.agent-oEaqmtx5.js.map +1 -0
  77. package/dist/_chunks/{password-input-DAT5HQth.js → password-input-DJDVznWH.js} +5 -5
  78. package/dist/_chunks/password-input-DJDVznWH.js.map +1 -0
  79. package/dist/_chunks/{patient-shell-BzHhg6uA.js → patient-shell-DP54y6rc.js} +5 -5
  80. package/dist/_chunks/{patient-shell-BzHhg6uA.js.map → patient-shell-DP54y6rc.js.map} +1 -1
  81. package/dist/_chunks/{payment-form-YlxrCpZQ.js → payment-form-hcl-gGrp.js} +2 -2
  82. package/dist/_chunks/{payment-form-YlxrCpZQ.js.map → payment-form-hcl-gGrp.js.map} +1 -1
  83. package/dist/_chunks/{pdf-viewer.agent-sMned5Xn.js → pdf-viewer.agent-CfIHhcHx.js} +3 -3
  84. package/dist/_chunks/{pdf-viewer.agent-sMned5Xn.js.map → pdf-viewer.agent-CfIHhcHx.js.map} +1 -1
  85. package/dist/_chunks/{phone-input-BuRe5PyI.js → phone-input-DE_39q65.js} +103 -103
  86. package/dist/_chunks/phone-input-DE_39q65.js.map +1 -0
  87. package/dist/_chunks/{popover-Ds1iOdiv.js → popover-DvAtFOi-.js} +2 -2
  88. package/dist/_chunks/{popover-Ds1iOdiv.js.map → popover-DvAtFOi-.js.map} +1 -1
  89. package/dist/_chunks/{privacy-lock-KEruBpM1.js → privacy-lock-DS6QRo2N.js} +43 -42
  90. package/dist/_chunks/{privacy-lock-KEruBpM1.js.map → privacy-lock-DS6QRo2N.js.map} +1 -1
  91. package/dist/_chunks/{progress-D4ELgHG3.js → progress-B4Of_pzz.js} +57 -57
  92. package/dist/_chunks/progress-B4Of_pzz.js.map +1 -0
  93. package/dist/_chunks/{radio-XSSNX3Af.js → radio-cs8N1wJi.js} +29 -29
  94. package/dist/_chunks/radio-cs8N1wJi.js.map +1 -0
  95. package/dist/_chunks/{radio-group-DBrUOPcy.js → radio-group-BIUbpWml.js} +3 -3
  96. package/dist/_chunks/radio-group-BIUbpWml.js.map +1 -0
  97. package/dist/_chunks/{scroll-area-HIq0hJyJ.js → scroll-area-DLr5w9Dd.js} +9 -9
  98. package/dist/_chunks/scroll-area-DLr5w9Dd.js.map +1 -0
  99. package/dist/_chunks/{search-bar-9Zbew4yM.js → search-bar-fcGqDFW3.js} +30 -30
  100. package/dist/_chunks/{search-bar-9Zbew4yM.js.map → search-bar-fcGqDFW3.js.map} +1 -1
  101. package/dist/_chunks/{search-input-CtkWITO2.js → search-input-BVMCONyN.js} +2 -2
  102. package/dist/_chunks/{search-input-CtkWITO2.js.map → search-input-BVMCONyN.js.map} +1 -1
  103. package/dist/_chunks/{select-DdAOtomN.js → select-IY_JQa-F.js} +50 -50
  104. package/dist/_chunks/select-IY_JQa-F.js.map +1 -0
  105. package/dist/_chunks/{sheet-D7GRhnWw.js → sheet-BhNpLHc9.js} +8 -8
  106. package/dist/_chunks/sheet-BhNpLHc9.js.map +1 -0
  107. package/dist/_chunks/{sidebar-Dc2ffrbf.js → sidebar-OVzwN3jE.js} +294 -294
  108. package/dist/_chunks/sidebar-OVzwN3jE.js.map +1 -0
  109. package/dist/_chunks/{sign-in-with-alfadocs-button-BotwPDcW.js → sign-in-with-alfadocs-button-BN_FPGHT.js} +2 -2
  110. package/dist/_chunks/{sign-in-with-alfadocs-button-BotwPDcW.js.map → sign-in-with-alfadocs-button-BN_FPGHT.js.map} +1 -1
  111. package/dist/_chunks/{skeleton-DAdPFx9d.js → skeleton-dtqyF09N.js} +8 -8
  112. package/dist/_chunks/skeleton-dtqyF09N.js.map +1 -0
  113. package/dist/_chunks/{slot-grid-WHc5A8-z.js → slot-grid-D_l5VsHG.js} +5 -5
  114. package/dist/_chunks/{slot-grid-WHc5A8-z.js.map → slot-grid-D_l5VsHG.js.map} +1 -1
  115. package/dist/_chunks/{stepper-accordion-2_7Pw0tC.js → stepper-accordion-CGog0JSF.js} +64 -64
  116. package/dist/_chunks/stepper-accordion-CGog0JSF.js.map +1 -0
  117. package/dist/_chunks/{stepper-calendar-CWZcFgt_.js → stepper-calendar-_fLOAjus.js} +7 -7
  118. package/dist/_chunks/{stepper-calendar-CWZcFgt_.js.map → stepper-calendar-_fLOAjus.js.map} +1 -1
  119. package/dist/_chunks/{switch-DhSORO9C.js → switch-aN2EYxHh.js} +4 -4
  120. package/dist/_chunks/switch-aN2EYxHh.js.map +1 -0
  121. package/dist/_chunks/{tabs.agent-BtaNGxRh.js → tabs.agent-BpbVA-Zh.js} +55 -55
  122. package/dist/_chunks/tabs.agent-BpbVA-Zh.js.map +1 -0
  123. package/dist/_chunks/{tag--uLKOb9f.js → tag-BqidXKo3.js} +2 -2
  124. package/dist/_chunks/tag-BqidXKo3.js.map +1 -0
  125. package/dist/_chunks/{task-card-BeSuntXP.js → task-card-yW7tKlG4.js} +17 -17
  126. package/dist/_chunks/task-card-yW7tKlG4.js.map +1 -0
  127. package/dist/_chunks/{task-tray-pRk6u8Ik.js → task-tray-BzahI5FQ.js} +5 -5
  128. package/dist/_chunks/{task-tray-pRk6u8Ik.js.map → task-tray-BzahI5FQ.js.map} +1 -1
  129. package/dist/_chunks/{text-area-xf9-6iDf.js → text-area-DmKSd2DG.js} +2 -2
  130. package/dist/_chunks/text-area-DmKSd2DG.js.map +1 -0
  131. package/dist/_chunks/{text-input-exh7VD7D.js → text-input-CRHvl5zk.js} +19 -19
  132. package/dist/_chunks/text-input-CRHvl5zk.js.map +1 -0
  133. package/dist/_chunks/{theme-toggle-CJgA6G24.js → theme-toggle-COHFwO2H.js} +4 -4
  134. package/dist/_chunks/{theme-toggle-CJgA6G24.js.map → theme-toggle-COHFwO2H.js.map} +1 -1
  135. package/dist/_chunks/{timeline-DIueH4TJ.js → timeline-RgAIzpMd.js} +2 -2
  136. package/dist/_chunks/{timeline-DIueH4TJ.js.map → timeline-RgAIzpMd.js.map} +1 -1
  137. package/dist/_chunks/{toast-q0SlabGr.js → toast-lOhJDKOH.js} +12 -12
  138. package/dist/_chunks/{toast-q0SlabGr.js.map → toast-lOhJDKOH.js.map} +1 -1
  139. package/dist/_chunks/{transcript-panel-DFnhbrlQ.js → transcript-panel-CNbVGG9L.js} +59 -59
  140. package/dist/_chunks/transcript-panel-CNbVGG9L.js.map +1 -0
  141. package/dist/_chunks/{visually-hidden-BlkhaZWe.js → visually-hidden-Bw7vBHLm.js} +6 -6
  142. package/dist/_chunks/{visually-hidden-BlkhaZWe.js.map → visually-hidden-Bw7vBHLm.js.map} +1 -1
  143. package/dist/_chunks/{warning-stack-DCmO0R07.js → warning-stack-8Pa3pekh.js} +24 -24
  144. package/dist/_chunks/warning-stack-8Pa3pekh.js.map +1 -0
  145. package/dist/_chunks/{workflow-map-CAM6Uy_J.js → workflow-map-DGJwVcO-.js} +106 -106
  146. package/dist/_chunks/workflow-map-DGJwVcO-.js.map +1 -0
  147. package/dist/agent-catalog.json +1 -1
  148. package/dist/components/_shared/input-surface.d.ts +11 -11
  149. package/dist/components/agenda-card/index.js +1 -1
  150. package/dist/components/agenda-tray/index.js +1 -1
  151. package/dist/components/ai-prompt-input/index.js +1 -1
  152. package/dist/components/alert/index.js +1 -1
  153. package/dist/components/audio-recorder/index.js +1 -1
  154. package/dist/components/autocomplete/index.js +1 -1
  155. package/dist/components/avatar/index.js +1 -1
  156. package/dist/components/breadcrumb/index.js +1 -1
  157. package/dist/components/button/index.js +2 -2
  158. package/dist/components/calendar/index.js +1 -1
  159. package/dist/components/chat-input/index.js +1 -1
  160. package/dist/components/chat-message/index.js +1 -1
  161. package/dist/components/checkbox/index.js +1 -1
  162. package/dist/components/checkbox-group/index.js +1 -1
  163. package/dist/components/collapsible/index.js +1 -1
  164. package/dist/components/color-picker/index.js +1 -1
  165. package/dist/components/combobox/index.js +1 -1
  166. package/dist/components/command-palette/index.js +1 -1
  167. package/dist/components/data-table/index.js +1 -1
  168. package/dist/components/description-list/index.js +1 -1
  169. package/dist/components/dialog/index.js +1 -1
  170. package/dist/components/dropdown-menu/index.js +1 -1
  171. package/dist/components/empty-state/index.js +1 -1
  172. package/dist/components/file-upload/index.js +1 -1
  173. package/dist/components/freemium-paywall/index.js +1 -1
  174. package/dist/components/header/index.js +1 -1
  175. package/dist/components/icon-button/index.js +1 -1
  176. package/dist/components/key-value-pair/index.js +1 -1
  177. package/dist/components/message-card/index.js +1 -1
  178. package/dist/components/message-tray/index.js +1 -1
  179. package/dist/components/multi-select/index.js +1 -1
  180. package/dist/components/navigation-menu/index.js +1 -1
  181. package/dist/components/notification-card/index.js +1 -1
  182. package/dist/components/notification-tray/index.js +1 -1
  183. package/dist/components/number-input/index.js +1 -1
  184. package/dist/components/pagination/index.js +1 -1
  185. package/dist/components/password-input/index.js +1 -1
  186. package/dist/components/payment-form/index.js +1 -1
  187. package/dist/components/pdf-viewer/index.js +1 -1
  188. package/dist/components/phone-input/index.js +1 -1
  189. package/dist/components/popover/index.js +1 -1
  190. package/dist/components/privacy-lock/index.js +1 -1
  191. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  192. package/dist/components/progress/index.js +1 -1
  193. package/dist/components/radio/index.js +1 -1
  194. package/dist/components/radio-group/index.js +2 -2
  195. package/dist/components/scroll-area/index.js +1 -1
  196. package/dist/components/search-bar/index.js +1 -1
  197. package/dist/components/search-input/index.js +1 -1
  198. package/dist/components/select/index.js +1 -1
  199. package/dist/components/sheet/index.js +1 -1
  200. package/dist/components/sidebar/index.js +1 -1
  201. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  202. package/dist/components/skeleton/index.js +1 -1
  203. package/dist/components/slot-grid/index.js +1 -1
  204. package/dist/components/stepper-accordion/index.js +1 -1
  205. package/dist/components/stepper-calendar/index.js +1 -1
  206. package/dist/components/switch/index.js +1 -1
  207. package/dist/components/tabs/index.js +1 -1
  208. package/dist/components/tag/index.js +1 -1
  209. package/dist/components/task-card/index.js +1 -1
  210. package/dist/components/task-tray/index.js +1 -1
  211. package/dist/components/text-area/index.js +1 -1
  212. package/dist/components/text-input/index.js +1 -1
  213. package/dist/components/theme-toggle/index.js +1 -1
  214. package/dist/components/timeline/index.js +1 -1
  215. package/dist/components/toast/index.js +1 -1
  216. package/dist/components/transcript-panel/index.js +1 -1
  217. package/dist/components/visually-hidden/index.js +1 -1
  218. package/dist/components/warning-stack/index.js +1 -1
  219. package/dist/components/workflow/index.js +1 -1
  220. package/dist/index.js +72 -72
  221. package/dist/patterns/leo-assistant/index.js +1 -1
  222. package/dist/patterns/patient-shell/index.js +1 -1
  223. package/dist/tokens.css +1 -1
  224. package/package.json +504 -135
  225. package/dist/_chunks/agenda-card-C_hQGErS.js.map +0 -1
  226. package/dist/_chunks/ai-prompt-input-K94oVLG2.js.map +0 -1
  227. package/dist/_chunks/alert-rOM4EG0P.js.map +0 -1
  228. package/dist/_chunks/autocomplete.agent-DRrp-Rsx.js.map +0 -1
  229. package/dist/_chunks/avatar-Biffh-_H.js.map +0 -1
  230. package/dist/_chunks/balance-cell-renderer-CiyezQhi.js.map +0 -1
  231. package/dist/_chunks/breadcrumb-CcZovmIq.js +0 -293
  232. package/dist/_chunks/breadcrumb-CcZovmIq.js.map +0 -1
  233. package/dist/_chunks/calendar-BkDeDTaX.js.map +0 -1
  234. package/dist/_chunks/checkbox-Ni6C_KJg.js.map +0 -1
  235. package/dist/_chunks/checkbox-group-BFZ4oN5t.js.map +0 -1
  236. package/dist/_chunks/collapsible-fFMqzpdL.js.map +0 -1
  237. package/dist/_chunks/color-picker-Cl3KdjJd.js.map +0 -1
  238. package/dist/_chunks/combobox.agent-DjdivI3X.js.map +0 -1
  239. package/dist/_chunks/command-palette.agent-BUjzr2ET.js.map +0 -1
  240. package/dist/_chunks/dialog.agent-C2lP9H0h.js.map +0 -1
  241. package/dist/_chunks/dropdown-menu-2HgU1Emf.js.map +0 -1
  242. package/dist/_chunks/icon-button-CNjWCD1X.js.map +0 -1
  243. package/dist/_chunks/input-surface-D5OMCB1W.js +0 -32
  244. package/dist/_chunks/input-surface-D5OMCB1W.js.map +0 -1
  245. package/dist/_chunks/key-value-pair-C9hpjC_B.js.map +0 -1
  246. package/dist/_chunks/leo-sidebar-CNjZqljo.js.map +0 -1
  247. package/dist/_chunks/message-card-CZzNO4ov.js.map +0 -1
  248. package/dist/_chunks/multi-select.agent-BSGEW10d.js.map +0 -1
  249. package/dist/_chunks/navigation-menu-DxOMvrKM.js +0 -180
  250. package/dist/_chunks/navigation-menu-DxOMvrKM.js.map +0 -1
  251. package/dist/_chunks/notification-card-DgW-vVg-.js.map +0 -1
  252. package/dist/_chunks/number-input-BPPhekLu.js.map +0 -1
  253. package/dist/_chunks/pagination.agent-CmA0Ocr5.js +0 -380
  254. package/dist/_chunks/pagination.agent-CmA0Ocr5.js.map +0 -1
  255. package/dist/_chunks/password-input-DAT5HQth.js.map +0 -1
  256. package/dist/_chunks/phone-input-BuRe5PyI.js.map +0 -1
  257. package/dist/_chunks/progress-D4ELgHG3.js.map +0 -1
  258. package/dist/_chunks/radio-XSSNX3Af.js.map +0 -1
  259. package/dist/_chunks/radio-group-DBrUOPcy.js.map +0 -1
  260. package/dist/_chunks/scroll-area-HIq0hJyJ.js.map +0 -1
  261. package/dist/_chunks/select-DdAOtomN.js.map +0 -1
  262. package/dist/_chunks/sheet-D7GRhnWw.js.map +0 -1
  263. package/dist/_chunks/sidebar-Dc2ffrbf.js.map +0 -1
  264. package/dist/_chunks/skeleton-DAdPFx9d.js.map +0 -1
  265. package/dist/_chunks/stepper-accordion-2_7Pw0tC.js.map +0 -1
  266. package/dist/_chunks/switch-DhSORO9C.js.map +0 -1
  267. package/dist/_chunks/tabs.agent-BtaNGxRh.js.map +0 -1
  268. package/dist/_chunks/tag--uLKOb9f.js.map +0 -1
  269. package/dist/_chunks/task-card-BeSuntXP.js.map +0 -1
  270. package/dist/_chunks/text-area-xf9-6iDf.js.map +0 -1
  271. package/dist/_chunks/text-input-exh7VD7D.js.map +0 -1
  272. package/dist/_chunks/transcript-panel-DFnhbrlQ.js.map +0 -1
  273. package/dist/_chunks/warning-stack-DCmO0R07.js.map +0 -1
  274. package/dist/_chunks/workflow-map-CAM6Uy_J.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { jsx as s, jsxs as t } from "react/jsx-runtime";
1
+ import { jsx as s, jsxs as a } from "react/jsx-runtime";
2
2
  import { useContext as N, createContext as C, forwardRef as j, useId as R, useRef as I, useEffect as k } from "react";
3
3
  import * as m from "@radix-ui/react-radio-group";
4
4
  import { c as w } from "./index-D2ZczOXr.js";
@@ -32,13 +32,13 @@ const T = w(
32
32
  }
33
33
  }
34
34
  ), V = {
35
- sm: "size-1.5",
36
- md: "size-2",
37
- lg: "size-2.5"
35
+ sm: "ds:size-1.5",
36
+ md: "ds:size-2",
37
+ lg: "ds:size-2.5"
38
38
  }, _ = j(
39
39
  ({
40
- label: o,
41
- size: d = "md",
40
+ label: t,
41
+ size: o = "md",
42
42
  disabled: e,
43
43
  disabledReason: i,
44
44
  description: n,
@@ -47,22 +47,22 @@ const T = w(
47
47
  value: p,
48
48
  ...g
49
49
  }, b) => {
50
- const v = R(), a = u ?? v, r = S(), h = (r == null ? void 0 : r.variant) === "card";
50
+ const v = R(), r = u ?? v, d = S(), h = (d == null ? void 0 : d.variant) === "card";
51
51
  I(!1), k(() => {
52
- }, [r]);
52
+ }, [d]);
53
53
  const x = [
54
- "rounded-full bg-primary",
55
- V[d],
56
- "group-data-[disabled]:bg-muted"
54
+ "ds:rounded-full ds:bg-primary",
55
+ V[o],
56
+ "ds:group-data-[disabled]:bg-muted"
57
57
  ].join(" "), c = /* @__PURE__ */ s(
58
58
  m.Item,
59
59
  {
60
60
  ref: b,
61
- id: a,
61
+ id: r,
62
62
  disabled: e,
63
63
  "aria-disabled": e || void 0,
64
64
  value: p,
65
- className: T({ size: d, className: f }),
65
+ className: T({ size: o, className: f }),
66
66
  "data-component": "radio",
67
67
  ...g,
68
68
  children: /* @__PURE__ */ s(
@@ -75,26 +75,26 @@ const T = w(
75
75
  )
76
76
  }
77
77
  ), y = [
78
- "type-label text-foreground select-none",
79
- e ? "cursor-not-allowed opacity-50" : "cursor-pointer"
78
+ "type-label ds:text-foreground ds:select-none",
79
+ e ? "ds:cursor-not-allowed ds:opacity-50" : "ds:cursor-pointer"
80
80
  ].join(" "), z = [
81
- "flex items-start gap-[var(--spacing-md)]",
82
- "rounded-[var(--radius-md)] border border-border",
83
- "ps-[var(--spacing-md)] pe-[var(--spacing-md)] py-[var(--spacing-md)]",
84
- "min-h-[var(--min-target-size)]",
85
- "has-[[data-state=checked]]:border-ring",
86
- "has-[[data-state=checked]]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]",
87
- "transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none",
88
- e ? "cursor-not-allowed opacity-50" : "cursor-pointer"
89
- ].join(" "), l = h ? /* @__PURE__ */ t("label", { htmlFor: a, className: z, children: [
81
+ "ds:flex ds:items-start ds:gap-[var(--spacing-md)]",
82
+ "ds:rounded-[var(--radius-md)] ds:border ds:border-border",
83
+ "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]",
84
+ "ds:min-h-[var(--min-target-size)]",
85
+ "ds:has-[[data-state=checked]]:border-ring",
86
+ "ds:has-[[data-state=checked]]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]",
87
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
88
+ e ? "ds:cursor-not-allowed ds:opacity-50" : "ds:cursor-pointer"
89
+ ].join(" "), l = h ? /* @__PURE__ */ a("label", { htmlFor: r, className: z, children: [
90
90
  c,
91
- /* @__PURE__ */ t("span", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:text-start", children: [
92
- /* @__PURE__ */ s("span", { className: "type-label ds:text-foreground", children: o }),
91
+ /* @__PURE__ */ a("span", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:text-start", children: [
92
+ /* @__PURE__ */ s("span", { className: "type-label ds:text-foreground", children: t }),
93
93
  n ? /* @__PURE__ */ s("span", { className: "type-body-sm ds:text-muted-foreground", children: n }) : null
94
94
  ] })
95
- ] }) : /* @__PURE__ */ t("div", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)]", children: [
95
+ ] }) : /* @__PURE__ */ a("div", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)]", children: [
96
96
  c,
97
- /* @__PURE__ */ s("label", { htmlFor: a, className: y, children: o })
97
+ /* @__PURE__ */ s("label", { htmlFor: r, className: y, children: t })
98
98
  ] });
99
99
  return e && i ? /* @__PURE__ */ s(G, { label: i, children: l }) : l;
100
100
  }
@@ -104,4 +104,4 @@ export {
104
104
  _ as R,
105
105
  F as a
106
106
  };
107
- //# sourceMappingURL=radio-XSSNX3Af.js.map
107
+ //# sourceMappingURL=radio-cs8N1wJi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-cs8N1wJi.js","sources":["../../src/components/radio-group/radio-group-context.ts","../../src/components/radio-group/radio.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type RadioGroupVariant = 'vertical' | 'horizontal' | 'card';\n\nexport interface RadioGroupInternalContextShape {\n variant: RadioGroupVariant;\n}\n\nexport const RadioGroupInternalContext =\n createContext<RadioGroupInternalContextShape | null>(null);\n\nexport function useRadioGroupContext(): RadioGroupInternalContextShape | null {\n return useContext(RadioGroupInternalContext);\n}\n","import {\n forwardRef,\n useEffect,\n useId,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useRadioGroupContext } from './radio-group-context';\nimport { Tooltip } from '../tooltip';\n\nconst radioVariants = cva(\n [\n 'ds:group ds:inline-flex ds:items-center ds:justify-center ds:shrink-0 ds:rounded-full',\n 'ds:border ds:border-border ds:bg-background',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:data-[state=checked]:border-primary',\n 'ds:data-[disabled]:border-muted',\n 'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst discSizeBySize = {\n sm: 'ds:size-1.5',\n md: 'ds:size-2',\n lg: 'ds:size-2.5',\n} as const;\n\ntype RadixItemProps = ComponentPropsWithoutRef<typeof RadixRadioGroup.Item>;\n\nexport interface RadioProps\n extends Omit<RadixItemProps, 'children'>,\n VariantProps<typeof radioVariants> {\n label: string;\n size?: 'sm' | 'md' | 'lg';\n disabledReason?: string;\n description?: string;\n}\n\nexport const Radio = forwardRef<HTMLButtonElement, RadioProps>(\n (\n {\n label,\n size = 'md',\n disabled,\n disabledReason,\n description,\n id,\n className,\n value,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const radioId = id ?? generatedId;\n const ctx = useRadioGroupContext();\n const isCard = ctx?.variant === 'card';\n\n const warnedRef = useRef(false);\n useEffect(() => {\n if (import.meta.env.DEV && !ctx && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n '<Radio> rendered without a <RadioGroup> ancestor. A lone radio is rarely meaningful — use <Checkbox> for a single on/off choice.',\n );\n }\n }, [ctx]);\n\n const discClasses = [\n 'ds:rounded-full ds:bg-primary',\n discSizeBySize[size],\n 'ds:group-data-[disabled]:bg-muted',\n ].join(' ');\n\n const item = (\n <RadixRadioGroup.Item\n ref={ref}\n id={radioId}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n value={value as string}\n className={radioVariants({ size, className })}\n data-component=\"radio\"\n {...props}\n >\n <RadixRadioGroup.Indicator\n asChild\n className=\"ds:inline-flex ds:items-center ds:justify-center\"\n >\n <span aria-hidden=\"true\" className={discClasses} />\n </RadixRadioGroup.Indicator>\n </RadixRadioGroup.Item>\n );\n\n const labelClasses = [\n 'type-label ds:text-foreground ds:select-none',\n disabled ? 'ds:cursor-not-allowed ds:opacity-50' : 'ds:cursor-pointer',\n ].join(' ');\n\n const cardClasses = [\n 'ds:flex ds:items-start ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:has-[[data-state=checked]]:border-ring',\n 'ds:has-[[data-state=checked]]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n disabled ? 'ds:cursor-not-allowed ds:opacity-50' : 'ds:cursor-pointer',\n ].join(' ');\n\n const content = isCard ? (\n <label htmlFor={radioId} className={cardClasses}>\n {item}\n <span className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:text-start\">\n <span className=\"type-label ds:text-foreground\">{label}</span>\n {description ? (\n <span className=\"type-body-sm ds:text-muted-foreground\">{description}</span>\n ) : null}\n </span>\n </label>\n ) : (\n <div className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)]\">\n {item}\n <label htmlFor={radioId} className={labelClasses}>\n {label}\n </label>\n </div>\n );\n\n if (disabled && disabledReason) {\n return <Tooltip label={disabledReason}>{content}</Tooltip>;\n }\n\n return content;\n },\n);\n\nRadio.displayName = 'Radio';\n"],"names":["RadioGroupInternalContext","createContext","useRadioGroupContext","useContext","radioVariants","cva","discSizeBySize","Radio","forwardRef","label","size","disabled","disabledReason","description","id","className","value","props","ref","generatedId","useId","radioId","ctx","isCard","useRef","useEffect","discClasses","item","jsx","RadixRadioGroup","labelClasses","cardClasses","content","jsxs","Tooltip"],"mappings":";;;;;AAQO,MAAMA,IACXC,EAAqD,IAAI;AAEpD,SAASC,IAA8D;AAC5E,SAAOC,EAAWH,CAAyB;AAC7C;ACDA,MAAMI,IAAgBC;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAEMC,IAAiB;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAaaC,IAAQC;AAAA,EACnB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,IAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAcC,EAAA,GACdC,IAAUP,KAAMK,GAChBG,IAAMpB,EAAA,GACNqB,KAASD,KAAA,gBAAAA,EAAK,aAAY;AAEd,IAAAE,EAAO,EAAK,GAC9BC,EAAU,MAAM;AAAA,IAOhB,GAAG,CAACH,CAAG,CAAC;AAER,UAAMI,IAAc;AAAA,MAClB;AAAA,MACApB,EAAeI,CAAI;AAAA,MACnB;AAAA,IAAA,EACA,KAAK,GAAG,GAEJiB,IACJ,gBAAAC;AAAA,MAACC,EAAgB;AAAA,MAAhB;AAAA,QACC,KAAAX;AAAA,QACA,IAAIG;AAAA,QACJ,UAAAV;AAAA,QACA,iBAAeA,KAAY;AAAA,QAC3B,OAAAK;AAAA,QACA,WAAWZ,EAAc,EAAE,MAAAM,GAAM,WAAAK,GAAW;AAAA,QAC5C,kBAAe;AAAA,QACd,GAAGE;AAAA,QAEJ,UAAA,gBAAAW;AAAA,UAACC,EAAgB;AAAA,UAAhB;AAAA,YACC,SAAO;AAAA,YACP,WAAU;AAAA,YAEV,4BAAC,QAAA,EAAK,eAAY,QAAO,WAAWH,GAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MACnD;AAAA,IAAA,GAIEI,IAAe;AAAA,MACnB;AAAA,MACAnB,IAAW,wCAAwC;AAAA,IAAA,EACnD,KAAK,GAAG,GAEJoB,IAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACApB,IAAW,wCAAwC;AAAA,IAAA,EACnD,KAAK,GAAG,GAEJqB,IAAUT,IACd,gBAAAU,EAAC,WAAM,SAASZ,GAAS,WAAWU,GACjC,UAAA;AAAA,MAAAJ;AAAA,MACD,gBAAAM,EAAC,QAAA,EAAK,WAAU,gEACd,UAAA;AAAA,0BAAC,QAAA,EAAK,WAAU,iCAAiC,UAAAxB,GAAM;AAAA,QACtDI,sBACE,QAAA,EAAK,WAAU,yCAAyC,aAAY,IACnE;AAAA,MAAA,GACN;AAAA,IAAA,EAAA,CACF,IAEA,gBAAAoB,EAAC,OAAA,EAAI,WAAU,+FACZ,UAAA;AAAA,MAAAN;AAAA,wBACA,SAAA,EAAM,SAASN,GAAS,WAAWS,GACjC,UAAArB,EAAA,CACH;AAAA,IAAA,GACF;AAGF,WAAIE,KAAYC,sBACNsB,GAAA,EAAQ,OAAOtB,GAAiB,UAAAoB,GAAQ,IAG3CA;AAAA,EACT;AACF;AAEAzB,EAAM,cAAc;"}
@@ -2,7 +2,7 @@ import { jsx as s, jsxs as r } from "react/jsx-runtime";
2
2
  import { forwardRef as z, useId as C, useMemo as j, useRef as B } from "react";
3
3
  import * as V from "@radix-ui/react-radio-group";
4
4
  import { c as $ } from "./index-D2ZczOXr.js";
5
- import { a as x } from "./radio-XSSNX3Af.js";
5
+ import { a as x } from "./radio-cs8N1wJi.js";
6
6
  import { u as P } from "./use-direction-D6rvvG9G.js";
7
7
  import { c as k } from "./compose-refs-C0k0tdqF.js";
8
8
  import { C as A } from "./circle-alert-ChA9opNA.js";
@@ -59,7 +59,7 @@ const D = $("ds:flex", {
59
59
  ...N,
60
60
  children: g
61
61
  }
62
- ), v = "flex flex-col gap-[var(--spacing-xs)] min-w-0";
62
+ ), v = "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0";
63
63
  return i ? /* @__PURE__ */ s(x.Provider, { value: c, children: /* @__PURE__ */ r("fieldset", { className: `${v} ds:border-0 ds:p-0 ds:m-0`, children: [
64
64
  /* @__PURE__ */ r("legend", { className: "type-label ds:text-foreground ds:p-0", children: [
65
65
  i,
@@ -86,4 +86,4 @@ M.displayName = "RadioGroup";
86
86
  export {
87
87
  M as R
88
88
  };
89
- //# sourceMappingURL=radio-group-DBrUOPcy.js.map
89
+ //# sourceMappingURL=radio-group-BIUbpWml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group-BIUbpWml.js","sources":["../../src/components/radio-group/radio-group.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { AlertCircle } from 'lucide-react';\nimport {\n RadioGroupInternalContext,\n type RadioGroupInternalContextShape,\n type RadioGroupVariant,\n} from './radio-group-context';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\n\nconst radioGroupVariants = cva('ds:flex', {\n variants: {\n variant: {\n vertical: 'ds:flex-col ds:gap-[var(--spacing-sm)]',\n horizontal: 'ds:flex-row ds:flex-wrap ds:gap-[var(--spacing-md)]',\n card: 'ds:flex-col ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: {\n variant: 'vertical',\n },\n});\n\ntype RadixRootProps = ComponentPropsWithoutRef<typeof RadixRadioGroup.Root>;\n\nexport interface RadioGroupProps\n extends Omit<RadixRootProps, 'children' | 'orientation'>,\n VariantProps<typeof radioGroupVariants> {\n children: React.ReactNode;\n variant?: RadioGroupVariant;\n label?: string;\n description?: string;\n error?: string;\n required?: boolean;\n}\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n children,\n variant = 'vertical',\n label,\n description,\n error,\n required,\n disabled,\n className,\n ...props\n },\n ref,\n ) => {\n const baseId = useId();\n const descriptionId = `${baseId}-description`;\n const errorId = `${baseId}-error`;\n\n const describedBy =\n [description ? descriptionId : null, error ? errorId : null]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const orientation: 'vertical' | 'horizontal' =\n variant === 'horizontal' ? 'horizontal' : 'vertical';\n\n const ctxValue: RadioGroupInternalContextShape = useMemo(\n () => ({ variant }),\n [variant],\n );\n\n const descriptionNode = description ? (\n <p id={descriptionId} className=\"type-body-sm ds:text-muted-foreground\">\n {description}\n </p>\n ) : null;\n\n const errorNode = error ? (\n <p\n id={errorId}\n role=\"alert\"\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-destructive\"\n >\n <AlertCircle aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <span>{error}</span>\n </p>\n ) : null;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const dir = useDirection(rootRef);\n\n const root = (\n <RadixRadioGroup.Root\n ref={composedRef}\n orientation={orientation}\n dir={dir}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n aria-invalid={Boolean(error) || undefined}\n aria-required={required || undefined}\n className={radioGroupVariants({ variant, className })}\n data-component=\"radio-group\"\n {...props}\n >\n {children}\n </RadixRadioGroup.Root>\n );\n\n const outerClasses = 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0';\n\n if (label) {\n return (\n <RadioGroupInternalContext.Provider value={ctxValue}>\n <fieldset className={`${outerClasses} ds:border-0 ds:p-0 ds:m-0`}>\n <legend className=\"type-label ds:text-foreground ds:p-0\">\n {label}\n {required ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:text-destructive ds:ms-[var(--spacing-xs)]\"\n >\n *\n </span>\n ) : null}\n </legend>\n {descriptionNode}\n {root}\n {errorNode}\n </fieldset>\n </RadioGroupInternalContext.Provider>\n );\n }\n\n return (\n <RadioGroupInternalContext.Provider value={ctxValue}>\n <div className={outerClasses}>\n {descriptionNode}\n {root}\n {errorNode}\n </div>\n </RadioGroupInternalContext.Provider>\n );\n },\n);\n\nRadioGroup.displayName = 'RadioGroup';\n"],"names":["radioGroupVariants","cva","RadioGroup","forwardRef","children","variant","label","description","error","required","disabled","className","props","ref","baseId","useId","descriptionId","errorId","describedBy","orientation","ctxValue","useMemo","descriptionNode","jsx","errorNode","jsxs","AlertCircle","rootRef","useRef","composedRef","composeRefs","dir","useDirection","root","RadixRadioGroup","outerClasses","RadioGroupInternalContext"],"mappings":";;;;;;;;AAkBA,MAAMA,IAAqBC,EAAI,WAAW;AAAA,EACxC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,iBAAiB;AAAA,IACf,SAAS;AAAA,EAAA;AAEb,CAAC,GAeYC,IAAaC;AAAA,EACxB,CACE;AAAA,IACE,UAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAASC,EAAA,GACTC,IAAgB,GAAGF,CAAM,gBACzBG,IAAU,GAAGH,CAAM,UAEnBI,IACJ,CAACX,IAAcS,IAAgB,MAAMR,IAAQS,IAAU,IAAI,EACxD,OAAO,OAAO,EACd,KAAK,GAAG,KAAK,QAEZE,IACJd,MAAY,eAAe,eAAe,YAEtCe,IAA2CC;AAAA,MAC/C,OAAO,EAAE,SAAAhB,EAAA;AAAA,MACT,CAACA,CAAO;AAAA,IAAA,GAGJiB,IAAkBf,IACtB,gBAAAgB,EAAC,KAAA,EAAE,IAAIP,GAAe,WAAU,yCAC7B,UAAAT,EAAA,CACH,IACE,MAEEiB,IAAYhB,IAChB,gBAAAiB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIR;AAAA,QACJ,MAAK;AAAA,QACL,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAM,EAACG,GAAA,EAAY,eAAY,QAAO,WAAU,yBAAwB;AAAA,UAClE,gBAAAH,EAAC,UAAM,UAAAf,EAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAEb,MAEEmB,IAAUC,EAAuB,IAAI,GACrCC,IAAcC,EAAYjB,GAAKc,CAAO,GACtCI,IAAMC,EAAaL,CAAO,GAE1BM,IACJ,gBAAAV;AAAA,MAACW,EAAgB;AAAA,MAAhB;AAAA,QACC,KAAKL;AAAA,QACL,aAAAV;AAAA,QACA,KAAAY;AAAA,QACA,UAAArB;AAAA,QACA,UAAAD;AAAA,QACA,oBAAkBS;AAAA,QAClB,gBAAc,EAAQV,KAAU;AAAA,QAChC,iBAAeC,KAAY;AAAA,QAC3B,WAAWT,EAAmB,EAAE,SAAAK,GAAS,WAAAM,GAAW;AAAA,QACpD,kBAAe;AAAA,QACd,GAAGC;AAAA,QAEH,UAAAR;AAAA,MAAA;AAAA,IAAA,GAIC+B,IAAe;AAErB,WAAI7B,IAEA,gBAAAiB,EAACa,EAA0B,UAA1B,EAAmC,OAAOhB,GACzC,UAAA,gBAAAK,EAAC,YAAA,EAAS,WAAW,GAAGU,CAAY,8BAClC,UAAA;AAAA,MAAA,gBAAAV,EAAC,UAAA,EAAO,WAAU,wCACf,UAAA;AAAA,QAAAnB;AAAA,QACAG,IACC,gBAAAc;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA,IAGC;AAAA,MAAA,GACN;AAAA,MACCD;AAAA,MACAW;AAAA,MACAT;AAAA,IAAA,EAAA,CACH,EAAA,CACF,IAKF,gBAAAD,EAACa,EAA0B,UAA1B,EAAmC,OAAOhB,GACzC,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWU,GACb,UAAA;AAAA,MAAAb;AAAA,MACAW;AAAA,MACAT;AAAA,IAAA,EAAA,CACH,EAAA,CACF;AAAA,EAEJ;AACF;AAEAtB,EAAW,cAAc;"}
@@ -3,7 +3,7 @@ import { forwardRef as h, useRef as g } from "react";
3
3
  import * as o from "@radix-ui/react-scroll-area";
4
4
  import { c as f } from "./index-D2ZczOXr.js";
5
5
  import { u as z } from "./use-direction-D6rvvG9G.js";
6
- const d = f(
6
+ const c = f(
7
7
  [
8
8
  "ds:flex ds:touch-none ds:select-none",
9
9
  // Fade in/out based on Radix data-state (requires forceMount on Scrollbar).
@@ -44,9 +44,9 @@ const d = f(
44
44
  "ds:before:inset-block-[calc((var(--min-target-size)-100%)/-2)]"
45
45
  ].join(" ")
46
46
  ), p = (r) => r === "auto" || r === void 0 ? "hover" : r, w = {
47
- vertical: "overflow-y-auto",
48
- horizontal: "overflow-x-auto",
49
- both: "overflow-auto"
47
+ vertical: "ds:overflow-y-auto",
48
+ horizontal: "ds:overflow-x-auto",
49
+ both: "ds:overflow-auto"
50
50
  }, S = h(
51
51
  ({
52
52
  orientation: r = "vertical",
@@ -77,11 +77,11 @@ const d = f(
77
77
  children: l
78
78
  }
79
79
  );
80
- const c = g(null), b = z(c);
80
+ const d = g(null), b = z(d);
81
81
  return /* @__PURE__ */ m(
82
82
  o.Root,
83
83
  {
84
- ref: c,
84
+ ref: d,
85
85
  type: p(e),
86
86
  dir: b,
87
87
  scrollHideDelay: v,
@@ -114,7 +114,7 @@ const d = f(
114
114
  {
115
115
  forceMount: !0,
116
116
  orientation: "vertical",
117
- className: d({ size: a }),
117
+ className: c({ size: a }),
118
118
  children: /* @__PURE__ */ s(o.Thumb, { className: u() })
119
119
  }
120
120
  ),
@@ -123,7 +123,7 @@ const d = f(
123
123
  {
124
124
  forceMount: !0,
125
125
  orientation: "horizontal",
126
- className: d({ size: a }),
126
+ className: c({ size: a }),
127
127
  children: /* @__PURE__ */ s(o.Thumb, { className: u() })
128
128
  }
129
129
  ),
@@ -143,4 +143,4 @@ export {
143
143
  y as d,
144
144
  T as e
145
145
  };
146
- //# sourceMappingURL=scroll-area-HIq0hJyJ.js.map
146
+ //# sourceMappingURL=scroll-area-DLr5w9Dd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area-DLr5w9Dd.js","sources":["../../src/components/scroll-area/scroll-area.tsx"],"sourcesContent":["import { forwardRef, useRef, type ComponentPropsWithoutRef } from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useDirection } from '../_shared/use-direction';\n\nconst scrollbarVariants = cva(\n [\n 'ds:flex ds:touch-none ds:select-none',\n // Fade in/out based on Radix data-state (requires forceMount on Scrollbar).\n // Default opacity is 1 because ScrollAreaScrollbarVisible (type='always')\n // never sets data-state at all — only hover/scroll/auto set data-state=\"hidden\".\n 'ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:data-[state=hidden]:opacity-0',\n // Orientation-specific sizing + padding so thumb floats away from the frame edge\n 'ds:data-[orientation=vertical]:w-[var(--scrollbar-size)] ds:data-[orientation=vertical]:p-[var(--scrollbar-padding)]',\n 'ds:data-[orientation=horizontal]:h-[var(--scrollbar-size)] ds:data-[orientation=horizontal]:flex-col ds:data-[orientation=horizontal]:p-[var(--scrollbar-padding)]',\n 'ds:bg-[var(--scrollbar-track)]',\n // forced-colors: 1px border keeps the track visible when background flattens\n 'ds:forced-colors:border ds:forced-colors:border-[ButtonText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:[--scrollbar-size:var(--scrollbar-size-sm)]',\n md: 'ds:[--scrollbar-size:var(--scrollbar-size-md)]',\n lg: 'ds:[--scrollbar-size:var(--scrollbar-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst thumbVariants = cva(\n [\n 'ds:relative ds:flex-1',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[var(--scrollbar-thumb)]',\n 'ds:hover:bg-[var(--scrollbar-thumb-hover)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n // forced-color-adjust: auto so forced-colors paint ButtonFace/ButtonText\n 'ds:[forced-color-adjust:auto]',\n // hit area extension via ::before for touch pointers (must be absolute)\n 'ds:before:absolute ds:before:content-[\"\"] ds:before:inset-inline-[calc((var(--min-target-size)-100%)/-2)]',\n 'ds:before:inset-block-[calc((var(--min-target-size)-100%)/-2)]',\n ].join(' '),\n);\n\nexport interface ScrollAreaProps\n extends Omit<\n ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>,\n 'type'\n >,\n VariantProps<typeof scrollbarVariants> {\n orientation?: 'vertical' | 'horizontal' | 'both';\n size?: 'sm' | 'md' | 'lg';\n /**\n * `auto` — scrollbar fades in on pointer-enter, fades out after `--scrollbar-fade-delay` (default).\n * `always` — scrollbar always visible; use for data tables.\n * `scroll` — scrollbar visible only while scrolling.\n * `hover` — alias for `auto` (Radix hover mode).\n * `native` — skips the custom scrollbar entirely; the OS renders its own.\n * Use for virtualised lists (AG Grid, @tanstack/react-virtual).\n */\n type?: 'auto' | 'always' | 'scroll' | 'hover' | 'native';\n className?: string;\n children: React.ReactNode;\n}\n\nconst radixType = (\n type: ScrollAreaProps['type'],\n): ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>['type'] => {\n if (type === 'auto' || type === undefined) return 'hover';\n return type as Exclude<ScrollAreaProps['type'], 'auto' | 'native' | undefined>;\n};\n\nconst nativeOverflow: Record<\n NonNullable<ScrollAreaProps['orientation']>,\n string\n> = {\n vertical: 'ds:overflow-y-auto',\n horizontal: 'ds:overflow-x-auto',\n both: 'ds:overflow-auto',\n};\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n {\n orientation = 'vertical',\n size = 'md',\n type = 'auto',\n className,\n children,\n // scrollHideDelay is a Root-only prop; ignore it for the native branch\n scrollHideDelay,\n ...props\n },\n ref,\n ) => {\n // ── Native escape-hatch ────────────────────────────────────────────\n // Radix's Viewport always injects `scrollbar-width: none` CSS, which\n // hides the browser scrollbar even if we skip rendering the custom one.\n // For native mode we bypass Radix entirely and render a plain div.\n if (type === 'native') {\n return (\n <div\n ref={ref}\n data-component=\"scroll-area\"\n className={[\n nativeOverflow[orientation],\n 'ds:min-w-0 ds:min-h-0',\n // focus ring matches the custom-scrollbar variant\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[Highlight]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n // ── Radix custom-scrollbar path ────────────────────────────────────\n const rootRef = useRef<HTMLDivElement>(null);\n const dir = useDirection(rootRef);\n return (\n <ScrollAreaPrimitive.Root\n ref={rootRef}\n type={radixType(type)}\n dir={dir}\n scrollHideDelay={scrollHideDelay}\n data-component=\"scroll-area\"\n className={[\n 'ds:relative ds:overflow-hidden',\n 'ds:min-w-0 ds:min-h-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={ref}\n className={[\n 'ds:h-full ds:w-full ds:rounded-[inherit]',\n // keyboard focus ring on the scroll container\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[Highlight]',\n ].join(' ')}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n\n {(orientation === 'vertical' || orientation === 'both') && (\n // forceMount keeps the element in the DOM so CSS opacity transition\n // can animate the show/hide instead of mount/unmount snapping.\n <ScrollAreaPrimitive.Scrollbar\n forceMount\n orientation=\"vertical\"\n className={scrollbarVariants({ size })}\n >\n <ScrollAreaPrimitive.Thumb className={thumbVariants()} />\n </ScrollAreaPrimitive.Scrollbar>\n )}\n\n {(orientation === 'horizontal' || orientation === 'both') && (\n <ScrollAreaPrimitive.Scrollbar\n forceMount\n orientation=\"horizontal\"\n className={scrollbarVariants({ size })}\n >\n <ScrollAreaPrimitive.Thumb className={thumbVariants()} />\n </ScrollAreaPrimitive.Scrollbar>\n )}\n\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n },\n);\n\nScrollArea.displayName = 'ScrollArea';\n\n// Re-export Radix parts for advanced composition\nexport const ScrollAreaRoot = ScrollAreaPrimitive.Root;\nexport const ScrollAreaViewport = ScrollAreaPrimitive.Viewport;\nexport const ScrollAreaScrollbar = ScrollAreaPrimitive.Scrollbar;\nexport const ScrollAreaThumb = ScrollAreaPrimitive.Thumb;\nexport const ScrollAreaCorner = ScrollAreaPrimitive.Corner;\n"],"names":["scrollbarVariants","cva","thumbVariants","radixType","type","nativeOverflow","ScrollArea","forwardRef","orientation","size","className","children","scrollHideDelay","props","ref","jsx","rootRef","useRef","dir","useDirection","jsxs","ScrollAreaPrimitive","ScrollAreaRoot","ScrollAreaViewport","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { forwardRef as U, useState as V, useEffect as O, useRef as W, useId as J
3
3
  import { c as P } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as E } from "react-i18next";
5
5
  import * as j from "@radix-ui/react-popover";
6
- import { S as Y } from "./search-input-CtkWITO2.js";
6
+ import { S as Y } from "./search-input-BVMCONyN.js";
7
7
  import { S as Z } from "./search-BonnQsHv.js";
8
8
  import { n as L } from "./normalize-diacritics-BNGbFNlJ.js";
9
9
  import { u as ee } from "./use-debounced-callback-BisrB-Fq.js";
@@ -119,14 +119,14 @@ const ne = U(
119
119
  size: n = "md",
120
120
  density: p = "default",
121
121
  topLevel: y = !1,
122
- placeholder: i,
122
+ placeholder: d,
123
123
  shortcutHint: h = !0,
124
124
  className: v,
125
125
  onOpenCommandPalette: t,
126
126
  value: g,
127
127
  defaultValue: z,
128
128
  onQueryChange: k,
129
- results: d,
129
+ results: i,
130
130
  onSelect: b,
131
131
  debounceMs: C,
132
132
  ...l
@@ -136,7 +136,7 @@ const ne = U(
136
136
  }, []);
137
137
  const S = R ? "⌘K" : "Ctrl+K", u = "Meta+K Control+K", m = y ? { role: "search" } : { role: void 0 };
138
138
  if (o === "launcher") {
139
- const N = i ?? c("search.placeholder", "Search…");
139
+ const N = d ?? c("search.placeholder", "Search…");
140
140
  return /* @__PURE__ */ s("div", { ref: a, ...m, "data-component": "search-bar", className: v, children: /* @__PURE__ */ D(
141
141
  "button",
142
142
  {
@@ -169,7 +169,7 @@ const ne = U(
169
169
  size: n,
170
170
  density: p,
171
171
  landmarkProps: m,
172
- placeholder: i,
172
+ placeholder: d,
173
173
  shortcutHint: h,
174
174
  shortcutLabel: S,
175
175
  ariaKeyshortcuts: u,
@@ -187,19 +187,19 @@ function oe(r) {
187
187
  density: n,
188
188
  landmarkProps: p,
189
189
  placeholder: y,
190
- shortcutHint: i,
190
+ shortcutHint: d,
191
191
  shortcutLabel: h,
192
192
  ariaKeyshortcuts: v,
193
193
  className: t,
194
194
  value: g,
195
195
  defaultValue: z,
196
196
  onQueryChange: k,
197
- results: d,
197
+ results: i,
198
198
  onSelect: b,
199
199
  debounceMs: C = 150
200
200
  } = r, { t: l } = E(), c = g !== void 0, [R, I] = V(z ?? ""), S = c ? g ?? "" : R, [u, m] = V(!1), [x, N] = V(0), H = W(null), M = J(), $ = ee((e) => {
201
201
  k == null || k(e);
202
- }, C), f = X(() => d ? d.flatMap((e) => e.items) : [], [d]);
202
+ }, C), f = X(() => i ? i.flatMap((e) => e.items) : [], [i]);
203
203
  O(() => {
204
204
  x > f.length - 1 && N(0);
205
205
  }, [f.length, x]);
@@ -265,7 +265,7 @@ function oe(r) {
265
265
  "aria-activedescendant": T
266
266
  }
267
267
  ),
268
- i ? /* @__PURE__ */ s(
268
+ d ? /* @__PURE__ */ s(
269
269
  "kbd",
270
270
  {
271
271
  className: [
@@ -298,8 +298,8 @@ function oe(r) {
298
298
  role: "listbox",
299
299
  "aria-label": l("search.resultsLabel", "Search results"),
300
300
  className: "ds:flex ds:flex-col ds:gap-[calc(var(--spacing-xs)/2)]",
301
- children: d && d.length > 0 ? ie(
302
- d,
301
+ children: i && i.length > 0 ? de(
302
+ i,
303
303
  x,
304
304
  M,
305
305
  A,
@@ -322,37 +322,37 @@ function oe(r) {
322
322
  }
323
323
  ) });
324
324
  }
325
- function ie(r, a, o, n, p) {
325
+ function de(r, a, o, n, p) {
326
326
  let y = 0;
327
- return r.map((i, h) => {
328
- const v = i.heading ? `${o}-group-${h}-heading` : void 0;
327
+ return r.map((d, h) => {
328
+ const v = d.heading ? `${o}-group-${h}-heading` : void 0;
329
329
  return /* @__PURE__ */ D(
330
330
  "div",
331
331
  {
332
- role: i.heading ? "group" : "presentation",
332
+ role: d.heading ? "group" : "presentation",
333
333
  "aria-labelledby": v,
334
334
  children: [
335
- i.heading ? /* @__PURE__ */ s(
335
+ d.heading ? /* @__PURE__ */ s(
336
336
  "div",
337
337
  {
338
338
  id: v,
339
339
  "aria-hidden": "true",
340
340
  className: "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)] type-eyebrow ds:text-[color:var(--foreground)]",
341
- children: i.heading
341
+ children: d.heading
342
342
  }
343
343
  ) : null,
344
- i.items.map((t) => {
344
+ d.items.map((t) => {
345
345
  const g = y;
346
346
  y += 1;
347
- const z = g === a, k = `${o}-option-${g}`, d = de(t.href), b = [
348
- "flex items-center gap-[var(--spacing-sm)]",
349
- "ps-[var(--spacing-sm)] pe-[var(--spacing-sm)]",
350
- "pt-[var(--spacing-xs)] pb-[var(--spacing-xs)]",
351
- "rounded-[var(--radius-sm)]",
352
- "cursor-pointer",
353
- "no-underline text-[color:var(--foreground)]",
354
- "min-h-[var(--min-target-size)]",
355
- z ? "bg-[var(--muted)]/40" : ""
347
+ const z = g === a, k = `${o}-option-${g}`, i = ie(t.href), b = [
348
+ "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
349
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
350
+ "ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]",
351
+ "ds:rounded-[var(--radius-sm)]",
352
+ "ds:cursor-pointer",
353
+ "ds:no-underline ds:text-[color:var(--foreground)]",
354
+ "ds:min-h-[var(--min-target-size)]",
355
+ z ? "ds:bg-[var(--muted)]/40" : ""
356
356
  ].join(" "), C = /* @__PURE__ */ D(G, { children: [
357
357
  t.icon ? /* @__PURE__ */ s(
358
358
  "span",
@@ -376,7 +376,7 @@ function ie(r, a, o, n, p) {
376
376
  onMouseEnter: () => p(g),
377
377
  className: b
378
378
  };
379
- return d ? /* @__PURE__ */ s("a", { href: d, ...l, children: C }, t.id) : /* @__PURE__ */ s("div", { ...l, children: C }, t.id);
379
+ return i ? /* @__PURE__ */ s("a", { href: i, ...l, children: C }, t.id) : /* @__PURE__ */ s("div", { ...l, children: C }, t.id);
380
380
  })
381
381
  ]
382
382
  },
@@ -384,7 +384,7 @@ function ie(r, a, o, n, p) {
384
384
  );
385
385
  });
386
386
  }
387
- function de(r) {
387
+ function ie(r) {
388
388
  if (!r) return;
389
389
  const a = r.trim();
390
390
  if (a !== "" && (/^(https?:|mailto:|tel:)/i.test(a) || /^(\/|\.\/|\.\.\/)/.test(a)))
@@ -394,4 +394,4 @@ export {
394
394
  ne as S,
395
395
  ge as f
396
396
  };
397
- //# sourceMappingURL=search-bar-9Zbew4yM.js.map
397
+ //# sourceMappingURL=search-bar-fcGqDFW3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-bar-9Zbew4yM.js","sources":["../../src/components/search-bar/search-bar.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { SearchInput } from '../search-input/search-input';\nimport { useDebouncedCallback, normalizeDiacritics } from '../_shared';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut detection */\n/* ------------------------------------------------------------------ */\n\nfunction isMacLike(): boolean {\n if (typeof navigator === 'undefined') return false;\n // Prefer `userAgentData.platform` where supported; fall back to the\n // deprecated `navigator.platform`. Both are strings; we just look for\n // `mac`.\n const uaData = (navigator as unknown as {\n userAgentData?: { platform?: string };\n }).userAgentData;\n const platformString = uaData?.platform ?? navigator.platform ?? '';\n return /mac/i.test(platformString);\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst launcherVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n // Same visual language as <SearchInput> so the launcher truly looks\n // like an input. --muted-foreground over --background meets AA 4.5:1\n // in every theme; --muted is a mid-tone not suitable as a surface.\n 'ds:bg-[var(--background)] ds:border ds:border-[color:var(--border)]',\n 'ds:text-[color:var(--muted-foreground)]',\n // Opaque hover — mix 20% muted into --background so the launcher stays a\n // solid surface even when placed over a brand-tinted parent (e.g. the\n // Header's `brand` variant).\n 'ds:hover:bg-[color-mix(in_srgb,var(--muted)_20%,var(--background))]',\n 'ds:transition-colors ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n density: {\n default: '',\n compact: 'ds:min-h-0 ds:h-8',\n },\n },\n defaultVariants: {\n size: 'md',\n density: 'default',\n },\n },\n);\n\nconst inlineWrapperVariants = cva(\n [\n 'ds:inline-flex ds:flex-col',\n 'ds:w-full',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n density: {\n default: '',\n compact: '',\n },\n },\n defaultVariants: {\n size: 'md',\n density: 'default',\n },\n },\n);\n\nconst shortcutPillVariants = cva(\n [\n 'ds:hidden ds:md:inline-flex ds:items-center ds:gap-[calc(var(--spacing-xs)/2)]',\n 'ds:ms-auto',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)]',\n 'ds:ps-[calc(var(--spacing-xs)/1.2)] ds:pe-[calc(var(--spacing-xs)/1.2)]',\n 'ds:py-[calc(var(--spacing-xs)/2)]',\n // Use full --foreground (not --muted-foreground) so axe's contrast\n // check clears 4.5:1 even against the 1px --border edge region.\n 'ds:text-[length:var(--font-size-xs)] ds:text-[color:var(--foreground)]',\n 'ds:font-[family-name:var(--font-mono)]',\n ].join(' '),\n);\n\nconst popoverContentVariants = cva(\n [\n 'ds:z-[var(--z-dropdown)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-xs)]',\n // Motion gates — reduced-motion honoured via .theme-accessible's 0ms\n // animation-duration token.\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out',\n 'ds:motion-reduce:animate-none',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchBarResultItem {\n id: string;\n /** Display label. */\n label: string;\n /** Optional icon rendered on inline-start (aria-hidden). */\n icon?: ReactNode;\n /** Optional right-aligned meta text (tag, count, section label). */\n meta?: string;\n /** Optional href — the list renders anchors when present. */\n href?: string;\n}\n\nexport interface SearchBarResultGroup {\n /** Heading displayed above the items (aria-hidden=\"true\" — visual only). */\n heading?: string;\n items: SearchBarResultItem[];\n}\n\ntype SharedProps = {\n size?: 'sm' | 'md' | 'lg';\n density?: 'default' | 'compact';\n /** `true` wraps in <search role=\"search\"> when this is the page's primary search. */\n topLevel?: boolean;\n placeholder?: string;\n /** Platform-aware shortcut pill — default `true` (hidden below `md` breakpoint). */\n shortcutHint?: boolean;\n className?: string;\n};\n\ntype LauncherProps = SharedProps & {\n mode?: 'launcher';\n /** Called on click / Enter / global Cmd/Ctrl+K. */\n onOpenCommandPalette: () => void;\n // Not used in launcher mode.\n value?: never;\n defaultValue?: never;\n onQueryChange?: never;\n results?: never;\n onSelect?: never;\n debounceMs?: never;\n};\n\ntype InlineProps = SharedProps & {\n mode: 'inline';\n value?: string;\n defaultValue?: string;\n onQueryChange?: (query: string) => void;\n /** Groups of results rendered in the popover. */\n results?: SearchBarResultGroup[];\n onSelect?: (item: SearchBarResultItem) => void;\n debounceMs?: number;\n // Not used in inline mode.\n onOpenCommandPalette?: never;\n};\n\nexport type SearchBarProps = (LauncherProps | InlineProps) &\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'role' | 'onChange' | 'children' | 'defaultValue' | 'results'\n > &\n VariantProps<typeof launcherVariants>;\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nexport function filterSearchResults(\n query: string,\n groups: SearchBarResultGroup[],\n): SearchBarResultGroup[] {\n const needle = normalizeDiacritics(query.trim());\n if (needle === '') return groups;\n return groups\n .map((g) => ({\n ...g,\n items: g.items.filter((item) =>\n normalizeDiacritics(item.label).includes(needle),\n ),\n }))\n .filter((g) => g.items.length > 0);\n}\n\n/* ------------------------------------------------------------------ */\n/* SearchBar */\n/* ------------------------------------------------------------------ */\n\nexport const SearchBar = forwardRef<HTMLDivElement, SearchBarProps>(\n (props, ref) => {\n // Strip every API prop from `...rest` so nothing leaks to the DOM as\n // an unknown attribute (React warns in DEV and some become invalid\n // HTML in production).\n const {\n mode = 'launcher',\n size = 'md',\n density = 'default',\n topLevel = false,\n placeholder,\n shortcutHint = true,\n className,\n onOpenCommandPalette,\n value: _value,\n defaultValue: _defaultValue,\n onQueryChange: _onQueryChange,\n results: _results,\n onSelect: _onSelect,\n debounceMs: _debounceMs,\n ...rest\n } = props as SearchBarProps & { className?: string };\n // silence unused-var warnings for the destructured siblings we only\n // needed to peel off the spread target.\n void _value;\n void _defaultValue;\n void _onQueryChange;\n void _results;\n void _onSelect;\n void _debounceMs;\n\n const { t } = useTranslation();\n const [isMac, setIsMac] = useState(false);\n useEffect(() => {\n setIsMac(isMacLike());\n }, []);\n\n const shortcutLabel = isMac ? '\\u2318K' : 'Ctrl+K';\n // Advertise the shortcut on the launcher button. The binding itself\n // lives in `useCommandPalette()` (CommandPalette owns its open state);\n // duplicating the listener here would cause a double-fire.\n const ariaKeyshortcuts = 'Meta+K Control+K';\n\n /* ---- Landmark role --------------------------------------------- */\n const landmarkProps = topLevel\n ? { role: 'search' as const }\n : { role: undefined };\n\n /* ---- LAUNCHER MODE -------------------------------------------- */\n if (mode === 'launcher') {\n const resolvedPlaceholder =\n placeholder ?? t('search.placeholder', 'Search\\u2026');\n return (\n <div ref={ref} {...landmarkProps} data-component=\"search-bar\" className={className}>\n <button\n type=\"button\"\n onClick={onOpenCommandPalette}\n aria-haspopup=\"dialog\"\n aria-label={t('search.open', 'Open search')}\n aria-keyshortcuts={ariaKeyshortcuts}\n className={launcherVariants({ size, density })}\n {...(rest as HTMLAttributes<HTMLButtonElement>)}\n >\n <Search\n aria-hidden\n className=\"ds:size-4 ds:shrink-0\"\n focusable=\"false\"\n />\n <span aria-hidden=\"true\" className=\"ds:truncate ds:text-start\">\n {resolvedPlaceholder}\n </span>\n {shortcutHint ? (\n <kbd className={shortcutPillVariants()}>{shortcutLabel}</kbd>\n ) : null}\n </button>\n </div>\n );\n }\n\n /* ---- INLINE MODE ---------------------------------------------- */\n const inlineProps = props as InlineProps;\n return (\n <InlineSearchBar\n forwardedRef={ref}\n size={size}\n density={density}\n landmarkProps={landmarkProps}\n placeholder={placeholder}\n shortcutHint={shortcutHint}\n shortcutLabel={shortcutLabel}\n ariaKeyshortcuts={ariaKeyshortcuts}\n className={className}\n {...inlineProps}\n />\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\n/* ------------------------------------------------------------------ */\n/* InlineSearchBar — internal */\n/* ------------------------------------------------------------------ */\n\ninterface InlineInternalProps extends InlineProps {\n forwardedRef: React.ForwardedRef<HTMLDivElement>;\n size: 'sm' | 'md' | 'lg';\n density: 'default' | 'compact';\n landmarkProps: { role?: 'search' };\n shortcutHint: boolean;\n shortcutLabel: string;\n ariaKeyshortcuts: string;\n className?: string;\n}\n\nfunction InlineSearchBar(props: InlineInternalProps): ReactNode {\n const {\n forwardedRef,\n size,\n density,\n landmarkProps,\n placeholder,\n shortcutHint,\n shortcutLabel,\n ariaKeyshortcuts,\n className,\n value,\n defaultValue,\n onQueryChange,\n results,\n onSelect,\n debounceMs = 150,\n } = props;\n\n const { t } = useTranslation();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const query = isControlled ? (value ?? '') : internalValue;\n\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listboxId = useId();\n\n const debouncedQueryChange = useDebouncedCallback((next: string) => {\n onQueryChange?.(next);\n }, debounceMs);\n\n const flatResults = useMemo<SearchBarResultItem[]>(() => {\n if (!results) return [];\n return results.flatMap((g) => g.items);\n }, [results]);\n\n // Reset active index whenever the result count changes.\n useEffect(() => {\n if (activeIndex > flatResults.length - 1) setActiveIndex(0);\n }, [flatResults.length, activeIndex]);\n\n const handleInput = useCallback(\n (raw: string) => {\n if (!isControlled) setInternalValue(raw);\n debouncedQueryChange(raw);\n setOpen(raw.trim().length > 0);\n },\n [debouncedQueryChange, isControlled],\n );\n\n const commit = useCallback(\n (item: SearchBarResultItem) => {\n onSelect?.(item);\n setOpen(false);\n if (!isControlled) setInternalValue('');\n },\n [onSelect, isControlled],\n );\n\n const handleKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.nativeEvent.isComposing || event.keyCode === 229) return;\n if (!open && event.key === 'ArrowDown' && flatResults.length > 0) {\n event.preventDefault();\n setOpen(true);\n return;\n }\n if (!open) return;\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setActiveIndex((i) => (i + 1) % Math.max(flatResults.length, 1));\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n setActiveIndex(\n (i) =>\n (i - 1 + Math.max(flatResults.length, 1)) %\n Math.max(flatResults.length, 1),\n );\n } else if (event.key === 'Enter') {\n const item = flatResults[activeIndex];\n if (item) {\n event.preventDefault();\n commit(item);\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n setOpen(false);\n }\n },\n [open, flatResults, activeIndex, commit],\n );\n\n const resolvedPlaceholder =\n placeholder ?? t('search.placeholder', 'Search\\u2026');\n\n const hasResults = flatResults.length > 0;\n // aria-activedescendant may only reference an element that actually exists\n // in the DOM — so only set it when the popover is open AND there are\n // results to land on. Referencing a non-existent option is an a11y\n // violation (aria-valid-attr-value).\n const activeDescendantId =\n open && hasResults ? `${listboxId}-option-${activeIndex}` : undefined;\n\n return (\n <RadixPopover.Root open={open && hasResults} onOpenChange={setOpen}>\n <div\n ref={forwardedRef}\n {...landmarkProps}\n data-component=\"search-bar\"\n className={[inlineWrapperVariants({ size, density }), className]\n .filter(Boolean)\n .join(' ')}\n >\n <RadixPopover.Anchor asChild>\n <div\n className=\"ds:relative ds:flex ds:items-center\"\n onKeyDown={handleKeyDown}\n >\n <SearchInput\n ref={inputRef}\n size={size}\n value={query}\n onInput={handleInput}\n placeholder={resolvedPlaceholder}\n aria-label={t('search.label', 'Search')}\n aria-keyshortcuts={ariaKeyshortcuts}\n role=\"combobox\"\n aria-expanded={open && hasResults}\n aria-controls={listboxId}\n aria-activedescendant={activeDescendantId}\n />\n {shortcutHint ? (\n <kbd\n className={[\n shortcutPillVariants(),\n 'ds:absolute ds:end-[var(--spacing-sm)] ds:top-1/2 ds:-translate-y-1/2',\n 'ds:pointer-events-none',\n ].join(' ')}\n >\n {shortcutLabel}\n </kbd>\n ) : null}\n </div>\n </RadixPopover.Anchor>\n <RadixPopover.Portal>\n <RadixPopover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n aria-label={t('search.resultsLabel', 'Search results')}\n onOpenAutoFocus={(e) => e.preventDefault()}\n // Width matches the anchor via Radix's CSS variable. Applied\n // as a Tailwind arbitrary-value class so no inline style is\n // needed (23-constraints §4).\n className={[\n popoverContentVariants(),\n 'ds:w-[var(--radix-popover-trigger-width)]',\n ].join(' ')}\n >\n {/* listbox uses <div> rather than <ul> so the option role\n children don't trip the `<ul> must only contain <li>` axe\n rule. Options are direct descendants of the listbox root\n per the WAI-ARIA listbox pattern. */}\n <div\n id={listboxId}\n role=\"listbox\"\n aria-label={t('search.resultsLabel', 'Search results')}\n className=\"ds:flex ds:flex-col ds:gap-[calc(var(--spacing-xs)/2)]\"\n >\n {results && results.length > 0 ? (\n renderGroups(\n results,\n activeIndex,\n listboxId,\n commit,\n setActiveIndex,\n )\n ) : (\n <div\n role=\"presentation\"\n className=\"ds:p-[var(--spacing-sm)] type-body-sm ds:text-[color:var(--foreground)]\"\n >\n {t('search.noResults', 'No results for \\u201C{{query}}\\u201D', {\n query,\n })}\n </div>\n )}\n </div>\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </div>\n </RadixPopover.Root>\n );\n}\n\nfunction renderGroups(\n groups: SearchBarResultGroup[],\n activeIndex: number,\n listboxId: string,\n onCommit: (item: SearchBarResultItem) => void,\n setActive: (index: number) => void,\n): ReactNode {\n let flatIndex = 0;\n // Flatten groups + headings into a single-level sequence of divs at the\n // listbox root. `role=\"group\"` wrappers keep the visual grouping while\n // keeping options as direct descendants of the listbox.\n return groups.map((group, gi) => {\n const headingId = group.heading ? `${listboxId}-group-${gi}-heading` : undefined;\n return (\n <div\n key={`g-${gi}`}\n role={group.heading ? 'group' : 'presentation'}\n aria-labelledby={headingId}\n >\n {group.heading ? (\n <div\n id={headingId}\n aria-hidden=\"true\"\n className=\"ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)] type-eyebrow ds:text-[color:var(--foreground)]\"\n >\n {group.heading}\n </div>\n ) : null}\n {group.items.map((item) => {\n const myIndex = flatIndex;\n flatIndex += 1;\n const isActive = myIndex === activeIndex;\n const optionId = `${listboxId}-option-${myIndex}`;\n const safeHref = safeNavigationHref(item.href);\n const commonClass = [\n 'flex items-center gap-[var(--spacing-sm)]',\n 'ps-[var(--spacing-sm)] pe-[var(--spacing-sm)]',\n 'pt-[var(--spacing-xs)] pb-[var(--spacing-xs)]',\n 'rounded-[var(--radius-sm)]',\n 'cursor-pointer',\n 'no-underline text-[color:var(--foreground)]',\n 'min-h-[var(--min-target-size)]',\n isActive ? 'bg-[var(--muted)]/40' : '',\n ].join(' ');\n const body = (\n <>\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:text-[length:var(--font-size-sm)]\">\n {item.label}\n </span>\n {item.meta ? (\n <span className=\"ds:ms-auto type-meta ds:text-[color:var(--foreground)]\">\n {item.meta}\n </span>\n ) : null}\n </>\n );\n const shared = {\n id: optionId,\n role: 'option' as const,\n 'aria-selected': isActive,\n // onMouseDown rather than onClick so we trigger before the\n // input loses focus to the pointer-down on the popover.\n onMouseDown: (e: React.MouseEvent) => {\n e.preventDefault();\n onCommit(item);\n },\n onMouseEnter: () => setActive(myIndex),\n className: commonClass,\n };\n if (safeHref) {\n return (\n <a key={item.id} href={safeHref} {...shared}>\n {body}\n </a>\n );\n }\n return (\n <div key={item.id} {...shared}>\n {body}\n </div>\n );\n })}\n </div>\n );\n });\n}\n\n/**\n * Allow-list for result-item `href` strings. Same allow-list as the\n * chat-message token renderer: http(s) + mailto + tel + same-origin\n * relative paths. Anything else (including `javascript:` and `data:`)\n * returns `undefined`, causing the renderer to fall back to a <div>.\n */\nfunction safeNavigationHref(href: string | undefined): string | undefined {\n if (!href) return undefined;\n const trimmed = href.trim();\n if (trimmed === '') return undefined;\n if (/^(https?:|mailto:|tel:)/i.test(trimmed)) return trimmed;\n // Same-origin relative paths are safe because the browser resolves\n // against `window.location`. Leading `/` or `./` or `../` qualify.\n if (/^(\\/|\\.\\/|\\.\\.\\/)/.test(trimmed)) return trimmed;\n return undefined;\n}\n"],"names":["isMacLike","uaData","platformString","launcherVariants","cva","inlineWrapperVariants","shortcutPillVariants","popoverContentVariants","filterSearchResults","query","groups","needle","normalizeDiacritics","g","item","SearchBar","forwardRef","props","ref","mode","size","density","topLevel","placeholder","shortcutHint","className","onOpenCommandPalette","_value","_defaultValue","_onQueryChange","_results","_onSelect","_debounceMs","rest","t","useTranslation","isMac","setIsMac","useState","useEffect","shortcutLabel","ariaKeyshortcuts","landmarkProps","resolvedPlaceholder","jsxs","jsx","Search","InlineSearchBar","forwardedRef","value","defaultValue","onQueryChange","results","onSelect","debounceMs","isControlled","internalValue","setInternalValue","open","setOpen","activeIndex","setActiveIndex","inputRef","useRef","listboxId","useId","debouncedQueryChange","useDebouncedCallback","next","flatResults","useMemo","handleInput","useCallback","raw","commit","handleKeyDown","event","i","hasResults","activeDescendantId","RadixPopover","SearchInput","renderGroups","onCommit","setActive","flatIndex","group","gi","headingId","myIndex","isActive","optionId","safeHref","safeNavigationHref","commonClass","body","Fragment","shared","e","href","trimmed"],"mappings":"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"}
1
+ {"version":3,"file":"search-bar-fcGqDFW3.js","sources":["../../src/components/search-bar/search-bar.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { SearchInput } from '../search-input/search-input';\nimport { useDebouncedCallback, normalizeDiacritics } from '../_shared';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut detection */\n/* ------------------------------------------------------------------ */\n\nfunction isMacLike(): boolean {\n if (typeof navigator === 'undefined') return false;\n // Prefer `userAgentData.platform` where supported; fall back to the\n // deprecated `navigator.platform`. Both are strings; we just look for\n // `mac`.\n const uaData = (navigator as unknown as {\n userAgentData?: { platform?: string };\n }).userAgentData;\n const platformString = uaData?.platform ?? navigator.platform ?? '';\n return /mac/i.test(platformString);\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst launcherVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n // Same visual language as <SearchInput> so the launcher truly looks\n // like an input. --muted-foreground over --background meets AA 4.5:1\n // in every theme; --muted is a mid-tone not suitable as a surface.\n 'ds:bg-[var(--background)] ds:border ds:border-[color:var(--border)]',\n 'ds:text-[color:var(--muted-foreground)]',\n // Opaque hover — mix 20% muted into --background so the launcher stays a\n // solid surface even when placed over a brand-tinted parent (e.g. the\n // Header's `brand` variant).\n 'ds:hover:bg-[color-mix(in_srgb,var(--muted)_20%,var(--background))]',\n 'ds:transition-colors ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n density: {\n default: '',\n compact: 'ds:min-h-0 ds:h-8',\n },\n },\n defaultVariants: {\n size: 'md',\n density: 'default',\n },\n },\n);\n\nconst inlineWrapperVariants = cva(\n [\n 'ds:inline-flex ds:flex-col',\n 'ds:w-full',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n density: {\n default: '',\n compact: '',\n },\n },\n defaultVariants: {\n size: 'md',\n density: 'default',\n },\n },\n);\n\nconst shortcutPillVariants = cva(\n [\n 'ds:hidden ds:md:inline-flex ds:items-center ds:gap-[calc(var(--spacing-xs)/2)]',\n 'ds:ms-auto',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)]',\n 'ds:ps-[calc(var(--spacing-xs)/1.2)] ds:pe-[calc(var(--spacing-xs)/1.2)]',\n 'ds:py-[calc(var(--spacing-xs)/2)]',\n // Use full --foreground (not --muted-foreground) so axe's contrast\n // check clears 4.5:1 even against the 1px --border edge region.\n 'ds:text-[length:var(--font-size-xs)] ds:text-[color:var(--foreground)]',\n 'ds:font-[family-name:var(--font-mono)]',\n ].join(' '),\n);\n\nconst popoverContentVariants = cva(\n [\n 'ds:z-[var(--z-dropdown)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-xs)]',\n // Motion gates — reduced-motion honoured via .theme-accessible's 0ms\n // animation-duration token.\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out',\n 'ds:motion-reduce:animate-none',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchBarResultItem {\n id: string;\n /** Display label. */\n label: string;\n /** Optional icon rendered on inline-start (aria-hidden). */\n icon?: ReactNode;\n /** Optional right-aligned meta text (tag, count, section label). */\n meta?: string;\n /** Optional href — the list renders anchors when present. */\n href?: string;\n}\n\nexport interface SearchBarResultGroup {\n /** Heading displayed above the items (aria-hidden=\"true\" — visual only). */\n heading?: string;\n items: SearchBarResultItem[];\n}\n\ntype SharedProps = {\n size?: 'sm' | 'md' | 'lg';\n density?: 'default' | 'compact';\n /** `true` wraps in <search role=\"search\"> when this is the page's primary search. */\n topLevel?: boolean;\n placeholder?: string;\n /** Platform-aware shortcut pill — default `true` (hidden below `md` breakpoint). */\n shortcutHint?: boolean;\n className?: string;\n};\n\ntype LauncherProps = SharedProps & {\n mode?: 'launcher';\n /** Called on click / Enter / global Cmd/Ctrl+K. */\n onOpenCommandPalette: () => void;\n // Not used in launcher mode.\n value?: never;\n defaultValue?: never;\n onQueryChange?: never;\n results?: never;\n onSelect?: never;\n debounceMs?: never;\n};\n\ntype InlineProps = SharedProps & {\n mode: 'inline';\n value?: string;\n defaultValue?: string;\n onQueryChange?: (query: string) => void;\n /** Groups of results rendered in the popover. */\n results?: SearchBarResultGroup[];\n onSelect?: (item: SearchBarResultItem) => void;\n debounceMs?: number;\n // Not used in inline mode.\n onOpenCommandPalette?: never;\n};\n\nexport type SearchBarProps = (LauncherProps | InlineProps) &\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'role' | 'onChange' | 'children' | 'defaultValue' | 'results'\n > &\n VariantProps<typeof launcherVariants>;\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nexport function filterSearchResults(\n query: string,\n groups: SearchBarResultGroup[],\n): SearchBarResultGroup[] {\n const needle = normalizeDiacritics(query.trim());\n if (needle === '') return groups;\n return groups\n .map((g) => ({\n ...g,\n items: g.items.filter((item) =>\n normalizeDiacritics(item.label).includes(needle),\n ),\n }))\n .filter((g) => g.items.length > 0);\n}\n\n/* ------------------------------------------------------------------ */\n/* SearchBar */\n/* ------------------------------------------------------------------ */\n\nexport const SearchBar = forwardRef<HTMLDivElement, SearchBarProps>(\n (props, ref) => {\n // Strip every API prop from `...rest` so nothing leaks to the DOM as\n // an unknown attribute (React warns in DEV and some become invalid\n // HTML in production).\n const {\n mode = 'launcher',\n size = 'md',\n density = 'default',\n topLevel = false,\n placeholder,\n shortcutHint = true,\n className,\n onOpenCommandPalette,\n value: _value,\n defaultValue: _defaultValue,\n onQueryChange: _onQueryChange,\n results: _results,\n onSelect: _onSelect,\n debounceMs: _debounceMs,\n ...rest\n } = props as SearchBarProps & { className?: string };\n // silence unused-var warnings for the destructured siblings we only\n // needed to peel off the spread target.\n void _value;\n void _defaultValue;\n void _onQueryChange;\n void _results;\n void _onSelect;\n void _debounceMs;\n\n const { t } = useTranslation();\n const [isMac, setIsMac] = useState(false);\n useEffect(() => {\n setIsMac(isMacLike());\n }, []);\n\n const shortcutLabel = isMac ? '\\u2318K' : 'Ctrl+K';\n // Advertise the shortcut on the launcher button. The binding itself\n // lives in `useCommandPalette()` (CommandPalette owns its open state);\n // duplicating the listener here would cause a double-fire.\n const ariaKeyshortcuts = 'Meta+K Control+K';\n\n /* ---- Landmark role --------------------------------------------- */\n const landmarkProps = topLevel\n ? { role: 'search' as const }\n : { role: undefined };\n\n /* ---- LAUNCHER MODE -------------------------------------------- */\n if (mode === 'launcher') {\n const resolvedPlaceholder =\n placeholder ?? t('search.placeholder', 'Search\\u2026');\n return (\n <div ref={ref} {...landmarkProps} data-component=\"search-bar\" className={className}>\n <button\n type=\"button\"\n onClick={onOpenCommandPalette}\n aria-haspopup=\"dialog\"\n aria-label={t('search.open', 'Open search')}\n aria-keyshortcuts={ariaKeyshortcuts}\n className={launcherVariants({ size, density })}\n {...(rest as HTMLAttributes<HTMLButtonElement>)}\n >\n <Search\n aria-hidden\n className=\"ds:size-4 ds:shrink-0\"\n focusable=\"false\"\n />\n <span aria-hidden=\"true\" className=\"ds:truncate ds:text-start\">\n {resolvedPlaceholder}\n </span>\n {shortcutHint ? (\n <kbd className={shortcutPillVariants()}>{shortcutLabel}</kbd>\n ) : null}\n </button>\n </div>\n );\n }\n\n /* ---- INLINE MODE ---------------------------------------------- */\n const inlineProps = props as InlineProps;\n return (\n <InlineSearchBar\n forwardedRef={ref}\n size={size}\n density={density}\n landmarkProps={landmarkProps}\n placeholder={placeholder}\n shortcutHint={shortcutHint}\n shortcutLabel={shortcutLabel}\n ariaKeyshortcuts={ariaKeyshortcuts}\n className={className}\n {...inlineProps}\n />\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\n/* ------------------------------------------------------------------ */\n/* InlineSearchBar — internal */\n/* ------------------------------------------------------------------ */\n\ninterface InlineInternalProps extends InlineProps {\n forwardedRef: React.ForwardedRef<HTMLDivElement>;\n size: 'sm' | 'md' | 'lg';\n density: 'default' | 'compact';\n landmarkProps: { role?: 'search' };\n shortcutHint: boolean;\n shortcutLabel: string;\n ariaKeyshortcuts: string;\n className?: string;\n}\n\nfunction InlineSearchBar(props: InlineInternalProps): ReactNode {\n const {\n forwardedRef,\n size,\n density,\n landmarkProps,\n placeholder,\n shortcutHint,\n shortcutLabel,\n ariaKeyshortcuts,\n className,\n value,\n defaultValue,\n onQueryChange,\n results,\n onSelect,\n debounceMs = 150,\n } = props;\n\n const { t } = useTranslation();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const query = isControlled ? (value ?? '') : internalValue;\n\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listboxId = useId();\n\n const debouncedQueryChange = useDebouncedCallback((next: string) => {\n onQueryChange?.(next);\n }, debounceMs);\n\n const flatResults = useMemo<SearchBarResultItem[]>(() => {\n if (!results) return [];\n return results.flatMap((g) => g.items);\n }, [results]);\n\n // Reset active index whenever the result count changes.\n useEffect(() => {\n if (activeIndex > flatResults.length - 1) setActiveIndex(0);\n }, [flatResults.length, activeIndex]);\n\n const handleInput = useCallback(\n (raw: string) => {\n if (!isControlled) setInternalValue(raw);\n debouncedQueryChange(raw);\n setOpen(raw.trim().length > 0);\n },\n [debouncedQueryChange, isControlled],\n );\n\n const commit = useCallback(\n (item: SearchBarResultItem) => {\n onSelect?.(item);\n setOpen(false);\n if (!isControlled) setInternalValue('');\n },\n [onSelect, isControlled],\n );\n\n const handleKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.nativeEvent.isComposing || event.keyCode === 229) return;\n if (!open && event.key === 'ArrowDown' && flatResults.length > 0) {\n event.preventDefault();\n setOpen(true);\n return;\n }\n if (!open) return;\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setActiveIndex((i) => (i + 1) % Math.max(flatResults.length, 1));\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n setActiveIndex(\n (i) =>\n (i - 1 + Math.max(flatResults.length, 1)) %\n Math.max(flatResults.length, 1),\n );\n } else if (event.key === 'Enter') {\n const item = flatResults[activeIndex];\n if (item) {\n event.preventDefault();\n commit(item);\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n setOpen(false);\n }\n },\n [open, flatResults, activeIndex, commit],\n );\n\n const resolvedPlaceholder =\n placeholder ?? t('search.placeholder', 'Search\\u2026');\n\n const hasResults = flatResults.length > 0;\n // aria-activedescendant may only reference an element that actually exists\n // in the DOM — so only set it when the popover is open AND there are\n // results to land on. Referencing a non-existent option is an a11y\n // violation (aria-valid-attr-value).\n const activeDescendantId =\n open && hasResults ? `${listboxId}-option-${activeIndex}` : undefined;\n\n return (\n <RadixPopover.Root open={open && hasResults} onOpenChange={setOpen}>\n <div\n ref={forwardedRef}\n {...landmarkProps}\n data-component=\"search-bar\"\n className={[inlineWrapperVariants({ size, density }), className]\n .filter(Boolean)\n .join(' ')}\n >\n <RadixPopover.Anchor asChild>\n <div\n className=\"ds:relative ds:flex ds:items-center\"\n onKeyDown={handleKeyDown}\n >\n <SearchInput\n ref={inputRef}\n size={size}\n value={query}\n onInput={handleInput}\n placeholder={resolvedPlaceholder}\n aria-label={t('search.label', 'Search')}\n aria-keyshortcuts={ariaKeyshortcuts}\n role=\"combobox\"\n aria-expanded={open && hasResults}\n aria-controls={listboxId}\n aria-activedescendant={activeDescendantId}\n />\n {shortcutHint ? (\n <kbd\n className={[\n shortcutPillVariants(),\n 'ds:absolute ds:end-[var(--spacing-sm)] ds:top-1/2 ds:-translate-y-1/2',\n 'ds:pointer-events-none',\n ].join(' ')}\n >\n {shortcutLabel}\n </kbd>\n ) : null}\n </div>\n </RadixPopover.Anchor>\n <RadixPopover.Portal>\n <RadixPopover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n aria-label={t('search.resultsLabel', 'Search results')}\n onOpenAutoFocus={(e) => e.preventDefault()}\n // Width matches the anchor via Radix's CSS variable. Applied\n // as a Tailwind arbitrary-value class so no inline style is\n // needed (23-constraints §4).\n className={[\n popoverContentVariants(),\n 'ds:w-[var(--radix-popover-trigger-width)]',\n ].join(' ')}\n >\n {/* listbox uses <div> rather than <ul> so the option role\n children don't trip the `<ul> must only contain <li>` axe\n rule. Options are direct descendants of the listbox root\n per the WAI-ARIA listbox pattern. */}\n <div\n id={listboxId}\n role=\"listbox\"\n aria-label={t('search.resultsLabel', 'Search results')}\n className=\"ds:flex ds:flex-col ds:gap-[calc(var(--spacing-xs)/2)]\"\n >\n {results && results.length > 0 ? (\n renderGroups(\n results,\n activeIndex,\n listboxId,\n commit,\n setActiveIndex,\n )\n ) : (\n <div\n role=\"presentation\"\n className=\"ds:p-[var(--spacing-sm)] type-body-sm ds:text-[color:var(--foreground)]\"\n >\n {t('search.noResults', 'No results for \\u201C{{query}}\\u201D', {\n query,\n })}\n </div>\n )}\n </div>\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </div>\n </RadixPopover.Root>\n );\n}\n\nfunction renderGroups(\n groups: SearchBarResultGroup[],\n activeIndex: number,\n listboxId: string,\n onCommit: (item: SearchBarResultItem) => void,\n setActive: (index: number) => void,\n): ReactNode {\n let flatIndex = 0;\n // Flatten groups + headings into a single-level sequence of divs at the\n // listbox root. `role=\"group\"` wrappers keep the visual grouping while\n // keeping options as direct descendants of the listbox.\n return groups.map((group, gi) => {\n const headingId = group.heading ? `${listboxId}-group-${gi}-heading` : undefined;\n return (\n <div\n key={`g-${gi}`}\n role={group.heading ? 'group' : 'presentation'}\n aria-labelledby={headingId}\n >\n {group.heading ? (\n <div\n id={headingId}\n aria-hidden=\"true\"\n className=\"ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)] type-eyebrow ds:text-[color:var(--foreground)]\"\n >\n {group.heading}\n </div>\n ) : null}\n {group.items.map((item) => {\n const myIndex = flatIndex;\n flatIndex += 1;\n const isActive = myIndex === activeIndex;\n const optionId = `${listboxId}-option-${myIndex}`;\n const safeHref = safeNavigationHref(item.href);\n const commonClass = [\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:cursor-pointer',\n 'ds:no-underline ds:text-[color:var(--foreground)]',\n 'ds:min-h-[var(--min-target-size)]',\n isActive ? 'ds:bg-[var(--muted)]/40' : '',\n ].join(' ');\n const body = (\n <>\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:text-[length:var(--font-size-sm)]\">\n {item.label}\n </span>\n {item.meta ? (\n <span className=\"ds:ms-auto type-meta ds:text-[color:var(--foreground)]\">\n {item.meta}\n </span>\n ) : null}\n </>\n );\n const shared = {\n id: optionId,\n role: 'option' as const,\n 'aria-selected': isActive,\n // onMouseDown rather than onClick so we trigger before the\n // input loses focus to the pointer-down on the popover.\n onMouseDown: (e: React.MouseEvent) => {\n e.preventDefault();\n onCommit(item);\n },\n onMouseEnter: () => setActive(myIndex),\n className: commonClass,\n };\n if (safeHref) {\n return (\n <a key={item.id} href={safeHref} {...shared}>\n {body}\n </a>\n );\n }\n return (\n <div key={item.id} {...shared}>\n {body}\n </div>\n );\n })}\n </div>\n );\n });\n}\n\n/**\n * Allow-list for result-item `href` strings. Same allow-list as the\n * chat-message token renderer: http(s) + mailto + tel + same-origin\n * relative paths. Anything else (including `javascript:` and `data:`)\n * returns `undefined`, causing the renderer to fall back to a <div>.\n */\nfunction safeNavigationHref(href: string | undefined): string | undefined {\n if (!href) return undefined;\n const trimmed = href.trim();\n if (trimmed === '') return undefined;\n if (/^(https?:|mailto:|tel:)/i.test(trimmed)) return trimmed;\n // Same-origin relative paths are safe because the browser resolves\n // against `window.location`. Leading `/` or `./` or `../` qualify.\n if (/^(\\/|\\.\\/|\\.\\.\\/)/.test(trimmed)) return trimmed;\n return undefined;\n}\n"],"names":["isMacLike","uaData","platformString","launcherVariants","cva","inlineWrapperVariants","shortcutPillVariants","popoverContentVariants","filterSearchResults","query","groups","needle","normalizeDiacritics","g","item","SearchBar","forwardRef","props","ref","mode","size","density","topLevel","placeholder","shortcutHint","className","onOpenCommandPalette","_value","_defaultValue","_onQueryChange","_results","_onSelect","_debounceMs","rest","t","useTranslation","isMac","setIsMac","useState","useEffect","shortcutLabel","ariaKeyshortcuts","landmarkProps","resolvedPlaceholder","jsxs","jsx","Search","InlineSearchBar","forwardedRef","value","defaultValue","onQueryChange","results","onSelect","debounceMs","isControlled","internalValue","setInternalValue","open","setOpen","activeIndex","setActiveIndex","inputRef","useRef","listboxId","useId","debouncedQueryChange","useDebouncedCallback","next","flatResults","useMemo","handleInput","useCallback","raw","commit","handleKeyDown","event","i","hasResults","activeDescendantId","RadixPopover","SearchInput","renderGroups","onCommit","setActive","flatIndex","group","gi","headingId","myIndex","isActive","optionId","safeHref","safeNavigationHref","commonClass","body","Fragment","shared","e","href","trimmed"],"mappings":";;;;;;;;;AAuBA,SAASA,KAAqB;AAC5B,MAAI,OAAO,YAAc,IAAa,QAAO;AAI7C,QAAMC,IAAU,UAEb,eACGC,KAAiBD,KAAA,gBAAAA,EAAQ,aAAY,UAAU,YAAY;AACjE,SAAO,OAAO,KAAKC,CAAc;AACnC;AAMA,MAAMC,KAAmBC;AAAA,EACvB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GAEMC,KAAwBD;AAAA,EAC5B;AAAA,IACE;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GAEME,IAAuBF;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AACZ,GAEMG,KAAyBH;AAAA,EAC7B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AACZ;AAwEO,SAASI,GACdC,GACAC,GACwB;AACxB,QAAMC,IAASC,EAAoBH,EAAM,KAAA,CAAM;AAC/C,SAAIE,MAAW,KAAWD,IACnBA,EACJ,IAAI,CAACG,OAAO;AAAA,IACX,GAAGA;AAAA,IACH,OAAOA,EAAE,MAAM;AAAA,MAAO,CAACC,MACrBF,EAAoBE,EAAK,KAAK,EAAE,SAASH,CAAM;AAAA,IAAA;AAAA,EACjD,EACA,EACD,OAAO,CAACE,MAAMA,EAAE,MAAM,SAAS,CAAC;AACrC;AAMO,MAAME,KAAYC;AAAA,EACvB,CAACC,GAAOC,MAAQ;AAId,UAAM;AAAA,MACJ,MAAAC,IAAO;AAAA,MACP,MAAAC,IAAO;AAAA,MACP,SAAAC,IAAU;AAAA,MACV,UAAAC,IAAW;AAAA,MACX,aAAAC;AAAA,MACA,cAAAC,IAAe;AAAA,MACf,WAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,OAAOC;AAAA,MACP,cAAcC;AAAA,MACd,eAAeC;AAAA,MACf,SAASC;AAAA,MACT,UAAUC;AAAA,MACV,YAAYC;AAAA,MACZ,GAAGC;AAAA,IAAA,IACDhB,GAUE,EAAE,GAAAiB,EAAA,IAAMC,EAAA,GACR,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAK;AACxC,IAAAC,EAAU,MAAM;AACd,MAAAF,EAASrC,IAAW;AAAA,IACtB,GAAG,CAAA,CAAE;AAEL,UAAMwC,IAAgBJ,IAAQ,OAAY,UAIpCK,IAAmB,oBAGnBC,IAAgBpB,IAClB,EAAE,MAAM,aACR,EAAE,MAAM,OAAA;AAGZ,QAAIH,MAAS,YAAY;AACvB,YAAMwB,IACJpB,KAAeW,EAAE,sBAAsB,SAAc;AACvD,+BACG,OAAA,EAAI,KAAAhB,GAAW,GAAGwB,GAAe,kBAAe,cAAa,WAAAjB,GAC5D,UAAA,gBAAAmB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAASlB;AAAA,UACT,iBAAc;AAAA,UACd,cAAYQ,EAAE,eAAe,aAAa;AAAA,UAC1C,qBAAmBO;AAAA,UACnB,WAAWtC,GAAiB,EAAE,MAAAiB,GAAM,SAAAC,GAAS;AAAA,UAC5C,GAAIY;AAAA,UAEL,UAAA;AAAA,YAAA,gBAAAY;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,eAAW;AAAA,gBACX,WAAU;AAAA,gBACV,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,8BAEX,QAAA,EAAK,eAAY,QAAO,WAAU,6BAChC,UAAAH,GACH;AAAA,YACCnB,IACC,gBAAAqB,EAAC,OAAA,EAAI,WAAWvC,KAAyB,aAAc,IACrD;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,GAER;AAAA,IAEJ;AAIA,WACE,gBAAAuC;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,cAAc7B;AAAA,QACd,MAAAE;AAAA,QACA,SAAAC;AAAA,QACA,eAAAqB;AAAA,QACA,aAAAnB;AAAA,QACA,cAAAC;AAAA,QACA,eAAAgB;AAAA,QACA,kBAAAC;AAAA,QACA,WAAAhB;AAAA,QACC,GAZeR;AAAA,MAYZ;AAAA,IAAA;AAAA,EAGV;AACF;AAEAF,GAAU,cAAc;AAiBxB,SAASgC,GAAgB9B,GAAuC;AAC9D,QAAM;AAAA,IACJ,cAAA+B;AAAA,IACA,MAAA5B;AAAA,IACA,SAAAC;AAAA,IACA,eAAAqB;AAAA,IACA,aAAAnB;AAAA,IACA,cAAAC;AAAA,IACA,eAAAgB;AAAA,IACA,kBAAAC;AAAA,IACA,WAAAhB;AAAA,IACA,OAAAwB;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,EAAA,IACXrC,GAEE,EAAE,GAAAiB,EAAA,IAAMC,EAAA,GACRoB,IAAeN,MAAU,QACzB,CAACO,GAAeC,CAAgB,IAAInB,EAASY,KAAgB,EAAE,GAC/DzC,IAAQ8C,IAAgBN,KAAS,KAAMO,GAEvC,CAACE,GAAMC,CAAO,IAAIrB,EAAS,EAAK,GAChC,CAACsB,GAAaC,CAAc,IAAIvB,EAAS,CAAC,GAC1CwB,IAAWC,EAAgC,IAAI,GAC/CC,IAAYC,EAAA,GAEZC,IAAuBC,GAAqB,CAACC,MAAiB;AAClE,IAAAjB,KAAA,QAAAA,EAAgBiB;AAAA,EAClB,GAAGd,CAAU,GAEPe,IAAcC,EAA+B,MAC5ClB,IACEA,EAAQ,QAAQ,CAACvC,MAAMA,EAAE,KAAK,IADhB,CAAA,GAEpB,CAACuC,CAAO,CAAC;AAGZ,EAAAb,EAAU,MAAM;AACd,IAAIqB,IAAcS,EAAY,SAAS,OAAkB,CAAC;AAAA,EAC5D,GAAG,CAACA,EAAY,QAAQT,CAAW,CAAC;AAEpC,QAAMW,IAAcC;AAAA,IAClB,CAACC,MAAgB;AACf,MAAKlB,KAAcE,EAAiBgB,CAAG,GACvCP,EAAqBO,CAAG,GACxBd,EAAQc,EAAI,OAAO,SAAS,CAAC;AAAA,IAC/B;AAAA,IACA,CAACP,GAAsBX,CAAY;AAAA,EAAA,GAG/BmB,IAASF;AAAA,IACb,CAAC1D,MAA8B;AAC7B,MAAAuC,KAAA,QAAAA,EAAWvC,IACX6C,EAAQ,EAAK,GACRJ,KAAcE,EAAiB,EAAE;AAAA,IACxC;AAAA,IACA,CAACJ,GAAUE,CAAY;AAAA,EAAA,GAGnBoB,IAAgBH;AAAA,IACpB,CAACI,MAA8C;AAC7C,UAAI,EAAAA,EAAM,YAAY,eAAeA,EAAM,YAAY,MACvD;AAAA,YAAI,CAAClB,KAAQkB,EAAM,QAAQ,eAAeP,EAAY,SAAS,GAAG;AAChE,UAAAO,EAAM,eAAA,GACNjB,EAAQ,EAAI;AACZ;AAAA,QACF;AACA,YAAKD;AACL,cAAIkB,EAAM,QAAQ;AAChB,YAAAA,EAAM,eAAA,GACNf,EAAe,CAACgB,OAAOA,IAAI,KAAK,KAAK,IAAIR,EAAY,QAAQ,CAAC,CAAC;AAAA,mBACtDO,EAAM,QAAQ;AACvB,YAAAA,EAAM,eAAA,GACNf;AAAA,cACE,CAACgB,OACEA,IAAI,IAAI,KAAK,IAAIR,EAAY,QAAQ,CAAC,KACvC,KAAK,IAAIA,EAAY,QAAQ,CAAC;AAAA,YAAA;AAAA,mBAEzBO,EAAM,QAAQ,SAAS;AAChC,kBAAM9D,IAAOuD,EAAYT,CAAW;AACpC,YAAI9C,MACF8D,EAAM,eAAA,GACNF,EAAO5D,CAAI;AAAA,UAEf,MAAA,CAAW8D,EAAM,QAAQ,aACvBA,EAAM,eAAA,GACNjB,EAAQ,EAAK;AAAA;AAAA,IAEjB;AAAA,IACA,CAACD,GAAMW,GAAaT,GAAac,CAAM;AAAA,EAAA,GAGnC/B,IACJpB,KAAeW,EAAE,sBAAsB,SAAc,GAEjD4C,IAAaT,EAAY,SAAS,GAKlCU,IACJrB,KAAQoB,IAAa,GAAGd,CAAS,WAAWJ,CAAW,KAAK;AAE9D,SACE,gBAAAf,EAACmC,EAAa,MAAb,EAAkB,MAAMtB,KAAQoB,GAAY,cAAcnB,GACzD,UAAA,gBAAAf;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKI;AAAA,MACJ,GAAGN;AAAA,MACJ,kBAAe;AAAA,MACf,WAAW,CAACrC,GAAsB,EAAE,MAAAe,GAAM,SAAAC,EAAA,CAAS,GAAGI,CAAS,EAC5D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAoB,EAACmC,EAAa,QAAb,EAAoB,SAAO,IAC1B,UAAA,gBAAApC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,WAAW+B;AAAA,YAEX,UAAA;AAAA,cAAA,gBAAA9B;AAAA,gBAACoC;AAAA,gBAAA;AAAA,kBACC,KAAKnB;AAAA,kBACL,MAAA1C;AAAA,kBACA,OAAOX;AAAA,kBACP,SAAS8D;AAAA,kBACT,aAAa5B;AAAA,kBACb,cAAYT,EAAE,gBAAgB,QAAQ;AAAA,kBACtC,qBAAmBO;AAAA,kBACnB,MAAK;AAAA,kBACL,iBAAeiB,KAAQoB;AAAA,kBACvB,iBAAed;AAAA,kBACf,yBAAuBe;AAAA,gBAAA;AAAA,cAAA;AAAA,cAExBvD,IACC,gBAAAqB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW;AAAA,oBACTvC,EAAA;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA,EACA,KAAK,GAAG;AAAA,kBAET,UAAAkC;AAAA,gBAAA;AAAA,cAAA,IAED;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAER;AAAA,QACA,gBAAAK,EAACmC,EAAa,QAAb,EACC,UAAA,gBAAAnC;AAAA,UAACmC,EAAa;AAAA,UAAb;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,YAAY;AAAA,YACZ,cAAY9C,EAAE,uBAAuB,gBAAgB;AAAA,YACrD,iBAAiB,CAAC,MAAM,EAAE,eAAA;AAAA,YAI1B,WAAW;AAAA,cACT3B,GAAA;AAAA,cACA;AAAA,YAAA,EACA,KAAK,GAAG;AAAA,YAMV,UAAA,gBAAAsC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAImB;AAAA,gBACJ,MAAK;AAAA,gBACL,cAAY9B,EAAE,uBAAuB,gBAAgB;AAAA,gBACrD,WAAU;AAAA,gBAET,UAAAkB,KAAWA,EAAQ,SAAS,IAC3B8B;AAAA,kBACE9B;AAAA,kBACAQ;AAAA,kBACAI;AAAA,kBACAU;AAAA,kBACAb;AAAA,gBAAA,IAGF,gBAAAhB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,WAAU;AAAA,oBAET,UAAAX,EAAE,oBAAoB,8BAAwC;AAAA,sBAC7D,OAAAzB;AAAA,oBAAA,CACD;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACH;AAAA,YAAA;AAAA,UAEJ;AAAA,QAAA,EACF,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEA,SAASyE,GACPxE,GACAkD,GACAI,GACAmB,GACAC,GACW;AACX,MAAIC,IAAY;AAIhB,SAAO3E,EAAO,IAAI,CAAC4E,GAAOC,MAAO;AAC/B,UAAMC,IAAYF,EAAM,UAAU,GAAGtB,CAAS,UAAUuB,CAAE,aAAa;AACvE,WACE,gBAAA3C;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,MAAM0C,EAAM,UAAU,UAAU;AAAA,QAChC,mBAAiBE;AAAA,QAEhB,UAAA;AAAA,UAAAF,EAAM,UACL,gBAAAzC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI2C;AAAA,cACJ,eAAY;AAAA,cACZ,WAAU;AAAA,cAET,UAAAF,EAAM;AAAA,YAAA;AAAA,UAAA,IAEP;AAAA,UACHA,EAAM,MAAM,IAAI,CAACxE,MAAS;AACzB,kBAAM2E,IAAUJ;AAChB,YAAAA,KAAa;AACb,kBAAMK,IAAWD,MAAY7B,GACvB+B,IAAW,GAAG3B,CAAS,WAAWyB,CAAO,IACzCG,IAAWC,GAAmB/E,EAAK,IAAI,GACvCgF,IAAc;AAAA,cAClB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACAJ,IAAW,4BAA4B;AAAA,YAAA,EACvC,KAAK,GAAG,GACJK,IACJ,gBAAAnD,EAAAoD,GAAA,EACG,UAAA;AAAA,cAAAlF,EAAK,OACJ,gBAAA+B;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAU;AAAA,kBAET,UAAA/B,EAAK;AAAA,gBAAA;AAAA,cAAA,IAEN;AAAA,cACJ,gBAAA+B,EAAC,QAAA,EAAK,WAAU,kDACb,YAAK,OACR;AAAA,cACC/B,EAAK,OACJ,gBAAA+B,EAAC,QAAA,EAAK,WAAU,0DACb,UAAA/B,EAAK,MACR,IACE;AAAA,YAAA,GACN,GAEImF,IAAS;AAAA,cACb,IAAIN;AAAA,cACJ,MAAM;AAAA,cACN,iBAAiBD;AAAA;AAAA;AAAA,cAGjB,aAAa,CAACQ,MAAwB;AACpC,gBAAAA,EAAE,eAAA,GACFf,EAASrE,CAAI;AAAA,cACf;AAAA,cACA,cAAc,MAAMsE,EAAUK,CAAO;AAAA,cACrC,WAAWK;AAAA,YAAA;AAEb,mBAAIF,IAEA,gBAAA/C,EAAC,OAAgB,MAAM+C,GAAW,GAAGK,GAClC,UAAAF,KADKjF,EAAK,EAEb,sBAID,OAAA,EAAmB,GAAGmF,GACpB,UAAAF,EAAA,GADOjF,EAAK,EAEf;AAAA,UAEJ,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MA1EI,KAAKyE,CAAE;AAAA,IAAA;AAAA,EA6ElB,CAAC;AACH;AAQA,SAASM,GAAmBM,GAA8C;AACxE,MAAI,CAACA,EAAM;AACX,QAAMC,IAAUD,EAAK,KAAA;AACrB,MAAIC,MAAY,OACZ,2BAA2B,KAAKA,CAAO,KAGvC,oBAAoB,KAAKA,CAAO;AAAG,WAAOA;AAEhD;"}
@@ -2,7 +2,7 @@ import { jsx as t, jsxs as ne } from "react/jsx-runtime";
2
2
  import { forwardRef as ie, useState as A, useRef as B, useCallback as m, useLayoutEffect as ae, useEffect as oe } from "react";
3
3
  import { c as b } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as de } from "react-i18next";
5
- import { T as le } from "./text-input-exh7VD7D.js";
5
+ import { T as le } from "./text-input-CRHvl5zk.js";
6
6
  import { S as ce } from "./spinner-GCcv67vh.js";
7
7
  import { u as ue } from "./form-field-context-94LwgYTQ.js";
8
8
  import { u as fe } from "./use-debounced-callback-BisrB-Fq.js";
@@ -194,4 +194,4 @@ ge.displayName = "SearchInput";
194
194
  export {
195
195
  ge as S
196
196
  };
197
- //# sourceMappingURL=search-input-CtkWITO2.js.map
197
+ //# sourceMappingURL=search-input-BVMCONyN.js.map