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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-ax2BqjrI.js","names":["_Fragment","_Fragment","React","_Fragment","useDensityConfig","resolveComponentScale","cn","buttonVariants","Button","Text","DisplayLabel","Heading","resolveTextClassNames","focusRecipes","Grid","Stack","CardContent","CardShell","CardFooter","interactionRecipes","ItemMedia","ItemDescription","ItemGroup","ItemContent","Item","ItemTitle","useLayoutLinkRenderer","containerRecipe","React$1","Fragment$1","AuthCard","props","hasHeader","eyebrow","title","description","headerEnd","surface","className","media","mediaClassName","headerClassName","contentClassName","banner","children","footer","footerClassName","isAuthBrandConfig","brand","isValidElement","useAuthLinks","resolvedRenderLink","useMemo","links","link","useAuthShell","visibleFooterLinks","footerLinks","visiblePolicyLinks","policyLinks","visibleLanguageLinks","languageLinks","visibleSocialProviders","socialProviders","provider","hasBrand","hasAfterCard","postCard","languageSwitcher","hasSplitPanel","splitPanel","variant","defaultAuthShellStrings","defaultAuthFooterLinksStrings","defaultAuthSocialProvidersStrings","defaultAuthMethodSwitchStrings","AuthFooterLinks","stringsProp","strings","useStrings","visibleLinks","leadingIcon","linkNode","Fragment","index","separator","PROVIDER_BUTTON_CLASS","GoogleMark","MicrosoftMark","GithubMark","AppleMark","ProviderIcon","KeyRound","AuthSocialProviderButton","size","defaultScale","content","buttonClassName","event","AuthSocialProviders","visibleProviders","providers","layout","SURFACE_CLASS","AuthSplitPanel","hasIntro","visibleFeatures","features","feature","SIZE_CLASS","isSplitPanelProps","panel","renderBrandContent","hasText","renderBrand","renderLink","renderSplitPanel","AuthShell","variantProp","isSplit","panelFirst","splitSide","showStackedPanel","splitMobile","brandNode","main","align","mainClassName","stackClassName","cardMedia","cardMediaClassName","cardFooter","cardClassName","cardContentClassName","hasSocialProviders","socialProvidersLayout","socialDivider","Globe2","splitGridClassName","splitPanelClassName","AuthForm","formProps","renderProps","AuthFormRow","firstEnabledOption","options","option","useAuthMethodSwitch","visibleOptions","fallbackValue","defaultValue","internalValue","setInternalValue","isControlled","value","selectedValue","selectedOption","setValue","nextOption","nextValue","onValueChange","AuthMethodSwitch","ariaLabel","rootProps","segmented","optionButtons","selected","optionContent","divider"],"sources":["../src/components/layout/auth/auth-card.tsx","../src/components/layout/auth/auth-hooks.tsx","../src/components/layout/auth/auth.strings.ts","../src/components/layout/auth/auth-footer-links.tsx","../src/components/layout/auth/auth-social-providers.tsx","../src/components/layout/auth/auth-split-panel.tsx","../src/components/layout/auth/auth-shell.tsx","../src/components/layout/auth/auth-form.tsx","../src/components/layout/auth/auth-method-switch.tsx"],"sourcesContent":["import { CardContent, CardFooter, CardShell } from '../../base/cards';\nimport { Stack } from '../../base/structure';\nimport { DisplayLabel, Heading, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport type { AuthCardProps } from './auth.types';\n\nexport function AuthCard({\n\tsurface = 'card',\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tmedia,\n\tfooter,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tmediaClassName,\n\tcontentClassName,\n\tfooterClassName,\n\t...props\n}: AuthCardProps) {\n\tconst hasHeader = Boolean(eyebrow || title || description || headerEnd);\n\n\treturn (\n\t\t<CardShell\n\t\t\tdata-slot=\"auth-card\"\n\t\t\tdata-surface={surface}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-card--component',\n\t\t\t\t'w-full min-w-0 gap-0 py-0',\n\t\t\t\t// `bare` keeps the header/body/footer rhythm and drops only the\n\t\t\t\t// framing, so the same composition works on a page that is itself\n\t\t\t\t// the surface. Padding goes too — without a frame it reads as drift.\n\t\t\t\tsurface === 'card'\n\t\t\t\t\t? 'overflow-hidden rounded-radius border border-border bg-card text-card-foreground shadow-sm'\n\t\t\t\t\t: 'border-0 bg-transparent text-inherit shadow-none',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!media && (\n\t\t\t\t<div className={cn('auth-card--media', 'min-h-12 border-b border-border/60 bg-muted/50', mediaClassName)}>\n\t\t\t\t\t{media}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!hasHeader && (\n\t\t\t\t<header className={cn('auth-card--header min-w-0', surface === 'card' ? 'p-surface pb-0' : 'p-0', headerClassName)}>\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"xl\" align=\"start\" justify=\"between\" className=\"auth-card--header-layout min-w-0\">\n\t\t\t\t\t\t<Stack gap=\"normal\" className=\"min-w-0\">\n\t\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t\t<DisplayLabel tag=\"div\" className=\"auth-card--eyebrow text-inherit\">\n\t\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\ttag=\"h1\"\n\t\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\t\t\t\tclassName=\"auth-card--title text-inherit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text tag=\"div\" type=\"secondary\" lineHeight=\"relaxed\" className=\"auth-card--description max-w-prose\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t{!!headerEnd && <div className=\"auth-card--header-end shrink-0\">{headerEnd}</div>}\n\t\t\t\t\t</Stack>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<CardContent\n\t\t\t\tpadding={surface === 'card' ? 'md' : 'none'}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-card--content',\n\t\t\t\t\t'min-w-0',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className={cn('auth-card--body min-w-0', surface === 'bare' && 'py-space-xl')}>\n\t\t\t\t{!!banner && <div className=\"auth-card--banner mb-space-xl min-w-0\">{banner}</div>}\n\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</CardContent>\n\n\t\t\t{!!footer && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tpadding=\"md\"\n\t\t\t\t\tclassName={cn('auth-card--footer', 'min-w-0 flex-wrap border-t border-border/60', footerClassName)}\n\t\t\t\t>\n\t\t\t\t\t{footer}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n}\n","import { isValidElement, useMemo } from 'react';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tUseAuthLinksOptions,\n\tUseAuthLinksReturn,\n\tUseAuthShellOptions,\n\tUseAuthShellReturn,\n} from './auth.types';\n\nexport function isAuthBrandConfig(brand: AuthBrand | undefined): brand is AuthBrandConfig {\n\treturn Boolean(\n\t\tbrand &&\n\t\t\ttypeof brand === 'object' &&\n\t\t\t!isValidElement(brand) &&\n\t\t\t('logo' in brand || 'label' in brand || 'description' in brand || 'href' in brand),\n\t);\n}\n\nexport function useAuthLinks({\n\tlinks = [],\n\trenderLink,\n}: UseAuthLinksOptions = {}): UseAuthLinksReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst visibleLinks = useMemo(\n\t\t() => links.filter((link) => link.visible !== false),\n\t\t[links],\n\t);\n\n\treturn {\n\t\tlinks: visibleLinks,\n\t\trenderLink: resolvedRenderLink,\n\t};\n}\n\nexport function useAuthShell({\n\tvariant = 'card',\n\tbrand,\n\tfooter,\n\tfooterLinks = [],\n\tpolicyLinks = [],\n\tlanguageLinks = [],\n\tlanguageSwitcher,\n\tpostCard,\n\tsocialProviders = [],\n\tsplitPanel,\n\trenderLink,\n}: UseAuthShellOptions = {}): UseAuthShellReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst visibleFooterLinks = useMemo(\n\t\t() => footerLinks.filter((link) => link.visible !== false),\n\t\t[footerLinks],\n\t);\n\tconst visiblePolicyLinks = useMemo(\n\t\t() => policyLinks.filter((link) => link.visible !== false),\n\t\t[policyLinks],\n\t);\n\tconst visibleLanguageLinks = useMemo(\n\t\t() => languageLinks.filter((link) => link.visible !== false),\n\t\t[languageLinks],\n\t);\n\tconst visibleSocialProviders = useMemo(\n\t\t() => socialProviders.filter((provider) => provider.visible !== false),\n\t\t[socialProviders],\n\t);\n\tconst hasBrand = Boolean(\n\t\tbrand &&\n\t\t\t(isAuthBrandConfig(brand)\n\t\t\t\t? brand.logo || brand.label || brand.description\n\t\t\t\t: brand),\n\t);\n\tconst hasAfterCard = Boolean(\n\t\tpostCard ||\n\t\t\tfooter ||\n\t\t\tlanguageSwitcher ||\n\t\t\tvisibleFooterLinks.length > 0 ||\n\t\t\tvisiblePolicyLinks.length > 0 ||\n\t\t\tvisibleLanguageLinks.length > 0,\n\t);\n\tconst hasSplitPanel = Boolean(splitPanel);\n\n\treturn {\n\t\t// Only `split` depends on a panel being supplied; falling back to `card`\n\t\t// for every other variant would silently flatten them. `bare` in\n\t\t// particular has nothing to do with the split panel, so clamping on\n\t\t// `hasSplitPanel` alone discarded it.\n\t\tvariant: variant === 'split' && !hasSplitPanel ? 'card' : variant,\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders: visibleSocialProviders.length > 0,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t};\n}\n","export interface AuthShellStrings {\n\tsocialDivider: string;\n\tsocialProvidersLabel: string;\n\tfooterLinksLabel: string;\n\tpolicyLinksLabel: string;\n\tlanguageLinksLabel: string;\n}\n\nexport const defaultAuthShellStrings: AuthShellStrings = {\n\tsocialDivider: 'or continue with email',\n\tsocialProvidersLabel: 'Social sign-in options',\n\tfooterLinksLabel: 'Authentication links',\n\tpolicyLinksLabel: 'Policies',\n\tlanguageLinksLabel: 'Language options',\n};\n\nexport interface AuthFooterLinksStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthFooterLinksStrings: AuthFooterLinksStrings = {\n\tlabel: 'Authentication links',\n};\n\nexport interface AuthSocialProvidersStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthSocialProvidersStrings: AuthSocialProvidersStrings = {\n\tlabel: 'Social sign-in options',\n};\n\nexport interface AuthMethodSwitchStrings {\n\tlabel: string;\n\tdivider: string;\n}\n\nexport const defaultAuthMethodSwitchStrings: AuthMethodSwitchStrings = {\n\tlabel: 'Authentication method',\n\tdivider: 'or',\n};\n","import { Fragment } from 'react';\n\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { useAuthLinks } from './auth-hooks';\nimport { defaultAuthFooterLinksStrings } from './auth.strings';\nimport type { AuthFooterLinksProps } from './auth.types';\n\nexport function AuthFooterLinks({\n\tlinks,\n\tleadingIcon,\n\tseparator = '·',\n\trenderLink,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthFooterLinksProps) {\n\tconst strings = useStrings(defaultAuthFooterLinksStrings, stringsProp);\n\tconst { links: visibleLinks, renderLink: resolvedRenderLink } = useAuthLinks({\n\t\tlinks,\n\t\trenderLink,\n\t});\n\n\tif (visibleLinks.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<nav\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-footer-links--component',\n\t\t\t\t'flex flex-wrap items-center justify-center gap-x-space-md gap-y-space-xs text-center',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!leadingIcon && (\n\t\t\t\t<span className=\"auth-footer-links--icon flex shrink-0 items-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t{leadingIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{visibleLinks.map((link, index) => {\n\t\t\t\tconst linkNode = resolvedRenderLink({\n\t\t\t\t\thref: link.href,\n\t\t\t\t\ttarget: link.target,\n\t\t\t\t\trel: link.rel,\n\t\t\t\t\texternal: link.external,\n\t\t\t\t\tdisabled: link.disabled,\n\t\t\t\t\tonClick: link.onClick,\n\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t'auth-footer-links--item',\n\t\t\t\t\t\t'text-muted-foreground transition-colors hover:text-foreground',\n\t\t\t\t\t\tlink.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t),\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={link.id ?? index}>\n\t\t\t\t\t\t{index > 0 && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName=\"auth-footer-links--separator\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{linkNode}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n","/* oxlint-disable shadcn/no-raw-colors -- Official provider logos are external brand artwork, not themeable UI states. */\nimport { KeyRound } from 'lucide-react';\n\nimport { Button } from '../../base/buttons';\nimport { buttonVariants } from '../../base/buttons/button.variants';\nimport { useDensityConfig } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { Grid } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport { defaultAuthSocialProvidersStrings } from './auth.strings';\nimport type {\n\tAuthSocialProvider,\n\tAuthSocialProviderButtonProps,\n\tAuthSocialProvidersProps,\n} from './auth.types';\n\nconst PROVIDER_BUTTON_CLASS = 'auth-social-provider-button--component';\n\nfunction GoogleMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"size-icon\"\n\t\t\tviewBox=\"0 0 256 262\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<path fill=\"#4285F4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\" />\n\t\t\t<path fill=\"#34A853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\" />\n\t\t\t<path fill=\"#FBBC05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\" />\n\t\t\t<path fill=\"#EB4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\" />\n\t\t</svg>\n\t);\n}\n\nfunction MicrosoftMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\" aria-hidden=\"true\" className=\"size-icon\" viewBox=\"0 0 23 23\">\n\t\t\t<path fill=\"#f25022\" d=\"M1 1h10v10H1z\" />\n\t\t\t<path fill=\"#7fba00\" d=\"M12 1h10v10H12z\" />\n\t\t\t<path fill=\"#00a4ef\" d=\"M1 12h10v10H1z\" />\n\t\t\t<path fill=\"#ffb900\" d=\"M12 12h10v10H12z\" />\n\t\t</svg>\n\t);\n}\n\nfunction GithubMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\" aria-hidden=\"true\" className=\"size-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M12 2C6.48 2 2 6.58 2 12.24c0 4.53 2.87 8.37 6.84 9.73.5.09.68-.22.68-.49 0-.24-.01-.88-.01-1.73-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.63.07-.63 1 .07 1.53 1.06 1.53 1.06.9 1.57 2.36 1.12 2.93.86.09-.67.35-1.12.64-1.38-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.04 1.03-2.76-.1-.26-.45-1.31.1-2.72 0 0 .84-.28 2.75 1.05A9.32 9.32 0 0 1 12 6.95c.85 0 1.7.12 2.5.35 1.9-1.33 2.74-1.05 2.74-1.05.55 1.41.2 2.46.1 2.72.64.72 1.03 1.64 1.03 2.76 0 3.94-2.34 4.8-4.57 5.06.36.32.68.95.68 1.91 0 1.38-.01 2.49-.01 2.83 0 .27.18.59.69.49A10.12 10.12 0 0 0 22 12.24C22 6.58 17.52 2 12 2Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction AppleMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\" aria-hidden=\"true\" className=\"size-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M16.37 12.05c-.02-2.26 1.85-3.35 1.94-3.4-1.06-1.55-2.69-1.76-3.26-1.78-1.37-.14-2.7.82-3.39.82-.71 0-1.78-.8-2.93-.78-1.5.02-2.9.89-3.67 2.25-1.57 2.72-.4 6.72 1.1 8.92.76 1.08 1.64 2.29 2.79 2.25 1.13-.05 1.55-.72 2.91-.72 1.35 0 1.75.72 2.93.69 1.21-.02 1.98-1.09 2.71-2.18.87-1.24 1.22-2.46 1.23-2.52-.03-.01-2.34-.9-2.36-3.55ZM14.16 5.42c.61-.76 1.03-1.8.91-2.85-.88.04-1.98.61-2.62 1.35-.57.65-1.08 1.73-.95 2.74.99.08 2.02-.5 2.66-1.24Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction ProviderIcon({ provider }: { provider: AuthSocialProvider }) {\n\tif (provider.icon) return <>{provider.icon}</>;\n\tswitch (provider.provider) {\n\t\tcase 'google':\n\t\t\treturn <GoogleMark />;\n\t\tcase 'github':\n\t\t\treturn <GithubMark />;\n\t\tcase 'microsoft':\n\t\t\treturn <MicrosoftMark />;\n\t\tcase 'apple':\n\t\t\treturn <AppleMark />;\n\t\tdefault:\n\t\t\treturn <KeyRound className=\"size-icon\" aria-hidden=\"true\" />;\n\t}\n}\n\nexport function AuthSocialProviderButton({\n\tprovider,\n\trenderLink,\n\tclassName,\n}: AuthSocialProviderButtonProps) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveComponentScale(undefined, defaultScale);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst content = (\n\t\t<>\n\t\t\t<ProviderIcon provider={provider} />\n\t\t\t<Text tag=\"span\" className=\"text-inherit\">\n\t\t\t\t{provider.label}\n\t\t\t</Text>\n\t\t</>\n\t);\n\tconst buttonClassName = cn(\n\t\tPROVIDER_BUTTON_CLASS,\n\t\tbuttonVariants({size, tone: 'secondary', buttonStyle: 'outline', fullWidth: true}),\n\t\tprovider.disabled && 'pointer-events-none opacity-50',\n\t\tclassName,\n\t);\n\n\tif (provider.href) {\n\t\treturn resolvedRenderLink({\n\t\t\thref: provider.href,\n\t\t\ttarget: provider.target,\n\t\t\trel: provider.rel,\n\t\t\texternal: provider.external,\n\t\t\tdisabled: provider.disabled,\n\t\t\tonClick: provider.onClick,\n\t\t\tclassName: buttonClassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\ttone=\"secondary\"\n\t\t\tbuttonStyle=\"outline\"\n\t\t\tfullWidth\n\t\t\tdisabled={provider.disabled}\n\t\t\tclassName={cn('auth-social-provider-button--component', className)}\n\t\t\tonClick={(event) => provider.onClick?.(event)}\n\t\t>\n\t\t\t{content}\n\t\t</Button>\n\t);\n}\n\nexport function AuthSocialProviders({\n\tproviders,\n\tlayout = 'stack',\n\trenderLink,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthSocialProvidersProps) {\n\tconst strings = useStrings(defaultAuthSocialProvidersStrings, stringsProp);\n\tconst visibleProviders = providers?.filter((provider) => provider.visible !== false) ?? [];\n\n\tif (visibleProviders.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Grid\n\t\t\tcolumns={layout === 'grid' ? { base: 1, sm: 2 } : 1}\n\t\t\tgap=\"md\"\n\t\t\trole=\"group\"\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tdata-layout={layout}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-social-providers--component',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{visibleProviders.map((provider) => (\n\t\t\t\t<AuthSocialProviderButton\n\t\t\t\t\tkey={provider.id ?? String(provider.label)}\n\t\t\t\t\tprovider={provider}\n\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</Grid>\n\t);\n}\n","import {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../base/item';\nimport { Stack } from '../../base/structure';\nimport { DisplayLabel, Heading, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport type { AuthSplitPanelProps } from './auth.types';\n\nconst SURFACE_CLASS: Record<NonNullable<AuthSplitPanelProps['surface']>, string> = {\n\tcard: 'border-border bg-card text-card-foreground',\n\tmuted: 'border-border bg-muted/30',\n};\n\nexport function AuthSplitPanel({\n\teyebrow,\n\ttitle,\n\tdescription,\n\tmedia,\n\tfeatures,\n\tfooter,\n\tchildren,\n\tsurface = 'muted',\n\tclassName,\n\tcontentClassName,\n\t...props\n}: AuthSplitPanelProps) {\n\tconst hasIntro = Boolean(eyebrow || title || description);\n\tconst visibleFeatures = features?.filter((feature) => feature.title) ?? [];\n\n\treturn (\n\t\t<Stack\n\t\t\trender={<aside />}\n\t\t\tgap=\"none\"\n\t\t\tjustify=\"between\"\n\t\t\tdata-slot=\"auth-split-panel\"\n\t\t\tdata-surface={surface}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-split-panel--component',\n\t\t\t\t'box-border min-h-full w-full overflow-hidden border',\n\t\t\t\tSURFACE_CLASS[surface],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Stack\n\t\t\t\tgap=\"2xl\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-split-panel--content',\n\t\t\t\t\t'min-h-full p-surface md:p-surface-lg',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!media && (\n\t\t\t\t\t<div className=\"auth-split-panel--media overflow-hidden rounded-radius border border-border/60 bg-card text-card-foreground\">\n\t\t\t\t\t\t{media}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasIntro && (\n\t\t\t\t\t<Stack gap=\"md\" className=\"auth-split-panel--intro max-w-xl\">\n\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t<DisplayLabel tag=\"div\" className=\"auth-split-panel--eyebrow text-inherit\">\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag=\"h2\"\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--title text-inherit\"\n\t\t\t\t\t\t\t>\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{!!description && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--description max-w-prose\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t{visibleFeatures.length > 0 && (\n\t\t\t\t\t<ItemGroup className=\"auth-split-panel--features\">\n\t\t\t\t\t\t{visibleFeatures.map((feature, index) => (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={feature.id ?? index}\n\t\t\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--feature bg-card text-card-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!feature.icon && (\n\t\t\t\t\t\t\t\t\t<ItemMedia variant=\"icon\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{feature.icon}\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t<ItemTitle>{feature.title}</ItemTitle>\n\t\t\t\t\t\t\t\t\t{!!feature.description && (\n\t\t\t\t\t\t\t\t\t\t<ItemDescription clamp=\"none\">{feature.description}</ItemDescription>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t)}\n\n\t\t\t\t{children}\n\n\t\t\t\t{!!footer && (\n\t\t\t\t\t<div className=\"auth-split-panel--footer\">\n\t\t\t\t\t\t{footer}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n","import { Globe2 } from 'lucide-react';\nimport { isValidElement, type ReactNode } from 'react';\n\nimport { Text } from '../../typography';\nimport { Stack } from '../../base/structure';\nimport { containerRecipe } from '../containers/container.recipes';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { AuthCard } from './auth-card';\nimport { AuthFooterLinks } from './auth-footer-links';\nimport { isAuthBrandConfig, useAuthShell } from './auth-hooks';\nimport { defaultAuthShellStrings } from './auth.strings';\nimport { AuthSocialProviders } from './auth-social-providers';\nimport { AuthSplitPanel } from './auth-split-panel';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tAuthShellProps,\n\tAuthSplitPanelProps,\n} from './auth.types';\n\nconst SIZE_CLASS: Record<NonNullable<AuthShellProps['size']>, string> = {\n\tsm: 'max-w-sm',\n\tmd: 'max-w-md',\n\tlg: 'max-w-lg',\n};\n\nfunction isSplitPanelProps(panel: AuthShellProps['splitPanel']): panel is AuthSplitPanelProps {\n\treturn Boolean(panel && typeof panel === 'object' && !isValidElement(panel));\n}\n\nfunction renderBrandContent(brand: AuthBrandConfig): ReactNode {\n\tconst hasText = Boolean(brand.label || brand.description);\n\n\treturn (\n\t\t<>\n\t\t\t{!!brand.logo && (\n\t\t\t\t<div className=\"auth-shell--brand-logo shrink-0\">\n\t\t\t\t\t{brand.logo}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!hasText && (\n\t\t\t\t<div className=\"auth-shell--brand-text min-w-0\">\n\t\t\t\t\t{!!brand.label && (\n\t\t\t\t\t\t<Text tag=\"div\" weight=\"semibold\" className=\"auth-shell--brand-label\">\n\t\t\t\t\t\t\t{brand.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!brand.description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"auth-shell--brand-description\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{brand.description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nfunction renderBrand({\n\tbrand,\n\trenderLink,\n}: {\n\t/** Logo, name, and href for the product mark. */\n\tbrand?: AuthBrand;\n\trenderLink: NonNullable<AuthShellProps['renderLink']>;\n}) {\n\tif (!brand) return null;\n\n\tif (!isAuthBrandConfig(brand)) {\n\t\treturn (\n\t\t\t<div className=\"auth-shell--brand flex items-center justify-center\">\n\t\t\t\t{brand}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst content = renderBrandContent(brand);\n\tconst className = cn(\n\t\t'auth-shell--brand',\n\t\t'inline-flex items-center justify-center gap-space-md self-center rounded-radius text-foreground',\n\t\tbrand.href && 'transition-opacity hover:opacity-80',\n\t);\n\n\tif (brand.href) {\n\t\treturn renderLink({\n\t\t\thref: brand.href,\n\t\t\t'aria-label': brand.ariaLabel,\n\t\t\tclassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn <div className={className}>{content}</div>;\n}\n\nfunction renderSplitPanel(panel: AuthShellProps['splitPanel']) {\n\tif (!panel) return null;\n\tif (isValidElement(panel)) return panel;\n\tif (isSplitPanelProps(panel)) return <AuthSplitPanel {...panel} />;\n\treturn null;\n}\n\nexport function AuthShell({\n\tchildren,\n\tvariant: variantProp = 'card',\n\tsize = 'md',\n\talign = 'center',\n\tbrand,\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tcardMedia,\n\tcardMediaClassName,\n\tcardFooter,\n\tpostCard,\n\tfooter,\n\tfooterLinks,\n\tpolicyLinks,\n\tlanguageLinks,\n\tlanguageSwitcher,\n\tsocialProviders,\n\tsocialProvidersLayout = 'stack',\n\tsocialDivider,\n\tsplitPanel,\n\tsplitSide = 'left',\n\tsplitMobile = 'hidden',\n\trenderLink,\n\tclassName,\n\tmainClassName,\n\tstackClassName,\n\tcardClassName,\n\tcardContentClassName,\n\tsplitGridClassName,\n\tsplitPanelClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthShellProps) {\n\tconst strings = useStrings(defaultAuthShellStrings, stringsProp);\n\tconst {\n\t\tvariant,\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t} = useAuthShell({\n\t\tvariant: variantProp,\n\t\tbrand,\n\t\tfooter,\n\t\tfooterLinks,\n\t\tpolicyLinks,\n\t\tlanguageLinks,\n\t\tlanguageSwitcher,\n\t\tpostCard,\n\t\tsocialProviders,\n\t\tsplitPanel,\n\t\trenderLink,\n\t});\n\tconst isSplit = variant === 'split' && hasSplitPanel;\n\tconst panel = renderSplitPanel(splitPanel);\n\tconst panelFirst = splitSide === 'left';\n\tconst showStackedPanel = splitMobile === 'stacked';\n\tconst brandNode = hasBrand ? renderBrand({ brand, renderLink: resolvedRenderLink }) : null;\n\n\tconst main = (\n\t\t<Stack\n\t\t\trender={<main />}\n\t\t\tgap=\"none\"\n\t\t\talign={align === 'start' ? 'start' : 'center'}\n\t\t\tjustify=\"center\"\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--main',\n\t\t\t\tcontainerRecipe({ maxWidth: 'full', gutter: 'md' }),\n\t\t\t\t'min-h-svh py-surface-lg sm:px-surface-lg',\n\t\t\t\tmainClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Stack\n\t\t\t\tgap=\"xl\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--stack',\n\t\t\t\t\t'w-full',\n\t\t\t\t\tSIZE_CLASS[size],\n\t\t\t\t\tstackClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{brandNode}\n\n\t\t\t\t<AuthCard\n\t\t\t\t\tsurface={variant === 'bare' ? 'bare' : 'card'}\n\t\t\t\t\teyebrow={eyebrow}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\tbanner={banner}\n\t\t\t\t\tmedia={cardMedia}\n\t\t\t\t\tmediaClassName={cardMediaClassName}\n\t\t\t\t\tfooter={cardFooter}\n\t\t\t\t\tclassName={cardClassName}\n\t\t\t\t\tcontentClassName={cardContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{!!hasSocialProviders && (\n\t\t\t\t\t\t<Stack gap=\"xl\" className=\"auth-shell--social mb-space-xl\">\n\t\t\t\t\t\t\t<AuthSocialProviders\n\t\t\t\t\t\t\t\tproviders={visibleSocialProviders}\n\t\t\t\t\t\t\t\tlayout={socialProvidersLayout}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.socialProvidersLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"auth-shell--social-divider flex items-center gap-space-lg\">\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t{socialDivider ?? strings.socialDivider}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\t{children}\n\t\t\t\t</AuthCard>\n\n\t\t\t\t{!!hasAfterCard && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tgap=\"lg\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--after-card',\n\t\t\t\t\t\t\t'text-center',\n\t\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!postCard && <div className=\"auth-shell--post-card\">{postCard}</div>}\n\t\t\t\t\t\t{!!languageSwitcher && (\n\t\t\t\t\t\t\t<div className=\"auth-shell--language-switcher\">\n\t\t\t\t\t\t\t\t{languageSwitcher}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleLanguageLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--language-links\"\n\t\t\t\t\t\t\t\tlinks={visibleLanguageLinks}\n\t\t\t\t\t\t\t\tleadingIcon={<Globe2 className=\"size-icon-md\" />}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.languageLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleFooterLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--footer-links\"\n\t\t\t\t\t\t\t\tlinks={visibleFooterLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.footerLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visiblePolicyLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--policy-links\"\n\t\t\t\t\t\t\t\tlinks={visiblePolicyLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.policyLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!footer && <div className=\"auth-shell--footer\">{footer}</div>}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n\n\tif (!isSplit) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"auth-shell\"\n\t\t\t\tdata-variant={variant === 'bare' ? 'bare' : 'card'}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--component',\n\t\t\t\t\t'@container/auth-shell min-h-svh bg-background text-foreground',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{main}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"auth-shell\"\n\t\t\tdata-variant=\"split\"\n\t\t\tdata-split-side={splitSide}\n\t\t\tdata-split-mobile={splitMobile}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--component',\n\t\t\t\t'@container/auth-shell min-h-svh bg-background text-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--split-grid min-h-svh @5xl/auth-shell:grid',\n\t\t\t\t\tpanelFirst\n\t\t\t\t\t\t? '@5xl/auth-shell:grid-cols-[minmax(0,1fr)_minmax(24rem,34rem)]'\n\t\t\t\t\t\t: '@5xl/auth-shell:grid-cols-[minmax(24rem,34rem)_minmax(0,1fr)]',\n\t\t\t\t\tsplitGridClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden @5xl/auth-shell:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{main}\n\t\t\t\t{!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden @5xl/auth-shell:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { cn } from '../../../lib/utils';\nimport { Grid } from '../../base/structure';\n\nimport type { AuthFormProps, AuthFormRowProps } from './auth.types';\n\n/**\n * Canonical auth form track. The explicit minmax(0, 1fr) column prevents\n * nowrap controls from widening a narrow auth card through grid min-content.\n */\nexport function AuthForm({ className, ...props }: AuthFormProps) {\n\tconst { children, ...formProps } = props;\n\n\treturn (\n\t\t<Grid\n\t\t\trender={(renderProps) => <form {...formProps} {...renderProps} />}\n\t\t\tcolumns={1}\n\t\t\tgap=\"xl\"\n\t\t\tdata-slot=\"auth-form\"\n\t\t\tclassName={cn('auth-form--component', className)}\n\t\t>\n\t\t\t{children}\n\t\t</Grid>\n\t);\n}\n\n/**\n * Auxiliary auth row for controls such as \"remember me\" and recovery links.\n * Items remain side by side when they fit and wrap without widening the card.\n */\nexport function AuthFormRow({ className, ...props }: AuthFormRowProps) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"auth-form-row\"\n\t\t\tclassName={cn(\n\t\t\t\t'auth-form-row--component',\n\t\t\t\t'flex min-w-0 flex-wrap items-center justify-between gap-x-space-lg gap-y-space-md',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","import * as React from 'react';\n\nimport { Grid, Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { resolveTextClassNames } from '../../typography/text.styles';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultAuthMethodSwitchStrings } from './auth.strings';\nimport type {\n\tAuthMethodOption,\n\tAuthMethodSwitchProps,\n\tUseAuthMethodSwitchOptions,\n\tUseAuthMethodSwitchReturn,\n} from './auth.types';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\n\nfunction firstEnabledOption(options: AuthMethodOption[]) {\n\treturn options.find((option) => !option.disabled);\n}\n\nexport function useAuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n}: UseAuthMethodSwitchOptions = {}): UseAuthMethodSwitchReturn {\n\tconst visibleOptions = React.useMemo(() => options.filter((option) => option.visible !== false), [options]);\n\tconst fallbackValue = defaultValue ?? firstEnabledOption(visibleOptions)?.id;\n\tconst [internalValue, setInternalValue] = React.useState<string | undefined>(fallbackValue);\n\tconst isControlled = value !== undefined;\n\tconst selectedValue = isControlled ? value : internalValue;\n\tconst selectedOption = visibleOptions.find((option) => option.id === selectedValue);\n\n\tconst setValue = React.useCallback(\n\t\t(nextValue: string) => {\n\t\t\tconst nextOption = visibleOptions.find((option) => option.id === nextValue);\n\t\t\tif (!nextOption || nextOption.disabled) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue(nextValue);\n\t\t\t}\n\n\t\t\tonValueChange?.(nextValue, nextOption);\n\t\t},\n\t\t[isControlled, onValueChange, visibleOptions],\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isControlled || selectedOption || visibleOptions.length === 0) return;\n\t\tsetInternalValue(firstEnabledOption(visibleOptions)?.id);\n\t}, [isControlled, selectedOption, visibleOptions]);\n\n\treturn {\n\t\tvalue: selectedValue,\n\t\tselectedOption,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t};\n}\n\nexport function AuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tlayout = 'stack',\n\tdivider,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthMethodSwitchProps) {\n\tconst strings = useStrings(defaultAuthMethodSwitchStrings, stringsProp);\n\tconst { ['aria-label']: ariaLabel, ...rootProps } = props;\n\tconst {\n\t\tvalue: selectedValue,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t} = useAuthMethodSwitch({\n\t\toptions,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t});\n\n\tif (visibleOptions.length === 0) {\n\t\treturn null;\n\t}\n\tconst segmented = layout === 'segmented';\n\tconst optionButtons = visibleOptions.map((option) => {\n\t\tconst selected = option.id === selectedValue;\n\t\tconst optionContent = (\n\t\t\t<>\n\t\t\t\t{!!option.icon && (\n\t\t\t\t\t<span className=\"auth-method-switch--option-icon shrink-0\" aria-hidden=\"true\">\n\t\t\t\t\t\t{option.icon}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<Stack render={<span />} gap=\"dense\" className=\"auth-method-switch--option-copy w-full\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tlineHeight=\"tight\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'max-w-full whitespace-normal break-words text-inherit',\n\t\t\t\t\t\t\tsegmented ? 'text-center min-[480px]:truncate min-[480px]:text-start' : 'text-start',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!option.description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tlineHeight={segmented ? undefined : 'snug'}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'whitespace-normal break-words',\n\t\t\t\t\t\t\t\tsegmented ? 'hidden min-[480px]:block min-[480px]:truncate' : 'text-start',\n\t\t\t\t\t\t\t\tselected ? 'text-inherit' : 'text-muted-foreground',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</>\n\t\t);\n\t\treturn (\n\t\t\t<button\n\t\t\t\tkey={option.id}\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-pressed={selected}\n\t\t\t\tdisabled={option.disabled}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-method-switch--option',\n\t\t\t\t\t`box-border m-0 inline-flex min-h-action-lg min-w-0 w-full cursor-pointer items-center justify-start gap-space-sm whitespace-normal rounded-inner border px-control py-row-y-lg text-start outline-none transition-[color,background-color,border-color,box-shadow] ${focusRecipes.frame} disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\t\tresolveTextClassNames({type: null, size: 'sm', weight: 'medium', align: null, lineHeight: 'none'}),\n\t\t\t\t\tselected ? 'border-transparent bg-primary text-primary-foreground' : segmented ? `border-transparent bg-transparent text-foreground ${interactionRecipes.rowHover}` : `border-input bg-background text-foreground ${interactionRecipes.rowHover}`,\n\t\t\t\t\tsegmented &&\n\t\t\t\t\t\t'min-h-action justify-center border-0 px-control-sm py-row-y text-center shadow-none min-[480px]:px-control min-[480px]:text-start',\n\t\t\t\t\tselected && 'auth-method-switch--option-selected',\n\t\t\t\t)}\n\t\t\t\tonClick={() => setValue(option.id)}\n\t\t\t>\n\t\t\t\t{segmented ? (\n\t\t\t\t\t<span className=\"auth-method-switch--option-inner flex w-full flex-col justify-center gap-space-xs min-[480px]:w-auto min-[480px]:flex-row min-[480px]:justify-start min-[480px]:gap-space-md\">\n\t\t\t\t\t\t{optionContent}\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"md\" wrap={false} className=\"auth-method-switch--option-inner w-full\">\n\t\t\t\t\t\t{optionContent}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t});\n\n\treturn (\n\t\t<Stack gap=\"lg\" className={cn('auth-method-switch--component', className)} {...rootProps}>\n\t\t\t{divider !== null && divider !== false && (\n\t\t\t\t<div className=\"auth-method-switch--divider flex items-center gap-space-lg\">\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{divider ?? strings.divider}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{layout === 'segmented' ? (\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-label={ariaLabel ?? strings.label}\n\t\t\t\t\tdata-layout={layout}\n\t\t\t\t\tclassName=\"auth-method-switch--options grid min-w-0 grid-cols-[repeat(auto-fit,minmax(0,1fr))] gap-space-xs rounded-inner border border-border bg-muted p-space-xs\"\n\t\t\t\t>\n\t\t\t\t\t{optionButtons}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={layout === 'grid' ? { base: 1, sm: 2 } : 1}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-label={ariaLabel ?? strings.label}\n\t\t\t\t\tdata-layout={layout}\n\t\t\t\t\tclassName=\"auth-method-switch--options\"\n\t\t\t\t>\n\t\t\t\t\t{optionButtons}\n\t\t\t\t</Grid>\n\t\t\t)}\n\t\t</Stack>\n\t);\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { s as e, v as t } from "./ui-provider-1D_NSYzO.js";
3
- import { t as n } from "./utils-l5LpDw2z.js";
4
- import { t as r } from "./affordance-geometry.generated-B5iu-Mkr.js";
5
- import { s as i } from "./typography-DTRkE9zL.js";
6
- import { r as a } from "./tone-recipes-CPoExcTE.js";
2
+ import { s as e, v as t } from "./ui-provider-C_U0Xma4.js";
3
+ import { t as n } from "./utils-BRhFDwuU.js";
4
+ import { t as r } from "./affordance-geometry.generated-tF36bREk.js";
5
+ import { c as i } from "./typography-UTnveOEy.js";
6
+ import { i as a } from "./tone-recipes-BPsRAvhu.js";
7
7
  import { t as o } from "./initials-format-CDoQEOd_.js";
8
8
  import * as s from "react";
9
9
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -48,7 +48,7 @@ function h({ className: e, ...t }) {
48
48
  function g({ className: e, ...t }) {
49
49
  return /* @__PURE__ */ c("div", {
50
50
  "data-slot": "avatar-group-count",
51
- className: n("bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2", e),
51
+ className: n("bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-icon group-has-data-[size=lg]/avatar-group:[&>svg]:size-icon-lg group-has-data-[size=sm]/avatar-group:[&>svg]:size-icon-sm ring-background relative flex shrink-0 items-center justify-center ring-2", e),
52
52
  ...t
53
53
  });
54
54
  }
@@ -178,4 +178,4 @@ O.displayName = "StackedAvatars";
178
178
  //#endregion
179
179
  export { C as a, x as i, y as n, w as o, S as r, b as s, O as t };
180
180
 
181
- //# sourceMappingURL=avatar-BBnEJIx8.js.map
181
+ //# sourceMappingURL=avatar-DAPlDvhJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-DAPlDvhJ.js","names":["Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","AvatarBadge","AvatarGroup","AvatarGroupCount","Avatar","React","PrimitiveAvatar","PrimitiveAvatarImage","PrimitiveAvatarFallback","PrimitiveAvatarBadge","PrimitiveAvatarGroup","PrimitiveAvatarGroupCount","Avatar","useDensityConfig","resolveComponentScale","cn","affordanceGeometry","Text","toneRecipes","formatInitials","React$1","Avatar$2","props","Avatar","size","className","AvatarImage$1","AvatarFallback$1","AvatarBadge$1","AvatarGroup$1","AvatarGroupCount$1","AVATAR_SIZE_CLASSNAMES","getPrimitiveSize","Avatar$1","sizeProp","defaultScale","AvatarImage","AvatarFallback","children","AvatarBadge","AvatarGroup","AvatarGroupCount","FALLBACK_TONES","FALLBACK_TONE_CLASSNAMES","pickFallbackTone","override","StackedAvatars","visible","users","max","overflow","overflowContent","overflowFormatter","initials","user","fallbackTone","avatarClassName","index","showOverflow"],"sources":["../src/components/ui/avatar.tsx","../src/components/base/avatar/avatar.tsx","../src/components/base/avatar/stacked-avatars.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"rounded-full aspect-square size-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"bg-primary text-primary-foreground ring-background absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\"bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-icon group-has-data-[size=lg]/avatar-group:[&>svg]:size-icon-lg group-has-data-[size=sm]/avatar-group:[&>svg]:size-icon-sm ring-background relative flex shrink-0 items-center justify-center ring-2\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n","/**\n * Avatar — tokenized base wrapper around the shadcn/Base UI avatar primitive.\n * Public sizing uses the shared component scale.\n */\nimport * as React from 'react';\n\nimport {\n\tAvatar as PrimitiveAvatar,\n\tAvatarBadge as PrimitiveAvatarBadge,\n\tAvatarFallback as PrimitiveAvatarFallback,\n\tAvatarGroup as PrimitiveAvatarGroup,\n\tAvatarGroupCount as PrimitiveAvatarGroupCount,\n\tAvatarImage as PrimitiveAvatarImage,\n} from '../../ui/avatar';\nimport { useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { affordanceGeometry } from '../../../lib/affordance-geometry.generated';\n\nexport type AvatarSize = ComponentScale;\n\nexport interface AvatarProps\n\textends Omit<React.ComponentPropsWithoutRef<typeof PrimitiveAvatar>, 'size'> {\n\t/** Size preset. */\n\tsize?: AvatarSize;\n}\n\nexport type AvatarImageProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarImage>;\nexport type AvatarFallbackProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarFallback>;\nexport type AvatarBadgeProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarBadge>;\nexport type AvatarGroupProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarGroup>;\nexport type AvatarGroupCountProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarGroupCount>;\n\nconst AVATAR_SIZE_CLASSNAMES: Record<AvatarSize, string> = {\n\tsm: 'size-avatar-sm data-[size=sm]:size-avatar-sm',\n\tmd: 'size-avatar',\n\tlg: 'size-avatar-lg data-[size=lg]:size-avatar-lg',\n};\n\nfunction getPrimitiveSize(size: AvatarSize): NonNullable<React.ComponentPropsWithoutRef<typeof PrimitiveAvatar>['size']> {\n\tif (size === 'sm') return 'sm';\n\tif (size === 'lg') return 'lg';\n\treturn 'default';\n}\n\nconst Avatar = React.forwardRef<React.ElementRef<typeof PrimitiveAvatar>, AvatarProps>(\n\t({ size: sizeProp, className, ...props }, ref) => {\n\t\tconst { defaultScale } = useDensityConfig();\n\t\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\t\treturn (\n\t\t\t<PrimitiveAvatar\n\t\t\t\tref={ref}\n\t\t\t\tsize={getPrimitiveSize(size)}\n\t\t\t\tdata-scale={size}\n\t\t\t\tclassName={cn('avatar--component', AVATAR_SIZE_CLASSNAMES[size], className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nAvatar.displayName = 'Avatar';\n\nconst AvatarImage = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarImage>, AvatarImageProps>(\n\t({ className, ...props }, ref) => (\n\t\t<PrimitiveAvatarImage\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar--image', className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nAvatarImage.displayName = 'AvatarImage';\n\nconst AvatarFallback = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarFallback>, AvatarFallbackProps>(\n\t({ className, children, ...props }, ref) => (\n\t\t<PrimitiveAvatarFallback\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar--fallback text-xs font-medium leading-none', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint' ? (\n\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"none\" className=\"text-inherit\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</PrimitiveAvatarFallback>\n\t),\n);\nAvatarFallback.displayName = 'AvatarFallback';\n\nconst AvatarBadge = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarBadge>, AvatarBadgeProps>(\n\t({ className, ...props }, ref) => (\n\t\t<PrimitiveAvatarBadge\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar--badge', className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nAvatarBadge.displayName = 'AvatarBadge';\n\nconst AvatarGroup = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarGroup>, AvatarGroupProps>(\n\t({ className, ...props }, ref) => (\n\t\t<PrimitiveAvatarGroup\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar-group--component isolate items-center', affordanceGeometry.avatarOverlap.md, affordanceGeometry.avatarOverlap.sm, affordanceGeometry.avatarOverlap.lg, className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nAvatarGroup.displayName = 'AvatarGroup';\n\nconst AvatarGroupCount = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarGroupCount>, AvatarGroupCountProps>(\n\t({ className, children, ...props }, ref) => (\n\t\t<PrimitiveAvatarGroupCount\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'avatar-group-count--component size-avatar text-xs',\n\t\t\t\t'group-has-data-[size=sm]/avatar-group:size-avatar-sm',\n\t\t\t\t'group-has-data-[size=lg]/avatar-group:size-avatar-lg',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint' ? (\n\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"none\" className=\"text-inherit\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</PrimitiveAvatarGroupCount>\n\t),\n);\nAvatarGroupCount.displayName = 'AvatarGroupCount';\n\nexport {\n\tAvatar,\n\tAvatarImage,\n\tAvatarFallback,\n\tAvatarGroup,\n\tAvatarGroupCount,\n\tAvatarBadge,\n};\n","/**\n * StackedAvatars — overlapping avatar group with optional `+N` overflow chip,\n * configurable size, and an optional semantic `tone` for fallbacks (initials)\n * when the consumer hasn't passed `imageUrl`.\n *\n * Fallbacks are neutral by default: colour states meaning, so a person's\n * initials are not tinted by a hash of their name. Pass `tone` per user when a\n * fallback does carry meaning; numeric tones map onto the semantic token set.\n */\nimport * as React from 'react';\nimport {\n\tAvatar,\n\tAvatarFallback,\n\tAvatarGroup,\n\tAvatarGroupCount,\n\tAvatarImage,\n} from './avatar';\nimport { formatInitials } from '../../primitives/initials-format';\nimport { Text } from '../../typography';\nimport { useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\nimport type { SemanticTone } from '../../../lib/component-vocabulary';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\nexport type StackedAvatarsSize = ComponentScale;\nexport type StackedAvatarTone = SemanticTone;\n\nexport interface StackedAvatarUser {\n\t/** Stable identity for this entry. */\n\tid?: string;\n\t/** The person's name; supplies the initials and the hover title. */\n\tname: string;\n\timageUrl?: string;\n\t/** Semantic tone for this user's fallback. Defaults to `neutral`. Numeric values map to the token set. */\n\ttone?: StackedAvatarTone | number;\n}\n\nexport interface StackedAvatarsProps {\n\tusers: StackedAvatarUser[];\n\tmax?: number;\n\t/** Size preset. */\n\tsize?: StackedAvatarsSize;\n\tclassName?: string;\n\t/** Whether to render a `+N` count when `users.length > max`. Default `true`. */\n\tshowOverflow?: boolean;\n\t/** Provide custom overflow text (e.g. \"+12 more\"). Default `+N`. */\n\toverflowFormatter?: (overflow: number) => React.ReactNode;\n\t/** Extra class names applied to each avatar root. */\n\tavatarClassName?: string;\n}\n\nconst FALLBACK_TONES: StackedAvatarTone[] = [\n\t'neutral',\n\t'primary',\n\t'secondary',\n\t'info',\n\t'success',\n];\n\nconst FALLBACK_TONE_CLASSNAMES: Record<StackedAvatarTone, string> = {\n\tneutral: 'bg-muted text-muted-foreground',\n\tprimary: `${toneRecipes.primary.tint} ${toneRecipes.primary.ink}`,\n\tsecondary: 'bg-secondary text-secondary-foreground',\n\tinfo: `${toneRecipes.info.tint} ${toneRecipes.info.ink}`,\n\tsuccess: `${toneRecipes.success.tint} ${toneRecipes.success.ink}`,\n\twarning: `${toneRecipes.warning.tint} ${toneRecipes.warning.ink}`,\n\tdestructive: `${toneRecipes.destructive.tint} ${toneRecipes.destructive.ink}`,\n};\n\nfunction pickFallbackTone(override?: StackedAvatarTone | number): StackedAvatarTone {\n\tif (typeof override === 'string') {\n\t\treturn override;\n\t}\n\tif (typeof override === 'number') {\n\t\treturn FALLBACK_TONES[Math.abs(override) % FALLBACK_TONES.length];\n\t}\n\treturn 'neutral';\n}\n\nexport function StackedAvatars({\n\tusers,\n\tmax = 4,\n\tsize: sizeProp,\n\tclassName,\n\tshowOverflow = true,\n\toverflowFormatter,\n\tavatarClassName,\n}: StackedAvatarsProps) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\tconst visible = users.slice(0, max);\n\tconst overflow = Math.max(0, users.length - max);\n\tconst overflowContent = overflowFormatter ? overflowFormatter(overflow) : `+${overflow}`;\n\n\treturn (\n\t\t<AvatarGroup className={cn('stacked-avatars--component', className)}>\n\t\t\t{visible.map((user, index) => {\n\t\t\t\tconst initials = formatInitials(user.name, {\n\t\t\t\t\tmaxCharacters: size === 'sm' ? 1 : 2,\n\t\t\t\t\tfallback: '?',\n\t\t\t\t});\n\t\t\t\tconst fallbackTone = pickFallbackTone(user.tone);\n\t\t\t\treturn (\n\t\t\t\t\t<Avatar\n\t\t\t\t\t\tkey={user.id ?? `${user.name}-${index}`}\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tclassName={cn('ring-background', avatarClassName)}\n\t\t\t\t\t\ttitle={user.name}\n\t\t\t\t\t>\n\t\t\t\t\t\t{user.imageUrl ? (\n\t\t\t\t\t\t\t<AvatarImage src={user.imageUrl} alt={user.name} />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<AvatarFallback className={FALLBACK_TONE_CLASSNAMES[fallbackTone]}>\n\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t</Avatar>\n\t\t\t\t);\n\t\t\t})}\n\t\t\t{!!showOverflow && overflow > 0 && (\n\t\t\t\t<AvatarGroupCount data-scale={size} data-size={size === 'md' ? 'default' : size}>\n\t\t\t\t\t{typeof overflowContent === 'string' || typeof overflowContent === 'number' || typeof overflowContent === 'bigint' ? (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"none\" className=\"text-inherit\">\n\t\t\t\t\t\t\t{overflowContent}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : overflowContent}\n\t\t\t\t</AvatarGroupCount>\n\t\t\t)}\n\t\t</AvatarGroup>\n\t);\n}\n\nStackedAvatars.displayName = 'StackedAvatars';\n"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  "use client";
2
- import { n as e, s as t, v as n } from "./ui-provider-1D_NSYzO.js";
3
- import { t as r } from "./utils-l5LpDw2z.js";
4
- import { s as i } from "./typography-DTRkE9zL.js";
5
- import { r as a } from "./tone-recipes-CPoExcTE.js";
6
- import * as o from "react";
7
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
- import { TriangleAlert as l } from "lucide-react";
9
- import { useRender as u } from "@base-ui/react/use-render";
2
+ import { n as e, s as t, v as n } from "./ui-provider-C_U0Xma4.js";
3
+ import { t as r } from "./utils-BRhFDwuU.js";
4
+ import { c as i } from "./typography-UTnveOEy.js";
5
+ import { i as a, t as o } from "./tone-recipes-BPsRAvhu.js";
6
+ import * as s from "react";
7
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
+ import { TriangleAlert as u } from "lucide-react";
9
+ import { useRender as d } from "@base-ui/react/use-render";
10
10
  //#region src/components/ui/badge.tsx
11
- function d({ className: e, asChild: t = !1, children: n, ...i }) {
12
- return u({
11
+ function f({ className: e, asChild: t = !1, children: n, ...i }) {
12
+ return d({
13
13
  defaultTagName: "span",
14
- render: t && o.isValidElement(n) ? n : void 0,
14
+ render: t && s.isValidElement(n) ? n : void 0,
15
15
  props: {
16
16
  ...i,
17
17
  "data-slot": "badge",
@@ -22,7 +22,7 @@ function d({ className: e, asChild: t = !1, children: n, ...i }) {
22
22
  }
23
23
  //#endregion
24
24
  //#region src/components/base/badge/badge.recipes.ts
25
- var f = {
25
+ var p = {
26
26
  root: "inline-flex items-center justify-center shrink-0 h-fit rounded-radius font-sans font-medium border border-transparent w-fit max-w-full whitespace-nowrap overflow-visible box-border align-middle",
27
27
  sizeSm: "min-h-0 py-[calc(0.1875rem*var(--space-scale))] px-control-xs gap-space-xs text-xs leading-none",
28
28
  sizeMd: "min-h-0 py-[calc(0.1875rem*var(--space-scale))] px-control-xs gap-space-xs text-xs leading-tight",
@@ -30,7 +30,7 @@ var f = {
30
30
  isInline: "inline-flex align-baseline text-xs py-space-2xs px-control-xs leading-none",
31
31
  isPending: "[&_.badge-dot]:bg-transparent [&_.badge-dot]:border-[1.5px] [&_.badge-dot]:border-current",
32
32
  isPulse: "[&_.badge-dot]:animate-badge-pulse motion-reduce:[&_.badge-dot]:animate-none",
33
- dot: "badge-dot size-1.5 rounded-full shrink-0 bg-current",
33
+ dot: `badge-dot ${o.inline} bg-current`,
34
34
  icon: "size-icon-sm shrink-0",
35
35
  label: "inline-flex min-w-0 max-w-full items-center gap-space-xs overflow-hidden text-ellipsis whitespace-nowrap",
36
36
  tonePrimary: "bg-primary text-primary-foreground border-primary",
@@ -40,45 +40,45 @@ var f = {
40
40
  toneInfo: `${a.info.tint} ${a.info.ink} ${a.info.edge}`,
41
41
  toneWarning: `${a.warning.tint} ${a.warning.ink} ${a.warning.edge}`,
42
42
  toneDestructive: `${a.destructive.tint} ${a.destructive.ink} ${a.destructive.edge}`
43
- }, p = {
44
- neutral: f.toneNeutral,
45
- primary: f.tonePrimary,
46
- secondary: f.toneSecondary,
47
- destructive: f.toneDestructive,
48
- success: f.toneSuccess,
49
- warning: f.toneWarning,
50
- info: f.toneInfo
51
43
  }, m = {
52
- sm: f.sizeSm,
53
- md: f.sizeMd,
54
- lg: f.sizeLg
55
- }, h = o.forwardRef(function({ tone: a, className: o, size: u, inline: h = !1, dot: g = !1, pending: _ = !1, pulse: v = !1, important: y = !1, children: b, ...x }, S) {
56
- let { defaultTone: C } = e(), { defaultScale: w } = t(), T = n(u, w), E = a ?? C ?? "neutral", D = typeof b == "string" || typeof b == "number" || typeof b == "bigint";
57
- return /* @__PURE__ */ c(d, {
44
+ neutral: p.toneNeutral,
45
+ primary: p.tonePrimary,
46
+ secondary: p.toneSecondary,
47
+ destructive: p.toneDestructive,
48
+ success: p.toneSuccess,
49
+ warning: p.toneWarning,
50
+ info: p.toneInfo
51
+ }, h = {
52
+ sm: p.sizeSm,
53
+ md: p.sizeMd,
54
+ lg: p.sizeLg
55
+ }, g = s.forwardRef(function({ tone: a, className: o, size: s, inline: d = !1, dot: g = !1, pending: _ = !1, pulse: v = !1, important: y = !1, children: b, ...x }, S) {
56
+ let { defaultTone: C } = e(), { defaultScale: w } = t(), T = n(s, w), E = a ?? C ?? "neutral", D = typeof b == "string" || typeof b == "number" || typeof b == "bigint";
57
+ return /* @__PURE__ */ l(f, {
58
58
  ref: S,
59
59
  "data-slot": "badge",
60
60
  "data-tone": E,
61
61
  "data-size": T,
62
- "data-inline": h || void 0,
62
+ "data-inline": d || void 0,
63
63
  "data-pending": _ || void 0,
64
- className: r("badge--component", f.root, p[E], m[T], h && f.isInline, _ && f.isPending, v && f.isPulse, o),
64
+ className: r("badge--component", p.root, m[E], h[T], d && p.isInline, _ && p.isPending, v && p.isPulse, o),
65
65
  ...x,
66
66
  children: [
67
- !!g && /* @__PURE__ */ s("span", {
67
+ !!g && /* @__PURE__ */ c("span", {
68
68
  "aria-hidden": "true",
69
- className: f.dot
69
+ className: p.dot
70
70
  }),
71
- !!y && !g && /* @__PURE__ */ s(l, {
71
+ !!y && !g && /* @__PURE__ */ c(u, {
72
72
  "aria-hidden": "true",
73
- className: f.icon
73
+ className: p.icon
74
74
  }),
75
- /* @__PURE__ */ s("span", {
76
- className: f.label,
77
- children: D ? /* @__PURE__ */ s(i, {
75
+ /* @__PURE__ */ c("span", {
76
+ className: p.label,
77
+ children: D ? /* @__PURE__ */ c(i, {
78
78
  tag: "span",
79
79
  size: "inherit",
80
80
  weight: "medium",
81
- lineHeight: T === "sm" || h ? "none" : "tight",
81
+ lineHeight: T === "sm" || d ? "none" : "tight",
82
82
  className: "text-inherit",
83
83
  children: b
84
84
  }) : b
@@ -86,8 +86,8 @@ var f = {
86
86
  ]
87
87
  });
88
88
  });
89
- h.displayName = "Badge";
89
+ g.displayName = "Badge";
90
90
  //#endregion
91
- export { h as t };
91
+ export { g as t };
92
92
 
93
- //# sourceMappingURL=badge-MrKVNzW9.js.map
93
+ //# sourceMappingURL=badge-HpFqoqSY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge-HpFqoqSY.js","names":["Badge","React","styles","React","BaseBadge","useBadgeConfig","useDensityConfig","resolveComponentScale","cn","Text","toneRecipes","dotRecipes","React$1","Badge$1","props","useRender","asChild","children","className","badgeRecipes","toneClassMap","sizeClassMap","Badge","toneProp","sizeProp","resolvedSize","defaultScale","tone","defaultTone","isSimpleText","inline","pending","pulse","dot","important","TriangleAlert"],"sources":["../src/components/ui/badge.tsx","../src/components/base/badge/badge.recipes.ts","../src/components/base/badge/badge.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nfunction Badge({ className, asChild = false, children, ...props }:\n\tReact.ComponentProps<'span'> & { asChild?: boolean }) {\n\treturn useRender({\n\t\tdefaultTagName: 'span',\n\t\trender: asChild && React.isValidElement(children) ? children : undefined,\n\t\tprops: { ...props, 'data-slot': 'badge', className: cn(className), ...(asChild ? {} : { children }) },\n\t});\n}\n\nexport { Badge };\n","import { dotRecipes, toneRecipes } from '../../../lib/tone-recipes';\n\n/** Private Tailwind recipes; public props and DOM hooks remain owned by the component. */\nexport const badgeRecipes = {\n\t// Content-sized in both axes (`w-fit h-fit`) so the badge never stretches yet\n\t// follows its parent's alignment: centred in an `items-center` row, at the\n\t// start edge of a left-aligned column. No `self-*` override of the parent.\n\troot: \"inline-flex items-center justify-center shrink-0 h-fit rounded-radius font-sans font-medium border border-transparent w-fit max-w-full whitespace-nowrap overflow-visible box-border align-middle\",\n\t// The two text-xs sizes take one and a half 2xs steps of block padding (3px at\n\t// the default space scale): taller chips at the same type size, so sm reads 20px\n\t// and md 23px. Written from the root space scale so scoped spacing applies.\n\t// Inline badges keep the 2xs step to sit inside a running line of text.\n\tsizeSm: \"min-h-0 py-[calc(0.1875rem*var(--space-scale))] px-control-xs gap-space-xs text-xs leading-none\",\n\tsizeMd: \"min-h-0 py-[calc(0.1875rem*var(--space-scale))] px-control-xs gap-space-xs text-xs leading-tight\",\n\tsizeLg: \"min-h-0 py-space-xs px-control-sm gap-space-sm text-sm leading-tight\",\n\tisInline: \"inline-flex align-baseline text-xs py-space-2xs px-control-xs leading-none\",\n\tisPending: \"[&_.badge-dot]:bg-transparent [&_.badge-dot]:border-[1.5px] [&_.badge-dot]:border-current\",\n\tisPulse: \"[&_.badge-dot]:animate-badge-pulse motion-reduce:[&_.badge-dot]:animate-none\",\n\tdot: `badge-dot ${dotRecipes.inline} bg-current`,\n\ticon: \"size-icon-sm shrink-0\",\n\tlabel: \"inline-flex min-w-0 max-w-full items-center gap-space-xs overflow-hidden text-ellipsis whitespace-nowrap\",\n\ttonePrimary: \"bg-primary text-primary-foreground border-primary\",\n\ttoneNeutral: \"bg-foreground/8 text-foreground border-transparent\",\n\ttoneSecondary: \"bg-foreground/8 text-foreground border-transparent\",\n\ttoneSuccess: `${toneRecipes.success.tint} ${toneRecipes.success.ink} ${toneRecipes.success.edge}`,\n\ttoneInfo: `${toneRecipes.info.tint} ${toneRecipes.info.ink} ${toneRecipes.info.edge}`,\n\ttoneWarning: `${toneRecipes.warning.tint} ${toneRecipes.warning.ink} ${toneRecipes.warning.edge}`,\n\ttoneDestructive: `${toneRecipes.destructive.tint} ${toneRecipes.destructive.ink} ${toneRecipes.destructive.edge}`,\n} as const satisfies Record<string, string>;\n","/**\n * Badge — blocks badge with canonical semantic tones, package display scale, optional dot indicator\n * (with pulse + pending states), inline mode, and an `important` flag that swaps in a warning icon.\n */\nimport { TriangleAlert } from 'lucide-react';\nimport * as React from \"react\"\n\nimport { Badge as BaseBadge } from \"../../ui/badge\"\nimport { Text } from '../../typography';\nimport {\n\tuseBadgeConfig,\n\tuseDensityConfig,\n\ttype BadgeSize,\n\ttype BadgeTone,\n} from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\nimport { badgeRecipes as styles } from './badge.recipes';\n\nexport interface BadgeProps extends Omit<React.ComponentProps<'span'>, 'content'> {\n\t/** Semantic tone. Falls back to `UIProvider.badge.defaultTone`, then `neutral`: an untoned badge carries no state. */\n\ttone?: BadgeTone\n\t/** Display scale. Falls back to `UIProvider.density.defaultScale`. */\n\tsize?: BadgeSize\n\t/** Renders inline with surrounding text rather than as a standalone chip. */\n\tinline?: boolean;\n\t/** Shows a status dot before the label. */\n\tdot?: boolean;\n\t/** Animates the dot, for live or in-progress states. Requires `dot`. */\n\tpulse?: boolean;\n\t/** Draws the dot hollow, marking a state that has not started. Requires `dot`. */\n\tpending?: boolean;\n\t/** Swaps in a warning icon ahead of the label. */\n\timportant?: boolean;\n}\n\nconst toneClassMap: Record<BadgeTone, string> = {\n\tneutral: styles.toneNeutral,\n\tprimary: styles.tonePrimary,\n\tsecondary: styles.toneSecondary,\n\tdestructive: styles.toneDestructive,\n\tsuccess: styles.toneSuccess,\n\twarning: styles.toneWarning,\n\tinfo: styles.toneInfo,\n};\n\nconst sizeClassMap: Record<BadgeSize, string> = {\n\tsm: styles.sizeSm,\n\tmd: styles.sizeMd,\n\tlg: styles.sizeLg,\n};\n\n/**\n * Blocks Badge using shared Tailwind recipes and stable semantic BEM hooks.\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(function Badge({\n\ttone: toneProp,\n\tclassName,\n\tsize: sizeProp,\n\tinline = false,\n\tdot = false,\n\tpending = false,\n\tpulse = false,\n\timportant = false,\n\tchildren,\n\t...props\n}: BadgeProps, ref) {\n\tconst { defaultTone } = useBadgeConfig();\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedSize = resolveComponentScale(sizeProp, defaultScale);\n\tconst tone = toneProp ?? defaultTone ?? 'neutral';\n\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\n\treturn (\n\t\t<BaseBadge\n\t\t\tref={ref}\n\t\t\tdata-slot=\"badge\"\n\t\t\tdata-tone={tone}\n\t\t\tdata-size={resolvedSize}\n\t\t\tdata-inline={inline || undefined}\n\t\t\tdata-pending={pending || undefined}\n\t\t\tclassName={cn(\n\t\t\t\t'badge--component',\n\t\t\t\tstyles.root,\n\t\t\t\ttoneClassMap[tone],\n\t\t\t\tsizeClassMap[resolvedSize],\n\t\t\t\tinline && styles.isInline,\n\t\t\t\tpending && styles.isPending,\n\t\t\t\tpulse && styles.isPulse,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!dot && <span aria-hidden=\"true\" className={styles.dot} />}\n\t\t\t{!!important && !dot && <TriangleAlert aria-hidden=\"true\" className={styles.icon} />}\n\t\t\t<span className={styles.label}>\n\t\t\t\t{isSimpleText ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight={resolvedSize === 'sm' || inline ? 'none' : 'tight'} className=\"text-inherit\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : children}\n\t\t\t</span>\n\t\t</BaseBadge>\n\t);\n});\n\nBadge.displayName = 'Badge';\n"],"mappings":";;;;;;;;;;AAIA,SAASA,EAAM,EAAE,cAAW,aAAU,IAAO,aAAU,GAAGc,KACH;CACtD,OAAOC,EAAU;EAChB,gBAAgB;EAChB,QAAQC,KAAWf,EAAM,eAAegB,CAAQ,IAAIA,IAAW,KAAA;EAC/D,OAAO;GAAE,GAAGH;GAAO,aAAa;GAAS,WAAWN,EAAGU,CAAS;GAAG,GAAIF,IAAU,CAAC,IAAI,EAAE,YAAS;EAAG;CACrG,CAAC;AACF;;;ACRA,IAAaG,IAAe;CAI3B,MAAM;CAKN,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,WAAW;CACX,SAAS;CACT,KAAK,aAAaR,EAAW,OAAO;CACpC,MAAM;CACN,OAAO;CACP,aAAa;CACb,aAAa;CACb,eAAe;CACf,aAAa,GAAGD,EAAY,QAAQ,KAAK,GAAGA,EAAY,QAAQ,IAAI,GAAGA,EAAY,QAAQ;CAC3F,UAAU,GAAGA,EAAY,KAAK,KAAK,GAAGA,EAAY,KAAK,IAAI,GAAGA,EAAY,KAAK;CAC/E,aAAa,GAAGA,EAAY,QAAQ,KAAK,GAAGA,EAAY,QAAQ,IAAI,GAAGA,EAAY,QAAQ;CAC3F,iBAAiB,GAAGA,EAAY,YAAY,KAAK,GAAGA,EAAY,YAAY,IAAI,GAAGA,EAAY,YAAY;AAC5G,GCQMU,IAA0C;CAC/C,SAASlB,EAAO;CAChB,SAASA,EAAO;CAChB,WAAWA,EAAO;CAClB,aAAaA,EAAO;CACpB,SAASA,EAAO;CAChB,SAASA,EAAO;CAChB,MAAMA,EAAO;AACd,GAEMmB,IAA0C;CAC/C,IAAInB,EAAO;CACX,IAAIA,EAAO;CACX,IAAIA,EAAO;AACZ,GAKaoB,IAAQnB,EAAM,WAAwC,SAAe,EACjF,MAAMoB,GACN,cACA,MAAMC,GACN,YAAS,IACT,SAAM,IACN,aAAU,IACV,WAAQ,IACR,eAAY,IACZ,aACA,GAAGV,KACW,GAAK;CACnB,IAAM,EAAE,mBAAgBT,EAAe,GACjC,EAAE,oBAAiBC,EAAiB,GACpCmB,IAAelB,EAAsBiB,GAAUE,CAAY,GAC3DC,IAAOJ,KAAYK,KAAe,WAClCC,IAAe,OAAOZ,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa;CAEzG,OACC,kBAACb,GAAD;EACM;EACL,aAAU;EACV,aAAWuB;EACX,aAAWF;EACX,eAAaK,KAAU,KAAA;EACvB,gBAAcC,KAAW,KAAA;EACzB,WAAWvB,EACV,oBACAN,EAAO,MACPkB,EAAaO,IACbN,EAAaI,IACbK,KAAU5B,EAAO,UACjB6B,KAAW7B,EAAO,WAClB8B,KAAS9B,EAAO,SAChBgB,CACD;EACA,GAAIJ;EAjBL,UAAA;GAmBE,CAAC,CAACmB,KAAO,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAW/B,EAAO;GAAM,CAAA;GAC1D,CAAC,CAACgC,KAAa,CAACD,KAAO,kBAACE,GAAD;IAAe,eAAY;IAAO,WAAWjC,EAAO;GAAO,CAAA;GACnF,kBAAC,QAAD;IAAM,WAAWA,EAAO;IACtB,UAAA2B,IACA,kBAACpB,GAAD;KAAM,KAAI;KAAO,MAAK;KAAU,QAAO;KAAS,YAAYgB,MAAiB,QAAQK,IAAS,SAAS;KAAS,WAAU;KACxH;IACI,CAAA,IACHb;GACC,CAAA;EACI;;AAEb,CAAC;AAED,EAAM,cAAc"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { c as e, l as t, n, s as r, t as i, u as a } from "../accordion-B6a3vVgA.js";
2
+ import { c as e, l as t, n, s as r, t as i, u as a } from "../accordion-Cjb6sx0G.js";
3
3
  export { r as Accordion, e as AccordionContent, t as AccordionItem, a as AccordionTrigger, i as SmartAccordion, n as defaultSmartAccordionStrings };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { n as e, r as t, t as n } from "../action-menu-TzCoSlwL.js";
2
+ import { n as e, r as t, t as n } from "../action-menu-CllU52Mm.js";
3
3
  export { n as ActionButtons, e as ActionMenu, t as defaultActionMenuStrings };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../attachment-BtfhGm8i.js";
2
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../attachment-BxDfL2mw.js";
3
3
  export { c as Attachment, i as AttachmentActions, o as AttachmentContent, n as AttachmentDescription, e as AttachmentFileIcon, a as AttachmentMedia, s as AttachmentProgress, t as AttachmentTitle, l as defaultAttachmentStrings, r as getAttachmentKind };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../avatar-BBnEJIx8.js";
2
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../avatar-DAPlDvhJ.js";
3
3
  export { n as Avatar, i as AvatarBadge, t as AvatarFallback, e as AvatarGroup, r as AvatarGroupCount, a as AvatarImage, o as StackedAvatars };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { t as e } from "../badge-MrKVNzW9.js";
2
+ import { t as e } from "../badge-HpFqoqSY.js";
3
3
  export { e as Badge };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { n as e, t } from "../batch-action-bar-BZGDG-Si.js";
2
+ import { n as e, t } from "../batch-action-bar-DnUJ21NQ.js";
3
3
  export { t as BatchActionBar, e as defaultBatchActionBarStrings };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { c as e, i as t, l as n, n as r, o as i, r as a, s as o, t as s } from "../buttons-SbIcm1HJ.js";
2
+ import { c as e, i as t, l as n, n as r, o as i, r as a, s as o, t as s } from "../buttons-DPZekJFu.js";
3
3
  export { a as BaseButton, t as BaseButtonLink, r as Button, i as ButtonGroup, o as ButtonGroupSeparator, e as ButtonGroupText, s as TextButton, n as buttonGroupVariants };
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- import { a as e, c as t, d as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../smart-card-lFKxn5Hu.js";
3
- import { n as u, r as d, t as f } from "../cards-CiiHpKYd.js";
2
+ import { a as e, c as t, d as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../smart-card-DiC5aac3.js";
3
+ import { n as u, r as d, t as f } from "../cards-BaBZR-AU.js";
4
4
  export { c as Card, f as CardActionStrip, e as CardContent, a as CardDescription, s as CardFooter, t as CardHeader, u as CardPrimaryAction, r as CardShell, d as CardSkeleton, d as SmartCardSkeleton, l as CardTitle, i as SmartCard, o as defaultCardStrings, o as defaultSmartCardStrings, n as hasRenderableContent };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "../lib/strings.js";
3
- import { t } from "../utils-l5LpDw2z.js";
4
- import { n } from "../buttons-SbIcm1HJ.js";
5
- import { s as r } from "../typography-DTRkE9zL.js";
3
+ import { t } from "../utils-BRhFDwuU.js";
4
+ import { n } from "../buttons-DPZekJFu.js";
5
+ import { c as r } from "../typography-UTnveOEy.js";
6
6
  import { r as i } from "../icon-size-B6PVwjbC.js";
7
7
  import { createContext as a, forwardRef as o, useCallback as s, useContext as c, useEffect as l, useState as u } from "react";
8
8
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
@@ -19,58 +19,62 @@ function y() {
19
19
  if (!e) throw Error("useCarousel must be used within a <Carousel />");
20
20
  return e;
21
21
  }
22
- var b = o(function({ orientation: n = "horizontal", controlPlacement: r = "outside", opts: i, setApi: a, plugins: o, className: c, children: d, strings: p, ...m }, h) {
23
- let y = e(_, p), [b, x] = g({
22
+ var b = o(function({ orientation: n = "horizontal", controlPlacement: r = "outside", opts: i, setApi: a, plugins: o, className: c, children: d, onKeyDown: p, strings: m, ...h }, y) {
23
+ let b = e(_, m), [x, S] = g({
24
24
  ...i,
25
25
  axis: n === "horizontal" ? "x" : "y"
26
- }, o), [S, C] = u(!1), [w, T] = u(!1), [E, D] = u(0), [O, k] = u([]), A = s((e) => {
27
- C(e.canScrollPrev()), T(e.canScrollNext()), D(e.selectedScrollSnap()), k(e.scrollSnapList());
28
- }, []), j = s(() => {
29
- x?.scrollPrev();
30
- }, [x]), M = s(() => {
31
- x?.scrollNext();
32
- }, [x]), N = s((e) => {
33
- x?.scrollTo(e);
34
- }, [x]), P = s((e) => {
35
- let t = n === "vertical" ? e.key === "ArrowUp" : e.key === "ArrowLeft", r = n === "vertical" ? e.key === "ArrowDown" : e.key === "ArrowRight";
36
- t ? (e.preventDefault(), j()) : r && (e.preventDefault(), M());
26
+ }, o), [C, w] = u(!1), [T, E] = u(!1), [D, O] = u(0), [k, A] = u([]), j = s((e) => {
27
+ w(e.canScrollPrev()), E(e.canScrollNext()), O(e.selectedScrollSnap()), A(e.scrollSnapList());
28
+ }, []), M = s(() => {
29
+ S?.scrollPrev();
30
+ }, [S]), N = s(() => {
31
+ S?.scrollNext();
32
+ }, [S]), P = s((e) => {
33
+ S?.scrollTo(e);
34
+ }, [S]), F = s((e) => {
35
+ if (p?.(e), e.defaultPrevented || e.nativeEvent.isComposing || e.altKey || e.ctrlKey || e.metaKey) return;
36
+ let t = e.target;
37
+ if (t.closest("[data-slot=\"carousel\"]") !== e.currentTarget || t.closest("input, textarea, select, [contenteditable]:not([contenteditable=\"false\"]), [role=\"slider\"], [role=\"spinbutton\"], [role=\"combobox\"]")) return;
38
+ let r = n === "vertical" ? e.key === "ArrowUp" : e.key === "ArrowLeft", i = n === "vertical" ? e.key === "ArrowDown" : e.key === "ArrowRight";
39
+ r ? (e.preventDefault(), M()) : i && (e.preventDefault(), N());
37
40
  }, [
41
+ p,
38
42
  n,
39
- M,
40
- j
43
+ N,
44
+ M
41
45
  ]);
42
46
  return l(() => {
43
- x && a?.(x);
44
- }, [x, a]), l(() => {
45
- if (x) return A(x), x.on("reInit", A), x.on("select", A), () => {
46
- x.off("reInit", A), x.off("select", A);
47
+ S && a?.(S);
48
+ }, [S, a]), l(() => {
49
+ if (S) return j(S), S.on("reInit", j), S.on("select", j), () => {
50
+ S.off("reInit", j), S.off("select", j);
47
51
  };
48
- }, [x, A]), /* @__PURE__ */ f(v.Provider, {
52
+ }, [S, j]), /* @__PURE__ */ f(v.Provider, {
49
53
  value: {
50
- carouselRef: b,
51
- api: x,
54
+ carouselRef: x,
55
+ api: S,
52
56
  opts: i,
53
57
  orientation: n,
54
58
  controlPlacement: r,
55
- scrollPrev: j,
56
- scrollNext: M,
57
- scrollTo: N,
58
- canScrollPrev: S,
59
- canScrollNext: w,
60
- selectedIndex: E,
61
- scrollSnaps: O,
62
- strings: y
59
+ scrollPrev: M,
60
+ scrollNext: N,
61
+ scrollTo: P,
62
+ canScrollPrev: C,
63
+ canScrollNext: T,
64
+ selectedIndex: D,
65
+ scrollSnaps: k,
66
+ strings: b
63
67
  },
64
68
  children: /* @__PURE__ */ f("div", {
65
- ref: h,
66
- onKeyDownCapture: P,
69
+ ref: y,
70
+ onKeyDown: F,
67
71
  role: "region",
68
72
  "aria-roledescription": "carousel",
69
73
  "data-slot": "carousel",
70
74
  "data-orientation": n,
71
75
  "data-control-placement": r,
72
76
  className: t("carousel--component relative", c),
73
- ...m,
77
+ ...h,
74
78
  children: d
75
79
  })
76
80
  });