themelia-react-ui 2.0.1 → 2.0.2

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 (480) hide show
  1. package/CHANGELOG.md +307 -131
  2. package/README.md +28 -8
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/{accordion-B6a3vVgA.js → accordion-Cjb6sx0G.js} +14 -13
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-ZK5RWdo6.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-ZK5RWdo6.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-CYxKfo69.js → auth-ax2BqjrI.js} +58 -54
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-BBnEJIx8.js → avatar-DAPlDvhJ.js} +7 -7
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/{badge-MrKVNzW9.js → badge-HpFqoqSY.js} +40 -40
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +40 -36
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +92 -92
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +2 -2
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +6 -6
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +14 -14
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +6 -6
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +171 -176
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +6 -6
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +79 -2
  61. package/dist/base/spinner.js.map +1 -0
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +46 -45
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZGDG-Si.js → batch-action-bar-DnUJ21NQ.js} +6 -5
  72. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  73. package/dist/blocks/admin.js +42 -42
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +260 -240
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +620 -585
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +1152 -1109
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +2 -2
  85. package/dist/blocks/onboarding.js +48 -39
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +13 -12
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/{breadcrumbs-D5t7I023.js → breadcrumbs-C-oqs1sQ.js} +5 -5
  91. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  92. package/dist/{button-QYwiyhD2.js → button-DVzspB_G.js} +2 -2
  93. package/dist/{button-QYwiyhD2.js.map → button-DVzspB_G.js.map} +1 -1
  94. package/dist/{buttons-SbIcm1HJ.js → buttons-DPZekJFu.js} +20 -15
  95. package/dist/buttons-DPZekJFu.js.map +1 -0
  96. package/dist/cards-BaBZR-AU.js +68 -0
  97. package/dist/cards-BaBZR-AU.js.map +1 -0
  98. package/dist/{chart-QfrARkXl.js → chart-ZOYyK2xG.js} +58 -55
  99. package/dist/chart-ZOYyK2xG.js.map +1 -0
  100. package/dist/{checkbox-DhB6K0bK.js → checkbox-AWIhNhmo.js} +2 -2
  101. package/dist/{checkbox-DhB6K0bK.js.map → checkbox-AWIhNhmo.js.map} +1 -1
  102. package/dist/{choice-inputs-t6w3ATNz.js → choice-inputs-CNHvARCJ.js} +49 -45
  103. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  104. package/dist/{code-block-Dgbu-CU3.js → code-block-DeneBJR_.js} +8 -8
  105. package/dist/code-block-DeneBJR_.js.map +1 -0
  106. package/dist/{collapsible-D8AEGU1-.js → collapsible-C-_l4hpy.js} +3 -3
  107. package/dist/{collapsible-D8AEGU1-.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  108. package/dist/{collection-content-uK16Grv0.js → collection-content-By56pLog.js} +3 -3
  109. package/dist/{collection-content-uK16Grv0.js.map → collection-content-By56pLog.js.map} +1 -1
  110. package/dist/combobox-C0EQW6dr.js +875 -0
  111. package/dist/combobox-C0EQW6dr.js.map +1 -0
  112. package/dist/combobox-xCQ2RMNE.js +309 -0
  113. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  114. package/dist/{command-kNR20o7x.js → command-C25VMRII.js} +7 -7
  115. package/dist/{command-kNR20o7x.js.map → command-C25VMRII.js.map} +1 -1
  116. package/dist/{comments-BpDuCUUu.js → comments-BYYlTA8E.js} +114 -105
  117. package/dist/comments-BYYlTA8E.js.map +1 -0
  118. package/dist/components/base/badge/badge.recipes.d.ts +1 -1
  119. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  120. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  121. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  122. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  123. package/dist/components/base/chart/chart.d.ts +2 -5
  124. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  125. package/dist/components/base/combobox/index.d.ts +30 -4
  126. package/dist/components/base/forms/form-sizing.d.ts +11 -3
  127. package/dist/components/base/navigation/pagination.d.ts +5 -2
  128. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  129. package/dist/components/base/table/index.d.ts +9 -2
  130. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  131. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  132. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  133. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
  134. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  135. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  136. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  137. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  138. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  139. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  140. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  141. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  142. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  143. package/dist/components/features/combobox/types.d.ts +4 -0
  144. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  145. package/dist/components/features/rich-text-editor/index.d.ts +1 -1
  146. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  147. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
  148. package/dist/components/features/table/table-header.d.ts +1 -1
  149. package/dist/components/features/table/table.strings.d.ts +55 -1
  150. package/dist/components/features/table/table.types.d.ts +17 -4
  151. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  152. package/dist/components/primitives/number.d.ts +4 -2
  153. package/dist/components/primitives/value.d.ts +3 -1
  154. package/dist/components/typography/text-link.d.ts +4 -0
  155. package/dist/components/ui/combobox.d.ts +6 -2
  156. package/dist/components/ui/item.d.ts +8 -8
  157. package/dist/components/ui/tabs.d.ts +1 -1
  158. package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
  159. package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
  160. package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
  161. package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
  162. package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
  163. package/dist/data-display-DT_khPl_.js.map +1 -0
  164. package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
  165. package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
  166. package/dist/{date-picker-CF-DtUpF.js → date-picker-ay0Pha_a.js} +594 -593
  167. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  168. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  169. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  170. package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
  171. package/dist/display-hAc1HjpI.js.map +1 -0
  172. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  173. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  174. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  175. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  176. package/dist/features/activities.js +398 -375
  177. package/dist/features/activities.js.map +1 -1
  178. package/dist/features/ai-chat.js +188 -179
  179. package/dist/features/ai-chat.js.map +1 -1
  180. package/dist/features/appointment-calendar.js +683 -0
  181. package/dist/features/appointment-calendar.js.map +1 -0
  182. package/dist/features/async-preview.js +109 -107
  183. package/dist/features/async-preview.js.map +1 -1
  184. package/dist/features/combobox.js +1 -1
  185. package/dist/features/comments.js +1 -1
  186. package/dist/features/data-view.js +137 -137
  187. package/dist/features/data-view.js.map +1 -1
  188. package/dist/features/email-composer.js +255 -255
  189. package/dist/features/email-composer.js.map +1 -1
  190. package/dist/features/event-calendar.js +254 -248
  191. package/dist/features/event-calendar.js.map +1 -1
  192. package/dist/features/filters.js +1 -1
  193. package/dist/features/global-search.js +35 -32
  194. package/dist/features/global-search.js.map +1 -1
  195. package/dist/features/kanban.js +118 -117
  196. package/dist/features/kanban.js.map +1 -1
  197. package/dist/features/map.js +233 -231
  198. package/dist/features/map.js.map +1 -1
  199. package/dist/features/media-library.js +789 -775
  200. package/dist/features/media-library.js.map +1 -1
  201. package/dist/features/mentions.js +1 -1
  202. package/dist/features/overlays.js +1 -1
  203. package/dist/features/products.js +922 -902
  204. package/dist/features/products.js.map +1 -1
  205. package/dist/features/questionnaire.js +28 -24
  206. package/dist/features/questionnaire.js.map +1 -1
  207. package/dist/features/resource-assignment.js +18 -15
  208. package/dist/features/resource-assignment.js.map +1 -1
  209. package/dist/features/resource.js +12 -12
  210. package/dist/features/resource.js.map +1 -1
  211. package/dist/features/rich-text-editor.js +2 -2
  212. package/dist/features/schema-form.js +15 -13
  213. package/dist/features/schema-form.js.map +1 -1
  214. package/dist/features/suggestions.js +3 -3
  215. package/dist/features/sync.js +11 -5
  216. package/dist/features/sync.js.map +1 -1
  217. package/dist/features/table.js +1 -1
  218. package/dist/features/theme-tweaker.js +493 -489
  219. package/dist/features/theme-tweaker.js.map +1 -1
  220. package/dist/feedback-BYIhtitP.js +239 -0
  221. package/dist/feedback-BYIhtitP.js.map +1 -0
  222. package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
  223. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  224. package/dist/{filters-BkHH53uv.js → filters-BGfvjP4d.js} +589 -580
  225. package/dist/filters-BGfvjP4d.js.map +1 -0
  226. package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
  227. package/dist/form-field-CwH9y77i.js.map +1 -0
  228. package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
  229. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  230. package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
  231. package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
  232. package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
  233. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  234. package/dist/{header-BOefOKd1.js → header-CGXuhcRm.js} +160 -153
  235. package/dist/header-CGXuhcRm.js.map +1 -0
  236. package/dist/{hooks-9k_TtmKh.js → hooks-Dkz0K2WT.js} +2 -2
  237. package/dist/{hooks-9k_TtmKh.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  238. package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
  239. package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
  240. package/dist/index.js +3 -3
  241. package/dist/input-CZw8iU99.js +21 -0
  242. package/dist/input-CZw8iU99.js.map +1 -0
  243. package/dist/input-DQdEd0YD.js +263 -0
  244. package/dist/input-DQdEd0YD.js.map +1 -0
  245. package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
  246. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  247. package/dist/item-K5_ghvze.js +275 -0
  248. package/dist/item-K5_ghvze.js.map +1 -0
  249. package/dist/layout/app-shell.js +1 -1
  250. package/dist/layout/auth.js +1 -1
  251. package/dist/layout/containers.js +1 -1
  252. package/dist/layout/header.js +1 -1
  253. package/dist/layout/hooks.js +1 -1
  254. package/dist/layout/navigation.js +1 -1
  255. package/dist/layout/page.js +1 -1
  256. package/dist/layout/settings.js +1 -1
  257. package/dist/layout/sidebar.js +2 -2
  258. package/dist/layout/workspace.js +1 -1
  259. package/dist/layout.js +10 -10
  260. package/dist/lib/affordance-geometry.generated.d.ts +71 -0
  261. package/dist/lib/editable-text-recipe.d.ts +4 -4
  262. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  263. package/dist/lib/interaction-recipes.d.ts +5 -0
  264. package/dist/lib/theme-mode-css.d.ts +7 -0
  265. package/dist/lib/tone-recipes.d.ts +8 -0
  266. package/dist/lib/ui-provider/types.d.ts +2 -2
  267. package/dist/lib/utils.js +1 -1
  268. package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
  269. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  270. package/dist/{mentions-D-uyCh01.js → mentions-utuUvH1K.js} +144 -142
  271. package/dist/mentions-utuUvH1K.js.map +1 -0
  272. package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
  273. package/dist/message-DZ_ruyUV.js.map +1 -0
  274. package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
  275. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  276. package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
  277. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  278. package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
  279. package/dist/navigation-BzhHI3lo.js.map +1 -0
  280. package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  281. package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  282. package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
  283. package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
  284. package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
  285. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  286. package/dist/{overlays-I0axtYA6.js → overlays-DNWmZrJ4.js} +14 -12
  287. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  288. package/dist/{page-B5dTH9gE.js → page-Bgl1F560.js} +8 -8
  289. package/dist/{page-B5dTH9gE.js.map → page-Bgl1F560.js.map} +1 -1
  290. package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
  291. package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
  292. package/dist/pagination-BL25hu2s.js +158 -0
  293. package/dist/pagination-BL25hu2s.js.map +1 -0
  294. package/dist/{popover-Di55PyAI.js → popover-7_m66eYW.js} +8 -7
  295. package/dist/{popover-Di55PyAI.js.map → popover-7_m66eYW.js.map} +1 -1
  296. package/dist/popover-menu-B9WWygpa.js +100 -0
  297. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  298. package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
  299. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  300. package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
  301. package/dist/primitives-BFK08r9M.js.map +1 -0
  302. package/dist/primitives.js +4 -4
  303. package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
  304. package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
  305. package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
  306. package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  307. package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
  308. package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
  309. package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
  310. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  311. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  312. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  313. package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
  314. package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
  315. package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
  316. package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
  317. package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
  318. package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
  319. package/dist/services/actions.js +1 -1
  320. package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
  321. package/dist/settings-ybnjVwbd.js.map +1 -0
  322. package/dist/{sheet-4SEvVYzA.js → sheet-CGpB3omz.js} +8 -7
  323. package/dist/{sheet-4SEvVYzA.js.map → sheet-CGpB3omz.js.map} +1 -1
  324. package/dist/{sidebar-d7Dg80ln.js → sidebar-A0ElHINE.js} +14 -13
  325. package/dist/{sidebar-d7Dg80ln.js.map → sidebar-A0ElHINE.js.map} +1 -1
  326. package/dist/{sidebar-C7WWR29L.js → sidebar-CPx_7YBa.js} +183 -182
  327. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  328. package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
  329. package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  330. package/dist/smart-card-DiC5aac3.js +604 -0
  331. package/dist/smart-card-DiC5aac3.js.map +1 -0
  332. package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
  333. package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
  334. package/dist/style.css +1 -1
  335. package/dist/table-BweFy_P9.js +1530 -0
  336. package/dist/table-BweFy_P9.js.map +1 -0
  337. package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
  338. package/dist/table-DsfzoUia.js.map +1 -0
  339. package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
  340. package/dist/tabs-CDocW5D1.js.map +1 -0
  341. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  342. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  343. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  344. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  345. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  346. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  347. package/dist/theme.css +285 -228
  348. package/dist/themes/green.css +16 -12
  349. package/dist/timelines-CwM_9IhD.js +457 -0
  350. package/dist/timelines-CwM_9IhD.js.map +1 -0
  351. package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
  352. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  353. package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
  354. package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
  355. package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
  356. package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
  357. package/dist/typography/rich-text.js +1 -1
  358. package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
  359. package/dist/typography-UTnveOEy.js.map +1 -0
  360. package/dist/typography.js +2 -2
  361. package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
  362. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  363. package/dist/ui-provider.js +2 -2
  364. package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
  365. package/dist/upload-CXyxmQBP.js.map +1 -0
  366. package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
  367. package/dist/upload-queue-Boscubn9.js.map +1 -0
  368. package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
  369. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  370. package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
  371. package/dist/utils-BRhFDwuU.js.map +1 -0
  372. package/dist/{value-inputs-TAYMX111.js → value-inputs-DXPDjvBU.js} +268 -252
  373. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  374. package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
  375. package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  376. package/dist/{workspace-DH0v0KcB.js → workspace-Cdrg7k9f.js} +34 -33
  377. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  378. package/docs/consumer-skill/SKILL.md +2 -2
  379. package/docs/consumer-skill/references/agents-md.md +1 -1
  380. package/docs/consumer-skill/references/composition.md +8 -6
  381. package/docs/consumer-skill/references/integration.md +4 -3
  382. package/docs/consumer-skill/references/public-api.json +105 -2
  383. package/docs/consumer-skill/references/review.md +7 -0
  384. package/docs/consumer-skill/references/theming.md +71 -6
  385. package/docs/consumer-skill/references/tokens.json +1 -1
  386. package/docs/consumer-skill/references/workflows.md +25 -0
  387. package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
  388. package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
  389. package/package.json +8 -4
  390. package/dist/accordion-B6a3vVgA.js.map +0 -1
  391. package/dist/action-menu-TzCoSlwL.js +0 -280
  392. package/dist/action-menu-TzCoSlwL.js.map +0 -1
  393. package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
  394. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
  395. package/dist/ai-artifact-BMJdv-6q.js +0 -1115
  396. package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
  397. package/dist/attachment-BtfhGm8i.js +0 -245
  398. package/dist/attachment-BtfhGm8i.js.map +0 -1
  399. package/dist/auth-CYxKfo69.js.map +0 -1
  400. package/dist/avatar-BBnEJIx8.js.map +0 -1
  401. package/dist/badge-MrKVNzW9.js.map +0 -1
  402. package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
  403. package/dist/breadcrumbs-D5t7I023.js.map +0 -1
  404. package/dist/buttons-SbIcm1HJ.js.map +0 -1
  405. package/dist/cards-CiiHpKYd.js +0 -66
  406. package/dist/cards-CiiHpKYd.js.map +0 -1
  407. package/dist/chart-QfrARkXl.js.map +0 -1
  408. package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
  409. package/dist/code-block-Dgbu-CU3.js.map +0 -1
  410. package/dist/combobox-2Ic8N9bL.js +0 -278
  411. package/dist/combobox-2Ic8N9bL.js.map +0 -1
  412. package/dist/combobox-DLl0bfiq.js +0 -867
  413. package/dist/combobox-DLl0bfiq.js.map +0 -1
  414. package/dist/comments-BpDuCUUu.js.map +0 -1
  415. package/dist/data-display-DafIvCl5.js.map +0 -1
  416. package/dist/date-picker-CF-DtUpF.js.map +0 -1
  417. package/dist/date-pickers-BmzxJl5l.js +0 -174
  418. package/dist/date-pickers-BmzxJl5l.js.map +0 -1
  419. package/dist/display-DsQTVzMz.js.map +0 -1
  420. package/dist/dropdown-menu-E2qmdC7o.js +0 -193
  421. package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
  422. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  423. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  424. package/dist/feedback-qNuMBtRH.js +0 -233
  425. package/dist/feedback-qNuMBtRH.js.map +0 -1
  426. package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
  427. package/dist/filters-BkHH53uv.js.map +0 -1
  428. package/dist/form-field-DUt4UxSV.js.map +0 -1
  429. package/dist/form-sizing-By94KzXE.js.map +0 -1
  430. package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
  431. package/dist/header-BOefOKd1.js.map +0 -1
  432. package/dist/input-DWhBBBww.js +0 -262
  433. package/dist/input-DWhBBBww.js.map +0 -1
  434. package/dist/input-Ddi_LSYv.js +0 -20
  435. package/dist/input-Ddi_LSYv.js.map +0 -1
  436. package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
  437. package/dist/item-DEmDiTlD.js +0 -265
  438. package/dist/item-DEmDiTlD.js.map +0 -1
  439. package/dist/media-gallery-DcTtAaeC.js.map +0 -1
  440. package/dist/mentions-D-uyCh01.js.map +0 -1
  441. package/dist/message-CdHgIWKf.js.map +0 -1
  442. package/dist/metadata-list-X5rYAKSB.js.map +0 -1
  443. package/dist/navigation-D3KwXmaq.js.map +0 -1
  444. package/dist/navigation-HJf5zxlH.js.map +0 -1
  445. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
  446. package/dist/overlays-I0axtYA6.js.map +0 -1
  447. package/dist/pagination-3bPA_a6K.js +0 -149
  448. package/dist/pagination-3bPA_a6K.js.map +0 -1
  449. package/dist/popover-menu-B71Tn2Qz.js +0 -99
  450. package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
  451. package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
  452. package/dist/primitives-B-CkiEMU.js.map +0 -1
  453. package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
  454. package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
  455. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
  456. package/dist/settings-CQW3b-Cu.js.map +0 -1
  457. package/dist/sidebar-C7WWR29L.js.map +0 -1
  458. package/dist/smart-card-lFKxn5Hu.js +0 -595
  459. package/dist/smart-card-lFKxn5Hu.js.map +0 -1
  460. package/dist/spinner-fa3h1Aif.js +0 -80
  461. package/dist/spinner-fa3h1Aif.js.map +0 -1
  462. package/dist/table-CIKyLUsy.js.map +0 -1
  463. package/dist/table-CrcLN9Io.js +0 -1458
  464. package/dist/table-CrcLN9Io.js.map +0 -1
  465. package/dist/tabs-DwBJfjxX.js.map +0 -1
  466. package/dist/text-inputs-aaK9wcDT.js +0 -326
  467. package/dist/text-inputs-aaK9wcDT.js.map +0 -1
  468. package/dist/theme-scope-kStaAer0.js +0 -39
  469. package/dist/theme-scope-kStaAer0.js.map +0 -1
  470. package/dist/timelines-C_SBwHNP.js +0 -442
  471. package/dist/timelines-C_SBwHNP.js.map +0 -1
  472. package/dist/tone-recipes-CPoExcTE.js.map +0 -1
  473. package/dist/typography-DTRkE9zL.js.map +0 -1
  474. package/dist/ui-provider-1D_NSYzO.js.map +0 -1
  475. package/dist/upload-BO8-CLN6.js.map +0 -1
  476. package/dist/upload-queue-EOC8g1gf.js.map +0 -1
  477. package/dist/usage-card-obRaBskq.js.map +0 -1
  478. package/dist/utils-l5LpDw2z.js.map +0 -1
  479. package/dist/value-inputs-TAYMX111.js.map +0 -1
  480. package/dist/workspace-DH0v0KcB.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-l5LpDw2z.js","names":["tokenClassGroups","\"gap\"","\"h\"","\"mx\"","\"p\"","\"pb\"","\"pt\"","\"px\"","\"right\"","\"rounded\"","\"size\"","\"m\"","\"ml\"","\"ms\"","\"mt\"","\"top\"","\"py\"","\"inset\"","\"my\"","\"bottom\"","\"w\"","\"ps\"","\"end\"","\"text\"","\"font\"","\"pe\"","\"me\"","\"left\"","\"mb\"","\"mr\"","\"pl\"","\"pr\"","\"start\"","tokenCandidates","twMerge","extendTailwindMerge","BEM_HOOK","shippedTokenCandidates","before","prefix","suffix","after","tokenUtilities","groups","group","suffixes","isUnavailableTokenCandidate","depth","start","index","candidate","utility","cn","inputs","classes","clsx","hooks","entry","opaque","survivors","lastUtilityIndex","emitted"],"sources":["../src/lib/token-merge.generated.ts","../src/lib/utils.ts"],"sourcesContent":["/* Generated from emitted contract/library CSS; do not edit. */\nexport const tokenClassGroups = {\n \"gap\": [\n {\n \"gap\": [\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"dense\",\n \"normal\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-3xl\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"h\": [\n {\n \"h\": [\n \"action-sm\",\n \"control\",\n \"control-lg\",\n \"control-sm\",\n \"space-md\",\n \"control-file\",\n \"action\",\n \"action-lg\",\n \"action-xs\",\n \"icon\",\n \"icon-lg\",\n \"icon-sm\",\n \"shell-header\"\n ]\n }\n ],\n \"min-h\": [\n {\n \"min-h\": [\n \"action-lg\",\n \"shell-header\",\n \"action-xs\",\n \"control\",\n \"action\",\n \"action-sm\",\n \"control-lg\",\n \"control-sm\",\n \"icon\",\n \"space-lg\",\n \"textarea\",\n \"textarea-sm\"\n ]\n }\n ],\n \"mx\": [\n {\n \"mx\": [\n \"space-2xs\",\n \"space-md\",\n \"space-sm\",\n \"row-x\",\n \"space-2xl\",\n \"space-lg\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"p\": [\n {\n \"p\": [\n \"surface\",\n \"surface-lg\",\n \"surface-xs\",\n \"space-sm\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"pb\": [\n {\n \"pb\": [\n \"surface\",\n \"surface-lg\",\n \"surface-xs\",\n \"space-xs\",\n \"space-md\",\n \"space-lg\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"pt\": [\n {\n \"pt\": [\n \"surface\",\n \"surface-lg\",\n \"surface-xs\",\n \"space-md\",\n \"space-lg\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"px\": [\n {\n \"px\": [\n \"control-sm\",\n \"space-xs\",\n \"row-x\",\n \"surface-xs\",\n \"control\",\n \"control-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"surface\",\n \"surface-lg\"\n ]\n }\n ],\n \"right\": [\n {\n \"right\": [\n \"space-sm\",\n \"control-px\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"rounded\": [\n {\n \"rounded\": [\n \"inner\",\n \"radius\",\n \"radius-lg\",\n \"radius-md\",\n \"radius-sm\",\n \"radius-xl\",\n \"radius-xs\"\n ]\n }\n ],\n \"size\": [\n {\n \"size\": [\n \"action-xs\",\n \"icon\",\n \"icon-sm\",\n \"icon-lg\",\n \"icon-md\",\n \"avatar-lg\",\n \"avatar-sm\",\n \"action\",\n \"action-lg\",\n \"action-sm\",\n \"avatar\",\n \"control\",\n \"control-clear\",\n \"control-clear-icon\",\n \"control-lg\",\n \"control-sm\",\n \"shell-header-control\",\n \"upload-avatar\",\n \"upload-avatar-large\",\n \"upload-avatar-small\"\n ]\n }\n ],\n \"m\": [\n {\n \"m\": [\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"ml\": [\n {\n \"ml\": [\n \"space-sm\",\n \"space-md\",\n \"control-gap-small\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"ms\": [\n {\n \"ms\": [\n \"space-xl\",\n \"space-xs\",\n \"space-2xs\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\"\n ]\n }\n ],\n \"mt\": [\n {\n \"mt\": [\n \"space-md\",\n \"space-xl\",\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-sm\"\n ]\n }\n ],\n \"space-x\": [\n {\n \"space-x\": [\n \"space-sm\",\n \"space-md\"\n ]\n }\n ],\n \"gap-x\": [\n {\n \"gap-x\": [\n \"dense\",\n \"normal\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-3xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"gap-y\": [\n {\n \"gap-y\": [\n \"dense\",\n \"normal\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-3xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"top\": [\n {\n \"top\": [\n \"space-2xl\",\n \"action-sm-center\",\n \"action-xs-center\",\n \"action-lg-center\",\n \"action-center\",\n \"control-y-offset\",\n \"shell-header\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"py\": [\n {\n \"py\": [\n \"space-2xs\",\n \"row-y\",\n \"row-y-lg\",\n \"row-y-sm\",\n \"control-y-offset\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-xs\"\n ]\n }\n ],\n \"inset\": [\n {\n \"inset\": [\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"my\": [\n {\n \"my\": [\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"bottom\": [\n {\n \"bottom\": [\n \"control-y-offset\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"w\": [\n {\n \"w\": [\n \"shell-sidebar-icon-padded\",\n \"action-sm\",\n \"control\",\n \"control-clear\",\n \"control-lg\",\n \"control-sm\",\n \"shell-sidebar\"\n ]\n }\n ],\n \"ps\": [\n {\n \"ps\": [\n \"control-icon\",\n \"space-sm\",\n \"control\",\n \"control-addon\",\n \"control-addon-sm\",\n \"control-icon-sm\",\n \"control-sm\",\n \"control-xs\",\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-xs\"\n ]\n }\n ],\n \"end\": [\n {\n \"end\": [\n \"control-icon\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"font-size\": [\n {\n \"text\": [\n \"pxs\",\n \"xxs\"\n ]\n }\n ],\n \"font-family\": [\n {\n \"font\": [\n \"heading\"\n ]\n }\n ],\n \"rounded-l\": [\n {\n \"rounded-l\": [\n \"inner\"\n ]\n }\n ],\n \"rounded-r\": [\n {\n \"rounded-r\": [\n \"inner\"\n ]\n }\n ],\n \"rounded-t\": [\n {\n \"rounded-t\": [\n \"inner\",\n \"radius\",\n \"radius-sm\"\n ]\n }\n ],\n \"rounded-b\": [\n {\n \"rounded-b\": [\n \"inner\",\n \"radius\"\n ]\n }\n ],\n \"pe\": [\n {\n \"pe\": [\n \"space-sm\",\n \"action-sm\",\n \"control\",\n \"control-actions\",\n \"control-actions-sm\",\n \"control-addon\",\n \"control-addon-sm\",\n \"control-count\",\n \"control-count-sm\",\n \"control-icon\",\n \"control-icon-sm\",\n \"control-sm\",\n \"control-xs\",\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-xs\"\n ]\n }\n ],\n \"me\": [\n {\n \"me\": [\n \"space-xs\",\n \"space-2xs\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"inset-x\": [\n {\n \"inset-x\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"inset-y\": [\n {\n \"inset-y\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"left\": [\n {\n \"left\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"space-y\": [\n {\n \"space-y\": [\n \"space-2xs\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"max-w\": [\n {\n \"max-w\": [\n \"content-2xl\",\n \"content-lg\",\n \"content-md\",\n \"content-sm\",\n \"content-xl\"\n ]\n }\n ],\n \"mb\": [\n {\n \"mb\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"min-w\": [\n {\n \"min-w\": [\n \"action\",\n \"action-xs\",\n \"space-lg\"\n ]\n }\n ],\n \"mr\": [\n {\n \"mr\": [\n \"control-gap\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"pl\": [\n {\n \"pl\": [\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-xs\"\n ]\n }\n ],\n \"pr\": [\n {\n \"pr\": [\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-xs\"\n ]\n }\n ],\n \"rounded-e\": [\n {\n \"rounded-e\": [\n \"inner\"\n ]\n }\n ],\n \"rounded-s\": [\n {\n \"rounded-s\": [\n \"inner\"\n ]\n }\n ],\n \"start\": [\n {\n \"start\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"translate-y\": [\n {\n \"translate-y\": [\n \"space-lg\"\n ]\n }\n ]\n};\nexport const tokenCandidates = [\n [\"!\",\"gap\",\"space-lg\",\"\"],\n [\"!\",\"gap\",\"space-md\",\"\"],\n [\"!\",\"gap\",\"space-sm\",\"\"],\n [\"!\",\"h\",\"action-sm\",\"\"],\n [\"!\",\"h\",\"control\",\"\"],\n [\"!\",\"h\",\"control-lg\",\"\"],\n [\"!\",\"h\",\"control-sm\",\"\"],\n [\"!\",\"min-h\",\"action-lg\",\"\"],\n [\"!\",\"mx\",\"space-2xs\",\"\"],\n [\"!\",\"mx\",\"space-md\",\"\"],\n [\"!\",\"mx\",\"space-sm\",\"\"],\n [\"!\",\"p\",\"surface\",\"\"],\n [\"!\",\"p\",\"surface-lg\",\"\"],\n [\"!\",\"p\",\"surface-xs\",\"\"],\n [\"!\",\"pb\",\"surface\",\"\"],\n [\"!\",\"pb\",\"surface-lg\",\"\"],\n [\"!\",\"pb\",\"surface-xs\",\"\"],\n [\"!\",\"pt\",\"surface\",\"\"],\n [\"!\",\"pt\",\"surface-lg\",\"\"],\n [\"!\",\"pt\",\"surface-xs\",\"\"],\n [\"!\",\"px\",\"control-sm\",\"\"],\n [\"!\",\"right\",\"space-sm\",\"\"],\n [\"!\",\"rounded\",\"inner\",\"\"],\n [\"!\",\"rounded\",\"radius\",\"\"],\n [\"!\",\"size\",\"action-xs\",\"\"],\n [\"*:data-[slot=select-value]:\",\"gap\",\"space-sm\",\"\"],\n [\"-\",\"m\",\"space-xs\",\"\"],\n [\"-\",\"ml\",\"space-sm\",\"\"],\n [\"-\",\"ms\",\"space-xl\",\"\"],\n [\"-\",\"mt\",\"space-md\",\"\"],\n [\"-\",\"mt\",\"space-xl\",\"\"],\n [\"-\",\"mt\",\"space-xs\",\"\"],\n [\"-\",\"mx\",\"row-x\",\"\"],\n [\"-\",\"space-x\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap\",\"dense\",\"\"],\n [\"2xl:\",\"gap\",\"normal\",\"\"],\n [\"2xl:\",\"gap\",\"space-2xl\",\"\"],\n [\"2xl:\",\"gap\",\"space-2xs\",\"\"],\n [\"2xl:\",\"gap\",\"space-3xl\",\"\"],\n [\"2xl:\",\"gap\",\"space-lg\",\"\"],\n [\"2xl:\",\"gap\",\"space-md\",\"\"],\n [\"2xl:\",\"gap\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap\",\"space-xl\",\"\"],\n [\"2xl:\",\"gap\",\"space-xs\",\"\"],\n [\"2xl:\",\"gap-x\",\"dense\",\"\"],\n [\"2xl:\",\"gap-x\",\"normal\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-lg\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-md\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-xl\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-xs\",\"\"],\n [\"2xl:\",\"gap-y\",\"dense\",\"\"],\n [\"2xl:\",\"gap-y\",\"normal\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-lg\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-md\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-xl\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-xs\",\"\"],\n [\"@2xl/event-calendar-header:\",\"gap\",\"space-xl\",\"\"],\n [\"@3xl/app-shell:\",\"gap\",\"space-2xl\",\"\"],\n [\"@3xl/app-shell:\",\"gap\",\"space-md\",\"\"],\n [\"@3xl/stacked-shell:\",\"gap\",\"space-2xl\",\"\"],\n [\"@3xl/stacked-shell:\",\"gap\",\"space-md\",\"\"],\n [\"@3xl/stacked-shell:\",\"min-h\",\"shell-header\",\"\"],\n [\"@3xl:\",\"top\",\"space-2xl\",\"\"],\n [\"@max-[16rem]/metric-card:\",\"px\",\"space-xs\",\"\"],\n [\"@max-[4rem]/calendar-event:\",\"min-h\",\"action-xs\",\"\"],\n [\"@max-[4rem]/calendar-event:\",\"py\",\"space-2xs\",\"\"],\n [\"@md/order-line-item:\",\"gap-x\",\"space-xl\",\"\"],\n [\"[&.border-b]:!\",\"pb\",\"surface\",\"\"],\n [\"[&.border-t]:!\",\"pt\",\"surface\",\"\"],\n [\"[&>kbd]:\",\"rounded\",\"inner\",\"\"],\n [\"[&>svg:not([class*='size-'])]:\",\"size\",\"icon\",\"\"],\n [\"[&>svg:not([class*='size-'])]:\",\"size\",\"icon-sm\",\"\"],\n [\"[&>svg:not([class*=\\\\'size-\\\\'])]:\",\"size\",\"icon\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon-lg\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon-md\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon-sm\",\"\"],\n [\"[&_.metadata-list--grid]:\",\"gap\",\"space-sm\",\"\"],\n [\"[&_[cmdk-group-heading]]:\",\"pb\",\"space-xs\",\"\"],\n [\"[&_[cmdk-group-heading]]:\",\"pt\",\"space-md\",\"\"],\n [\"[&_[cmdk-group-heading]]:\",\"px\",\"row-x\",\"\"],\n [\"[&_[data-slot=command-input-wrapper]]:\",\"pt\",\"surface-xs\",\"\"],\n [\"[&_[data-slot=command-input-wrapper]]:\",\"px\",\"surface-xs\",\"\"],\n [\"[&_[data-slot=progress-track]]:\",\"h\",\"space-md\",\"\"],\n [\"[&_svg:not([class*='size-'])]:\",\"size\",\"icon\",\"\"],\n [\"[&_svg:not([class*='size-'])]:\",\"size\",\"icon-lg\",\"\"],\n [\"[&_svg:not([class*='size-'])]:\",\"size\",\"icon-sm\",\"\"],\n [\"[&_svg:not([class*=\\\\'size-\\\\'])]:\",\"size\",\"icon\",\"\"],\n [\"[&_svg:not([class*=size-])]:\",\"size\",\"icon\",\"\"],\n [\"[&_svg]:\",\"size\",\"icon\",\"\"],\n [\"[&_td]:\",\"px\",\"row-x\",\"\"],\n [\"[&_td]:\",\"py\",\"row-y\",\"\"],\n [\"[&_td]:\",\"py\",\"row-y-lg\",\"\"],\n [\"[&_td]:\",\"py\",\"row-y-sm\",\"\"],\n [\"[&_th]:\",\"px\",\"row-x\",\"\"],\n [\"[&_th]:\",\"py\",\"row-y-lg\",\"\"],\n [\"[.border-b]:\",\"pb\",\"space-md\",\"\"],\n [\"[.border-t]:\",\"pt\",\"space-md\",\"\"],\n [\"after:-\",\"inset\",\"space-xs\",\"\"],\n [\"before:\",\"my\",\"space-xs\",\"\"],\n [\"\",\"bottom\",\"control-y-offset\",\"\"],\n [\"\",\"bottom\",\"space-2xl\",\"\"],\n [\"\",\"bottom\",\"space-2xs\",\"\"],\n [\"\",\"bottom\",\"space-lg\",\"\"],\n [\"\",\"bottom\",\"space-md\",\"\"],\n [\"\",\"bottom\",\"space-sm\",\"\"],\n [\"\",\"bottom\",\"space-xl\",\"\"],\n [\"\",\"bottom\",\"space-xs\",\"\"],\n [\"data-[collapsible=icon]:\",\"w\",\"shell-sidebar-icon-padded\",\"\"],\n [\"data-[orientation=horizontal]:\",\"min-h\",\"control\",\"\"],\n [\"data-[size=default]:\",\"h\",\"control\",\"\"],\n [\"data-[size=lg]:\",\"size\",\"avatar-lg\",\"\"],\n [\"data-[size=sm]:\",\"h\",\"control-sm\",\"\"],\n [\"data-[size=sm]:\",\"size\",\"avatar-sm\",\"\"],\n [\"data-inset:\",\"ps\",\"control-icon\",\"\"],\n [\"\",\"end\",\"control-icon\",\"\"],\n [\"\",\"end\",\"space-2xl\",\"\"],\n [\"\",\"end\",\"space-2xs\",\"\"],\n [\"\",\"end\",\"space-2xs\",\"!\"],\n [\"\",\"end\",\"space-lg\",\"\"],\n [\"\",\"end\",\"space-md\",\"\"],\n [\"\",\"end\",\"space-sm\",\"\"],\n [\"\",\"end\",\"space-xl\",\"\"],\n [\"\",\"end\",\"space-xs\",\"\"],\n [\"file:\",\"h\",\"control-file\",\"\"],\n [\"file:\",\"px\",\"control\",\"\"],\n [\"file:\",\"rounded\",\"inner\",\"\"],\n [\"file:\",\"text\",\"pxs\",\"\"],\n [\"\",\"font\",\"heading\",\"\"],\n [\"\",\"gap\",\"dense\",\"\"],\n [\"\",\"gap\",\"normal\",\"\"],\n [\"\",\"gap\",\"space-2xl\",\"\"],\n [\"\",\"gap\",\"space-2xs\",\"\"],\n [\"\",\"gap\",\"space-3xl\",\"\"],\n [\"\",\"gap\",\"space-lg\",\"\"],\n [\"\",\"gap\",\"space-md\",\"\"],\n [\"\",\"gap\",\"space-sm\",\"\"],\n [\"\",\"gap\",\"space-xl\",\"\"],\n [\"\",\"gap\",\"space-xs\",\"\"],\n [\"\",\"gap-x\",\"dense\",\"\"],\n [\"\",\"gap-x\",\"normal\",\"\"],\n [\"\",\"gap-x\",\"space-2xl\",\"\"],\n [\"\",\"gap-x\",\"space-2xs\",\"\"],\n [\"\",\"gap-x\",\"space-3xl\",\"\"],\n [\"\",\"gap-x\",\"space-lg\",\"\"],\n [\"\",\"gap-x\",\"space-md\",\"\"],\n [\"\",\"gap-x\",\"space-sm\",\"\"],\n [\"\",\"gap-x\",\"space-xl\",\"\"],\n [\"\",\"gap-x\",\"space-xs\",\"\"],\n [\"\",\"gap-y\",\"dense\",\"\"],\n [\"\",\"gap-y\",\"normal\",\"\"],\n [\"\",\"gap-y\",\"space-2xl\",\"\"],\n [\"\",\"gap-y\",\"space-2xs\",\"\"],\n [\"\",\"gap-y\",\"space-3xl\",\"\"],\n [\"\",\"gap-y\",\"space-lg\",\"\"],\n [\"\",\"gap-y\",\"space-md\",\"\"],\n [\"\",\"gap-y\",\"space-sm\",\"\"],\n [\"\",\"gap-y\",\"space-xl\",\"\"],\n [\"\",\"gap-y\",\"space-xs\",\"\"],\n [\"group-data-[collapsible=icon]:\",\"p\",\"space-sm\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"size\",\"action\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"size\",\"action-lg\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"size\",\"action-sm\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"w\",\"shell-sidebar-icon-padded\",\"\"],\n [\"group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:first:\",\"rounded-l\",\"inner\",\"\"],\n [\"group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:last:\",\"rounded-r\",\"inner\",\"\"],\n [\"group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:first:\",\"rounded-t\",\"inner\",\"\"],\n [\"group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:last:\",\"rounded-b\",\"inner\",\"\"],\n [\"group-data-[size=xs]/item:[&_svg:not([class*='size-'])]:\",\"size\",\"icon-sm\",\"\"],\n [\"group-data-[size=xs]/item:\",\"gap\",\"dense\",\"\"],\n [\"group-data-[size=xs]/item:\",\"gap\",\"normal\",\"\"],\n [\"group-data-[size=xs]/item:\",\"rounded\",\"inner\",\"\"],\n [\"group-data-[spacing=0]/toggle-group:\",\"px\",\"control-sm\",\"\"],\n [\"group-data-[variant=floating]:\",\"rounded\",\"radius\",\"\"],\n [\"group-has-[>input]/input-group:\",\"pb\",\"space-md\",\"\"],\n [\"group-has-[>input]/input-group:\",\"pt\",\"space-md\",\"\"],\n [\"group-has-data-[sidebar=menu-action]/menu-item:\",\"px\",\"control-sm\",\"!\"],\n [\"group-has-data-[size=lg]/avatar-group:\",\"size\",\"avatar-lg\",\"\"],\n [\"group-has-data-[size=sm]/avatar-group:\",\"size\",\"avatar-sm\",\"\"],\n [\"\",\"h\",\"action\",\"\"],\n [\"\",\"h\",\"action-lg\",\"\"],\n [\"\",\"h\",\"action-sm\",\"\"],\n [\"\",\"h\",\"action-xs\",\"\"],\n [\"\",\"h\",\"control\",\"\"],\n [\"\",\"h\",\"control-file\",\"\"],\n [\"\",\"h\",\"control-lg\",\"\"],\n [\"\",\"h\",\"control-sm\",\"\"],\n [\"\",\"h\",\"icon\",\"\"],\n [\"\",\"h\",\"icon-lg\",\"\"],\n [\"\",\"h\",\"icon-sm\",\"\"],\n [\"\",\"h\",\"shell-header\",\"\"],\n [\"has-[>[data-align=block-end]]:[&>input]:\",\"pt\",\"space-lg\",\"\"],\n [\"has-[>[data-align=block-start]]:[&>input]:\",\"pb\",\"space-lg\",\"\"],\n [\"has-[>[data-align=inline-end]]:[&>input]:\",\"pe\",\"space-sm\",\"\"],\n [\"has-[>[data-align=inline-start]]:[&>input]:\",\"ps\",\"space-sm\",\"\"],\n [\"has-[>[data-slot=alert-action]]:\",\"gap-x\",\"space-md\",\"\"],\n [\"has-[>button]:-\",\"me\",\"space-xs\",\"\"],\n [\"has-[>button]:-\",\"ms\",\"space-xs\",\"\"],\n [\"has-[>kbd]:-\",\"me\",\"space-2xs\",\"\"],\n [\"has-[>kbd]:-\",\"ms\",\"space-2xs\",\"\"],\n [\"has-[>svg]:\",\"gap-x\",\"space-md\",\"\"],\n [\"has-data-[slot=alert-dialog-media]:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"\",\"inset\",\"space-2xl\",\"\"],\n [\"\",\"inset\",\"space-2xs\",\"\"],\n [\"\",\"inset\",\"space-lg\",\"\"],\n [\"\",\"inset\",\"space-md\",\"\"],\n [\"\",\"inset\",\"space-sm\",\"\"],\n [\"\",\"inset\",\"space-xl\",\"\"],\n [\"\",\"inset\",\"space-xs\",\"\"],\n [\"\",\"inset-x\",\"space-2xl\",\"\"],\n [\"\",\"inset-x\",\"space-2xs\",\"\"],\n [\"\",\"inset-x\",\"space-lg\",\"\"],\n [\"\",\"inset-x\",\"space-md\",\"\"],\n [\"\",\"inset-x\",\"space-sm\",\"\"],\n [\"\",\"inset-x\",\"space-xl\",\"\"],\n [\"\",\"inset-x\",\"space-xs\",\"\"],\n [\"\",\"inset-y\",\"space-2xl\",\"\"],\n [\"\",\"inset-y\",\"space-2xs\",\"\"],\n [\"\",\"inset-y\",\"space-lg\",\"\"],\n [\"\",\"inset-y\",\"space-md\",\"\"],\n [\"\",\"inset-y\",\"space-sm\",\"\"],\n [\"\",\"inset-y\",\"space-xl\",\"\"],\n [\"\",\"inset-y\",\"space-xs\",\"\"],\n [\"\",\"left\",\"space-2xl\",\"\"],\n [\"\",\"left\",\"space-2xs\",\"\"],\n [\"\",\"left\",\"space-lg\",\"\"],\n [\"\",\"left\",\"space-md\",\"\"],\n [\"\",\"left\",\"space-sm\",\"\"],\n [\"\",\"left\",\"space-xl\",\"\"],\n [\"\",\"left\",\"space-xs\",\"\"],\n [\"lg:\",\"gap\",\"dense\",\"\"],\n [\"lg:\",\"gap\",\"normal\",\"\"],\n [\"lg:\",\"gap\",\"space-2xl\",\"\"],\n [\"lg:\",\"gap\",\"space-2xs\",\"\"],\n [\"lg:\",\"gap\",\"space-3xl\",\"\"],\n [\"lg:\",\"gap\",\"space-lg\",\"\"],\n [\"lg:\",\"gap\",\"space-md\",\"\"],\n [\"lg:\",\"gap\",\"space-sm\",\"\"],\n [\"lg:\",\"gap\",\"space-xl\",\"\"],\n [\"lg:\",\"gap\",\"space-xs\",\"\"],\n [\"lg:\",\"gap-x\",\"dense\",\"\"],\n [\"lg:\",\"gap-x\",\"normal\",\"\"],\n [\"lg:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"lg:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"lg:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"lg:\",\"gap-x\",\"space-lg\",\"\"],\n [\"lg:\",\"gap-x\",\"space-md\",\"\"],\n [\"lg:\",\"gap-x\",\"space-sm\",\"\"],\n [\"lg:\",\"gap-x\",\"space-xl\",\"\"],\n [\"lg:\",\"gap-x\",\"space-xs\",\"\"],\n [\"lg:\",\"gap-y\",\"dense\",\"\"],\n [\"lg:\",\"gap-y\",\"normal\",\"\"],\n [\"lg:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"lg:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"lg:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"lg:\",\"gap-y\",\"space-lg\",\"\"],\n [\"lg:\",\"gap-y\",\"space-md\",\"\"],\n [\"lg:\",\"gap-y\",\"space-sm\",\"\"],\n [\"lg:\",\"gap-y\",\"space-xl\",\"\"],\n [\"lg:\",\"gap-y\",\"space-xs\",\"\"],\n [\"lg:\",\"space-y\",\"space-2xs\",\"\"],\n [\"lg:\",\"top\",\"space-2xl\",\"\"],\n [\"\",\"m\",\"space-2xl\",\"\"],\n [\"\",\"m\",\"space-2xs\",\"\"],\n [\"\",\"m\",\"space-lg\",\"\"],\n [\"\",\"m\",\"space-md\",\"\"],\n [\"\",\"m\",\"space-sm\",\"\"],\n [\"\",\"m\",\"space-xl\",\"\"],\n [\"\",\"m\",\"space-xs\",\"\"],\n [\"max-sm:\",\"mt\",\"space-md\",\"\"],\n [\"max-sm:\",\"size\",\"action-lg\",\"\"],\n [\"max-sm:\",\"size\",\"action-sm\",\"\"],\n [\"\",\"max-w\",\"content-2xl\",\"\"],\n [\"\",\"max-w\",\"content-lg\",\"\"],\n [\"\",\"max-w\",\"content-md\",\"\"],\n [\"\",\"max-w\",\"content-sm\",\"\"],\n [\"\",\"max-w\",\"content-xl\",\"\"],\n [\"\",\"mb\",\"space-2xl\",\"\"],\n [\"\",\"mb\",\"space-2xs\",\"\"],\n [\"\",\"mb\",\"space-lg\",\"\"],\n [\"\",\"mb\",\"space-md\",\"\"],\n [\"\",\"mb\",\"space-sm\",\"\"],\n [\"\",\"mb\",\"space-xl\",\"\"],\n [\"\",\"mb\",\"space-xs\",\"\"],\n [\"md:\",\"gap\",\"dense\",\"\"],\n [\"md:\",\"gap\",\"normal\",\"\"],\n [\"md:\",\"gap\",\"space-2xl\",\"\"],\n [\"md:\",\"gap\",\"space-2xs\",\"\"],\n [\"md:\",\"gap\",\"space-3xl\",\"\"],\n [\"md:\",\"gap\",\"space-lg\",\"\"],\n [\"md:\",\"gap\",\"space-md\",\"\"],\n [\"md:\",\"gap\",\"space-sm\",\"\"],\n [\"md:\",\"gap\",\"space-xl\",\"\"],\n [\"md:\",\"gap\",\"space-xs\",\"\"],\n [\"md:\",\"gap-x\",\"dense\",\"\"],\n [\"md:\",\"gap-x\",\"normal\",\"\"],\n [\"md:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"md:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"md:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"md:\",\"gap-x\",\"space-lg\",\"\"],\n [\"md:\",\"gap-x\",\"space-md\",\"\"],\n [\"md:\",\"gap-x\",\"space-sm\",\"\"],\n [\"md:\",\"gap-x\",\"space-xl\",\"\"],\n [\"md:\",\"gap-x\",\"space-xs\",\"\"],\n [\"md:\",\"gap-y\",\"dense\",\"\"],\n [\"md:\",\"gap-y\",\"normal\",\"\"],\n [\"md:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"md:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"md:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"md:\",\"gap-y\",\"space-lg\",\"\"],\n [\"md:\",\"gap-y\",\"space-md\",\"\"],\n [\"md:\",\"gap-y\",\"space-sm\",\"\"],\n [\"md:\",\"gap-y\",\"space-xl\",\"\"],\n [\"md:\",\"gap-y\",\"space-xs\",\"\"],\n [\"md:\",\"m\",\"space-md\",\"\"],\n [\"md:\",\"p\",\"surface-lg\",\"\"],\n [\"md:peer-data-[variant=inset]:\",\"m\",\"space-md\",\"\"],\n [\"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:\",\"ml\",\"space-md\",\"\"],\n [\"md:peer-data-[variant=inset]:\",\"rounded\",\"radius\",\"\"],\n [\"md:\",\"rounded\",\"radius\",\"\"],\n [\"\",\"me\",\"space-2xl\",\"\"],\n [\"\",\"me\",\"space-2xs\",\"\"],\n [\"\",\"me\",\"space-lg\",\"\"],\n [\"\",\"me\",\"space-md\",\"\"],\n [\"\",\"me\",\"space-sm\",\"\"],\n [\"\",\"me\",\"space-xl\",\"\"],\n [\"\",\"me\",\"space-xs\",\"\"],\n [\"min-[480px]:\",\"gap\",\"space-md\",\"\"],\n [\"min-[480px]:\",\"px\",\"control\",\"\"],\n [\"\",\"min-h\",\"action\",\"\"],\n [\"\",\"min-h\",\"action-lg\",\"\"],\n [\"\",\"min-h\",\"action-sm\",\"\"],\n [\"\",\"min-h\",\"action-xs\",\"\"],\n [\"\",\"min-h\",\"control\",\"\"],\n [\"\",\"min-h\",\"control-lg\",\"\"],\n [\"\",\"min-h\",\"control-sm\",\"\"],\n [\"\",\"min-h\",\"icon\",\"\"],\n [\"\",\"min-h\",\"shell-header\",\"\"],\n [\"\",\"min-h\",\"space-lg\",\"\"],\n [\"\",\"min-h\",\"textarea\",\"\"],\n [\"\",\"min-h\",\"textarea-sm\",\"\"],\n [\"\",\"min-w\",\"action\",\"\"],\n [\"\",\"min-w\",\"action-xs\",\"\"],\n [\"\",\"min-w\",\"space-lg\",\"\"],\n [\"\",\"ml\",\"control-gap-small\",\"\"],\n [\"\",\"ml\",\"space-2xl\",\"\"],\n [\"\",\"ml\",\"space-2xs\",\"\"],\n [\"\",\"ml\",\"space-lg\",\"\"],\n [\"\",\"ml\",\"space-md\",\"\"],\n [\"\",\"ml\",\"space-sm\",\"\"],\n [\"\",\"ml\",\"space-xl\",\"\"],\n [\"\",\"ml\",\"space-xs\",\"\"],\n [\"\",\"mr\",\"control-gap\",\"\"],\n [\"\",\"mr\",\"space-2xl\",\"\"],\n [\"\",\"mr\",\"space-2xs\",\"\"],\n [\"\",\"mr\",\"space-lg\",\"\"],\n [\"\",\"mr\",\"space-md\",\"\"],\n [\"\",\"mr\",\"space-sm\",\"\"],\n [\"\",\"mr\",\"space-xl\",\"\"],\n [\"\",\"mr\",\"space-xs\",\"\"],\n [\"\",\"ms\",\"space-2xl\",\"\"],\n [\"\",\"ms\",\"space-2xs\",\"\"],\n [\"\",\"ms\",\"space-lg\",\"\"],\n [\"\",\"ms\",\"space-md\",\"\"],\n [\"\",\"ms\",\"space-sm\",\"\"],\n [\"\",\"ms\",\"space-xl\",\"\"],\n [\"\",\"ms\",\"space-xs\",\"\"],\n [\"\",\"mt\",\"space-2xl\",\"\"],\n [\"\",\"mt\",\"space-2xs\",\"\"],\n [\"\",\"mt\",\"space-lg\",\"\"],\n [\"\",\"mt\",\"space-md\",\"\"],\n [\"\",\"mt\",\"space-sm\",\"\"],\n [\"\",\"mt\",\"space-xl\",\"\"],\n [\"\",\"mt\",\"space-xs\",\"\"],\n [\"\",\"mx\",\"space-2xl\",\"\"],\n [\"\",\"mx\",\"space-2xs\",\"\"],\n [\"\",\"mx\",\"space-lg\",\"\"],\n [\"\",\"mx\",\"space-md\",\"\"],\n [\"\",\"mx\",\"space-sm\",\"\"],\n [\"\",\"mx\",\"space-xl\",\"\"],\n [\"\",\"mx\",\"space-xs\",\"\"],\n [\"\",\"my\",\"space-2xl\",\"\"],\n [\"\",\"my\",\"space-2xs\",\"\"],\n [\"\",\"my\",\"space-lg\",\"\"],\n [\"\",\"my\",\"space-md\",\"\"],\n [\"\",\"my\",\"space-sm\",\"\"],\n [\"\",\"my\",\"space-xl\",\"\"],\n [\"\",\"my\",\"space-xs\",\"\"],\n [\"\",\"p\",\"space-2xl\",\"\"],\n [\"\",\"p\",\"space-2xs\",\"\"],\n [\"\",\"p\",\"space-lg\",\"\"],\n [\"\",\"p\",\"space-md\",\"\"],\n [\"\",\"p\",\"space-sm\",\"\"],\n [\"\",\"p\",\"space-xl\",\"\"],\n [\"\",\"p\",\"space-xs\",\"\"],\n [\"\",\"p\",\"surface\",\"\"],\n [\"\",\"p\",\"surface-lg\",\"\"],\n [\"\",\"p\",\"surface-xs\",\"\"],\n [\"\",\"pb\",\"space-2xl\",\"\"],\n [\"\",\"pb\",\"space-2xs\",\"\"],\n [\"\",\"pb\",\"space-lg\",\"\"],\n [\"\",\"pb\",\"space-md\",\"\"],\n [\"\",\"pb\",\"space-sm\",\"\"],\n [\"\",\"pb\",\"space-xl\",\"\"],\n [\"\",\"pb\",\"space-xs\",\"\"],\n [\"\",\"pb\",\"surface\",\"\"],\n [\"\",\"pb\",\"surface-lg\",\"\"],\n [\"\",\"pb\",\"surface-xs\",\"\"],\n [\"\",\"pe\",\"action-sm\",\"\"],\n [\"\",\"pe\",\"control\",\"\"],\n [\"\",\"pe\",\"control-actions\",\"\"],\n [\"\",\"pe\",\"control-actions-sm\",\"\"],\n [\"\",\"pe\",\"control-addon\",\"\"],\n [\"\",\"pe\",\"control-addon-sm\",\"\"],\n [\"\",\"pe\",\"control-count\",\"\"],\n [\"\",\"pe\",\"control-count-sm\",\"\"],\n [\"\",\"pe\",\"control-icon\",\"\"],\n [\"\",\"pe\",\"control-icon-sm\",\"\"],\n [\"\",\"pe\",\"control-sm\",\"\"],\n [\"\",\"pe\",\"control-xs\",\"\"],\n [\"\",\"pe\",\"row-x\",\"\"],\n [\"\",\"pe\",\"space-2xl\",\"\"],\n [\"\",\"pe\",\"space-2xs\",\"\"],\n [\"\",\"pe\",\"space-lg\",\"\"],\n [\"\",\"pe\",\"space-md\",\"\"],\n [\"\",\"pe\",\"space-sm\",\"\"],\n [\"\",\"pe\",\"space-xl\",\"\"],\n [\"\",\"pe\",\"space-xs\",\"\"],\n [\"\",\"pe\",\"surface\",\"\"],\n [\"\",\"pe\",\"surface-lg\",\"\"],\n [\"\",\"pe\",\"surface-xs\",\"\"],\n [\"peer-data-[sidebar=menu-sub-button]/menu-sub-button:\",\"top\",\"action-sm-center\",\"!\"],\n [\"peer-data-[sidebar=menu-sub-button]/menu-sub-button:\",\"top\",\"action-xs-center\",\"!\"],\n [\"peer-data-[size=lg]/menu-button:\",\"top\",\"action-lg-center\",\"!\"],\n [\"peer-data-[size=sm]/menu-button:\",\"top\",\"action-sm-center\",\"!\"],\n [\"\",\"pl\",\"row-x\",\"\"],\n [\"\",\"pl\",\"space-2xl\",\"\"],\n [\"\",\"pl\",\"space-2xs\",\"\"],\n [\"\",\"pl\",\"space-lg\",\"\"],\n [\"\",\"pl\",\"space-md\",\"\"],\n [\"\",\"pl\",\"space-sm\",\"\"],\n [\"\",\"pl\",\"space-xl\",\"\"],\n [\"\",\"pl\",\"space-xs\",\"\"],\n [\"\",\"pl\",\"surface\",\"\"],\n [\"\",\"pl\",\"surface-lg\",\"\"],\n [\"\",\"pl\",\"surface-xs\",\"\"],\n [\"\",\"pr\",\"row-x\",\"\"],\n [\"\",\"pr\",\"space-2xl\",\"\"],\n [\"\",\"pr\",\"space-2xs\",\"\"],\n [\"\",\"pr\",\"space-lg\",\"\"],\n [\"\",\"pr\",\"space-md\",\"\"],\n [\"\",\"pr\",\"space-sm\",\"\"],\n [\"\",\"pr\",\"space-xl\",\"\"],\n [\"\",\"pr\",\"space-xs\",\"\"],\n [\"\",\"pr\",\"surface\",\"\"],\n [\"\",\"pr\",\"surface-lg\",\"\"],\n [\"\",\"pr\",\"surface-xs\",\"\"],\n [\"\",\"ps\",\"control\",\"\"],\n [\"\",\"ps\",\"control-addon\",\"\"],\n [\"\",\"ps\",\"control-addon-sm\",\"\"],\n [\"\",\"ps\",\"control-icon\",\"\"],\n [\"\",\"ps\",\"control-icon-sm\",\"\"],\n [\"\",\"ps\",\"control-sm\",\"\"],\n [\"\",\"ps\",\"control-xs\",\"\"],\n [\"\",\"ps\",\"row-x\",\"\"],\n [\"\",\"ps\",\"space-2xl\",\"\"],\n [\"\",\"ps\",\"space-2xs\",\"\"],\n [\"\",\"ps\",\"space-lg\",\"\"],\n [\"\",\"ps\",\"space-md\",\"\"],\n [\"\",\"ps\",\"space-sm\",\"\"],\n [\"\",\"ps\",\"space-xl\",\"\"],\n [\"\",\"ps\",\"space-xs\",\"\"],\n [\"\",\"ps\",\"surface\",\"\"],\n [\"\",\"ps\",\"surface-lg\",\"\"],\n [\"\",\"ps\",\"surface-xs\",\"\"],\n [\"\",\"pt\",\"space-2xl\",\"\"],\n [\"\",\"pt\",\"space-2xs\",\"\"],\n [\"\",\"pt\",\"space-lg\",\"\"],\n [\"\",\"pt\",\"space-md\",\"\"],\n [\"\",\"pt\",\"space-sm\",\"\"],\n [\"\",\"pt\",\"space-xl\",\"\"],\n [\"\",\"pt\",\"space-xs\",\"\"],\n [\"\",\"pt\",\"surface\",\"\"],\n [\"\",\"pt\",\"surface-lg\",\"\"],\n [\"\",\"pt\",\"surface-xs\",\"\"],\n [\"\",\"px\",\"control\",\"\"],\n [\"\",\"px\",\"control-sm\",\"\"],\n [\"\",\"px\",\"control-xs\",\"\"],\n [\"\",\"px\",\"row-x\",\"\"],\n [\"\",\"px\",\"space-2xl\",\"\"],\n [\"\",\"px\",\"space-2xs\",\"\"],\n [\"\",\"px\",\"space-lg\",\"\"],\n [\"\",\"px\",\"space-md\",\"\"],\n [\"\",\"px\",\"space-sm\",\"\"],\n [\"\",\"px\",\"space-xl\",\"\"],\n [\"\",\"px\",\"space-xs\",\"\"],\n [\"\",\"px\",\"surface\",\"\"],\n [\"\",\"px\",\"surface-lg\",\"\"],\n [\"\",\"px\",\"surface-xs\",\"\"],\n [\"\",\"py\",\"control-y-offset\",\"\"],\n [\"\",\"py\",\"row-y\",\"\"],\n [\"\",\"py\",\"row-y-lg\",\"\"],\n [\"\",\"py\",\"row-y-sm\",\"\"],\n [\"\",\"py\",\"space-2xl\",\"\"],\n [\"\",\"py\",\"space-2xs\",\"\"],\n [\"\",\"py\",\"space-lg\",\"\"],\n [\"\",\"py\",\"space-md\",\"\"],\n [\"\",\"py\",\"space-sm\",\"\"],\n [\"\",\"py\",\"space-xl\",\"\"],\n [\"\",\"py\",\"space-xs\",\"\"],\n [\"\",\"py\",\"surface\",\"\"],\n [\"\",\"py\",\"surface-lg\",\"\"],\n [\"\",\"py\",\"surface-xs\",\"\"],\n [\"\",\"right\",\"control-px\",\"\"],\n [\"\",\"right\",\"space-2xl\",\"\"],\n [\"\",\"right\",\"space-2xs\",\"\"],\n [\"\",\"right\",\"space-lg\",\"\"],\n [\"\",\"right\",\"space-md\",\"\"],\n [\"\",\"right\",\"space-sm\",\"\"],\n [\"\",\"right\",\"space-xl\",\"\"],\n [\"\",\"right\",\"space-xs\",\"\"],\n [\"\",\"rounded-b\",\"radius\",\"\"],\n [\"\",\"rounded-e\",\"inner\",\"\"],\n [\"\",\"rounded\",\"inner\",\"\"],\n [\"\",\"rounded\",\"radius\",\"\"],\n [\"\",\"rounded\",\"radius-lg\",\"\"],\n [\"\",\"rounded\",\"radius-md\",\"\"],\n [\"\",\"rounded\",\"radius-sm\",\"\"],\n [\"\",\"rounded\",\"radius-xl\",\"\"],\n [\"\",\"rounded\",\"radius-xs\",\"\"],\n [\"\",\"rounded-s\",\"inner\",\"\"],\n [\"\",\"rounded-t\",\"radius\",\"\"],\n [\"\",\"rounded-t\",\"radius-sm\",\"\"],\n [\"\",\"size\",\"action\",\"\"],\n [\"\",\"size\",\"action-lg\",\"\"],\n [\"\",\"size\",\"action-sm\",\"\"],\n [\"\",\"size\",\"action-xs\",\"\"],\n [\"\",\"size\",\"avatar\",\"\"],\n [\"\",\"size\",\"avatar-lg\",\"\"],\n [\"\",\"size\",\"avatar-sm\",\"\"],\n [\"\",\"size\",\"control\",\"\"],\n [\"\",\"size\",\"control-clear\",\"\"],\n [\"\",\"size\",\"control-clear-icon\",\"\"],\n [\"\",\"size\",\"control-lg\",\"\"],\n [\"\",\"size\",\"control-sm\",\"\"],\n [\"\",\"size\",\"icon\",\"\"],\n [\"\",\"size\",\"icon-lg\",\"\"],\n [\"\",\"size\",\"icon-md\",\"\"],\n [\"\",\"size\",\"icon-sm\",\"\"],\n [\"\",\"size\",\"shell-header-control\",\"\"],\n [\"\",\"size\",\"upload-avatar\",\"\"],\n [\"\",\"size\",\"upload-avatar-large\",\"\"],\n [\"\",\"size\",\"upload-avatar-small\",\"\"],\n [\"sm:!\",\"pe\",\"control\",\"\"],\n [\"sm:!\",\"pe\",\"control-sm\",\"\"],\n [\"sm:!\",\"ps\",\"control\",\"\"],\n [\"sm:!\",\"ps\",\"control-sm\",\"\"],\n [\"sm:\",\"gap\",\"dense\",\"\"],\n [\"sm:\",\"gap\",\"normal\",\"\"],\n [\"sm:\",\"gap\",\"space-2xl\",\"\"],\n [\"sm:\",\"gap\",\"space-2xs\",\"\"],\n [\"sm:\",\"gap\",\"space-3xl\",\"\"],\n [\"sm:\",\"gap\",\"space-lg\",\"\"],\n [\"sm:\",\"gap\",\"space-md\",\"\"],\n [\"sm:\",\"gap\",\"space-sm\",\"\"],\n [\"sm:\",\"gap\",\"space-xl\",\"\"],\n [\"sm:\",\"gap\",\"space-xs\",\"\"],\n [\"sm:\",\"gap-x\",\"dense\",\"\"],\n [\"sm:\",\"gap-x\",\"normal\",\"\"],\n [\"sm:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"sm:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"sm:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"sm:\",\"gap-x\",\"space-lg\",\"\"],\n [\"sm:\",\"gap-x\",\"space-md\",\"\"],\n [\"sm:\",\"gap-x\",\"space-sm\",\"\"],\n [\"sm:\",\"gap-x\",\"space-xl\",\"\"],\n [\"sm:\",\"gap-x\",\"space-xs\",\"\"],\n [\"sm:\",\"gap-y\",\"dense\",\"\"],\n [\"sm:\",\"gap-y\",\"normal\",\"\"],\n [\"sm:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"sm:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"sm:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"sm:\",\"gap-y\",\"space-lg\",\"\"],\n [\"sm:\",\"gap-y\",\"space-md\",\"\"],\n [\"sm:\",\"gap-y\",\"space-sm\",\"\"],\n [\"sm:\",\"gap-y\",\"space-xl\",\"\"],\n [\"sm:\",\"gap-y\",\"space-xs\",\"\"],\n [\"sm:\",\"px\",\"control-sm\",\"\"],\n [\"sm:\",\"px\",\"surface-lg\",\"\"],\n [\"\",\"space-x\",\"space-md\",\"\"],\n [\"\",\"space-y\",\"space-2xl\",\"\"],\n [\"\",\"space-y\",\"space-2xs\",\"\"],\n [\"\",\"space-y\",\"space-lg\",\"\"],\n [\"\",\"space-y\",\"space-md\",\"\"],\n [\"\",\"space-y\",\"space-sm\",\"\"],\n [\"\",\"space-y\",\"space-xl\",\"\"],\n [\"\",\"space-y\",\"space-xs\",\"\"],\n [\"\",\"start\",\"space-2xl\",\"\"],\n [\"\",\"start\",\"space-2xs\",\"\"],\n [\"\",\"start\",\"space-lg\",\"\"],\n [\"\",\"start\",\"space-md\",\"\"],\n [\"\",\"start\",\"space-sm\",\"\"],\n [\"\",\"start\",\"space-xl\",\"\"],\n [\"\",\"start\",\"space-xs\",\"\"],\n [\"starting:\",\"translate-y\",\"space-lg\",\"\"],\n [\"\",\"text\",\"pxs\",\"\"],\n [\"\",\"text\",\"xxs\",\"\"],\n [\"\",\"top\",\"action-center\",\"\"],\n [\"\",\"top\",\"action-center\",\"!\"],\n [\"\",\"top\",\"action-lg-center\",\"\"],\n [\"\",\"top\",\"action-sm-center\",\"\"],\n [\"\",\"top\",\"action-xs-center\",\"\"],\n [\"\",\"top\",\"control-y-offset\",\"\"],\n [\"\",\"top\",\"shell-header\",\"\"],\n [\"\",\"top\",\"space-2xl\",\"\"],\n [\"\",\"top\",\"space-2xs\",\"\"],\n [\"\",\"top\",\"space-lg\",\"\"],\n [\"\",\"top\",\"space-md\",\"\"],\n [\"\",\"top\",\"space-sm\",\"\"],\n [\"\",\"top\",\"space-xl\",\"\"],\n [\"\",\"top\",\"space-xs\",\"\"],\n [\"\",\"w\",\"action-sm\",\"\"],\n [\"\",\"w\",\"control\",\"\"],\n [\"\",\"w\",\"control-clear\",\"\"],\n [\"\",\"w\",\"control-lg\",\"\"],\n [\"\",\"w\",\"control-sm\",\"\"],\n [\"\",\"w\",\"shell-sidebar\",\"\"],\n [\"\",\"w\",\"shell-sidebar-icon-padded\",\"\"],\n [\"xl:\",\"gap\",\"dense\",\"\"],\n [\"xl:\",\"gap\",\"normal\",\"\"],\n [\"xl:\",\"gap\",\"space-2xl\",\"\"],\n [\"xl:\",\"gap\",\"space-2xs\",\"\"],\n [\"xl:\",\"gap\",\"space-3xl\",\"\"],\n [\"xl:\",\"gap\",\"space-lg\",\"\"],\n [\"xl:\",\"gap\",\"space-md\",\"\"],\n [\"xl:\",\"gap\",\"space-sm\",\"\"],\n [\"xl:\",\"gap\",\"space-xl\",\"\"],\n [\"xl:\",\"gap\",\"space-xs\",\"\"],\n [\"xl:\",\"gap-x\",\"dense\",\"\"],\n [\"xl:\",\"gap-x\",\"normal\",\"\"],\n [\"xl:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"xl:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"xl:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"xl:\",\"gap-x\",\"space-lg\",\"\"],\n [\"xl:\",\"gap-x\",\"space-md\",\"\"],\n [\"xl:\",\"gap-x\",\"space-sm\",\"\"],\n [\"xl:\",\"gap-x\",\"space-xl\",\"\"],\n [\"xl:\",\"gap-x\",\"space-xs\",\"\"],\n [\"xl:\",\"gap-y\",\"dense\",\"\"],\n [\"xl:\",\"gap-y\",\"normal\",\"\"],\n [\"xl:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"xl:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"xl:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"xl:\",\"gap-y\",\"space-lg\",\"\"],\n [\"xl:\",\"gap-y\",\"space-md\",\"\"],\n [\"xl:\",\"gap-y\",\"space-sm\",\"\"],\n [\"xl:\",\"gap-y\",\"space-xl\",\"\"],\n [\"xl:\",\"gap-y\",\"space-xs\",\"\"]\n];\n","import { clsx, type ClassValue } from \"clsx\"\nimport { extendTailwindMerge } from \"tailwind-merge\"\n\nimport { tokenClassGroups, tokenCandidates } from \"./token-merge.generated\"\n\n/**\n * Extend tailwind-merge so it knows our token-backed utilities\n * (`text-xxs`, `text-sm`, `h-control`, `px-control`, etc. defined in\n * css/token layers against CSS variables) belong to the same groups as\n * native Tailwind utilities.\n *\n * Without this, twMerge either groups custom text sizes with text-color\n * utilities or fails to dedupe token spacing against primitive defaults.\n */\nconst twMerge = extendTailwindMerge<\"arbitrary..font-size\">({\n\textend: {\n\t\tclassGroups: tokenClassGroups,\n\t\tconflictingClassGroups: {\n\t\t\t\"font-size\": [\"arbitrary..font-size\"],\n\t\t\t\"arbitrary..font-size\": [\"font-size\"],\n\t\t},\n\t},\n})\n\n/*\n * Rule 24's DOM contract: every public component stamps a\n * `{kebab-name}--component` hook, and named regions add `--header`, `--title`\n * and friends. Those are structural markers for consumers to select on, not\n * utilities — but tailwind-merge only sees a string, so a hook like\n * `text-button--component` reads as a `text-*` colour utility and annihilates\n * against the real colour beside it. Whichever came second won, silently:\n * TextButton lost its hook, TextLink lost its type colour.\n *\n * So hooks never reach tailwind-merge. The shape is deliberately strict —\n * kebab segments either side of one `--`, and nothing else — which excludes\n * every utility that merely contains dashes: `bg-[var(--brand)]` and\n * `text-(--brand)` carry brackets or parens, variants carry a colon, and\n * negative utilities lead with `-`.\n */\nconst BEM_HOOK = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*--[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/\nconst shippedTokenCandidates = new Set(tokenCandidates.map(([before, prefix, suffix, after]) => `${before}${prefix}-${suffix}${after}`))\nconst tokenUtilities = new Set(Object.values(tokenClassGroups).flatMap(groups => groups.flatMap(group => Object.entries(group).flatMap(([prefix, suffixes]) => suffixes.map(suffix => `${prefix}-${suffix}`)))))\n\nfunction isUnavailableTokenCandidate(candidate: string) {\n\tlet depth = 0\n\tlet start = 0\n\tfor (let index = 0; index < candidate.length; index++) {\n\t\tif (candidate[index] === '[' || candidate[index] === '(') depth++\n\t\telse if (candidate[index] === ']' || candidate[index] === ')') depth--\n\t\telse if (candidate[index] === ':' && depth === 0) start = index + 1\n\t}\n\tconst utility = candidate.slice(start).replace(/^!?-?/, '').replace(/!$/, '')\n\treturn tokenUtilities.has(utility) && !shippedTokenCandidates.has(candidate)\n}\n\nexport function cn(...inputs: ClassValue[]) {\n\tconst classes = clsx(inputs).split(/\\s+/).filter(Boolean)\n\tconst hooks = new Set(classes.filter((entry) => BEM_HOOK.test(entry)))\n\tconst opaque = new Set(classes.filter(isUnavailableTokenCandidate))\n\tif (hooks.size === 0 && opaque.size === 0) return twMerge(classes.join(' '))\n\n\t// Merge only real utilities, then preserve their last occurrence positions.\n\t// Keeping an earlier duplicate can move leading-none before a later text\n\t// size, making another cn() call discard a line height that already won.\n\t// Hooks keep their first position independently of utility precedence.\n\tconst survivors = new Set(\n\t\ttwMerge(classes.filter((entry) => !hooks.has(entry) && !opaque.has(entry)).join(' ')).split(/\\s+/).filter(Boolean),\n\t)\n\tconst lastUtilityIndex = new Map(classes.map((entry, index) => [entry, index]))\n\tconst emitted = new Set<string>()\n\n\treturn classes\n\t\t.filter((entry, index) => {\n\t\t\tif (emitted.has(entry)) return false\n\t\t\tif (!hooks.has(entry) && !opaque.has(entry) && !survivors.has(entry)) return false\n\t\t\tif (!hooks.has(entry) && lastUtilityIndex.get(entry) !== index) return false\n\t\t\temitted.add(entry)\n\t\t\treturn true\n\t\t})\n\t\t.join(' ')\n}\n"],"mappings":";;;AACA,IAAaA,IAAmB;CAC9BC,KAAO,CACL,EACEA,KAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,OAAS,CACP,EACEA,OAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,SAAW,CACT,EACEA,SAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,MAAQ,CACN,EACEA,MAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW,CACT,YACA,UACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,KAAO,CACL,EACEA,KAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,OAAS,CACP,EACEA,OAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,QAAU,CACR,EACEA,QAAU;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,KAAO,CACL,EACEA,KAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,aAAa,CACX,EACEC,MAAQ,CACN,OACA,KACF,EACF,CACF;CACA,eAAe,CACb,EACEC,MAAQ,CACN,SACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa,CACX,OACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa,CACX,OACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa;EACX;EACA;EACA;CACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa,CACX,SACA,QACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,MAAQ,CACN,EACEA,MAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"value-inputs-TAYMX111.js","names":["React","record","baseui.Select","baseui.SelectTrigger","baseui.SelectValue","React","React","SliderPrimitive","React","useTypographyConfig","useDensityConfig","cn","TextButton","Text","textSizes","focusRecipes","Stack","sliderTrackThickness","collectionRowClasses","collectionRecipes","CollectionLabel","Badge","fieldStateRecipes","fieldAffordanceRecipes","selectToggleRecipes","FieldClearGlyph","editableTextSizeClasses","resolveFormControlSize","formControlHorizontalPaddingClasses","formControlMinHeightClasses","formFieldTriggerClasses","formControlSizeClasses","Input","DatePicker","Popover","PopoverContent","SelectTrigger","SelectPopupContent","SelectPopupGroup","Select","SelectPopupItem","SelectValue","React$1","defaultTagsInputStrings","current","max","tag","entries","isTrue","value","TagsInput","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaInvalid","ariaRequired","stringsProp","size","defaultScale","placeholderStrings","useStrings","placeholder","strings","isControlled","internalValue","setInternalValue","useState","defaultValue","tags","draft","setDraft","rejectedDraft","setRejectedDraft","announcement","setAnnouncement","open","setOpen","selectedIndex","setSelectedIndex","refocusPosition","setRefocusPosition","inputRef","useRef","shellRef","listId","countId","atLimit","maxTags","hasRecommendations","recommendations","getDisplayValue","useCallback","field","candidate","createTagFromString","input","normalizeText","caseSensitive","text","isDuplicate","list","normalizedRecommendations","useMemo","rec","entry","index","label","filteredRecommendations","search","existingValues","display","allowDuplicates","popupOpen","disabled","activeIndex","sortList","a","b","commit","next","onValueChange","addMany","rejected","raw","candidates","isText","minLength","maxLength","validate","sortTags","submit","rest","delimiter","seen","occurrence","displayEntries","removeTag","i","removeAndRefocus","buttons","handleInputChange","nextDraft","handleKeyDown","prev","handlePaste","start","end","parts","handleBlur","addOnBlur","clearAll","removeLabel","badgeSize","defaultRenderTag","onRemove","inputInvalid","invalid","overLimit","countMax","showMaxTags","showCount","showClear","showClearAll","describedBy","className","name","details","event","renderTag","isPicked","idx","defaultTextSize","Check","defaultPhoneInputStrings","COUNTRY_PREFIX_MAP","DEFAULT_COUNTRY_PREFIXES","normalizePrefixInput","normalizePrefixes","inputs","p","normalizePhone","normalized","selectedPrefix","resolvePrefixToDialCode","prefix","normalizedPrefixes","PhoneInputImpl","controlledPrefix","sizeProp","props","basePrefixes","prefixes","resolvedDefaultPrefix","defaultPrefix","internalPrefix","setInternalPrefix","selectedIso","setSelectedIso","initial","option","isPrefixControlled","known","currentPrefixOption","handlePrefixChange","newPrefix","item","onPrefixChange","handleChange","onChange","stripped","national","normalizeOnBlur","nextValue","onBlur","disablePrefixSelector","staticPrefix","forwardedRef","prefixWidth","prefixPlaceholder","prefixOption","showPrefixInDropdown","showCountryName","PhoneInput","memo","defaultColorInputStrings","pickerSizeClasses","normalizeHexColor","part","roundColorChannel","rounded","precision","hexColorToOklch","red","green","blue","offset","channel","lRoot","mRoot","sRoot","lightness","chroma","hue","renderedColorToHex","computedColor","element","directHex","fallback","canvas","context","alpha","ColorInput","resolvedValue","resolvedPreview","previewValue","initialPickerValue","pickerValue","setPickerValue","swatchRef","publishChange","readOnly","pickerAriaLabel","inputStrings","defaultSliderStrings","SliderFieldImpl","generatedId","useId","resolvedId","id","resolvedName","resolvedAriaLabel","handleValueChange","singleValue","newValue","handleValueCommitted","onValueCommitted","displayValue","showValue","currentValue","min","formatValue","unit","sliderValue","sliderDefaultValue","Slider","SliderField","DateTimeInput","forwardRef","dateValue","output","stepMinutes"],"sources":["../src/components/base/value-inputs/tags-input.tsx","../src/components/base/value-inputs/phone-input.tsx","../src/components/base/value-inputs/color-input.tsx","../src/components/base/value-inputs/slider.tsx","../src/components/base/value-inputs/date-time-input.tsx"],"sourcesContent":["/**\n * TagsInput — generic typed tag picker. Chips and the entry field share one\n * field shell; typed or pasted text splits on `delimiter`, and an optional\n * recommendation list suggests values. Validation, duplicate and `maxTags`\n * refusals keep the rejected text in the draft, mark the field invalid until it\n * is edited, and are announced. Supports both string tags and complex objects\n * (via the `field` prop pointing at the display key). Works controlled\n * (`value`) or uncontrolled (`defaultValue`); `name` serialises one hidden\n * `name[]` input per tag for plain forms. Strings overridable via `strings`.\n *\n * Ref note: `TagsInput` is generic over `T` and does not use `forwardRef`\n * (generic-+-forwardRef is awkward in TS). Consumers wire RHF via `value` /\n * `onValueChange` props directly. To focus the inner input from a parent, render\n * a wrapping element with `data-tags-input` and call `.querySelector('input').focus()`.\n */\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\nimport { useState, useRef, useCallback, useMemo } from 'react';\nimport { TextButton } from '../buttons';\nimport { Badge } from '../badge';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\nimport { textSizes } from '../../typography/text.styles';\nimport { useDensityConfig, useTypographyConfig } from '../../../lib/ui-provider';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { editableTextSizeClasses } from '../../../lib/editable-text-recipe';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { Popover, PopoverContent } from '../popover';\nimport { collectionRecipes, collectionRowClasses } from '../popover/popover.recipes';\nimport { CollectionLabel } from '../popover/collection-content';\nimport { FieldClearGlyph, fieldAffordanceRecipes } from '../../../lib/field-affordance-recipes';\nimport {\n\tformControlHorizontalPaddingClasses,\n\tformControlMinHeightClasses,\n\tresolveFormControlSize,\n} from '../forms/form-sizing';\n\nexport interface TagsInputStrings {\n\tplaceholder: string;\n\temptyRecommendations: string;\n\tclearAll: string;\n\t/** Summary line shown when `maxTags` + `showMaxTags` are set. Receives\n\t * `current` (number of tags entered) and `max` (the limit). The\n\t * default is English `\"{current} / {max} tags\"` — override for i18n. */\n\tsummary: (current: number, max: number) => string;\n\t/** Accessible name of a tag's remove action. Defaults to `\"Remove {tag}\"`. */\n\tremoveTag?: (tag: string) => string;\n\t/**\n\t * Announced when a commit leaves entries it could not add (too short or\n\t * long, duplicate, refused by `validate`, or over `maxTags`). Receives the\n\t * rejected entries joined with commas. Defaults to `\"Not added: {entries}.\"`.\n\t */\n\tnotAdded?: (entries: string) => string;\n\t/** Accessible name of the recommendation list. Defaults to `\"Suggested tags\"`. */\n\trecommendationsLabel?: string;\n}\n\nexport const defaultTagsInputStrings: TagsInputStrings = {\n\tplaceholder: 'Add a tag…',\n\temptyRecommendations: 'No recommendations found.',\n\tclearAll: 'Clear all',\n\tsummary: (current, max) => `${current} / ${max} tags`,\n\tremoveTag: (tag) => `Remove ${tag}`,\n\tnotAdded: (entries) => `Not added: ${entries}.`,\n\trecommendationsLabel: 'Suggested tags',\n};\n\nexport interface TagsInputProps<T = string> {\n\t/** ID of the editable input, for an external field label. */\n\tid?: string;\n\t/** Names the editable input when no visible label points at it. */\n\t'aria-label'?: string;\n\t/** IDs of the elements that label the editable input. */\n\t'aria-labelledby'?: string;\n\t/** Additional supporting/error descriptions associated with the editable control. */\n\t'aria-describedby'?: string;\n\t/** Marks the field invalid, like `invalid`; a FormField or form library may inject it. */\n\t'aria-invalid'?: boolean | 'true' | 'false';\n\t/** Marks the editable input as required for assistive tech. */\n\t'aria-required'?: boolean | 'true' | 'false';\n\n\t\t/** Current value (array of T). Pass it to control the field. */\n\t\tvalue?: T[];\n\n\t\t/** Initial value when uncontrolled. Ignored when `value` is set. */\n\t\tdefaultValue?: T[];\n\n\t\t/** Callback when value changes */\n\t\tonValueChange?: (value: T[]) => void;\n\n\t\t/** Form field name. Each tag is serialised as a hidden `name[]` input (its display value), disabled with the field. */\n\t\tname?: string;\n\n\t\t/** Placeholder text for the input, shown while there are no tags. */\n\t\tplaceholder?: string;\n\n\t\t/** Array of recommendations to suggest */\n\t\trecommendations?: Array<T | { value: T; label: string }>;\n\n\t\t/** Maximum number of tags allowed. Entry is refused and announced once it is reached; the input stays focusable. */\n\t\tmaxTags?: number;\n\n\t\t/** Shows the `strings.summary` count under the field. Requires `maxTags`. */\n\t\tshowMaxTags?: boolean;\n\n\t\t/** Whether duplicate tags are allowed */\n\t\tallowDuplicates?: boolean;\n\n\t\t/** Custom validation function. Runs after the length, limit and duplicate checks. */\n\t\tvalidate?: (value: T) => boolean;\n\n\t\t/** Whether the input is disabled */\n\t\tdisabled?: boolean;\n\n\t\t/** Shows a clear-all action under the field while there are tags. */\n\t\tshowClearAll?: boolean;\n\n\t\t/**\n\t\t * Custom tag component. `index` is the tag's position in the value, and\n\t\t * `onRemove(index)` removes it and moves focus to the neighbouring remove\n\t\t * action (an element with `data-tag-remove`), else the input.\n\t\t */\n\t\trenderTag?: (tag: T, index: number, onRemove: (index: number) => void) => React.ReactNode;\n\n\t\t/** Splits typed and pasted text into several tags. Defaults to a comma or a newline. */\n\t\tdelimiter?: string | RegExp;\n\n\t\t/** Whether to trigger add on blur */\n\t\taddOnBlur?: boolean;\n\n\t\t/** Minimum length for a tag */\n\t\tminLength?: number;\n\n\t\t/** Maximum length for a tag. Longer entries are refused and announced, never truncated. */\n\t\tmaxLength?: number;\n\n\t\t/** Override default English strings (placeholder, empty list, clear-all, announcements). */\n\t\tstrings?: StringsProp<TagsInputStrings>;\n\n\t\t/** Keeps the value sorted by display text as tags are added. */\n\t\tsortTags?: boolean;\n\n\t\t/** Case sensitivity for duplicate checking */\n\t\tcaseSensitive?: boolean;\n\n\t\t/** Field to extract display value from an object (required when T is not string) */\n\t\tfield?: T extends string ? never : keyof T;\n\n\t\t/** Error state for styling (passed from FormField) */\n\t\tinvalid?: boolean;\n\n\t\t/** Additional class names */\n\t\tclassName?: string;\n}\n\ntype NormalizedRecommendation<T> = { key: string; value: T; label: string };\n\nfunction isTrue(value: boolean | 'true' | 'false' | undefined): boolean {\n\treturn value === true || value === 'true';\n}\n\nexport function TagsInput<T = string>({\n\t\tid,\n\t\t'aria-label': ariaLabel,\n\t\t'aria-labelledby': ariaLabelledBy,\n\t\t'aria-describedby': ariaDescribedBy,\n\t\t'aria-invalid': ariaInvalid,\n\t\t'aria-required': ariaRequired,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\tname,\n\t\tplaceholder,\n\t\trecommendations,\n\t\tmaxTags,\n\t\tshowMaxTags = false,\n\t\tallowDuplicates = false,\n\t\tvalidate,\n\t\tdisabled = false,\n\t\tshowClearAll = false,\n\t\trenderTag,\n\t\tdelimiter = /[\\n,]/,\n\t\taddOnBlur = true,\n\t\tminLength = 1,\n\t\tmaxLength,\n\t\tsortTags = false,\n\t\tcaseSensitive = false,\n\t\tfield,\n\t\tinvalid,\n\t\tclassName,\n\t\tstrings: stringsProp,\n}: TagsInputProps<T>) {\n\t\tconst { defaultTextSize } = useTypographyConfig();\n\t\tconst { defaultScale } = useDensityConfig();\n\t\tconst size = resolveFormControlSize(undefined, defaultScale);\n\t\tconst placeholderStrings = useStrings(\n\t\t\t\tdefaultTagsInputStrings,\n\t\t\t\tplaceholder !== undefined ? { placeholder } : undefined,\n\t\t);\n\t\tconst strings = useStrings(placeholderStrings, stringsProp);\n\t\tconst isControlled = value !== undefined;\n\t\tconst [internalValue, setInternalValue] = useState<T[]>(() => defaultValue ?? []);\n\t\tconst tags = value ?? internalValue;\n\t\tconst [draft, setDraft] = useState('');\n\t\t// What a commit could not add stays in the draft, marks the field invalid\n\t\t// until it is edited, and is announced through the polite status region.\n\t\tconst [rejectedDraft, setRejectedDraft] = useState<string | null>(null);\n\t\tconst [announcement, setAnnouncement] = useState('');\n\t\tconst [open, setOpen] = useState(false);\n\t\tconst [selectedIndex, setSelectedIndex] = useState(-1);\n\t\t// Display position of a chip removed through its remove action; focus\n\t\t// moves once the removal has rendered.\n\t\tconst [refocusPosition, setRefocusPosition] = useState<number | null>(null);\n\t\tconst inputRef = useRef<HTMLInputElement>(null);\n\t\tconst shellRef = useRef<HTMLDivElement>(null);\n\t\tconst listId = React.useId();\n\t\tconst countId = React.useId();\n\t\tconst atLimit = maxTags !== undefined && tags.length >= maxTags;\n\t\tconst hasRecommendations = Boolean(recommendations?.length);\n\n\t\t// Helper function to get display value from tag\n\t\tconst getDisplayValue = useCallback(\n\t\t\t\t(tag: T): string => {\n\t\t\t\t\t\tif (typeof tag === 'string') {\n\t\t\t\t\t\t\t\treturn tag;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (field && typeof tag === 'object' && tag !== null) {\n\t\t\t\t\t\t\t\tconst record = tag as Record<string | number | symbol, unknown>;\n\t\t\t\t\t\t\t\tconst candidate = record[field];\n\t\t\t\t\t\t\t\tif (typeof candidate === 'string') {\n\t\t\t\t\t\t\t\t\t\treturn candidate;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (candidate === undefined || candidate === null) {\n\t\t\t\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn String(candidate);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn String(tag);\n\t\t\t\t},\n\t\t\t\t[field]\n\t\t);\n\n\t\t// Typed text becomes an object tag whenever `field` names its display key,\n\t\t// so the first tag of an empty object list is an object too.\n\t\tconst createTagFromString = useCallback(\n\t\t\t\t(input: string): T => (field ? ({ [field]: input } as T) : (input as T)),\n\t\t\t\t[field]\n\t\t);\n\n\t\tconst normalizeText = useCallback(\n\t\t\t\t(text: string) => (caseSensitive ? text : text.toLowerCase()),\n\t\t\t\t[caseSensitive]\n\t\t);\n\n\t\tconst isDuplicate = useCallback(\n\t\t\t\t(text: string, list: T[]) => {\n\t\t\t\t\t\tconst candidate = normalizeText(text);\n\t\t\t\t\t\treturn list.some((tag) => normalizeText(getDisplayValue(tag)) === candidate);\n\t\t\t\t},\n\t\t\t\t[normalizeText, getDisplayValue]\n\t\t);\n\n\t\t// Normalize recommendations to always be objects, with keys that stay\n\t\t// unique even when two recommendations share a label.\n\t\tconst normalizedRecommendations = useMemo((): NormalizedRecommendation<T>[] => {\n\t\t\t\tif (!recommendations) return [];\n\t\t\t\treturn recommendations.map((rec, index) => {\n\t\t\t\t\t\tif (rec && typeof rec === 'object' && 'value' in rec && 'label' in rec) {\n\t\t\t\t\t\t\t\tconst entry = rec as { value: T; label: string };\n\t\t\t\t\t\t\t\treturn { key: `${index}:${entry.label}`, value: entry.value, label: entry.label };\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst label = getDisplayValue(rec as T);\n\t\t\t\t\t\treturn { key: `${index}:${label}`, value: rec as T, label };\n\t\t\t\t});\n\t\t}, [recommendations, getDisplayValue]);\n\n\t\t// Picked recommendations leave the list (unless duplicates are allowed),\n\t\t// with or without a search term, so choosing one always adds a tag.\n\t\tconst filteredRecommendations = useMemo(() => {\n\t\t\t\tif (!normalizedRecommendations.length) return normalizedRecommendations;\n\t\t\t\tconst search = normalizeText(draft.trim());\n\t\t\t\tconst existingValues = new Set(tags.map((tag) => normalizeText(getDisplayValue(tag))));\n\n\t\t\t\treturn normalizedRecommendations.filter((rec) => {\n\t\t\t\t\t\tconst display = normalizeText(getDisplayValue(rec.value));\n\t\t\t\t\t\tif (!allowDuplicates && existingValues.has(display)) return false;\n\t\t\t\t\t\tif (!search) return true;\n\t\t\t\t\t\treturn normalizeText(rec.label).includes(search) || display.includes(search);\n\t\t\t\t});\n\t\t}, [normalizedRecommendations, draft, tags, allowDuplicates, normalizeText, getDisplayValue]);\n\n\t\tconst popupOpen = open && !disabled && hasRecommendations && !atLimit;\n\t\tconst activeIndex = popupOpen && selectedIndex >= 0 && selectedIndex < filteredRecommendations.length ? selectedIndex : -1;\n\n\t\tconst sortList = useCallback(\n\t\t\t\t(list: T[]) => [...list].sort((a, b) => getDisplayValue(a).localeCompare(getDisplayValue(b))),\n\t\t\t\t[getDisplayValue]\n\t\t);\n\n\t\tconst commit = useCallback(\n\t\t\t\t(next: T[]) => {\n\t\t\t\t\t\tif (!isControlled) setInternalValue(next);\n\t\t\t\t\t\tonValueChange?.(next);\n\t\t\t\t},\n\t\t\t\t[isControlled, onValueChange]\n\t\t);\n\n\t\t/**\n\t\t * Adds every acceptable candidate in one commit. Each check runs against the\n\t\t * list as it accumulates, so a paste cannot slip duplicates or extra tags\n\t\t * past `maxTags`. Returns the rejected entries, trimmed.\n\t\t */\n\t\tconst addMany = useCallback(\n\t\t\t\t(candidates: Array<string | T>): string[] => {\n\t\t\t\t\t\tlet next = [...tags];\n\t\t\t\t\t\tconst rejected: string[] = [];\n\t\t\t\t\t\tfor (const raw of candidates) {\n\t\t\t\t\t\t\t\tconst isText = typeof raw === 'string';\n\t\t\t\t\t\t\t\tconst text = (isText ? raw : getDisplayValue(raw)).trim();\n\t\t\t\t\t\t\t\tif (!text) continue;\n\t\t\t\t\t\t\t\tconst tag = isText ? createTagFromString(text) : raw;\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\ttext.length < minLength ||\n\t\t\t\t\t\t\t\t\t\t(maxLength !== undefined && text.length > maxLength) ||\n\t\t\t\t\t\t\t\t\t\t(maxTags !== undefined && next.length >= maxTags) ||\n\t\t\t\t\t\t\t\t\t\t(!allowDuplicates && isDuplicate(text, next)) ||\n\t\t\t\t\t\t\t\t\t\t(validate && !validate(tag))\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\trejected.push(text);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnext.push(tag);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (next.length !== tags.length) {\n\t\t\t\t\t\t\t\tif (sortTags) next = sortList(next);\n\t\t\t\t\t\t\t\tcommit(next);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn rejected;\n\t\t\t\t},\n\t\t\t\t[tags, getDisplayValue, createTagFromString, minLength, maxLength, maxTags, allowDuplicates, isDuplicate, validate, sortTags, sortList, commit]\n\t\t);\n\n\t\tconst submit = useCallback(\n\t\t\t\t(candidates: Array<string | T>) => {\n\t\t\t\t\t\tconst rejected = addMany(candidates);\n\t\t\t\t\t\tconst rest = rejected.join(typeof delimiter === 'string' ? delimiter : ', ');\n\t\t\t\t\t\tsetDraft(rest);\n\t\t\t\t\t\tsetRejectedDraft(rest || null);\n\t\t\t\t\t\tsetAnnouncement(rejected.length ? (strings.notAdded ?? defaultTagsInputStrings.notAdded!)(rejected.join(', ')) : '');\n\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\tsetSelectedIndex(-1);\n\t\t\t\t},\n\t\t\t\t[addMany, delimiter, strings]\n\t\t);\n\n\t\t// Keys count earlier tags with the same text, so a chip keeps its identity\n\t\t// when another chip is removed.\n\t\tconst entries = useMemo(() => {\n\t\t\t\tconst seen = new Map<string, number>();\n\t\t\t\treturn tags.map((tag, index) => {\n\t\t\t\t\t\tconst display = getDisplayValue(tag);\n\t\t\t\t\t\tconst occurrence = seen.get(display) ?? 0;\n\t\t\t\t\t\tseen.set(display, occurrence + 1);\n\t\t\t\t\t\treturn { tag, index, display, key: `${display}::${occurrence}` };\n\t\t\t\t});\n\t\t}, [tags, getDisplayValue]);\n\n\t\t// Chips follow the stored order. A sorted field already stores sorted\n\t\t// tags; a controlled value supplied unsorted still displays sorted, and\n\t\t// each chip keeps its stored index so removal targets the right tag.\n\t\tconst displayEntries = useMemo(\n\t\t\t\t() => (sortTags ? [...entries].sort((a, b) => a.display.localeCompare(b.display)) : entries),\n\t\t\t\t[entries, sortTags]\n\t\t);\n\n\t\tconst removeTag = useCallback(\n\t\t\t\t(index: number) => {\n\t\t\t\t\t\tcommit(tags.filter((_, i) => i !== index));\n\t\t\t\t},\n\t\t\t\t[tags, commit]\n\t\t);\n\n\t\t// After a remove, focus goes to the remove action now in the removed\n\t\t// chip's place, else the one before it, else the input. It moves in the\n\t\t// commit that renders the removal, so it never lands after the user has\n\t\t// moved on.\n\t\tconst removeAndRefocus = useCallback(\n\t\t\t\t(index: number) => {\n\t\t\t\t\t\tsetRefocusPosition(Math.max(0, displayEntries.findIndex((entry) => entry.index === index)));\n\t\t\t\t\t\tremoveTag(index);\n\t\t\t\t},\n\t\t\t\t[displayEntries, removeTag]\n\t\t);\n\n\t\tReact.useLayoutEffect(() => {\n\t\t\t\tif (refocusPosition === null) return;\n\t\t\t\tsetRefocusPosition(null);\n\t\t\t\tconst buttons = shellRef.current?.querySelectorAll<HTMLElement>('[data-tag-remove]:not(:disabled)');\n\t\t\t\tconst next = buttons && buttons.length > 0 ? buttons[Math.min(refocusPosition, buttons.length - 1)] : undefined;\n\t\t\t\t(next ?? inputRef.current)?.focus();\n\t\t}, [refocusPosition]);\n\n\t\tconst handleInputChange = useCallback(\n\t\t\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\t\t\t\tconst nextDraft = e.target.value;\n\t\t\t\t\t\t// A typed delimiter commits, as a pasted one does.\n\t\t\t\t\t\tif (nextDraft.split(delimiter).length > 1) {\n\t\t\t\t\t\t\t\tsubmit(nextDraft.split(delimiter));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetDraft(nextDraft);\n\t\t\t\t\t\tsetRejectedDraft(null);\n\t\t\t\t\t\tsetSelectedIndex(-1);\n\n\t\t\t\t\t\tif (hasRecommendations) {\n\t\t\t\t\t\t\t\tsetOpen(true);\n\t\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t[delimiter, submit, hasRecommendations]\n\t\t);\n\n\t\tconst handleKeyDown = useCallback(\n\t\t\t\t(e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\t\t\t\t\tif (disabled) return;\n\t\t\t\t\t\t// Enter that confirms an IME composition is not a commit.\n\t\t\t\t\t\tif (e.nativeEvent.isComposing || e.keyCode === 229) return;\n\n\t\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\t\t\t// The field usually sits in a form; Enter here means \"commit this tag\".\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif (activeIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\tsubmit([filteredRecommendations[activeIndex].value]);\n\t\t\t\t\t\t\t\t} else if (draft.trim()) {\n\t\t\t\t\t\t\t\t\t\tsubmit(draft.split(delimiter));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (e.key === 'ArrowDown') {\n\t\t\t\t\t\t\t\tif (popupOpen) {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetSelectedIndex((prev) => (prev < filteredRecommendations.length - 1 ? prev + 1 : prev));\n\t\t\t\t\t\t\t\t} else if (hasRecommendations && !atLimit && filteredRecommendations.length > 0) {\n\t\t\t\t\t\t\t\t\t\tsetOpen(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (e.key === 'ArrowUp') {\n\t\t\t\t\t\t\t\tif (popupOpen) {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetSelectedIndex((prev) => (prev > 0 ? prev - 1 : 0));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (e.key === 'Escape') {\n\t\t\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\t\t\tsetSelectedIndex(-1);\n\t\t\t\t\t\t} else if (e.key === 'Backspace' && draft === '' && displayEntries.length > 0) {\n\t\t\t\t\t\t\t\t// Backspace on an empty draft removes the last chip shown.\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tremoveTag(displayEntries[displayEntries.length - 1].index);\n\t\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t[disabled, activeIndex, filteredRecommendations, submit, draft, delimiter, popupOpen, hasRecommendations, atLimit, displayEntries, removeTag]\n\t\t);\n\n\t\tconst handlePaste = useCallback(\n\t\t\t\t(e: React.ClipboardEvent<HTMLInputElement>) => {\n\t\t\t\t\t\tif (disabled) return;\n\t\t\t\t\t\tconst text = e.clipboardData.getData('text');\n\t\t\t\t\t\tif (!text) return;\n\t\t\t\t\t\tconst start = e.currentTarget.selectionStart ?? draft.length;\n\t\t\t\t\t\tconst end = e.currentTarget.selectionEnd ?? start;\n\t\t\t\t\t\tconst parts = `${draft.slice(0, start)}${text}${draft.slice(end)}`.split(delimiter);\n\t\t\t\t\t\t// A single token pastes natively into the draft, at the caret.\n\t\t\t\t\t\tif (parts.length <= 1) return;\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tsubmit(parts);\n\t\t\t\t},\n\t\t\t\t[disabled, draft, delimiter, submit]\n\t\t);\n\n\t\tconst handleBlur = useCallback(() => {\n\t\t\t\tsetOpen(false);\n\t\t\t\tsetSelectedIndex(-1);\n\t\t\t\t// An unchanged rejected draft is not re-submitted (or re-announced).\n\t\t\t\tif (!addOnBlur || disabled || !draft.trim() || draft === rejectedDraft) return;\n\t\t\t\tsubmit(draft.split(delimiter));\n\t\t}, [addOnBlur, disabled, draft, rejectedDraft, delimiter, submit]);\n\n\t\tconst clearAll = useCallback(() => {\n\t\t\t\tcommit([]);\n\t\t\t\tsetDraft('');\n\t\t\t\tsetRejectedDraft(null);\n\t\t\t\tsetAnnouncement('');\n\t\t\t\tinputRef.current?.focus();\n\t\t}, [commit]);\n\n\t\tconst removeLabel = strings.removeTag ?? defaultTagsInputStrings.removeTag!;\n\t\tconst badgeSize = size === 'sm' ? 'sm' : 'md';\n\n\t\tconst defaultRenderTag = (tag: T, index: number, onRemove: (index: number) => void) => {\n\t\t\t\tconst display = getDisplayValue(tag);\n\t\t\t\treturn (\n\t\t\t\t\t\t<Badge tone=\"secondary\" size={badgeSize} className={cn('tags-input--component tags-input--tag', 'max-w-full gap-space-xs pe-space-xs')}>\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"normal\" lineHeight=\"none\" className=\"min-w-0 truncate text-inherit\">\n\t\t\t\t\t\t\t\t\t\t{display}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{/* The chip owns its chrome, so its remove action is the shared\n\t\t\t\t\t\t\t\t content-sized affordance and never inflates the chip; the\n\t\t\t\t\t\t\t\t pseudo-element extends its hit area past the glyph. */}\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tdata-tag-remove=\"\"\n\t\t\t\t\t\t\t\t\t\taria-label={removeLabel(display)}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'tags-input--tag-remove relative after:absolute after:-inset-space-xs',\n\t\t\t\t\t\t\t\t\t\t\t\tfieldAffordanceRecipes.inline,\n\t\t\t\t\t\t\t\t\t\t\t\tfocusRecipes.edge,\n\t\t\t\t\t\t\t\t\t\t\t\tfieldAffordanceRecipes.clear,\n\t\t\t\t\t\t\t\t\t\t\t\t'disabled:pointer-events-none disabled:cursor-not-allowed',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\tonClick={() => onRemove(index)}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<FieldClearGlyph className={fieldAffordanceRecipes.icon} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Badge>\n\t\t\t\t);\n\t\t};\n\n\t\tconst fieldInvalid = Boolean(invalid) || isTrue(ariaInvalid);\n\t\tconst inputInvalid = fieldInvalid || rejectedDraft !== null;\n\t\tconst overLimit = maxTags !== undefined && tags.length > maxTags;\n\t\tconst countMax = showMaxTags ? maxTags : undefined;\n\t\tconst showCount = countMax !== undefined;\n\t\tconst showClear = showClearAll && tags.length > 0;\n\t\tconst describedBy = [ariaDescribedBy, showCount ? countId : undefined].filter(Boolean).join(' ') || undefined;\n\n\t\treturn (\n\t\t\t\t<Stack gap=\"xs\" className={cn('tags-input--root w-full relative', className)}>\n\t\t\t\t\t\t<span role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" className=\"tags-input--status sr-only\">\n\t\t\t\t\t\t\t\t{announcement}\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t{/* One hidden input per tag (`name[]`), so a plain form serialises the list. */}\n\t\t\t\t\t\t{!!name && entries.map((entry) => (\n\t\t\t\t\t\t\t\t<input key={entry.key} type=\"hidden\" name={`${name}[]`} value={entry.display} disabled={disabled} />\n\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t<Popover open={popupOpen} onOpenChange={(next, details) => {\n\t\t\t\t\t\t\t// The field shell, including its editable anchor, keeps the\n\t\t\t\t\t\t\t// suggestions open while the user works inside it.\n\t\t\t\t\t\t\tif (!next && details.reason === 'outside-press' && details.event.target instanceof Node && shellRef.current?.contains(details.event.target)) return;\n\t\t\t\t\t\t\tsetOpen(next);\n\t\t\t\t\t\t\tif (!next) setSelectedIndex(-1);\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t{/* The chips occupy most of the field; clicking a gap still types. */}\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tref={shellRef}\n\t\t\t\t\t\t\t\t\tdata-slot=\"tags-input-field\"\n\t\t\t\t\t\t\t\t\tdata-disabled={disabled || undefined}\n\t\t\t\t\t\t\t\t\taria-invalid={inputInvalid || undefined}\n\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\tif (event.target instanceof Element && event.target.closest('button, a, input')) return;\n\t\t\t\t\t\t\t\t\t\t\tinputRef.current?.focus();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'tags-input--field',\n\t\t\t\t\t\t\t\t\t\t\t'box-border flex w-full min-w-0 cursor-text flex-wrap items-center rounded-inner border border-input bg-transparent font-sans text-foreground shadow-none outline-none transition-[color,box-shadow]',\n\t\t\t\t\t\t\t\t\t\t\tformControlMinHeightClasses[size],\n\t\t\t\t\t\t\t\t\t\t\tformControlHorizontalPaddingClasses[size],\n\t\t\t\t\t\t\t\t\t\t\t// The block inset follows density only: --space-scale never changes a control's height.\n\t\t\t\t\t\t\t\t\t\t\tsize === 'lg' ? 'gap-space-sm' : 'gap-space-xs',\n\t\t\t\t\t\t\t\t\t\t\t'py-[calc(0.25rem*var(--density-scale))]',\n\t\t\t\t\t\t\t\t\t\t\t'has-[input:focus-visible]:border-ring has-[input:focus-visible]:ring-3 has-[input:focus-visible]:ring-ring/50',\n\t\t\t\t\t\t\t\t\t\t\t'aria-invalid:border-destructive aria-invalid:has-[input:focus-visible]:border-destructive aria-invalid:has-[input:focus-visible]:ring-destructive/30 dark:aria-invalid:has-[input:focus-visible]:ring-destructive/50',\n\t\t\t\t\t\t\t\t\t\t\t'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{displayEntries.map((entry) => (\n\t\t\t\t\t\t\t\t\t\t\t<React.Fragment key={entry.key}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{renderTag\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? renderTag(entry.tag, entry.index, removeAndRefocus)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: defaultRenderTag(entry.tag, entry.index, removeAndRefocus)}\n\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tdata-slot=\"tags-input-control\"\n\t\t\t\t\t\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\t\t\t\t\taria-invalid={inputInvalid || undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-required={ariaRequired}\n\t\t\t\t\t\t\t\t\t\t\trole={recommendations ? 'combobox' : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-autocomplete={recommendations ? 'list' : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-expanded={recommendations ? popupOpen : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-controls={popupOpen ? listId : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-activedescendant={activeIndex >= 0 ? `${listId}-${activeIndex}` : undefined}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={tags.length === 0 ? strings.placeholder : undefined}\n\t\t\t\t\t\t\t\t\t\t\tvalue={draft}\n\t\t\t\t\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\t\t\t\t\tonPaste={handlePaste}\n\t\t\t\t\t\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\t\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (hasRecommendations && !atLimit && filteredRecommendations.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpen(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'tags-input--input',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'box-border min-w-20 flex-1 border-0 bg-transparent p-0 font-sans text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed',\n\t\t\t\t\t\t\t\t\t\t\t\t\teditableTextSizeClasses[size],\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{/* Shared collection presentation keeps the input-owned\n\t\t\t\t\t\t\t\t\t\tkeyboard handler (selectedIndex, arrow navigation). */}\n\t\t\t\t\t\t\t\t{!!recommendations && (\n\t\t\t\t\t\t\t\t\t\t<PopoverContent\n\t\t\t\t\t\t\t\t\t\t\tanchor={shellRef}\n\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\t\t\t\t\t\t\tinitialFocus={false}\n\t\t\t\t\t\t\t\t\t\t\tfinalFocus={false}\n\t\t\t\t\t\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\t\t\t\t\t\tid={listId}\n\t\t\t\t\t\t\t\t\t\t\taria-label={strings.recommendationsLabel ?? defaultTagsInputStrings.recommendationsLabel}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"tags-input--recommendations w-(--anchor-width) max-h-[200px]\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t{filteredRecommendations.length > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilteredRecommendations.map((rec, idx) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isPicked = tags.some(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(tag) => getDisplayValue(tag) === getDisplayValue(rec.value),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={rec.key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid={`${listId}-${idx}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-selected={activeIndex === idx}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonPointerDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubmit([rec.value]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonMouseEnter={() => setSelectedIndex(idx)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\tcollectionRecipes.interactive,\n\t\t\t\t\t\t\t\t\t\t\tcollectionRowClasses(),\n\t\t\t\t\t\t\t\t\t\t\ttextSizes[defaultTextSize ?? 'sm'],\n\t\t\t\t\t\t\t\t\t\t\t'box-border w-full cursor-pointer justify-between border-0 bg-transparent font-sans text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'hover:bg-accent hover:text-accent-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveIndex === idx && 'bg-accent text-accent-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<CollectionLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{rec.label}\n\t\t\t\t\t\t\t\t\t\t</CollectionLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Check\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ml-auto size-icon-sm',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPicked ? 'opacity-100' : 'opacity-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"div\" size=\"xs\" type=\"secondary\" className=\"px-row-x py-row-y\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.emptyRecommendations}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</PopoverContent>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Popover>\n\n\t\t\t\t\t\t{(showCount || showClear) && (\n\t\t\t\t\t\t\t\t<div className=\"tags-input--footer flex items-center justify-between gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t{countMax !== undefined && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text id={countId} tag=\"span\" size=\"xs\" type={overLimit ? 'error' : 'secondary'} className=\"tags-input--count tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.summary(tags.length, countMax)}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{!!showClear && (\n\t\t\t\t\t\t\t\t\t\t\t\t<TextButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={clearAll}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"tags-input--clear ms-auto\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.clearAll}\n\t\t\t\t\t\t\t\t\t\t\t\t</TextButton>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t);\n}\n\nTagsInput.displayName = 'TagsInput';\n","import * as React from 'react';\nimport { useState, useCallback, useMemo, memo } from 'react';\nimport * as baseui from '../../ui/select';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { useDensityConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\nimport { fieldStateRecipes } from '../../../lib/field-state-recipes';\nimport { editableTextSizeClasses } from '../../../lib/editable-text-recipe';\nimport { formControlHorizontalPaddingClasses, formControlSizeClasses, formFieldTriggerClasses, resolveFormControlSize } from '../forms/form-sizing';\nimport { selectToggleRecipes } from '../../../lib/field-affordance-recipes';\nimport { Input, type InputProps } from '../text-inputs';\nimport { SelectPopupContent, SelectPopupGroup, SelectPopupItem } from '../choice-inputs';\n\nexport interface PhoneInputStrings {\n\t\tprefixPlaceholder: string;\n\t\t/** Accessible name for the country-prefix selector. */\n\t\tprefixAriaLabel: string;\n}\n\nexport const defaultPhoneInputStrings: PhoneInputStrings = {\n\t\tprefixPlaceholder: 'Prefix',\n\t\tprefixAriaLabel: 'Country prefix',\n};\n\nexport interface CountryPrefixOption {\n\t\t/** Country code value (e.g., '+1') */\n\t\tvalue: string;\n\n\t\t/** Display label (e.g., 'Bulgaria') */\n\t\tlabel: string;\n\n\t\t/** ISO country code (e.g., 'US') */\n\t\tiso: string;\n}\n\n/** Country data mapped by ISO code */\nexport const COUNTRY_PREFIX_MAP: Record<string, CountryPrefixOption> = {\n\t\tUS: { value: '+1', label: 'United States', iso: 'US' },\n\t\tCA: { value: '+1', label: 'Canada', iso: 'CA' },\n\t\tAU: { value: '+61', label: 'Australia', iso: 'AU' },\n\t\tBG: { value: '+359', label: 'Bulgaria', iso: 'BG' },\n\t\tGR: { value: '+30', label: 'Greece', iso: 'GR' },\n\t\tGB: { value: '+44', label: 'United Kingdom', iso: 'GB' },\n\t\tDE: { value: '+49', label: 'Germany', iso: 'DE' },\n\t\tFR: { value: '+33', label: 'France', iso: 'FR' },\n\t\tIT: { value: '+39', label: 'Italy', iso: 'IT' },\n\t\tES: { value: '+34', label: 'Spain', iso: 'ES' },\n\t\tNL: { value: '+31', label: 'Netherlands', iso: 'NL' },\n\t\tBE: { value: '+32', label: 'Belgium', iso: 'BE' },\n\t\tAT: { value: '+43', label: 'Austria', iso: 'AT' },\n\t\tCH: { value: '+41', label: 'Switzerland', iso: 'CH' },\n\t\tPL: { value: '+48', label: 'Poland', iso: 'PL' },\n\t\tRO: { value: '+40', label: 'Romania', iso: 'RO' },\n\t\tRS: { value: '+381', label: 'Serbia', iso: 'RS' },\n\t\tHR: { value: '+385', label: 'Croatia', iso: 'HR' },\n\t\tSI: { value: '+386', label: 'Slovenia', iso: 'SI' },\n\t\tMK: { value: '+389', label: 'North Macedonia', iso: 'MK' },\n\t\tTR: { value: '+90', label: 'Turkey', iso: 'TR' },\n\t\tRU: { value: '+7', label: 'Russia', iso: 'RU' },\n\t\tUA: { value: '+380', label: 'Ukraine', iso: 'UA' },\n\t\tSK: { value: '+421', label: 'Slovakia', iso: 'SK' },\n\t\tCZ: { value: '+420', label: 'Czech Republic', iso: 'CZ' },\n\t\tHU: { value: '+36', label: 'Hungary', iso: 'HU' },\n\t\tPT: { value: '+351', label: 'Portugal', iso: 'PT' },\n\t\tIE: { value: '+353', label: 'Ireland', iso: 'IE' },\n\t\tSE: { value: '+46', label: 'Sweden', iso: 'SE' },\n\t\tNO: { value: '+47', label: 'Norway', iso: 'NO' },\n\t\tDK: { value: '+45', label: 'Denmark', iso: 'DK' },\n\t\tFI: { value: '+358', label: 'Finland', iso: 'FI' },\n\t\tCY: { value: '+357', label: 'Cyprus', iso: 'CY' },\n\t\tAL: { value: '+355', label: 'Albania', iso: 'AL' },\n\t\tME: { value: '+382', label: 'Montenegro', iso: 'ME' },\n\t\tBA: { value: '+387', label: 'Bosnia and Herzegovina', iso: 'BA' },\n\t\tXK: { value: '+383', label: 'Kosovo', iso: 'XK' },\n\t\tMD: { value: '+373', label: 'Moldova', iso: 'MD' },\n\t\tBY: { value: '+375', label: 'Belarus', iso: 'BY' },\n\t\tLT: { value: '+370', label: 'Lithuania', iso: 'LT' },\n\t\tLV: { value: '+371', label: 'Latvia', iso: 'LV' },\n\t\tEE: { value: '+372', label: 'Estonia', iso: 'EE' },\n};\n\n/** Type for prefix input - either ISO code string or full option object */\nexport type CountryPrefixInput = string | CountryPrefixOption;\n\n/** Default country prefixes - commonly used codes */\nexport const DEFAULT_COUNTRY_PREFIXES: CountryPrefixInput[] = ['US', 'CA', 'GB', 'DE', 'FR', 'IT', 'ES', 'AU'];\n\n/**\n * Normalize prefix input to CountryPrefixOption\n * Accepts either ISO code ('US') or full object ({ value: '+1', label: 'United States', iso: 'US' })\n */\nconst normalizePrefixInput = (input: CountryPrefixInput): CountryPrefixOption | null => {\n\t\tif (typeof input === 'string') {\n\t\t\t\t// It's an ISO code - look it up\n\t\t\t\tconst upperInput = input.toUpperCase();\n\t\t\t\treturn COUNTRY_PREFIX_MAP[upperInput] ?? null;\n\t\t}\n\t\t// It's already a full object\n\t\treturn input;\n};\n\n/**\n * Normalize array of prefix inputs to CountryPrefixOption[]\n */\nconst normalizePrefixes = (inputs: CountryPrefixInput[]): CountryPrefixOption[] => {\n\t\treturn inputs.map(normalizePrefixInput).filter((p): p is CountryPrefixOption => p !== null);\n};\n\nexport interface PhoneInputProps extends Omit<InputProps, 'type' | 'startAddon' | 'strings'> {\n\t\t/** Normalize phone number on blur. Defaults to true */\n\t\tnormalizeOnBlur?: boolean;\n\n\t\t/** Current country prefix value (dial code like '+1' or ISO code like 'US') */\n\t\tprefix?: string;\n\n\t\t/** Default prefix if uncontrolled (dial code like '+1' or ISO code like 'US') */\n\t\tdefaultPrefix?: string;\n\n\t\t/** List of available country prefixes - ISO codes ('US', 'GR') or full objects */\n\t\tprefixes?: CountryPrefixInput[];\n\n\t\t/** Callback when prefix changes - returns dial code (e.g., '+1') */\n\t\tonPrefixChange?: (prefix: string) => void;\n\n\t\t/** Disable prefix selection */\n\t\tdisablePrefixSelector?: boolean;\n\n\t\t/** Placeholder for prefix dropdown */\n\t\tprefixPlaceholder?: string;\n\n\t\t/** Width of the prefix dropdown */\n\t\tprefixWidth?: string;\n\n\t\t/** Show country name in dropdown. Defaults to true */\n\t\tshowCountryName?: boolean;\n\n\t\t/** Show prefix in dropdown items. Defaults to true */\n\t\tshowPrefixInDropdown?: boolean;\n\n\t\t/** String overrides (e.g. prefix dropdown placeholder). */\n\t\tstrings?: StringsProp<PhoneInputStrings>;\n}\n\nconst normalizePhone = (value: string, selectedPrefix?: string): string => {\n\t\tlet normalized = value\n\t\t\t\t.trim()\n\t\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t\t.replace(/[^\\d ()+-]/g, '');\n\n\t\t// Strip the selected prefix from the input if the user typed it redundantly\n\t\tif (selectedPrefix && normalized.startsWith(selectedPrefix)) {\n\t\t\t\tnormalized = normalized.slice(selectedPrefix.length).replace(/^[\\s-]+/, '');\n\t\t}\n\n\t\t// Strip leading zero from national numbers when a prefix is selected (e.g., 0877... → 877...)\n\t\tif (selectedPrefix && normalized.startsWith('0')) {\n\t\t\t\tnormalized = normalized.slice(1);\n\t\t}\n\n\t\treturn normalized;\n};\n\n/**\n * Resolve a prefix string (ISO code or dial code) to dial code\n */\nconst resolvePrefixToDialCode = (prefix: string | undefined, normalizedPrefixes: CountryPrefixOption[]): string => {\n\t\tif (!prefix) return normalizedPrefixes[0]?.value ?? '';\n\n\t\t// Check if it's already a dial code (starts with +)\n\t\tif (prefix.startsWith('+')) {\n\t\t\t\treturn prefix;\n\t\t}\n\n\t\t// It's an ISO code - look it up\n\t\tconst upperPrefix = prefix.toUpperCase();\n\t\tconst found = COUNTRY_PREFIX_MAP[upperPrefix];\n\t\treturn found?.value ?? prefix;\n};\n\nfunction PhoneInputImpl(\n\t\t{\n\t\t\t\tnormalizeOnBlur = true,\n\t\t\t\tonBlur,\n\t\t\t\tonChange,\n\t\t\t\tprefix: controlledPrefix,\n\t\t\t\tdefaultPrefix,\n\t\t\t\tprefixes = DEFAULT_COUNTRY_PREFIXES,\n\t\t\t\tonPrefixChange,\n\t\t\t\tdisablePrefixSelector = false,\n\t\t\t\tprefixPlaceholder,\n\t\t\t\tprefixWidth = 'w-30',\n\t\t\t\tshowCountryName = true,\n\t\t\t\tshowPrefixInDropdown = true,\n\t\t\t\tinvalid,\n\t\t\t\tdisabled,\n\t\t\t\tclassName,\n\t\t\t\tsize: sizeProp,\n\t\t\t\tstrings: stringsProp,\n\t\t\t\t...props\n\t\t}: PhoneInputProps,\n\t\tforwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n\t\tconst { defaultScale } = useDensityConfig();\n\t\tconst size = resolveFormControlSize(sizeProp, defaultScale);\n\t\tconst strings = useStrings(defaultPhoneInputStrings, stringsProp);\n\t\t// Normalize prefix options from mixed input (ISO codes or full objects)\n\t\tconst basePrefixes = useMemo(() => normalizePrefixes(prefixes), [prefixes]);\n\n\t\t// Resolve controlled/default prefix to dial code\n\t\tconst resolvedDefaultPrefix = useMemo(\n\t\t\t\t() => resolvePrefixToDialCode(defaultPrefix, basePrefixes),\n\t\t\t\t[defaultPrefix, basePrefixes]\n\t\t);\n\n\t\t// Internal state for uncontrolled prefix (always stores dial code)\n\t\tconst [internalPrefix, setInternalPrefix] = useState(resolvedDefaultPrefix);\n\t\t// Country identity is distinct from its dial code (US and CA both use +1).\n\t\tconst [selectedIso, setSelectedIso] = useState(() => {\n\t\t\t\tconst initial = controlledPrefix ?? defaultPrefix;\n\t\t\t\treturn initial && !initial.startsWith('+') ? initial.toUpperCase() : basePrefixes.find((option) => option.value === resolvedDefaultPrefix)?.iso;\n\t\t});\n\n\t\t// Determine if prefix is controlled\n\t\tconst isPrefixControlled = controlledPrefix !== undefined;\n\t\tconst selectedPrefix = isPrefixControlled\n\t\t\t\t? resolvePrefixToDialCode(controlledPrefix, basePrefixes)\n\t\t\t\t: internalPrefix;\n\n\t\t/*\n\t\t * The selected dial code has to be representable in the menu, or the\n\t\t * trigger renders blank.\n\t\t *\n\t\t * `DEFAULT_COUNTRY_PREFIXES` is eight countries, while `COUNTRY_PREFIX_MAP`\n\t\t * knows many more. So `defaultPrefix=\"BG\"` resolved to `+359` — correctly —\n\t\t * and then found no option to display, leaving an empty control with no\n\t\t * error. Naming a country the component itself knows about is a reasonable\n\t\t * thing to do, so the option is carried in rather than dropped.\n\t\t */\n\t\tconst normalizedPrefixes = useMemo(() => {\n\t\t\t\tif (!selectedPrefix || basePrefixes.some((option) => option.value === selectedPrefix)) {\n\t\t\t\t\t\treturn basePrefixes;\n\t\t\t\t}\n\t\t\t\tconst known = Object.values(COUNTRY_PREFIX_MAP).find((option) => option.value === selectedPrefix);\n\t\t\t\treturn known ? [known, ...basePrefixes] : basePrefixes;\n\t\t}, [basePrefixes, selectedPrefix]);\n\n\t\t// Find current prefix option for display\n\t\tconst currentPrefixOption = useMemo(\n\t\t\t\t() => normalizedPrefixes.find((p) => p.iso === (controlledPrefix && !controlledPrefix.startsWith('+') ? controlledPrefix.toUpperCase() : selectedIso) && p.value === selectedPrefix)\n\t\t\t\t\t\t?? normalizedPrefixes.find((p) => p.value === selectedPrefix),\n\t\t\t\t[normalizedPrefixes, selectedPrefix, selectedIso, controlledPrefix]\n\t\t);\n\n\t\t// Handle prefix change\n\t\tconst handlePrefixChange = useCallback(\n\t\t\t\t(newPrefix: string | null) => {\n\t\t\t\t\t\tif (newPrefix === null) return;\n\t\t\t\t\t\tconst option = normalizedPrefixes.find((item) => item.iso === newPrefix);\n\t\t\t\t\t\tif (!option) return;\n\t\t\t\t\t\tsetSelectedIso(option.iso);\n\t\t\t\t\t\tif (!isPrefixControlled) {\n\t\t\t\t\t\t\t\tsetInternalPrefix(option.value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonPrefixChange?.(option.value);\n\t\t\t\t},\n\t\t\t\t[isPrefixControlled, onPrefixChange, normalizedPrefixes]\n\t\t);\n\n\t\t// Handle phone change — strip redundant prefix on every keystroke/autofill\n\t\tconst handleChange: React.ChangeEventHandler<HTMLInputElement> = useCallback(\n\t\t\t\t(event) => {\n\t\t\t\t\t\tif (!onChange) return;\n\n\t\t\t\t\t\tconst raw = event.target.value;\n\n\t\t\t\t\t\t// Strip the selected prefix if the value starts with it (autofill, paste, manual typing)\n\t\t\t\t\t\tif (selectedPrefix && raw.startsWith(selectedPrefix)) {\n\t\t\t\t\t\t\t\tconst stripped = raw.slice(selectedPrefix.length).replace(/^[\\s-]+/, '');\n\t\t\t\t\t\t\t\t// Also strip leading zero from national part\n\t\t\t\t\t\t\t\tconst national = stripped.startsWith('0') ? stripped.slice(1) : stripped;\n\t\t\t\t\t\t\t\tif (national !== raw) {\n\t\t\t\t\t\t\t\t\t\tconst syntheticEvent = {\n\t\t\t\t\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\t\t\t\t\ttarget: { ...event.target, value: national },\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentTarget: { ...event.currentTarget, value: national },\n\t\t\t\t\t\t\t\t\t\t} as unknown as React.ChangeEvent<HTMLInputElement>;\n\t\t\t\t\t\t\t\t\t\tonChange(syntheticEvent);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonChange(event);\n\t\t\t\t},\n\t\t\t\t[onChange, selectedPrefix]\n\t\t);\n\n\t\t// Handle phone blur with normalization\n\t\tconst handleBlur: React.FocusEventHandler<HTMLInputElement> = useCallback(\n\t\t\t\t(event) => {\n\t\t\t\t\t\tif (normalizeOnBlur && typeof onChange === 'function') {\n\t\t\t\t\t\t\t\tconst nextValue = normalizePhone(event.target.value, selectedPrefix);\n\t\t\t\t\t\t\t\tif (nextValue !== event.target.value) {\n\t\t\t\t\t\t\t\t\t\tconst syntheticEvent = {\n\t\t\t\t\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\t\t\t\t\ttarget: { ...event.target, value: nextValue },\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentTarget: { ...event.currentTarget, value: nextValue },\n\t\t\t\t\t\t\t\t\t\t} as unknown as React.ChangeEvent<HTMLInputElement>;\n\n\t\t\t\t\t\t\t\t\t\tonChange(syntheticEvent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonBlur?.(event);\n\t\t\t\t},\n\t\t\t\t[normalizeOnBlur, onChange, onBlur, selectedPrefix]\n\t\t);\n\n\t\t// If no prefixes or disabled, render simple input with prefix display\n\t\tif (normalizedPrefixes.length === 0 || disablePrefixSelector) {\n\t\t\t\tconst staticPrefix = selectedPrefix || defaultPrefix;\n\n\t\t\t\tif (!staticPrefix) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tref={forwardedRef}\n\t\t\t\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\t\t\t\ttype=\"tel\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"tel\"\n\t\t\t\t\t\t\t\t\t\tinputMode=\"tel\"\n\t\t\t\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tclassName={cn('phone-input--component', className)}\n\t\t\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t\t<div className=\"flex items-start gap-space-md\">\n\t\t\t\t\t\t\t\t{/* A fixed prefix reads like Input's read-only fill and keeps the\n\t\t\t\t\t\t\t\t adjoining value's size, including the coarse-pointer size. */}\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'phone-input--prefix flex shrink-0 items-center justify-center rounded-inner border border-input bg-muted',\n\t\t\t\t\t\t\t\t\t\t\t\tformControlSizeClasses[size],\n\t\t\t\t\t\t\t\t\t\t\t\teditableTextSizeClasses[size],\n\t\t\t\t\t\t\t\t\t\t\t\tformControlHorizontalPaddingClasses[size],\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled && 'opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" lineHeight=\"tight\">\n\t\t\t\t\t\t\t\t\t\t\t\t{staticPrefix}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\tref={forwardedRef}\n\t\t\t\t\t\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"tel\"\n\t\t\t\t\t\t\t\t\t\t\t\tautoComplete=\"tel\"\n\t\t\t\t\t\t\t\t\t\t\t\tinputMode=\"tel\"\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t}\n\n\t\t// Render with prefix selector\n\t\treturn (\n\t\t\t\t<div className=\"flex items-start gap-space-md\">\n\t\t\t\t\t\t{/* Prefix selector */}\n\t\t\t\t\t\t<baseui.Select\n\t\t\t\t\t\t\t\tvalue={currentPrefixOption?.iso ?? null}\n\t\t\t\t\t\t\t\tonValueChange={(value) => handlePrefixChange(value)}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<baseui.SelectTrigger\n\t\t\t\t\t\t\t\taria-label={strings.prefixAriaLabel}\n\t\t\t\t\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t\t\t\t\ticonClassName={selectToggleRecipes.icon[size]}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'phone-input--prefix-trigger',\n\t\t\t\t\t\t\t\t\t\t\t\tformFieldTriggerClasses(size),\n\t\t\t\t\t\t\t\t\t\t\t\t'shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\tprefixWidth,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<baseui.SelectValue\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{prefixPlaceholder ?? strings.prefixPlaceholder}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!currentPrefixOption && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{currentPrefixOption.value}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</baseui.SelectValue>\n\t\t\t\t\t\t\t\t</baseui.SelectTrigger>\n\t\t\t\t\t\t\t\t<SelectPopupContent>\n\t\t\t\t\t\t\t\t\t\t<SelectPopupGroup>\n\t\t\t\t\t\t\t\t\t\t\t\t{normalizedPrefixes.map((prefixOption) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<SelectPopupItem key={prefixOption.iso} value={prefixOption.iso} size={size}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-md\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!showPrefixInDropdown && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"min-w-13 tabular-nums text-inherit\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{prefixOption.value}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!showCountryName && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{prefixOption.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</SelectPopupItem>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</SelectPopupGroup>\n\t\t\t\t\t\t\t\t</SelectPopupContent>\n\t\t\t\t\t\t</baseui.Select>\n\n\t\t\t\t\t\t{/* Phone number input */}\n\t\t\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tref={forwardedRef}\n\t\t\t\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\t\t\t\ttype=\"tel\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"tel\"\n\t\t\t\t\t\t\t\t\t\tinputMode=\"tel\"\n\t\t\t\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t);\n}\n\n// forwardRef + memo: forward to the underlying phone input so consumers can\n// focus/measure programmatically (RHF Controller, parent imperative refs).\nexport const PhoneInput = memo(React.forwardRef<HTMLInputElement, PhoneInputProps>(PhoneInputImpl));\nPhoneInput.displayName = 'PhoneInput';\n","import * as React from 'react';\n\nimport { Stack } from '../structure';\nimport { useDensityConfig, type FormControlSize } from '../../../lib/ui-provider';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { fieldStateRecipes } from '../../../lib/field-state-recipes';\n\nimport { resolveFormControlSize } from '../forms/form-sizing';\nimport { Input, type InputProps, type InputStrings } from '../text-inputs';\n\nexport interface ColorInputStrings {\n\t/** Accessible label for the native color-picker trigger. */\n\tchooseColor: string;\n}\n\nexport const defaultColorInputStrings: ColorInputStrings = {\n\tchooseColor: 'Choose color',\n};\n\nexport interface ColorInputProps extends Omit<InputProps, 'type' | 'strings'> {\n\t/** CSS color expression shown by the swatch. Defaults to the current value. */\n\tpreviewValue?: string;\n\t/** CSS-color callback. Text entry is preserved verbatim; native picker values are normalized to OKLCH. */\n\tonValueChange?: (value: string) => void;\n\t/** Accessible label for the native color picker. Defaults to the component strings. */\n\tpickerAriaLabel?: string;\n\t/** ColorInput-owned accessible copy. */\n\tstrings?: StringsProp<ColorInputStrings>;\n\t/** Copy overrides forwarded to the underlying text Input. */\n\tinputStrings?: StringsProp<InputStrings>;\n}\n\nconst pickerSizeClasses: Record<FormControlSize, string> = {\n\tsm: 'size-control-sm',\n\tmd: 'size-control',\n\tlg: 'size-control-lg',\n};\n\nfunction normalizeHexColor(value: string): string | null {\n\tconst normalized = value.trim().toLowerCase();\n\tif (/^#[0-9a-f]{6}$/.test(normalized)) return normalized;\n\tif (/^#[0-9a-f]{3}$/.test(normalized)) {\n\t\treturn `#${normalized.slice(1).split('').map((part) => `${part}${part}`).join('')}`;\n\t}\n\treturn null;\n}\n\nfunction roundColorChannel(value: number, precision: number): number {\n\tconst rounded = Number(value.toFixed(precision));\n\treturn Object.is(rounded, -0) ? 0 : rounded;\n}\n\nfunction hexColorToOklch(value: string): string {\n\tconst normalized = normalizeHexColor(value);\n\tif (!normalized) return value;\n\n\tconst channels = [1, 3, 5].map((offset) => Number.parseInt(normalized.slice(offset, offset + 2), 16) / 255);\n\tconst [red, green, blue] = channels.map((channel) =>\n\t\tchannel <= 0.04045\n\t\t\t? channel / 12.92\n\t\t\t: ((channel + 0.055) / 1.055) ** 2.4,\n\t);\n\tconst lRoot = Math.cbrt(0.4122214708 * red + 0.5363325363 * green + 0.0514459929 * blue);\n\tconst mRoot = Math.cbrt(0.2119034982 * red + 0.6806995451 * green + 0.1073969566 * blue);\n\tconst sRoot = Math.cbrt(0.0883024619 * red + 0.2817188376 * green + 0.6299787005 * blue);\n\tconst lightness = 0.2104542553 * lRoot + 0.793617785 * mRoot - 0.0040720468 * sRoot;\n\tconst a = 1.9779984951 * lRoot - 2.428592205 * mRoot + 0.4505937099 * sRoot;\n\tconst b = 0.0259040371 * lRoot + 0.7827717662 * mRoot - 0.808675766 * sRoot;\n\tconst chroma = Math.hypot(a, b);\n\tconst hue = chroma < 0.00005\n\t\t? 0\n\t\t: (Math.atan2(b, a) * 180) / Math.PI + (b < 0 ? 360 : 0);\n\n\treturn `oklch(${roundColorChannel(lightness, 4)} ${roundColorChannel(chroma, 4)} ${roundColorChannel(hue, 2)})`;\n}\n\nfunction renderedColorToHex(element: HTMLElement, fallback: string): string {\n\tconst computedColor = window.getComputedStyle(element).backgroundColor;\n\tconst directHex = normalizeHexColor(computedColor);\n\tif (directHex) return directHex;\n\tif (typeof CanvasRenderingContext2D === 'undefined') return fallback;\n\n\ttry {\n\t\tconst canvas = document.createElement('canvas');\n\t\tcanvas.width = 1;\n\t\tcanvas.height = 1;\n\t\tconst context = canvas.getContext('2d', { willReadFrequently: true });\n\t\tif (!context) return fallback;\n\t\tcontext.clearRect(0, 0, 1, 1);\n\t\tcontext.fillStyle = computedColor;\n\t\tcontext.fillRect(0, 0, 1, 1);\n\t\tconst [red, green, blue, alpha] = context.getImageData(0, 0, 1, 1).data;\n\t\tif (alpha === 0) return fallback;\n\t\treturn `#${[red, green, blue]\n\t\t\t.map((channel) => channel.toString(16).padStart(2, '0'))\n\t\t\t.join('')}`;\n\t} catch {\n\t\treturn fallback;\n\t}\n}\n\n/**\n * CSS-color editor that pairs exact text entry with a native visual picker.\n * The swatch accepts modern CSS colors and inherited `var(...)` expressions;\n * the picker commits OKLCH values without narrowing text input.\n */\nexport const ColorInput = React.forwardRef<HTMLInputElement, ColorInputProps>(function ColorInput({\n\tclassName,\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\tonValueChange,\n\tpreviewValue,\n\tpickerAriaLabel,\n\tsize: sizeProp,\n\tdisabled,\n\treadOnly,\n\tinvalid,\n\tstrings: stringsProp,\n\tinputStrings,\n\t...props\n}, forwardedRef) {\n\tconst strings = useStrings(defaultColorInputStrings, stringsProp);\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveFormControlSize(sizeProp, defaultScale);\n\tconst [internalValue, setInternalValue] = React.useState(defaultValue ?? '');\n\tconst resolvedValue = value ?? internalValue;\n\tconst resolvedPreview = previewValue ?? resolvedValue;\n\tconst initialPickerValue = normalizeHexColor(resolvedValue) ?? '#000000';\n\tconst [pickerValue, setPickerValue] = React.useState(initialPickerValue);\n\tconst swatchRef = React.useRef<HTMLSpanElement>(null);\n\n\tReact.useLayoutEffect(() => {\n\t\tconst directHex = normalizeHexColor(resolvedPreview);\n\t\tif (directHex) {\n\t\t\tsetPickerValue(directHex);\n\t\t\treturn;\n\t\t}\n\t\tif (!swatchRef.current || typeof window === 'undefined') return;\n\t\tsetPickerValue((current) => renderedColorToHex(swatchRef.current as HTMLElement, current));\n\t}, [resolvedPreview]);\n\n\tconst publishChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n\t\tif (value === undefined) setInternalValue(event.target.value);\n\t\tonChange?.(event);\n\t\tonValueChange?.(event.target.value);\n\t};\n\tconst publishPickerInput = (event: React.FormEvent<HTMLInputElement>) => {\n\t\tconst nextValue = hexColorToOklch(event.currentTarget.value);\n\t\tif (value === undefined) setInternalValue(nextValue);\n\t\tif (onChange) {\n\t\t\tconst normalizedEvent = {\n\t\t\t\t...event,\n\t\t\t\ttarget: { ...event.currentTarget, value: nextValue },\n\t\t\t\tcurrentTarget: { ...event.currentTarget, value: nextValue },\n\t\t\t} as unknown as React.ChangeEvent<HTMLInputElement>;\n\t\t\tonChange(normalizedEvent);\n\t\t}\n\t\tonValueChange?.(nextValue);\n\t};\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"horizontal\"\n\t\t\tgap=\"sm\"\n\t\t\talign=\"center\"\n\t\t\twrap={false}\n\t\t\tclassName={cn(\n\t\t\t\t'color-input--component min-w-0 [&>.input--component]:min-w-0 [&>.input--component]:flex-1',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{/* The picker is the second frame of one compound field: it takes the\n\t\t\t same keyboard focus ring, validation and disabled treatment as the\n\t\t\t text field beside it. */}\n\t\t\t<label\n\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'color-input--picker box-border relative shrink-0 cursor-pointer overflow-hidden rounded-inner border border-input bg-background shadow-none outline-none transition-[color,box-shadow]',\n\t\t\t\t\t'has-[input:focus-visible]:border-ring has-[input:focus-visible]:ring-3 has-[input:focus-visible]:ring-ring/50',\n\t\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t\t'aria-invalid:has-[input:focus-visible]:border-destructive aria-invalid:has-[input:focus-visible]:ring-destructive/30 dark:aria-invalid:has-[input:focus-visible]:ring-destructive/50',\n\t\t\t\t\t'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n\t\t\t\t\tpickerSizeClasses[size],\n\t\t\t\t)}\n\t\t\t\tdata-disabled={disabled || readOnly || undefined}\n\t\t\t>\n\t\t\t\t{/* A nested body inside the control frame takes the compact inner corner. */}\n\t\t\t\t<span\n\t\t\t\t\tref={swatchRef}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tdata-user-color\n\t\t\t\t\tclassName=\"color-input--swatch absolute inset-1 rounded-radius-xs\"\n\t\t\t\t\tstyle={{ background: resolvedPreview || 'transparent' }}\n\t\t\t\t/>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"color\"\n\t\t\t\t\tvalue={pickerValue}\n\t\t\t\t\tdisabled={disabled || readOnly}\n\t\t\t\t\taria-label={pickerAriaLabel ?? strings.chooseColor}\n\t\t\t\t\tonInput={publishPickerInput}\n\t\t\t\t\tclassName=\"color-input--native absolute inset-0 size-full cursor-pointer opacity-0\"\n\t\t\t\t/>\n\t\t\t</label>\n\t\t\t{/*\n\t\t\t * `font-mono` keeps the hex value column-aligned; the size is left to\n\t\t\t * `Input` so the value matches every other control instead of\n\t\t\t * rendering a step smaller than its own label.\n\t\t\t */}\n\t\t\t<Input\n\t\t\t\t{...props}\n\t\t\t\tref={forwardedRef}\n\t\t\t\tsize={size}\n\t\t\t\tvalue={resolvedValue}\n\t\t\t\tdisabled={disabled}\n\t\t\t\treadOnly={readOnly}\n\t\t\t\tinvalid={invalid}\n\t\t\t\tonChange={publishChange}\n\t\t\t\tstrings={inputStrings}\n\t\t\t\tclassName=\"min-w-0 flex-1 font-mono\"\n\t\t\t/>\n\t\t</Stack>\n\t);\n});\n\nColorInput.displayName = 'ColorInput';\n","import { sliderTrackThickness } from '../../../lib/track-recipes';\nimport * as React from 'react';\nimport { useCallback, useId, useMemo, type ElementRef } from 'react';\nimport { Slider as SliderPrimitive } from '@base-ui/react/slider';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nexport interface SliderStrings {\n\t/** Accessible fallback name for the native range input. */\n\tariaLabel: string;\n}\n\nexport const defaultSliderStrings: SliderStrings = {\n\tariaLabel: 'Value',\n};\n\nexport interface SliderImitationEvent {\n\ttarget: {\n\t\tname: string;\n\t\tvalue: number;\n\t};\n}\n\nexport interface SliderProps {\n\t/** Field name for form integration */\n\tname?: string;\n\n\t/** Element id */\n\tid?: string;\n\n\t/** Accessible name when a visible label is not associated with the slider. */\n\t'aria-label'?: string;\n\t/** Id of the visible label associated with the slider. */\n\t'aria-labelledby'?: string;\n\t/** Id of supporting or validation copy associated with the slider. */\n\t'aria-describedby'?: string;\n\t/** Localizes the fallback native-range name. */\n\tstrings?: StringsProp<SliderStrings>;\n\n\t/** Current value (single thumb) */\n\tvalue?: number;\n\n\t/** Default value when uncontrolled */\n\tdefaultValue?: number;\n\n\t/** Minimum value. Defaults to 0 */\n\tmin?: number;\n\n\t/** Maximum value. Defaults to 100 */\n\tmax?: number;\n\n\t/** Step increment. Defaults to 1 */\n\tstep?: number;\n\n\t/** Whether the slider is disabled */\n\tdisabled?: boolean;\n\n\t/** Error state for styling (passed from FormField) */\n\tinvalid?: boolean;\n\n\t/** Event-style change handler for react-hook-form compatibility */\n\tonChange?: (event: SliderImitationEvent) => void;\n\n\t/** Raw value change handler (alternative to onChange) */\n\tonValueChange?: (value: number) => void;\n\n\t/** Fires on pointer up / keyboard commit */\n\tonValueCommitted?: (value: number) => void;\n\n\t/** Show the current value next to the slider */\n\tshowValue?: boolean;\n\n\t/** Format the displayed value */\n\tformatValue?: (value: number) => string;\n\n\t/** Unit suffix displayed after the value (e.g. \"px\", \"%\", \"mm\") */\n\tunit?: string;\n\n\t/** Additional class name for the root wrapper */\n\tclassName?: string;\n\n\t/** Orientation */\n\torientation?: 'horizontal' | 'vertical';\n}\n\ntype SliderElement = ElementRef<typeof SliderPrimitive.Root>;\n\nfunction SliderFieldImpl(\n\t{\n\t\tname,\n\t\tid,\n\t\t'aria-label': ariaLabel,\n\t\t'aria-labelledby': ariaLabelledBy,\n\t\t'aria-describedby': ariaDescribedBy,\n\t\tstrings: stringsProp,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tmin = 0,\n\t\tmax = 100,\n\t\tstep = 1,\n\t\tdisabled = false,\n\t\tinvalid = false,\n\t\tonChange,\n\t\tonValueChange,\n\t\tonValueCommitted,\n\t\tshowValue = false,\n\t\tformatValue,\n\t\tunit,\n\t\tclassName,\n\t\torientation = 'horizontal',\n\t}: SliderProps,\n\tref: React.ForwardedRef<SliderElement>,\n) {\n\tconst generatedId = useId();\n\tconst strings = useStrings(defaultSliderStrings, stringsProp);\n\tconst resolvedId = id ?? `slider-${generatedId}`;\n\tconst resolvedName = name ?? resolvedId;\n\tconst resolvedAriaLabel = ariaLabel ?? strings.ariaLabel;\n\n\tconst handleValueChange = useCallback(\n\t\t(newValue: number | readonly number[]) => {\n\t\t\tconst singleValue = Array.isArray(newValue) ? newValue[0] : newValue;\n\n\t\t\tonValueChange?.(singleValue);\n\n\t\t\tonChange?.({\n\t\t\t\ttarget: { name: resolvedName, value: singleValue },\n\t\t\t});\n\t\t},\n\t\t[resolvedName, onChange, onValueChange]\n\t);\n\n\tconst handleValueCommitted = useCallback(\n\t\t(newValue: number | readonly number[]) => {\n\t\t\tconst singleValue = Array.isArray(newValue) ? newValue[0] : newValue;\n\t\t\tonValueCommitted?.(singleValue);\n\t\t},\n\t\t[onValueCommitted]\n\t);\n\n\tconst displayValue = useMemo(() => {\n\t\tif (!showValue) return null;\n\n\t\tconst currentValue = value ?? defaultValue ?? min;\n\n\t\tif (formatValue) return formatValue(currentValue);\n\n\t\treturn unit ? `${currentValue}${unit}` : String(currentValue);\n\t}, [showValue, value, defaultValue, min, formatValue, unit]);\n\n\t// Wrap single value in array for the primitive\n\tconst sliderValue = value !== undefined ? [value] : undefined;\n\tconst sliderDefaultValue = defaultValue !== undefined ? [defaultValue] : [min];\n\n\treturn (\n\t\t<div className={cn('slider--component', 'flex items-center gap-space-lg', className)}>\n\t\t\t<SliderPrimitive.Root\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"slider\"\n\t\t\t\tid={resolvedId}\n\t\t\t\taria-label={resolvedAriaLabel}\n\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\tvalue={sliderValue}\n\t\t\t\tdefaultValue={sliderDefaultValue}\n\t\t\t\tmin={min}\n\t\t\t\tmax={max}\n\t\t\t\tstep={step}\n\t\t\t\tdisabled={disabled}\n\t\t\t\torientation={orientation}\n\t\t\t\tonValueChange={handleValueChange}\n\t\t\t\tonValueCommitted={handleValueCommitted}\n\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t// Inset by half the thumb: at min and max the thumb's outer edge meets the\n\t\t\t\t// field column's edge, lining up with the label and neighbouring frames\n\t\t\t\t// instead of overhanging them or sitting a control inset inside them.\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'box-border data-[orientation=horizontal]:w-full data-[orientation=horizontal]:px-[calc(var(--icon)/2)] data-[orientation=vertical]:h-full',\n\t\t\t\t\t'min-w-0 flex-1',\n\t\t\t\t\tinvalid && '[&_[data-slot=slider-range]]:bg-destructive',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<SliderPrimitive.Control className=\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=horizontal]:min-h-control data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\">\n\t\t\t\t\t<SliderPrimitive.Track\n\t\t\t\t\t\tdata-slot=\"slider-track\"\n\t\t\t\t\t\tclassName={cn('relative grow overflow-hidden rounded-full bg-muted select-none data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full', sliderTrackThickness)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SliderPrimitive.Indicator\n\t\t\t\t\t\t\tdata-slot=\"slider-range\"\n\t\t\t\t\t\t\tclassName=\"absolute bg-primary select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SliderPrimitive.Track>\n\t\t\t\t\t{/* Keyboard focus draws the shared halo around the thumb's primary edge; hover adds\n\t\t\t\t\t none, so a pointer over the thumb is never mistaken for focus.\n\t\t\t\t\t The control already dims when disabled, so the thumb does not again. */}\n\t\t\t\t\t<SliderPrimitive.Thumb\n\t\t\t\t\t\tindex={0}\n\t\t\t\t\t\tdata-slot=\"slider-thumb\"\n\t\t\t\t\t\tgetAriaLabel={() => resolvedAriaLabel}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'block size-icon shrink-0 rounded-full border border-primary bg-background shadow-sm transition-[color,box-shadow] select-none',\n\t\t\t\t\t\t\t'has-[:focus-visible]:outline-hidden has-[:focus-visible]:ring-3 has-[:focus-visible]:ring-ring/50 data-disabled:pointer-events-none',\n\t\t\t\t\t\t\tinvalid && 'border-destructive has-[:focus-visible]:ring-destructive/30 dark:has-[:focus-visible]:ring-destructive/50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</SliderPrimitive.Control>\n\t\t\t</SliderPrimitive.Root>\n\n\t\t\t{!!showValue && displayValue !== null && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\ttype={invalid ? 'error' : 'secondary'}\n\t\t\t\t\tclassName=\"min-w-8 shrink-0 text-right tabular-nums\"\n\t\t\t\t>\n\t\t\t\t\t{displayValue}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nconst SliderField = React.forwardRef<SliderElement, SliderProps>(SliderFieldImpl);\nSliderField.displayName = 'SliderField';\n\nexport { SliderField };\n","import { forwardRef, useCallback } from 'react';\nimport { DatePicker } from '../date-pickers/date-picker';\nimport type { DateOutput } from '../date-pickers/datepicker.types';\n\nexport interface DateTimeInputProps {\n\t/** Controlled value (ISO string) */\n\tvalue?: string;\n\n\t/** Change handler */\n\tonValueChange?: (value: string | undefined) => void;\n\n\t/** Placeholder text */\n\tplaceholder?: string;\n\n\t/** Display format for the date */\n\treadableFormat?: string;\n\n\t/** Step for time selection, in minutes. Default `30`. */\n\tstepMinutes?: number;\n\n\t/** Use modal for picker */\n\tmodal?: boolean;\n\n\t/** Error state for styling (passed from FormField). Validation copy stays with FormField. */\n\tinvalid?: boolean;\n\n\t/** Disabled state */\n\tdisabled?: boolean;\n\n\t/** Id of the trigger, so an external `<FormField label>` names it. Defaults to a generated id. */\n\tid?: string;\n}\n\nexport const DateTimeInput = forwardRef<HTMLDivElement, DateTimeInputProps>(function DateTimeInput({\n\tvalue,\n\tonValueChange,\n\tplaceholder,\n\treadableFormat = 'dd-MM-yyyy HH:mm',\n\tstepMinutes = 30,\n\tmodal = true,\n\tinvalid,\n\tdisabled,\n\tid,\n}: DateTimeInputProps, ref) {\n\tconst dateValue = value ? new Date(value) : undefined;\n\n\tconst handleChange = useCallback(\n\t\t(output: DateOutput) => {\n\t\t\tonValueChange?.(output.date ? output.date.toISOString() : undefined);\n\t\t},\n\t\t[onValueChange]\n\t);\n\n\treturn (\n\t\t<DatePicker ref={ref} className=\"date-time-input--component\"\n\t\t\tid={id}\n\t\t\tmode=\"single\"\n\t\t\tdisabled={disabled}\n\t\t\t// Marks the trigger invalid without rendering a second, empty message\n\t\t\t// line: the surrounding FormField owns the validation copy.\n\t\t\tinvalid={invalid}\n\t\t\tplaceholder={placeholder}\n\t\t\tvalue={dateValue}\n\t\t\tonValueChange={handleChange}\n\t\t\treadableFormat={readableFormat}\n\t\t\t// The time field's step is in seconds; this component's is in minutes.\n\t\t\twithTime={{ enabled: true, format: '24', step: stepMinutes * 60 }}\n\t\t\tmodal={modal}\n\t\t/>\n\t);\n});\n\nDateTimeInput.displayName = 'DateTimeInput';\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-DH0v0KcB.js","names":["Icon","React","_Fragment","DisplayLabel","Heading","Text","focusRecipes","Stack","toneRecipes","Progress","interactionRecipes","Value","SecondaryValue","Badge","ItemMedia","ItemDescription","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","hasPageHeaderCommands","PageHeaderCommands","useLayoutLinkRenderer","React$1","Fragment$1","defaultWorkspaceRecordHeaderStrings","defaultWorkspaceNavStrings","value","defaultWorkspaceLocaleStripStrings","CONTENT_WIDTH_CLASS","STATUS_ICON","Check","Circle","CircleAlert","STATUS_CLASS","clampPercent","DynamicWorkspaceIcon","icon","getStatus","item","active","WorkspaceLayout","props","hasSidebar","sidebar","hasRail","rail","ariaLabel","cn","contentWidth","className","header","headerClassName","bodyClassName","sidebarClassName","mainClassName","contentClassName","railClassName","isCommandList","WorkspaceRecordHeader","stringsProp","strings","useStrings","resolvedRenderLink","hasMetadata","metadata","secondaryCommands","secondaryActions","secondaryNodes","hasCommands","primaryAction","textGap","media","titleSlot","title","badges","status","description","index","actions","headerEnd","WorkspaceNav","groups","group","activeId","StatusIcon","completion","handleSelect","context","renderItem","rowContent","itemClassName","linkNode","footerSlot","WorkspaceLocaleStrip","handleLocaleClick","locale","onLocaleChange","locales","activeLocale","Button"],"sources":["../src/components/layout/workspace/workspace.strings.ts","../src/components/layout/workspace/workspace.tsx"],"sourcesContent":["export interface WorkspaceRecordHeaderStrings {\n\tmetadataLabel: string;\n\tactionsLabel: string;\n\tsecondaryActionsLabel: string;\n}\n\nexport const defaultWorkspaceRecordHeaderStrings: WorkspaceRecordHeaderStrings = {\n\tmetadataLabel: 'Record metadata',\n\tactionsLabel: 'Record actions',\n\tsecondaryActionsLabel: 'Secondary actions',\n};\n\nexport interface WorkspaceNavStrings {\n\tariaLabel: string;\n\tcompletionLabel: (value: number) => string;\n\tcurrentLabel: string;\n}\n\nexport const defaultWorkspaceNavStrings: WorkspaceNavStrings = {\n\tariaLabel: 'Workspace navigation',\n\tcompletionLabel: (value) => `${value}% complete`,\n\tcurrentLabel: 'Current',\n};\n\nexport interface WorkspaceLocaleStripStrings {\n\tariaLabel: string;\n\tactiveLabel: string;\n\tcompletionLabel: (value: number) => string;\n}\n\nexport const defaultWorkspaceLocaleStripStrings: WorkspaceLocaleStripStrings = {\n\tariaLabel: 'Workspace locales',\n\tactiveLabel: 'Active',\n\tcompletionLabel: (value) => `${value}% complete`,\n};\n","import * as React from 'react';\nimport {\n\tCheck,\n\tCircle,\n\tCircleAlert,\n\ttype LucideIcon,\n\t} from 'lucide-react';\n\nimport { Badge } from '../../base/badge';\nimport { Button } from '../../base/buttons';\nimport { Progress } from '../../base/feedback';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../base/item';\nimport { Stack } from '../../base/structure';\nimport { SecondaryValue, Value } from '../../primitives';\nimport { DisplayLabel, Heading, Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { hasPageHeaderCommands, PageHeaderCommands, type PageHeaderAction } from '../../base/navigation/page-header/page-header-commands';\nimport { useLayoutLinkRenderer } from '../hooks';\nimport type { LayoutIconComponent } from '../layout.types';\nimport {\n\tdefaultWorkspaceLocaleStripStrings,\n\tdefaultWorkspaceNavStrings,\n\tdefaultWorkspaceRecordHeaderStrings,\n} from './workspace.strings';\nimport type {\n\tWorkspaceContentWidth,\n\tWorkspaceLayoutProps,\n\tWorkspaceLocaleItem,\n\tWorkspaceLocaleStripProps,\n\tWorkspaceNavItem,\n\tWorkspaceNavItemStatus,\n\tWorkspaceNavProps,\n\tWorkspaceRecordHeaderProps,\n} from './workspace.types';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\nconst CONTENT_WIDTH_CLASS: Record<WorkspaceContentWidth, string> = {\n\tdefault: '[--workspace-content-max-width:58rem]',\n\twide: '[--workspace-content-max-width:86rem]',\n\tfull: '[--workspace-content-max-width:none]',\n};\n\nconst STATUS_ICON: Record<WorkspaceNavItemStatus, LucideIcon> = {\n\tcomplete: Check,\n\tcurrent: Circle,\n\tattention: CircleAlert,\n\tdisabled: Circle,\n\tidle: Circle,\n};\n\nconst STATUS_CLASS: Record<WorkspaceNavItemStatus, string> = {\n\tcomplete: 'text-success',\n\tcurrent: 'text-primary-accent',\n\tattention: 'text-warning-accent',\n\t// Disabled dims like every disabled control rather than adding a fainter text tier.\n\tdisabled: 'text-muted-foreground opacity-50',\n\tidle: 'text-muted-foreground',\n};\n\nfunction clampPercent(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\treturn Math.min(100, Math.max(0, Math.round(value)));\n}\n\nfunction DynamicWorkspaceIcon({\n\ticon,\n\tclassName,\n}: {\n\t/** Leading glyph. */\n\ticon?: LayoutIconComponent;\n\tclassName?: string;\n}) {\n\tif (!icon) return null;\n\tconst Icon = icon;\n\treturn <Icon className={className} aria-hidden=\"true\" />;\n}\n\nfunction getStatus(item: WorkspaceNavItem, active: boolean): WorkspaceNavItemStatus {\n\tif (item.disabled) return 'disabled';\n\tif (item.status) return item.status;\n\tif (item.warning) return 'attention';\n\tif (active) return 'current';\n\tif (item.completion !== undefined && clampPercent(item.completion) >= 100) return 'complete';\n\treturn 'idle';\n}\n\nexport const WorkspaceLayout = React.forwardRef<HTMLDivElement, WorkspaceLayoutProps>(function WorkspaceLayout({\n\theader,\n\tsidebar,\n\trail,\n\tchildren,\n\tcontentWidth = 'wide',\n\tclassName,\n\theaderClassName,\n\tbodyClassName,\n\tsidebarClassName,\n\tmainClassName,\n\tcontentClassName,\n\trailClassName,\n\tariaLabel,\n\tstyle,\n\t...props\n}, ref) {\n\tconst hasSidebar = !!sidebar;\n\tconst hasRail = !!rail;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn(\n\t\t\t\t'workspace-layout--component @container/workspace-layout flex h-full min-h-0 w-full flex-col overflow-y-auto overscroll-contain rounded-radius border border-border bg-background text-foreground',\n\t\t\t\t'[--workspace-sidebar-width:16rem] [--workspace-rail-width:20rem]',\n\t\t\t\tCONTENT_WIDTH_CLASS[contentWidth],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!header && (\n\t\t\t\t<header className={cn('workspace-layout--header shrink-0 border-b border-border bg-background', headerClassName)}>\n\t\t\t\t\t{header}\n\t\t\t\t</header>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'workspace-layout--body grid min-h-0 flex-none grid-cols-1 bg-muted/30 @min-[80rem]/workspace-layout:flex-1',\n\t\t\t\t\thasSidebar && !hasRail && '@min-[80rem]/workspace-layout:grid-cols-[var(--workspace-sidebar-width)_minmax(0,1fr)]',\n\t\t\t\t\thasSidebar && hasRail && '@min-[80rem]/workspace-layout:grid-cols-[var(--workspace-sidebar-width)_minmax(0,1fr)] @min-[96rem]/workspace-layout:grid-cols-[var(--workspace-sidebar-width)_minmax(0,1fr)_var(--workspace-rail-width)]',\n\t\t\t\t\t!hasSidebar && hasRail && '@min-[96rem]/workspace-layout:grid-cols-[minmax(0,1fr)_var(--workspace-rail-width)]',\n\t\t\t\t\tbodyClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!hasSidebar && (\n\t\t\t\t\t<aside\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'workspace-layout--sidebar hidden min-h-0 border-r border-border bg-background @min-[80rem]/workspace-layout:block',\n\t\t\t\t\t\t\tsidebarClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"h-full overflow-y-auto overscroll-contain p-space-lg\">\n\t\t\t\t\t\t\t{sidebar}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</aside>\n\t\t\t\t)}\n\t\t\t\t<main\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`workspace-layout--main min-h-0 min-w-0 overflow-visible @min-[80rem]/workspace-layout:overflow-y-auto overscroll-contain focus-visible:outline-none ${focusRecipes.inset}`,\n\t\t\t\t\t\tmainClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'workspace-layout--content box-border mx-auto flex min-h-full w-full max-w-[var(--workspace-content-max-width)] flex-col gap-space-xl p-surface-lg',\n\t\t\t\t\t\t\tcontentWidth === 'full' && 'max-w-none',\n\t\t\t\t\t\t\tcontentClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</main>\n\t\t\t\t{!!hasRail && (\n\t\t\t\t\t<aside\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'workspace-layout--rail hidden min-h-0 border-l border-border bg-background @min-[96rem]/workspace-layout:block',\n\t\t\t\t\t\t\trailClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"h-full overflow-y-auto overscroll-contain p-space-lg\">\n\t\t\t\t\t\t\t{rail}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</aside>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n\nWorkspaceLayout.displayName = 'WorkspaceLayout';\n\n/** Role-based command objects rather than rendered elements. */\nfunction isCommandList(value: unknown): value is readonly PageHeaderAction[] {\n\treturn Array.isArray(value) && value.every((item) =>\n\t\titem !== null && typeof item === 'object' && !React.isValidElement(item) && 'label' in item);\n}\n\nexport const WorkspaceRecordHeader = React.forwardRef<HTMLDivElement, WorkspaceRecordHeaderProps>(function WorkspaceRecordHeader({\n\ttitle,\n\tdescription,\n\ttextGap = 'dense',\n\tbadges,\n\tmetadata,\n\tactions,\n\tprimaryAction,\n\tsecondaryActions,\n\tmoreActionsLabel = 'More actions',\n\trenderLink,\n\tstatus,\n\tmedia,\n\theaderEnd,\n\ttitleSlot,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}, ref) {\n\tconst strings = useStrings(defaultWorkspaceRecordHeaderStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst hasMetadata = !!metadata?.length;\n\t// Command objects take the shared role-based row; elements keep the\n\t// previous free-form cluster.\n\tconst secondaryCommands = isCommandList(secondaryActions) ? secondaryActions : undefined;\n\tconst secondaryNodes = secondaryCommands ? undefined : (secondaryActions as React.ReactNode);\n\tconst hasCommands = hasPageHeaderCommands(primaryAction, secondaryCommands);\n\n\treturn (\n\t\t<Stack\n\t\t\tref={ref}\n\t\t\tdirection=\"horizontal\"\n\t\t\tgap=\"xl\"\n\t\t\talign=\"start\"\n\t\t\tjustify=\"between\"\n\t\t\twrap\n\t\t\tclassName={cn(\n\t\t\t\t'workspace-record-header--component p-surface-lg',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t\t<Stack gap={textGap} className=\"workspace-record-header--identity min-w-0 max-w-full flex-1 basis-64\">\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"lg\" align=\"center\" wrap={false}>\n\t\t\t\t{!!media && (\n\t\t\t\t\t<div className=\"workspace-record-header--media flex size-12 shrink-0 items-center justify-center overflow-hidden rounded-inner border border-border bg-muted/30\">\n\t\t\t\t\t\t{media}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"md\" className=\"workspace-record-header--title-row min-w-0 flex-1\">\n\t\t\t\t\t\t{titleSlot ?? (\n\t\t\t\t\t\t\t<Heading tag=\"h4\" className=\"[overflow-wrap:anywhere]\">\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!badges && <Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\" className=\"workspace-record-header--badges\">{badges}</Stack>}\n\t\t\t\t\t\t\t{!!status && <div className=\"workspace-record-header--status\">{status}</div>}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text type=\"secondary\" className=\"workspace-record-header--description max-w-4xl leading-relaxed\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!hasMetadata && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\taria-label={strings.metadataLabel}\n\t\t\t\t\t\t\tclassName=\"workspace-record-header--metadata flex flex-wrap items-center gap-x-space-xl gap-y-space-xs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{metadata.map((item, index) => (\n\t\t\t\t\t\t\t\t<div key={item.id ?? index} className=\"flex items-baseline gap-space-sm\">\n\t\t\t\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t\t\t<Value className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t{item.value}\n\t\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t{!!(actions || secondaryNodes || hasCommands || headerEnd) && (\n\t\t\t\t<div className=\"workspace-record-header--actions flex max-w-full shrink-0 flex-wrap items-center gap-space-md justify-end\">\n\t\t\t\t\t{!!secondaryNodes && (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\" aria-label={strings.secondaryActionsLabel}>\n\t\t\t\t\t\t\t{secondaryNodes}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!actions && (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\" aria-label={strings.actionsLabel}>\n\t\t\t\t\t\t\t{actions}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\t{hasCommands && (\n\t\t\t\t\t\t<PageHeaderCommands\n\t\t\t\t\t\t\tprimaryAction={primaryAction}\n\t\t\t\t\t\t\tsecondaryActions={secondaryCommands}\n\t\t\t\t\t\t\tmoreActionsLabel={moreActionsLabel}\n\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!headerEnd && <div className=\"workspace-record-header--end\">{headerEnd}</div>}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nWorkspaceRecordHeader.displayName = 'WorkspaceRecordHeader';\n\nexport const WorkspaceNav = React.forwardRef<HTMLElement, WorkspaceNavProps>(function WorkspaceNav({\n\tgroups,\n\tactiveId,\n\tonSelect,\n\trenderItem,\n\tfooterSlot,\n\trenderLink,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}, ref) {\n\tconst strings = useStrings(defaultWorkspaceNavStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\treturn (\n\t\t<Stack\n\t\t\trender={(\n\t\t\t\t<nav\n\t\t\t\t\tref={ref}\n\t\t\t\t\taria-label={props['aria-label'] ?? strings.ariaLabel}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tgap=\"xl\"\n\t\t\tclassName={cn('workspace-nav--component h-full', className)}\n\t\t>\n\t\t\t<Stack gap=\"xl\" className=\"workspace-nav--groups min-h-0 flex-1\">\n\t\t\t\t{groups.map((group) => (\n\t\t\t\t\t<Stack key={group.id} gap=\"md\" className=\"workspace-nav--group\">\n\t\t\t\t\t\t{!!group.label && (\n\t\t\t\t\t\t\t<Stack gap=\"dense\" className=\"workspace-nav--group-header px-space-xs\">\n\t\t\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t\t{!!group.description && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t{group.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<ItemGroup className=\"workspace-nav--items gap-space-xs\">\n\t\t\t\t\t\t\t{group.items.map((item, index) => {\n\t\t\t\t\t\t\t\tconst active = item.id === activeId;\n\t\t\t\t\t\t\t\tconst status = getStatus(item, active);\n\t\t\t\t\t\t\t\tconst StatusIcon = STATUS_ICON[status];\n\t\t\t\t\t\t\t\tconst completion = item.completion === undefined ? undefined : clampPercent(item.completion);\n\t\t\t\t\t\t\t\tconst handleSelect = (event: React.MouseEvent<HTMLElement>) => {\n\t\t\t\t\t\t\t\t\tif (item.disabled) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonSelect?.(item);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst context = { active, group, index, onSelect: handleSelect };\n\n\t\t\t\t\t\t\t\tif (renderItem) {\n\t\t\t\t\t\t\t\t\treturn <React.Fragment key={item.id}>{renderItem(item, context)}</React.Fragment>;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst rowContent = (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<ItemMedia variant=\"icon\" className={cn(active && 'text-accent-foreground')}>\n\t\t\t\t\t\t\t\t\t\t\t{item.icon ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<DynamicWorkspaceIcon icon={item.icon} className=\"size-icon\" />\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<StatusIcon className={cn('size-icon-md', STATUS_CLASS[status])} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t\t\t\t\t\t\t\t\t{active && (\n\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">{strings.currentLabel}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t\t\t\t\t\t\t\t\t{completion !== undefined && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mt-1.5 flex items-center gap-space-md\">\n\t\t\t\t\t\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={completion}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={strings.completionLabel(completion)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.completionLabel(completion)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t\t\t{!!item.badge && <ItemActions>{item.badge}</ItemActions>}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tconst itemClassName = cn(\n\t\t\t\t\t\t\t\t\t'workspace-nav--item w-full border border-transparent px-row-x py-row-y text-left transition-colors',\n\t\t\t\t\t\t\t\t\tactive && interactionRecipes.rowCurrent,\n\t\t\t\t\t\t\t\t\titem.warning && !active && cn(toneRecipes.warning.edge, toneRecipes.warning.wash),\n\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (item.href) {\n\t\t\t\t\t\t\t\t\tconst linkNode = resolvedRenderLink({\n\t\t\t\t\t\t\t\t\t\thref: item.href,\n\t\t\t\t\t\t\t\t\t\tchildren: rowContent,\n\t\t\t\t\t\t\t\t\t\tclassName: 'block',\n\t\t\t\t\t\t\t\t\t\tactive,\n\t\t\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\t\t\texternal: item.external,\n\t\t\t\t\t\t\t\t\t\ttarget: item.target,\n\t\t\t\t\t\t\t\t\t\trel: item.rel,\n\t\t\t\t\t\t\t\t\t\tonClick: handleSelect as React.MouseEventHandler<HTMLAnchorElement>,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Item key={item.id} size=\"md\" render={linkNode as React.ReactElement} className={itemClassName}>\n\t\t\t\t\t\t\t\t\t\t\t{rowContent}\n\t\t\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\t\t\trender={<button type=\"button\" onClick={handleSelect} disabled={item.disabled} />}\n\t\t\t\t\t\t\t\t\t\tclassName={itemClassName}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{rowContent}\n\t\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</Stack>\n\t\t\t\t))}\n\t\t\t</Stack>\n\t\t\t{!!footerSlot && <div className=\"workspace-nav--footer shrink-0 border-t border-border pt-space-lg\">{footerSlot}</div>}\n\t\t</Stack>\n\t);\n});\n\nWorkspaceNav.displayName = 'WorkspaceNav';\n\nexport const WorkspaceLocaleStrip = React.forwardRef<HTMLDivElement, WorkspaceLocaleStripProps>(function WorkspaceLocaleStrip({\n\tlocales,\n\tactiveLocale,\n\tonLocaleChange,\n\tactions,\n\tstatus,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}, ref) {\n\tconst strings = useStrings(defaultWorkspaceLocaleStripStrings, stringsProp);\n\n\tconst handleLocaleClick = (locale: WorkspaceLocaleItem) => {\n\t\tif (locale.disabled) return;\n\t\tonLocaleChange?.(locale);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn('workspace-locale-strip--component flex flex-col gap-space-lg border-t border-border bg-muted/50 px-surface-lg py-surface min-[64rem]:flex-row min-[64rem]:items-center min-[64rem]:justify-between', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\" className=\"workspace-locale-strip--locales min-w-0\" role=\"group\" aria-label={strings.ariaLabel}>\n\t\t\t\t{locales.map((locale) => {\n\t\t\t\t\tconst active = locale.id === activeLocale;\n\t\t\t\t\tconst completion = locale.completion === undefined ? undefined : clampPercent(locale.completion);\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={locale.id}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone={active ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\tbuttonStyle={active ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\tonClick={() => handleLocaleClick(locale)}\n\t\t\t\t\t\t\tdisabled={locale.disabled}\n\t\t\t\t\t\t\taria-pressed={active}\n\t\t\t\t\t\t\tclassName={cn('workspace-locale-strip--item justify-start')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\" render={<span />} className=\"min-w-0\">\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"truncate text-inherit\">{locale.label}</Text>\n\t\t\t\t\t\t\t{active && <Text tag=\"span\" size=\"inherit\" className=\"sr-only\">{strings.activeLabel}</Text>}\n\t\t\t\t\t\t\t\t{completion !== undefined && (\n\t\t\t\t\t\t\t\t\t/* On an active pill the button surface is solid, so the tonal\n\t\t\t\t\t\t\t\t\t badge variants land coloured-on-coloured. Derive the nested\n\t\t\t\t\t\t\t\t\t badge from the primary foreground pair so it remains legible\n\t\t\t\t\t\t\t\t\t when dark themes intentionally lighten `--primary`. */\n\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\ttone={completion >= 100 ? 'success' : 'secondary'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'shrink-0',\n\t\t\t\t\t\t\t\t\t\t\tactive && 'border-primary-foreground/20 bg-primary-foreground/10 text-primary-foreground',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.completionLabel(completion)}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!locale.status && <span className=\"shrink-0\">{locale.status}</span>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>\n\t\t\t{!!(status || actions) && (\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\" className=\"workspace-locale-strip--actions shrink-0\">\n\t\t\t\t\t{!!status && <div className=\"workspace-locale-strip--status\">{status}</div>}\n\t\t\t\t\t{!!actions && <Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\" className=\"\">{actions}</Stack>}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</div>\n\t);\n});\n\nWorkspaceLocaleStrip.displayName = 'WorkspaceLocaleStrip';\n"],"mappings":"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"}