themelia-react-ui 2.0.0 → 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 (707) hide show
  1. package/CHANGELOG.md +527 -0
  2. package/README.md +47 -14
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/accordion-Cjb6sx0G.js +208 -0
  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-BE_j8-AT.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-BE_j8-AT.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-M3vGMgDR.js → auth-ax2BqjrI.js} +241 -235
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-djdaaQ_s.js → avatar-DAPlDvhJ.js} +67 -66
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/badge-HpFqoqSY.js +93 -0
  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 +3 -0
  28. package/dist/base/buttons.js +2 -3
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +50 -46
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +69 -81
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +3 -3
  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 +7 -7
  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 +20 -20
  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 +3 -0
  50. package/dist/base/navigation.js +7 -7
  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 +216 -220
  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 +147 -137
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +79 -2
  62. package/dist/base/spinner.js.map +1 -0
  63. package/dist/base/structure.js +1 -1
  64. package/dist/base/table.js +1 -1
  65. package/dist/base/text-inputs.js +2 -2
  66. package/dist/base/toaster.js +46 -45
  67. package/dist/base/toaster.js.map +1 -1
  68. package/dist/base/tree.js +1 -1
  69. package/dist/base/upload-queue.js +1 -1
  70. package/dist/base/upload.js +3 -3
  71. package/dist/base/value-inputs.js +2 -2
  72. package/dist/batch-action-bar-DnUJ21NQ.js +105 -0
  73. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  74. package/dist/blocks/admin.js +171 -169
  75. package/dist/blocks/admin.js.map +1 -1
  76. package/dist/blocks/ai.js +308 -285
  77. package/dist/blocks/ai.js.map +1 -1
  78. package/dist/blocks/analytics/usage-card.js +1 -1
  79. package/dist/blocks/analytics.js +626 -589
  80. package/dist/blocks/analytics.js.map +1 -1
  81. package/dist/blocks/collaboration.js +1 -1
  82. package/dist/blocks/commerce/receipt.js +1 -1
  83. package/dist/blocks/commerce.js +2051 -1329
  84. package/dist/blocks/commerce.js.map +1 -1
  85. package/dist/blocks/data-display.js +3 -2
  86. package/dist/blocks/onboarding.js +68 -58
  87. package/dist/blocks/onboarding.js.map +1 -1
  88. package/dist/blocks/planning.js +27 -26
  89. package/dist/blocks/planning.js.map +1 -1
  90. package/dist/blocks/timelines.js +1 -1
  91. package/dist/breadcrumbs-C-oqs1sQ.js +129 -0
  92. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  93. package/dist/{button-R9CCoH7A.js → button-DVzspB_G.js} +15 -14
  94. package/dist/button-DVzspB_G.js.map +1 -0
  95. package/dist/{button-BS3KDg00.js → buttons-DPZekJFu.js} +208 -216
  96. package/dist/buttons-DPZekJFu.js.map +1 -0
  97. package/dist/cards-BaBZR-AU.js +68 -0
  98. package/dist/cards-BaBZR-AU.js.map +1 -0
  99. package/dist/{chart-DwYRKKc-.js → chart-ZOYyK2xG.js} +58 -55
  100. package/dist/chart-ZOYyK2xG.js.map +1 -0
  101. package/dist/checkbox-AWIhNhmo.js +36 -0
  102. package/dist/checkbox-AWIhNhmo.js.map +1 -0
  103. package/dist/choice-inputs-CNHvARCJ.js +770 -0
  104. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  105. package/dist/code-block-DeneBJR_.js +185 -0
  106. package/dist/code-block-DeneBJR_.js.map +1 -0
  107. package/dist/{collapsible-oMUGM4tr.js → collapsible-C-_l4hpy.js} +4 -4
  108. package/dist/{collapsible-oMUGM4tr.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  109. package/dist/{collection-content-Ys-OZOkY.js → collection-content-By56pLog.js} +3 -3
  110. package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-By56pLog.js.map} +1 -1
  111. package/dist/combobox-C0EQW6dr.js +875 -0
  112. package/dist/combobox-C0EQW6dr.js.map +1 -0
  113. package/dist/combobox-xCQ2RMNE.js +309 -0
  114. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  115. package/dist/{command-kPMPjIxJ.js → command-C25VMRII.js} +7 -7
  116. package/dist/{command-kPMPjIxJ.js.map → command-C25VMRII.js.map} +1 -1
  117. package/dist/{comments-You0Bzbr.js → comments-BYYlTA8E.js} +390 -379
  118. package/dist/comments-BYYlTA8E.js.map +1 -0
  119. package/dist/components/base/action-menu/action-menu.d.ts +21 -4
  120. package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
  121. package/dist/components/base/action-menu/index.d.ts +1 -0
  122. package/dist/components/base/badge/badge.recipes.d.ts +5 -5
  123. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  124. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  125. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  126. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  127. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  128. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  129. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  130. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  131. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  132. package/dist/components/base/chart/chart.d.ts +2 -5
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
  135. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  136. package/dist/components/base/combobox/index.d.ts +30 -4
  137. package/dist/components/base/display/alert-dialog.d.ts +6 -5
  138. package/dist/components/base/display/dialog.d.ts +4 -8
  139. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  140. package/dist/components/base/forms/form-sizing.d.ts +26 -15
  141. package/dist/components/base/metadata-list/index.d.ts +12 -0
  142. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  143. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  144. package/dist/components/base/navigation/index.d.ts +1 -1
  145. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  146. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  147. package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
  148. package/dist/components/base/navigation/pagination.d.ts +5 -2
  149. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  150. package/dist/components/base/sheet/sheet.d.ts +4 -8
  151. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  152. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  153. package/dist/components/base/table/index.d.ts +9 -2
  154. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  155. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  156. package/dist/components/base/upload/upload.recipes.d.ts +25 -3
  157. package/dist/components/base/value-inputs/index.d.ts +5 -5
  158. package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
  159. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  160. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  161. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  162. package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
  163. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  164. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  165. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  166. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  167. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  168. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  169. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  170. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  171. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +45 -0
  172. package/dist/components/blocks/commerce/index.d.ts +13 -5
  173. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  174. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  175. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  176. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  177. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  178. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  179. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  180. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  181. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  182. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  183. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  184. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  185. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  186. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  187. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  188. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  189. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  190. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  191. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  192. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  193. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  194. package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
  195. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  196. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  197. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  198. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  199. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  200. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  201. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  202. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  203. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  204. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  205. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  206. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  207. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  208. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  209. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  210. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  211. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  212. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  213. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  214. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  215. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  216. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  217. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  218. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  219. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  220. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  221. package/dist/components/features/combobox/types.d.ts +4 -0
  222. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  223. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  224. package/dist/components/features/kanban/kanban.d.ts +1 -1
  225. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  226. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  227. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  228. package/dist/components/features/media-library/index.d.ts +1 -1
  229. package/dist/components/features/media-library/media-library.d.ts +1 -1
  230. package/dist/components/features/media-library/media-library.strings.d.ts +6 -0
  231. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  232. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  233. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  234. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  235. package/dist/components/features/overlays/dialog.d.ts +1 -1
  236. package/dist/components/features/overlays/index.d.ts +1 -1
  237. package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
  238. package/dist/components/features/overlays/overlays.types.d.ts +20 -0
  239. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  240. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  241. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  242. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  243. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  244. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  245. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  246. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  247. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  248. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  249. package/dist/components/features/products/products.types.d.ts +9 -2
  250. package/dist/components/features/resource/index.d.ts +1 -1
  251. package/dist/components/features/resource/resource.d.ts +1 -1
  252. package/dist/components/features/resource/resource.types.d.ts +34 -6
  253. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  254. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  255. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  256. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  257. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +7 -1
  258. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  259. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +54 -1
  260. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  261. package/dist/components/features/sync/index.d.ts +26 -3
  262. package/dist/components/features/table/data-table.d.ts +1 -1
  263. package/dist/components/features/table/table-header.d.ts +1 -1
  264. package/dist/components/features/table/table.strings.d.ts +55 -1
  265. package/dist/components/features/table/table.types.d.ts +49 -11
  266. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  267. package/dist/components/layout/page/index.d.ts +1 -1
  268. package/dist/components/layout/page/page.types.d.ts +33 -36
  269. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  270. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  271. package/dist/components/layout/settings/settings.d.ts +16 -2
  272. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  273. package/dist/components/primitives/number.d.ts +4 -2
  274. package/dist/components/primitives/value.d.ts +3 -1
  275. package/dist/components/typography/rich-text/index.d.ts +1 -1
  276. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  277. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  278. package/dist/components/typography/text-link.d.ts +8 -3
  279. package/dist/components/ui/checkbox.d.ts +4 -3
  280. package/dist/components/ui/combobox.d.ts +6 -2
  281. package/dist/components/ui/item.d.ts +8 -8
  282. package/dist/components/ui/overlay.recipes.d.ts +0 -9
  283. package/dist/components/ui/switch.d.ts +2 -2
  284. package/dist/components/ui/tabs.d.ts +1 -1
  285. package/dist/{containers-D_L4mTVb.js → containers-Mu1LMGV1.js} +36 -35
  286. package/dist/containers-Mu1LMGV1.js.map +1 -0
  287. package/dist/{copyable-DDjTeW_j.js → copyable-ClBuk_UK.js} +6 -6
  288. package/dist/{copyable-DDjTeW_j.js.map → copyable-ClBuk_UK.js.map} +1 -1
  289. package/dist/data-display-DT_khPl_.js +971 -0
  290. package/dist/data-display-DT_khPl_.js.map +1 -0
  291. package/dist/{date-uf3z37Nm.js → date-DCrsDTZc.js} +5 -5
  292. package/dist/{date-uf3z37Nm.js.map → date-DCrsDTZc.js.map} +1 -1
  293. package/dist/date-picker-ay0Pha_a.js +1530 -0
  294. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  295. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  296. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  297. package/dist/display-hAc1HjpI.js +344 -0
  298. package/dist/display-hAc1HjpI.js.map +1 -0
  299. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  300. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  301. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  302. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  303. package/dist/features/activities.js +478 -542
  304. package/dist/features/activities.js.map +1 -1
  305. package/dist/features/ai-chat.js +209 -199
  306. package/dist/features/ai-chat.js.map +1 -1
  307. package/dist/features/appointment-calendar.js +683 -0
  308. package/dist/features/appointment-calendar.js.map +1 -0
  309. package/dist/features/async-preview.js +109 -107
  310. package/dist/features/async-preview.js.map +1 -1
  311. package/dist/features/combobox.js +1 -1
  312. package/dist/features/comments.js +1 -1
  313. package/dist/features/data-view.js +30 -29
  314. package/dist/features/data-view.js.map +1 -1
  315. package/dist/features/email-composer/engine.js +1 -1
  316. package/dist/features/email-composer.js +285 -283
  317. package/dist/features/email-composer.js.map +1 -1
  318. package/dist/features/event-calendar.js +282 -273
  319. package/dist/features/event-calendar.js.map +1 -1
  320. package/dist/features/filters.js +1 -1
  321. package/dist/features/global-search.js +318 -318
  322. package/dist/features/global-search.js.map +1 -1
  323. package/dist/features/kanban.js +146 -147
  324. package/dist/features/kanban.js.map +1 -1
  325. package/dist/features/map.js +269 -268
  326. package/dist/features/map.js.map +1 -1
  327. package/dist/features/media-library.js +970 -863
  328. package/dist/features/media-library.js.map +1 -1
  329. package/dist/features/mentions.js +1 -1
  330. package/dist/features/overlays.js +1 -1
  331. package/dist/features/products.js +1137 -1124
  332. package/dist/features/products.js.map +1 -1
  333. package/dist/features/questionnaire.js +206 -194
  334. package/dist/features/questionnaire.js.map +1 -1
  335. package/dist/features/resource-assignment.js +24 -21
  336. package/dist/features/resource-assignment.js.map +1 -1
  337. package/dist/features/resource.js +77 -69
  338. package/dist/features/resource.js.map +1 -1
  339. package/dist/features/rich-text-editor.js +30 -11
  340. package/dist/features/rich-text-editor.js.map +1 -1
  341. package/dist/features/schema-form.js +35 -33
  342. package/dist/features/schema-form.js.map +1 -1
  343. package/dist/features/suggestions.js +3 -3
  344. package/dist/features/sync.js +11 -5
  345. package/dist/features/sync.js.map +1 -1
  346. package/dist/features/table.js +1 -1
  347. package/dist/features/theme-tweaker.js +501 -496
  348. package/dist/features/theme-tweaker.js.map +1 -1
  349. package/dist/feedback-BYIhtitP.js +239 -0
  350. package/dist/feedback-BYIhtitP.js.map +1 -0
  351. package/dist/field-affordance-recipes-DZhnIL_Y.js +41 -0
  352. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  353. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  354. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  355. package/dist/{filters-Da-gNPsE.js → filters-BGfvjP4d.js} +483 -472
  356. package/dist/filters-BGfvjP4d.js.map +1 -0
  357. package/dist/focus-recipes-B653VaLq.js +12 -0
  358. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  359. package/dist/{form-field-VZRULhUK.js → form-field-CwH9y77i.js} +6 -5
  360. package/dist/form-field-CwH9y77i.js.map +1 -0
  361. package/dist/{form-sizing-uWP4lzVh.js → form-sizing-BdP_Mf5p.js} +45 -46
  362. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  363. package/dist/{forms-DDeEnXSY.js → forms-B9G_xwzi.js} +22 -22
  364. package/dist/{forms-DDeEnXSY.js.map → forms-B9G_xwzi.js.map} +1 -1
  365. package/dist/forms-numeric-B_jraJaQ.js +906 -0
  366. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  367. package/dist/{header-2ycNqGOR.js → header-CGXuhcRm.js} +164 -161
  368. package/dist/header-CGXuhcRm.js.map +1 -0
  369. package/dist/{hooks-DQ5SPwZw.js → hooks-Dkz0K2WT.js} +2 -2
  370. package/dist/{hooks-DQ5SPwZw.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  371. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  372. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  373. package/dist/icon-badge-DYKIwvOV.js +55 -0
  374. package/dist/icon-badge-DYKIwvOV.js.map +1 -0
  375. package/dist/index.js +7 -7
  376. package/dist/input-CZw8iU99.js +21 -0
  377. package/dist/input-CZw8iU99.js.map +1 -0
  378. package/dist/input-DQdEd0YD.js +263 -0
  379. package/dist/input-DQdEd0YD.js.map +1 -0
  380. package/dist/interaction-recipes-XR9ZpVYL.js +25 -0
  381. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  382. package/dist/item-K5_ghvze.js +275 -0
  383. package/dist/item-K5_ghvze.js.map +1 -0
  384. package/dist/layer-recipes-CCpklYME.js +13 -0
  385. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  386. package/dist/layout/app-shell.js +1 -1
  387. package/dist/layout/auth.js +1 -1
  388. package/dist/layout/containers.js +1 -1
  389. package/dist/layout/header.js +1 -1
  390. package/dist/layout/hooks.js +1 -1
  391. package/dist/layout/navigation.js +1 -1
  392. package/dist/layout/page.js +1 -1
  393. package/dist/layout/settings.js +1 -1
  394. package/dist/layout/sidebar.js +2 -2
  395. package/dist/layout/workspace.js +1 -1
  396. package/dist/layout.js +10 -10
  397. package/dist/lib/affordance-geometry.generated.d.ts +72 -0
  398. package/dist/lib/editable-text-recipe.d.ts +4 -4
  399. package/dist/lib/field-affordance-recipes.d.ts +8 -3
  400. package/dist/lib/field-state-recipes.d.ts +9 -8
  401. package/dist/lib/focus-recipes.d.ts +24 -0
  402. package/dist/lib/interaction-recipes.d.ts +40 -0
  403. package/dist/lib/layer-recipes.d.ts +19 -0
  404. package/dist/lib/motion-recipes.d.ts +1 -0
  405. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
  406. package/dist/lib/safe-image-src.d.ts +10 -0
  407. package/dist/lib/sanitize-html.d.ts +15 -3
  408. package/dist/lib/surface-recipes.d.ts +47 -7
  409. package/dist/lib/theme-mode-css.d.ts +7 -0
  410. package/dist/lib/token-merge.generated.d.ts +9 -6
  411. package/dist/lib/tone-recipes.d.ts +87 -0
  412. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  413. package/dist/lib/ui-provider/index.d.ts +2 -2
  414. package/dist/lib/ui-provider/types.d.ts +11 -2
  415. package/dist/lib/utils.js +1 -1
  416. package/dist/media-gallery-3zIVLMWH.js +203 -0
  417. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  418. package/dist/mentions-utuUvH1K.js +570 -0
  419. package/dist/mentions-utuUvH1K.js.map +1 -0
  420. package/dist/{message-YfFmbXNP.js → message-DZ_ruyUV.js} +7 -6
  421. package/dist/message-DZ_ruyUV.js.map +1 -0
  422. package/dist/metadata-list-8N16ZMW_.js +405 -0
  423. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  424. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  425. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  426. package/dist/navigation-Bnotn4AQ.js +145 -0
  427. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  428. package/dist/navigation-BzhHI3lo.js +269 -0
  429. package/dist/navigation-BzhHI3lo.js.map +1 -0
  430. package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  431. package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  432. package/dist/{number-CKRBYmZK.js → number-DbV1Dija.js} +36 -34
  433. package/dist/{number-CKRBYmZK.js.map → number-DbV1Dija.js.map} +1 -1
  434. package/dist/overflow-tab-bar-CWY7Nogn.js +282 -0
  435. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  436. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  437. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  438. package/dist/overlays-DNWmZrJ4.js +1001 -0
  439. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  440. package/dist/page-Bgl1F560.js +224 -0
  441. package/dist/page-Bgl1F560.js.map +1 -0
  442. package/dist/page-header-commands-DOb6WsfD.js +126 -0
  443. package/dist/page-header-commands-DOb6WsfD.js.map +1 -0
  444. package/dist/pagination-BL25hu2s.js +158 -0
  445. package/dist/pagination-BL25hu2s.js.map +1 -0
  446. package/dist/{popover-Dcv_9jxr.js → popover-7_m66eYW.js} +11 -10
  447. package/dist/popover-7_m66eYW.js.map +1 -0
  448. package/dist/popover-menu-B9WWygpa.js +100 -0
  449. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  450. package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-D3j8R8Yp.js} +18 -11
  451. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  452. package/dist/{primitives-BHrwQXFC.js → primitives-BFK08r9M.js} +45 -44
  453. package/dist/primitives-BFK08r9M.js.map +1 -0
  454. package/dist/primitives.js +4 -4
  455. package/dist/{progress-Br9WTFya.js → progress-B1VnCT0K.js} +9 -9
  456. package/dist/{progress-Br9WTFya.js.map → progress-B1VnCT0K.js.map} +1 -1
  457. package/dist/{receipt-CV89q1fs.js → receipt-BVSOH3Xo.js} +9 -6
  458. package/dist/{receipt-CV89q1fs.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  459. package/dist/rich-text-GOUyKQ-s.js +78 -0
  460. package/dist/rich-text-GOUyKQ-s.js.map +1 -0
  461. package/dist/rich-text-editor-cRLC-eBK.js +1196 -0
  462. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  463. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  464. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  465. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  466. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  467. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  468. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  469. package/dist/sanitize-html-DsQmI48u.js +92 -0
  470. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  471. package/dist/scroll-area-DcI-M1UT.js +48 -0
  472. package/dist/scroll-area-DcI-M1UT.js.map +1 -0
  473. package/dist/{separator-Do5GWDYi.js → separator-BDV-Y648.js} +3 -3
  474. package/dist/{separator-Do5GWDYi.js.map → separator-BDV-Y648.js.map} +1 -1
  475. package/dist/{separator-BMEvwnSX.js → separator-Bom7NsGO.js} +2 -2
  476. package/dist/{separator-BMEvwnSX.js.map → separator-Bom7NsGO.js.map} +1 -1
  477. package/dist/services/actions/action-adapters.d.ts +18 -0
  478. package/dist/services/actions/index.d.ts +1 -1
  479. package/dist/services/actions.js +16 -4
  480. package/dist/services/actions.js.map +1 -1
  481. package/dist/settings-ybnjVwbd.js +171 -0
  482. package/dist/settings-ybnjVwbd.js.map +1 -0
  483. package/dist/sheet-CGpB3omz.js +211 -0
  484. package/dist/sheet-CGpB3omz.js.map +1 -0
  485. package/dist/{sidebar-Cb8WzOvE.js → sidebar-A0ElHINE.js} +17 -16
  486. package/dist/sidebar-A0ElHINE.js.map +1 -0
  487. package/dist/{sidebar-Crc9M9JV.js → sidebar-CPx_7YBa.js} +205 -203
  488. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  489. package/dist/{skeleton-DVMXr15h.js → skeleton-Byjnt7qr.js} +9 -9
  490. package/dist/{skeleton-DVMXr15h.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  491. package/dist/smart-card-DiC5aac3.js +604 -0
  492. package/dist/smart-card-DiC5aac3.js.map +1 -0
  493. package/dist/{structure-hzCW-XsV.js → structure-BmisBK-3.js} +2 -2
  494. package/dist/{structure-hzCW-XsV.js.map → structure-BmisBK-3.js.map} +1 -1
  495. package/dist/style.css +1 -1
  496. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  497. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  498. package/dist/table-BweFy_P9.js +1530 -0
  499. package/dist/table-BweFy_P9.js.map +1 -0
  500. package/dist/table-DsfzoUia.js +175 -0
  501. package/dist/table-DsfzoUia.js.map +1 -0
  502. package/dist/tabs-CDocW5D1.js +191 -0
  503. package/dist/tabs-CDocW5D1.js.map +1 -0
  504. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  505. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  506. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  507. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  508. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  509. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  510. package/dist/theme.css +285 -228
  511. package/dist/themes/green.css +16 -12
  512. package/dist/timelines-CwM_9IhD.js +457 -0
  513. package/dist/timelines-CwM_9IhD.js.map +1 -0
  514. package/dist/tone-recipes-BPsRAvhu.js +73 -0
  515. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  516. package/dist/tooltip-yiRJUFjp.js +111 -0
  517. package/dist/tooltip-yiRJUFjp.js.map +1 -0
  518. package/dist/{tree-BotPlyiD.js → tree-WnKQzwbq.js} +69 -67
  519. package/dist/tree-WnKQzwbq.js.map +1 -0
  520. package/dist/typography/rich-text.js +1 -1
  521. package/dist/typography-UTnveOEy.js +117 -0
  522. package/dist/typography-UTnveOEy.js.map +1 -0
  523. package/dist/typography.js +2 -2
  524. package/dist/{ui-provider-D2_TeLqw.js → ui-provider-C_U0Xma4.js} +13 -5
  525. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  526. package/dist/ui-provider.js +3 -3
  527. package/dist/{upload-B0WHW7ak.js → upload-CXyxmQBP.js} +210 -209
  528. package/dist/upload-CXyxmQBP.js.map +1 -0
  529. package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-Boscubn9.js} +111 -111
  530. package/dist/upload-queue-Boscubn9.js.map +1 -0
  531. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  532. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  533. package/dist/{usage-card-U0YBLTNT.js → usage-card-BhO5eqkX.js} +45 -29
  534. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  535. package/dist/{utils-Cospvlj1.js → utils-BRhFDwuU.js} +114 -67
  536. package/dist/utils-BRhFDwuU.js.map +1 -0
  537. package/dist/value-inputs-DXPDjvBU.js +963 -0
  538. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  539. package/dist/{value-typography-Deb3yQZg.js → value-typography-BP8OG6h5.js} +2 -2
  540. package/dist/{value-typography-Deb3yQZg.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  541. package/dist/workspace-Cdrg7k9f.js +408 -0
  542. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  543. package/docs/consumer-skill/SKILL.md +21 -22
  544. package/docs/consumer-skill/examples/app-layout.tsx +1 -1
  545. package/docs/consumer-skill/examples/composition.tsx +3 -3
  546. package/docs/consumer-skill/examples/detail.tsx +59 -12
  547. package/docs/consumer-skill/examples/edit.tsx +1 -1
  548. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  549. package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
  550. package/docs/consumer-skill/examples/website.tsx +1 -1
  551. package/docs/consumer-skill/references/agents-md.md +33 -0
  552. package/docs/consumer-skill/references/analytics.md +1 -1
  553. package/docs/consumer-skill/references/composition.md +58 -13
  554. package/docs/consumer-skill/references/design-contract.md +12 -3
  555. package/docs/consumer-skill/references/installation.md +11 -1
  556. package/docs/consumer-skill/references/integration.md +4 -3
  557. package/docs/consumer-skill/references/public-api.json +956 -453
  558. package/docs/consumer-skill/references/review.md +32 -5
  559. package/docs/consumer-skill/references/theming.md +78 -9
  560. package/docs/consumer-skill/references/tokens.json +1 -1
  561. package/docs/consumer-skill/references/workflows.md +54 -10
  562. package/docs/consumer-skill/scripts/composition-policy.mjs +42 -11
  563. package/docs/consumer-skill/scripts/surface-policy.mjs +150 -5
  564. package/package.json +17 -5
  565. package/dist/accordion-CQXVcd7Q.js +0 -205
  566. package/dist/accordion-CQXVcd7Q.js.map +0 -1
  567. package/dist/action-menu-BTpyPWJ2.js +0 -264
  568. package/dist/action-menu-BTpyPWJ2.js.map +0 -1
  569. package/dist/affordance-geometry.generated-CCIXb2A1.js +0 -68
  570. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
  571. package/dist/ai-artifact-2PQ2fItc.js +0 -1112
  572. package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
  573. package/dist/attachment-q69dlt5Y.js +0 -244
  574. package/dist/attachment-q69dlt5Y.js.map +0 -1
  575. package/dist/auth-M3vGMgDR.js.map +0 -1
  576. package/dist/avatar-djdaaQ_s.js.map +0 -1
  577. package/dist/badge-0tATj-tW.js +0 -92
  578. package/dist/badge-0tATj-tW.js.map +0 -1
  579. package/dist/breadcrumbs-BG_FfMK4.js +0 -128
  580. package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
  581. package/dist/button-BS3KDg00.js.map +0 -1
  582. package/dist/button-R9CCoH7A.js.map +0 -1
  583. package/dist/buttons-DS0ZIwJ_.js +0 -99
  584. package/dist/buttons-DS0ZIwJ_.js.map +0 -1
  585. package/dist/cards-QoJ4syG9.js +0 -66
  586. package/dist/cards-QoJ4syG9.js.map +0 -1
  587. package/dist/chart-DwYRKKc-.js.map +0 -1
  588. package/dist/checkbox-B7ygNTYp.js +0 -35
  589. package/dist/checkbox-B7ygNTYp.js.map +0 -1
  590. package/dist/choice-inputs-DrJ17tpL.js +0 -752
  591. package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
  592. package/dist/code-block-CD0B7M93.js +0 -183
  593. package/dist/code-block-CD0B7M93.js.map +0 -1
  594. package/dist/combobox-6dvVny2q.js +0 -272
  595. package/dist/combobox-6dvVny2q.js.map +0 -1
  596. package/dist/combobox-CB7039j7.js +0 -865
  597. package/dist/combobox-CB7039j7.js.map +0 -1
  598. package/dist/comments-You0Bzbr.js.map +0 -1
  599. package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
  600. package/dist/containers-D_L4mTVb.js.map +0 -1
  601. package/dist/data-display-3xWQUnMA.js +0 -1335
  602. package/dist/data-display-3xWQUnMA.js.map +0 -1
  603. package/dist/date-picker-DrDFj8Lo.js +0 -1527
  604. package/dist/date-picker-DrDFj8Lo.js.map +0 -1
  605. package/dist/date-pickers-CnFCb0n2.js +0 -174
  606. package/dist/date-pickers-CnFCb0n2.js.map +0 -1
  607. package/dist/display-DrdvPwF0.js +0 -343
  608. package/dist/display-DrdvPwF0.js.map +0 -1
  609. package/dist/dropdown-menu-CURh59jb.js +0 -193
  610. package/dist/dropdown-menu-CURh59jb.js.map +0 -1
  611. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  612. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  613. package/dist/feedback-C7nR0UtT.js +0 -232
  614. package/dist/feedback-C7nR0UtT.js.map +0 -1
  615. package/dist/field-affordance-recipes-CkOCdE2y.js +0 -46
  616. package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
  617. package/dist/field-state-recipes-C-MFBX_8.js +0 -11
  618. package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
  619. package/dist/filters-Da-gNPsE.js.map +0 -1
  620. package/dist/form-field-VZRULhUK.js.map +0 -1
  621. package/dist/form-sizing-uWP4lzVh.js.map +0 -1
  622. package/dist/forms-numeric-D3CO60IF.js +0 -905
  623. package/dist/forms-numeric-D3CO60IF.js.map +0 -1
  624. package/dist/header-2ycNqGOR.js.map +0 -1
  625. package/dist/icon-badge-DKlaKXoo.js +0 -53
  626. package/dist/icon-badge-DKlaKXoo.js.map +0 -1
  627. package/dist/input-BoLm9Hks.js +0 -20
  628. package/dist/input-BoLm9Hks.js.map +0 -1
  629. package/dist/input-DhQdBnV3.js +0 -255
  630. package/dist/input-DhQdBnV3.js.map +0 -1
  631. package/dist/item-xzh8Df65.js +0 -264
  632. package/dist/item-xzh8Df65.js.map +0 -1
  633. package/dist/media-gallery-DQUQ0m3O.js +0 -201
  634. package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
  635. package/dist/mentions-DwnO1hh4.js +0 -564
  636. package/dist/mentions-DwnO1hh4.js.map +0 -1
  637. package/dist/message-YfFmbXNP.js.map +0 -1
  638. package/dist/navigation-Cbp5V8gG.js +0 -264
  639. package/dist/navigation-Cbp5V8gG.js.map +0 -1
  640. package/dist/navigation-Cs1npsPm.js +0 -300
  641. package/dist/navigation-Cs1npsPm.js.map +0 -1
  642. package/dist/overlay.recipes-CNO2S9V6.js +0 -34
  643. package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
  644. package/dist/overlays-DhZO7N-I.js +0 -994
  645. package/dist/overlays-DhZO7N-I.js.map +0 -1
  646. package/dist/page-C6R_8jFt.js +0 -325
  647. package/dist/page-C6R_8jFt.js.map +0 -1
  648. package/dist/page-header-hUTzcRZX.js +0 -112
  649. package/dist/page-header-hUTzcRZX.js.map +0 -1
  650. package/dist/pagination-Cm0jqa3I.js +0 -149
  651. package/dist/pagination-Cm0jqa3I.js.map +0 -1
  652. package/dist/popover-Dcv_9jxr.js.map +0 -1
  653. package/dist/popover-menu-DnRFKnHP.js +0 -99
  654. package/dist/popover-menu-DnRFKnHP.js.map +0 -1
  655. package/dist/popover.recipes-wmbvL8Ah.js.map +0 -1
  656. package/dist/primitives-BHrwQXFC.js.map +0 -1
  657. package/dist/rich-text-editor-CF8QYt5p.js +0 -574
  658. package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
  659. package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
  660. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
  661. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  662. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  663. package/dist/rich-text-j-FGAeZW.js +0 -32
  664. package/dist/rich-text-j-FGAeZW.js.map +0 -1
  665. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  666. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  667. package/dist/scroll-area-DRdr16Pt.js +0 -47
  668. package/dist/scroll-area-DRdr16Pt.js.map +0 -1
  669. package/dist/settings-DHk0L2MF.js +0 -161
  670. package/dist/settings-DHk0L2MF.js.map +0 -1
  671. package/dist/sheet-DRFNY1_D.js +0 -207
  672. package/dist/sheet-DRFNY1_D.js.map +0 -1
  673. package/dist/sidebar-Cb8WzOvE.js.map +0 -1
  674. package/dist/sidebar-Crc9M9JV.js.map +0 -1
  675. package/dist/smart-card-Bek-TwUp.js +0 -599
  676. package/dist/smart-card-Bek-TwUp.js.map +0 -1
  677. package/dist/spinner-CmTAbEp0.js +0 -80
  678. package/dist/spinner-CmTAbEp0.js.map +0 -1
  679. package/dist/surface-recipes-DOdoBXGm.js +0 -28
  680. package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
  681. package/dist/table-D6zKeYQX.js +0 -162
  682. package/dist/table-D6zKeYQX.js.map +0 -1
  683. package/dist/table-Dn4XSrSB.js +0 -1444
  684. package/dist/table-Dn4XSrSB.js.map +0 -1
  685. package/dist/tabs-Dk8E_knt.js +0 -189
  686. package/dist/tabs-Dk8E_knt.js.map +0 -1
  687. package/dist/text-inputs-BFpku0Qd.js +0 -331
  688. package/dist/text-inputs-BFpku0Qd.js.map +0 -1
  689. package/dist/theme-scope-kStaAer0.js +0 -39
  690. package/dist/theme-scope-kStaAer0.js.map +0 -1
  691. package/dist/timelines-CxuAFIc2.js +0 -439
  692. package/dist/timelines-CxuAFIc2.js.map +0 -1
  693. package/dist/tree-BotPlyiD.js.map +0 -1
  694. package/dist/typography-CAr3dQhX.js +0 -116
  695. package/dist/typography-CAr3dQhX.js.map +0 -1
  696. package/dist/ui-provider-D2_TeLqw.js.map +0 -1
  697. package/dist/upload-B0WHW7ak.js.map +0 -1
  698. package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
  699. package/dist/usage-card-U0YBLTNT.js.map +0 -1
  700. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  701. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  702. package/dist/utils-Cospvlj1.js.map +0 -1
  703. package/dist/value-inputs-CjfzGMsN.js +0 -854
  704. package/dist/value-inputs-CjfzGMsN.js.map +0 -1
  705. package/dist/workspace-YoFjXi6i.js +0 -394
  706. package/dist/workspace-YoFjXi6i.js.map +0 -1
  707. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
@@ -0,0 +1,12 @@
1
+ //#region src/lib/focus-recipes.ts
2
+ var e = {
3
+ frame: "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
4
+ edge: "focus-visible:inset-ring focus-visible:inset-ring-ring focus-visible:ring-3 focus-visible:ring-ring/50",
5
+ text: "focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:ring-3 focus-visible:ring-ring/50",
6
+ inset: "focus-visible:inset-ring focus-visible:inset-ring-ring focus-visible:ring-3 focus-visible:ring-inset focus-visible:ring-ring/50",
7
+ sidebar: "focus-visible:inset-ring focus-visible:inset-ring-sidebar-ring focus-visible:ring-3 focus-visible:ring-sidebar-ring/50"
8
+ };
9
+ //#endregion
10
+ export { e as t };
11
+
12
+ //# sourceMappingURL=focus-recipes-B653VaLq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-recipes-B653VaLq.js","names":["focusRecipes"],"sources":["../src/lib/focus-recipes.ts"],"sourcesContent":["/**\n * The one focus indicator for every interactive element: a crisp 1px edge in\n * --ring inside a soft 3px halo of --ring at 50%. The edge carries the tested\n * 3:1 contrast; the halo makes focus stand out without reading as a heavier\n * border. Each recipe draws the same indicator for a different element shape.\n *\n * Other spellings of the same state (a `has-[…:focus-visible]` frame, a\n * `group-focus-visible` child, a `data-[focused=true]` day) use this vocabulary:\n * `ring-3`, `ring-ring/50` and a full-strength `border-ring`, `inset-ring-ring` or\n * `outline-ring` edge. Design lint rejects any other focus ring width, offset or\n * halo strength.\n */\nexport const focusRecipes = {\n\t/** Bordered controls (buttons, fields, triggers, checkboxes, switches, tabs): the 1px border becomes the edge. */\n\tframe: 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50',\n\t/** Borderless rows, links, tiles and regions: an inset 1px edge stands in for the border. */\n\tedge: 'focus-visible:inset-ring focus-visible:inset-ring-ring focus-visible:ring-3 focus-visible:ring-ring/50',\n\t/** Inline text (links, text buttons) has no padding: the edge is an outline just outside the glyphs. */\n\ttext: 'focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:ring-3 focus-visible:ring-ring/50',\n\t/** Inside a clipped group or scroll viewport: the edge and the halo are both drawn inside. */\n\tinset: 'focus-visible:inset-ring focus-visible:inset-ring-ring focus-visible:ring-3 focus-visible:ring-inset focus-visible:ring-ring/50',\n\t/** Sidebar rows draw the edge with the sidebar's own focus role. */\n\tsidebar: 'focus-visible:inset-ring focus-visible:inset-ring-sidebar-ring focus-visible:ring-3 focus-visible:ring-sidebar-ring/50',\n} as const;\n"],"mappings":";AAYA,IAAaA,IAAe;CAE3B,OAAO;CAEP,MAAM;CAEN,MAAM;CAEN,OAAO;CAEP,SAAS;AACV"}
@@ -1,7 +1,8 @@
1
1
  "use client";
2
- import { t as e } from "./utils-Cospvlj1.js";
3
- import { i as t, s as n } from "./typography-CAr3dQhX.js";
4
- import { t as r } from "./structure-hzCW-XsV.js";
2
+ import { t as e } from "./utils-BRhFDwuU.js";
3
+ import { a as t, c as n } from "./typography-UTnveOEy.js";
4
+ import { t as r } from "./structure-BmisBK-3.js";
5
+ import "./form-sizing-BdP_Mf5p.js";
5
6
  import * as i from "react";
6
7
  import { forwardRef as a } from "react";
7
8
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
@@ -24,7 +25,7 @@ var c = a(function({ children: a, label: c, required: l, hint: u, error: d, help
24
25
  children: [
25
26
  !!c && /* @__PURE__ */ s(t, {
26
27
  htmlFor: T,
27
- className: "form-field--label flex items-center gap-space-xs leading-6",
28
+ className: e("form-field--label flex items-center gap-space-xs text-inherit", "leading-6"),
28
29
  children: [c, !!x && /* @__PURE__ */ o(n, {
29
30
  tag: "span",
30
31
  size: "inherit",
@@ -53,4 +54,4 @@ c.displayName = "FormField";
53
54
  //#endregion
54
55
  export { c as t };
55
56
 
56
- //# sourceMappingURL=form-field-VZRULhUK.js.map
57
+ //# sourceMappingURL=form-field-CwH9y77i.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field-CwH9y77i.js","names":["React","cn","Label","Text","Stack","React$1","FormField","forwardRef","rootProps","hasError","error","supportingText","helperText","hint","showBottomText","resolvedRequired","required","generatedId","canAssociateChild","children","childId","resolvedHtmlFor","htmlFor","label","resolvedChildren","className","supportingTextId"],"sources":["../src/components/base/forms/form-field.tsx"],"sourcesContent":["/**\n * FormField — optional-peer-free presentation chrome for a label, control,\n * hint/helper, and validation error. The react-hook-form integration lives in\n * `controlled-form-field.tsx` so presentational consumers do not load RHF.\n */\n\nimport * as React from 'react';\nimport { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { Stack } from '../structure';\nimport { Label, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { formLabelLineClass } from './form-sizing';\n\nexport interface FieldChromeProps {\n\t/** Caption rendered above the control, associated through `htmlFor`. */\n\tlabel?: ReactNode;\n\t/** Marks the field required and renders the required indicator by the label. */\n\trequired?: boolean;\n\t/**\n\t * Lowest-priority supporting line: shown only when neither `error` nor\n\t * `helperText` is set. Use for formatting rules and expectations.\n\t */\n\thint?: ReactNode;\n\t/**\n\t * Validation message, and the highest-priority supporting line — it replaces\n\t * `helperText` and `hint` rather than stacking with them. Rendered with\n\t * `role=\"alert\"` and `aria-live=\"polite\"` in the error tone.\n\t */\n\terror?: ReactNode;\n\t/**\n\t * Middle-priority supporting line: replaces `hint`, and is itself replaced by\n\t * `error`. The field renders exactly one supporting line, resolved as\n\t * `error || helperText || hint` — copy the user still needs while fixing a\n\t * validation failure therefore belongs in the `error` message itself.\n\t */\n\thelperText?: ReactNode;\n}\n\nexport interface FormFieldProps extends FieldChromeProps, Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n\tchildren: ReactNode;\n\t/** Native ID of the labelled control. With compound children, assign it to the nested control; passive wrappers are left untouched. Direct controls receive an automatic ID when omitted. */\n\thtmlFor?: string;\n\t/** ID for the resolved hint, helper, or error; controls can reference it explicitly. */\n\tsupportingTextId?: string;\n}\n\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(function FormField({\n\tchildren,\n\tlabel,\n\trequired,\n\thint,\n\terror,\n\thelperText,\n\thtmlFor,\n\tsupportingTextId,\n\tclassName,\n\t...rootProps\n}, ref) {\n\tconst hasError = Boolean(error);\n\tconst supportingText = error || helperText || (!hasError ? hint : undefined);\n\tconst showBottomText = Boolean(supportingText);\n\tconst resolvedRequired = required;\n\tconst generatedId = React.useId();\n\t// A layout wrapper is not a labelable control. In a compound field,\n\t// htmlFor already names its nested control; copying it onto the wrapper\n\t// creates duplicate IDs and breaks the native label association.\n\tconst canAssociateChild = React.isValidElement(children) && children.type !== React.Fragment &&\n\t\t(typeof children.type !== 'string' || ['input', 'select', 'textarea', 'button', 'meter', 'output', 'progress'].includes(children.type));\n\tconst childId =\n\t\tcanAssociateChild\n\t\t\t? (children.props as { id?: string }).id\n\t\t\t: undefined;\n\tconst resolvedHtmlFor = htmlFor ?? childId ?? (label && canAssociateChild ? `form-field-${generatedId}` : undefined);\n\tconst resolvedChildren =\n\t\tresolvedHtmlFor && canAssociateChild && !childId\n\t\t\t? React.cloneElement(children as React.ReactElement<{ id?: string }>, { id: resolvedHtmlFor })\n\t\t\t: children;\n\n\treturn (\n\t\t<Stack ref={ref} gap=\"xs\" className={cn('form-field--component w-full box-border', className)} {...rootProps}>\n\t\t\t{!!label && (\n\t\t\t\t<Label\n\t\t\t\t\thtmlFor={resolvedHtmlFor}\n\t\t\t\t\tclassName={cn('form-field--label flex items-center gap-space-xs text-inherit', formLabelLineClass)}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t\t{!!resolvedRequired && (\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=\"inherit\"\n\t\t\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t\t\tclassName=\"form-field--required\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t*\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t{resolvedChildren}\n\n\t\t\t{!!showBottomText && (\n\t\t\t\t<Text\n\t\t\t\t\tid={supportingTextId}\n\t\t\t\t\ttag=\"p\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\ttype={hasError ? 'error' : 'secondary'}\n\t\t\t\t\t{...(hasError ? { role: 'alert', 'aria-live': 'polite' } : {})}\n\t\t\t\t\tclassName=\"form-field--supporting\"\n\t\t\t\t>\n\t\t\t\t\t{supportingText}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nFormField.displayName = 'FormField';\n"],"mappings":";;;;;;;;;AA8CA,IAAaM,IAAYC,EAA2C,SAAmB,EACtF,aACA,UACA,aACA,SACA,UACA,eACA,YACA,qBACA,cACA,GAAGC,KACD,GAAK;CACP,IAAMC,IAAW,EAAQC,GACnBC,IAAiBD,KAASE,MAAgBH,IAAkB,KAAA,IAAPI,IACrDC,IAAiB,EAAQH,GACzBI,IAAmBC,GACnBC,IAAcjB,EAAM,MAAM,GAI1BkB,IAAoBlB,EAAM,eAAemB,CAAQ,KAAKA,EAAS,SAASnB,EAAM,aAClF,OAAOmB,EAAS,QAAS,YAAY;EAAC;EAAS;EAAU;EAAY;EAAU;EAAS;EAAU;CAAU,CAAC,CAAC,SAASA,EAAS,IAAI,IAChIC,IACLF,IACIC,EAAS,MAA0B,KACpC,KAAA,GACEE,IAAkBC,KAAWF,MAAYG,KAASL,IAAoB,cAAcD,MAAgB,KAAA,IACpGO,IACLH,KAAmBH,KAAqB,CAACE,IACtCpB,EAAM,aAAamB,GAAiD,EAAE,IAAIE,EAAgB,CAAC,IAC3FF;CAEJ,OACC,kBAACf,GAAD;EAAY;EAAK,KAAI;EAAK,WAAWH,EAAG,2CAA2CwB,CAAS;EAAG,GAAIjB;EAAnG,UAAA;GACE,CAAC,CAACe,KACF,kBAACrB,GAAD;IACC,SAASmB;IACT,WAAWpB,EAAG,iEAAA,WAAmF;IAFlG,UAAA,CAIEsB,GACA,CAAC,CAACR,KACF,kBAACZ,GAAD;KACC,KAAI;KACJ,MAAK;KACL,MAAK;KACL,WAAU;KACV,UAAA;IAEK,CAAA,CAED;;GAGPqB;GAEA,CAAC,CAACV,KACF,kBAACX,GAAD;IACC,IAAIuB;IACJ,KAAI;IACJ,MAAK;IACL,MAAMjB,IAAW,UAAU;IAC3B,GAAKA,IAAW;KAAE,MAAM;KAAS,aAAa;IAAS,IAAI,CAAC;IAC5D,WAAU;IAET,UAAAE;GACI,CAAA;EAED;;AAET,CAAC;AAED,EAAU,cAAc"}
@@ -1,87 +1,98 @@
1
- import { _ as e } from "./ui-provider-D2_TeLqw.js";
2
- import { t } from "./affordance-geometry.generated-CCIXb2A1.js";
3
- import { t as n } from "./field-state-recipes-C-MFBX_8.js";
4
- import { t as r } from "./editable-text-recipe-Bkm6wKHp.js";
1
+ import { v as e } from "./ui-provider-C_U0Xma4.js";
2
+ import { t } from "./affordance-geometry.generated-tF36bREk.js";
3
+ import { t as n } from "./field-state-recipes-BVA2CWHo.js";
4
+ import { t as r } from "./editable-text-recipe-Cn61kEcv.js";
5
5
  //#region src/components/base/forms/form-sizing.ts
6
6
  var i = {
7
+ sm: `h-control-sm ${t.controlTextMinHeight}`,
8
+ md: `h-control ${t.controlTextMinHeight}`,
9
+ lg: `h-control-lg ${t.controlTextMinHeight}`
10
+ }, a = {
7
11
  sm: [
8
12
  "box-border",
9
13
  "!h-control-sm",
14
+ t.controlTextMinHeight,
10
15
  "font-sans text-foreground",
11
16
  "text-pxs"
12
17
  ].join(" "),
13
18
  md: [
14
19
  "box-border",
15
20
  "!h-control",
21
+ t.controlTextMinHeight,
16
22
  "font-sans text-foreground",
17
23
  "text-sm"
18
24
  ].join(" "),
19
25
  lg: [
20
26
  "box-border",
21
27
  "!h-control-lg",
28
+ t.controlTextMinHeight,
22
29
  "font-sans text-foreground",
23
30
  "text-sm"
24
31
  ].join(" ")
25
- }, a = {
32
+ }, o = {
26
33
  sm: "px-control-sm",
27
34
  md: "px-control",
28
35
  lg: "px-control"
29
- }, o = {
30
- sm: `${a.sm} py-space-xs`,
31
- md: `${a.md} py-space-xs`,
32
- lg: `${a.lg} py-space-sm`
33
36
  }, s = {
37
+ sm: `${o.sm} ${t.controlBlockPadding.sm}`,
38
+ md: `${o.md} ${t.controlBlockPadding.md}`,
39
+ lg: `${o.lg} ${t.controlBlockPadding.lg}`
40
+ }, c = {
34
41
  sm: "gap-space-sm",
35
42
  md: "gap-space-md",
36
43
  lg: "gap-space-lg"
37
- }, c = {
44
+ }, l = {
38
45
  sm: "size-icon-sm",
39
46
  md: "size-icon",
40
47
  lg: "size-icon-lg"
41
- }, l = {
48
+ }, u = {
42
49
  sm: "ps-control-icon-sm",
43
50
  md: "ps-control-icon",
44
51
  lg: t.largeIconStart
45
- }, u = {
52
+ }, d = {
46
53
  sm: "pe-control-icon-sm",
47
54
  md: "pe-control-icon",
48
55
  lg: t.largeIconEnd
49
- }, d = {
56
+ }, f = {
50
57
  sm: "ps-control-addon-sm",
51
58
  md: "ps-control-addon",
52
59
  lg: "ps-control-addon"
53
- }, f = {
60
+ }, p = {
54
61
  sm: "pe-control-addon-sm",
55
62
  md: "pe-control-addon",
56
63
  lg: "pe-control-addon"
57
- }, p = {
64
+ }, m = {
58
65
  sm: "pe-control-count-sm",
59
66
  md: "pe-control-count",
60
67
  lg: "pe-control-count"
61
- }, m = {
68
+ }, h = {
62
69
  sm: "min-h-control-sm",
63
70
  md: "min-h-control",
64
71
  lg: "min-h-control-lg"
65
- }, h = ["[&:hover:not(:active):not(:disabled):not([data-disabled]):not([aria-disabled=true])]:bg-transparent", "[&:active:not(:disabled):not([data-disabled]):not([aria-disabled=true])]:bg-transparent"].join(" ");
66
- function g(e) {
72
+ }, g = ["[&:hover:not(:active):not(:disabled):not([data-disabled]):not([aria-disabled=true])]:bg-transparent", "[&:active:not(:disabled):not([data-disabled]):not([aria-disabled=true])]:bg-transparent"].join(" ");
73
+ function _(e) {
67
74
  return [
68
- "flex w-full items-center justify-between",
69
- "rounded-inner border border-input bg-transparent text-start font-normal",
75
+ "box-border rounded-inner border border-input bg-transparent",
70
76
  "shadow-none transition-[color,box-shadow] outline-none",
71
- i[e],
77
+ a[e],
72
78
  r[e],
73
- o[e],
74
79
  s[e],
75
80
  n.focus,
76
- "focus-visible:ring-offset-0",
77
81
  n.invalid,
78
- "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
82
+ "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50"
83
+ ].join(" ");
84
+ }
85
+ function v(e) {
86
+ return [
87
+ "flex w-full items-center justify-between text-start font-normal",
88
+ _(e),
89
+ c[e],
79
90
  "data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50",
80
91
  "data-readonly:bg-muted",
81
- h
92
+ g
82
93
  ].join(" ");
83
94
  }
84
- var _ = {
95
+ var y = {
85
96
  sm: [
86
97
  "min-h-textarea-sm",
87
98
  "font-sans text-foreground",
@@ -97,30 +108,18 @@ var _ = {
97
108
  "font-sans text-foreground",
98
109
  "text-sm"
99
110
  ].join(" ")
100
- }, v = {
101
- sm: "py-[calc((var(--height-control)*8/9*var(--density-scale)-1lh)/2-1px)]",
102
- md: "py-[calc((var(--height-control)*var(--density-scale)-1lh)/2-1px)]",
103
- lg: "py-[calc((var(--height-control)*10/9*var(--density-scale)-1lh)/2-1px)]"
104
- }, y = {
105
- target: {
106
- sm: "top-[calc((var(--height-control)*8/9-1.375rem)*var(--density-scale)/2)]",
107
- md: "top-[calc((var(--height-control)-1.375rem)*var(--density-scale)/2)]",
108
- lg: "top-[calc((var(--height-control)*10/9-1.375rem)*var(--density-scale)/2)]"
109
- },
110
- icon: {
111
- sm: "top-[calc((var(--height-control)*8/9*var(--density-scale)-var(--icon))/2)]",
112
- md: "top-[calc((var(--height-control)*var(--density-scale)-var(--icon))/2)]",
113
- lg: "top-[calc((var(--height-control)*10/9*var(--density-scale)-var(--icon))/2)]"
114
- }
115
- }, b = {
111
+ }, b = t.textareaBlockPadding, x = {
112
+ target: t.textareaClearTop,
113
+ icon: t.textareaIconTop
114
+ }, S = {
116
115
  sm: "text-xs",
117
116
  md: "text-sm",
118
117
  lg: "text-base"
119
- };
120
- function x(t, n) {
118
+ }, C = "leading-6";
119
+ function w(t, n) {
121
120
  return e(t, n);
122
121
  }
123
122
  //#endregion
124
- export { a, m as c, g as d, b as f, x as g, _ as h, u as i, o as l, v as m, p as n, c as o, y as p, f as r, l as s, d as t, i as u };
123
+ export { b as _, i as a, u as c, a as d, _ as f, x as g, S as h, d as i, h as l, C as m, m as n, o, v as p, p as r, l as s, f as t, s as u, y as v, w as y };
125
124
 
126
- //# sourceMappingURL=form-sizing-uWP4lzVh.js.map
125
+ //# sourceMappingURL=form-sizing-BdP_Mf5p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-sizing-BdP_Mf5p.js","names":["resolveComponentScale","fieldStateRecipes","editableTextSizeClasses","formControlHeightClasses","affordanceGeometry","formControlSizeClasses","formControlHorizontalPaddingClasses","formControlPaddingClasses","formControlInlineGapClasses","formControlIconClasses","formControlIconOffsetClasses","formControlEndIconOffsetClasses","formControlAddonOffsetClasses","formControlEndAddonOffsetClasses","formControlCountOffsetClasses","formControlMinHeightClasses","fieldTriggerInteractionClasses","formFieldFrameClasses","size","formFieldTriggerClasses","formTextareaSizeClasses","formTextareaInsetClasses","formTextareaAffordanceTopClasses","formLabelSizeClasses","formLabelLineClass","resolveFormControlSize","sizeProp","defaultScale"],"sources":["../src/components/base/forms/form-sizing.ts"],"sourcesContent":["import { fieldStateRecipes } from '../../../lib/field-state-recipes';\nimport { affordanceGeometry } from '../../../lib/affordance-geometry.generated';\nimport { editableTextSizeClasses } from '../../../lib/editable-text-recipe';\nimport type { ComponentScale } from '../../../lib/component-vocabulary';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\n\n/** Ordinary heights for compound frames that retain auto-height and class overrides. */\nexport const formControlHeightClasses = {\n\tsm: `h-control-sm ${affordanceGeometry.controlTextMinHeight}`,\n\tmd: `h-control ${affordanceGeometry.controlTextMinHeight}`,\n\tlg: `h-control-lg ${affordanceGeometry.controlTextMinHeight}`,\n} satisfies Record<ComponentScale, string>;\n\n// Important height utilities let our resolved height win against shadcn primitives that\n// bake their own `data-[size=*]:h-{n}` defaults (Select, DatePicker\n// trigger via Button, etc.). Without `!`, the primitive's\n// attribute-selector specificity beats our class-selector and every\n// non-Input field renders 4px taller than Input.\n// Keep the important spellings literal so Tailwind emits them in package CSS.\nexport const formControlSizeClasses = {\n\tsm: [\n\t\t'box-border',\n\t\t'!h-control-sm',\n\t\taffordanceGeometry.controlTextMinHeight,\n\t\t'font-sans text-foreground',\n\t\t'text-pxs',\n\t].join(' '),\n\tmd: [\n\t\t'box-border',\n\t\t'!h-control',\n\t\taffordanceGeometry.controlTextMinHeight,\n\t\t'font-sans text-foreground',\n\t\t'text-sm',\n\t].join(' '),\n\tlg: [\n\t\t'box-border',\n\t\t'!h-control-lg',\n\t\taffordanceGeometry.controlTextMinHeight,\n\t\t'font-sans text-foreground',\n\t\t'text-sm',\n\t].join(' '),\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlHorizontalPaddingClasses = {\n\tsm: 'px-control-sm',\n\tmd: 'px-control',\n\tlg: 'px-control',\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlPaddingClasses = {\n\tsm: `${formControlHorizontalPaddingClasses.sm} ${affordanceGeometry.controlBlockPadding.sm}`,\n\tmd: `${formControlHorizontalPaddingClasses.md} ${affordanceGeometry.controlBlockPadding.md}`,\n\tlg: `${formControlHorizontalPaddingClasses.lg} ${affordanceGeometry.controlBlockPadding.lg}`,\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlInlineGapClasses = {\n\tsm: 'gap-space-sm',\n\tmd: 'gap-space-md',\n\tlg: 'gap-space-lg',\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlIconClasses = {\n\tsm: 'size-icon-sm',\n\tmd: 'size-icon',\n\tlg: 'size-icon-lg',\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlIconOffsetClasses = {\n\tsm: 'ps-control-icon-sm',\n\tmd: 'ps-control-icon',\n\tlg: affordanceGeometry.largeIconStart,\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlEndIconOffsetClasses = {\n\tsm: 'pe-control-icon-sm',\n\tmd: 'pe-control-icon',\n\tlg: affordanceGeometry.largeIconEnd,\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlAddonOffsetClasses = {\n\tsm: 'ps-control-addon-sm',\n\tmd: 'ps-control-addon',\n\tlg: 'ps-control-addon',\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlEndAddonOffsetClasses = {\n\tsm: 'pe-control-addon-sm',\n\tmd: 'pe-control-addon',\n\tlg: 'pe-control-addon',\n} satisfies Record<ComponentScale, string>;\n\nexport const formControlCountOffsetClasses = {\n\tsm: 'pe-control-count-sm',\n\tmd: 'pe-control-count',\n\tlg: 'pe-control-count',\n} satisfies Record<ComponentScale, string>;\n\n/**\n * Min-heights matching `formControlSizeClasses` so multi-line trigger\n * variants (e.g. `Select` showing wrapped descriptions) can keep the\n * size's vertical rhythm without locking to a fixed `h-{n}`.\n */\nexport const formControlMinHeightClasses = {\n\tsm: 'min-h-control-sm',\n\tmd: 'min-h-control',\n\tlg: 'min-h-control-lg',\n} satisfies Record<ComponentScale, string>;\n\n/**\n * Field triggers never take an action hover or press fill: a native field has\n * neither. The variants repeat the Button interaction recipe's exact selectors so\n * class merging replaces its fill instead of losing a specificity contest.\n */\nconst fieldTriggerInteractionClasses = [\n\t'[&:hover:not(:active):not(:disabled):not([data-disabled]):not([aria-disabled=true])]:bg-transparent',\n\t'[&:active:not(:disabled):not([data-disabled]):not([aria-disabled=true])]:bg-transparent',\n].join(' ');\n\n/**\n * The one field frame, drawn by `Input` on its native field and by\n * `formFieldTriggerClasses` on button-shaped triggers: the `--input` boundary,\n * inner radius, transparent fill (the library is intentionally flat), control\n * height, editable text size, control padding and the shared focus, invalid and\n * disabled states. Layout (`flex`, width) stays with each owner.\n *\n * The displayed value is the field's value, so it follows the editable text\n * recipe: on coarse pointers a trigger matches the touch input size of an\n * adjoining `Input` instead of rendering a step smaller.\n */\nexport function formFieldFrameClasses(size: ComponentScale): string {\n\treturn [\n\t\t'box-border rounded-inner border border-input bg-transparent',\n\t\t'shadow-none transition-[color,box-shadow] outline-none',\n\t\tformControlSizeClasses[size],\n\t\teditableTextSizeClasses[size],\n\t\tformControlPaddingClasses[size],\n\t\tfieldStateRecipes.focus,\n\t\tfieldStateRecipes.invalid,\n\t\t'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t].join(' ');\n}\n\n/**\n * Canonical \"input-shaped trigger\" chrome — used by any control that\n * renders as a button-style trigger but visually has to read as a form\n * field (DatePicker, TimePicker, Cascader, the inner Select inside composite\n * fields, etc.). It is `Input`'s own frame plus button resets, so when the\n * canonical input look changes every trigger picks it up.\n */\nexport function formFieldTriggerClasses(size: ComponentScale): string {\n\treturn [\n\t\t'flex w-full items-center justify-between text-start font-normal',\n\t\tformFieldFrameClasses(size),\n\t\tformControlInlineGapClasses[size],\n\t\t'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n\t\t// Read-only matches Input's read-only fill.\n\t\t'data-readonly:bg-muted',\n\t\tfieldTriggerInteractionClasses,\n\t].join(' ');\n}\n\nexport const formTextareaSizeClasses = {\n\tsm: [\n\t\t'min-h-textarea-sm',\n\t\t'font-sans text-foreground',\n\t\t'text-pxs',\n\t].join(' '),\n\tmd: [\n\t\t'min-h-textarea',\n\t\t'font-sans text-foreground',\n\t\t'text-sm',\n\t].join(' '),\n\tlg: [\n\t\t'min-h-textarea',\n\t\t'font-sans text-foreground',\n\t\t'text-sm',\n\t].join(' '),\n} satisfies Record<ComponentScale, string>;\n\n/**\n * Vertical inset of multi-line fields. Their first line sits exactly where a\n * single-line control of the same size draws its value (inside the 1px border),\n * so a Textarea beside an Input shares its first line. `1lh` is the field's own\n * line height, so the inset follows the editable text size on every pointer.\n */\nexport const formTextareaInsetClasses = affordanceGeometry.textareaBlockPadding satisfies Record<ComponentScale, string>;\n\n/**\n * Top offsets that centre multi-line field affordances on the first line, where a\n * single-line control of the same size centres them: the clear target\n * (`size-control-clear`) and a `size-icon` glyph such as the loading spinner.\n */\nexport const formTextareaAffordanceTopClasses = {\n\ttarget: affordanceGeometry.textareaClearTop,\n\ticon: affordanceGeometry.textareaIconTop,\n} as const satisfies Record<'target' | 'icon', Record<ComponentScale, string>>;\n\nexport const formLabelSizeClasses = {\n\tsm: 'text-xs',\n\tmd: 'text-sm',\n\tlg: 'text-base',\n} satisfies Record<ComponentScale, string>;\n\n/** Field labels share one line box, so a label row lines up beside its field at every size. */\nexport const formLabelLineClass = 'leading-6';\n\nexport function resolveFormControlSize(\n\tsizeProp: ComponentScale | undefined,\n\tdefaultScale: ComponentScale | undefined,\n): ComponentScale {\n\treturn resolveComponentScale(sizeProp, defaultScale);\n}\n\nexport function resolveFormLabelSize(\n\tsizeProp: ComponentScale | undefined,\n\tdefaultScale: ComponentScale | undefined,\n): ComponentScale {\n\treturn resolveComponentScale(sizeProp, defaultScale);\n}\n"],"mappings":";;;;;AAOA,IAAaG,IAA2B;CACvC,IAAI,gBAAgBC,EAAmB;CACvC,IAAI,aAAaA,EAAmB;CACpC,IAAI,gBAAgBA,EAAmB;AACxC,GAQaC,IAAyB;CACrC,IAAI;EACH;EACA;EACAD,EAAmB;EACnB;EACA;CACD,CAAC,CAAC,KAAK,GAAG;CACV,IAAI;EACH;EACA;EACAA,EAAmB;EACnB;EACA;CACD,CAAC,CAAC,KAAK,GAAG;CACV,IAAI;EACH;EACA;EACAA,EAAmB;EACnB;EACA;CACD,CAAC,CAAC,KAAK,GAAG;AACX,GAEaE,IAAsC;CAClD,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAEaC,IAA4B;CACxC,IAAI,GAAGD,EAAoC,GAAG,GAAGF,EAAmB,oBAAoB;CACxF,IAAI,GAAGE,EAAoC,GAAG,GAAGF,EAAmB,oBAAoB;CACxF,IAAI,GAAGE,EAAoC,GAAG,GAAGF,EAAmB,oBAAoB;AACzF,GAEaI,IAA8B;CAC1C,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAEaC,IAAyB;CACrC,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAEaC,IAA+B;CAC3C,IAAI;CACJ,IAAI;CACJ,IAAIN,EAAmB;AACxB,GAEaO,IAAkC;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAIP,EAAmB;AACxB,GAEaQ,IAAgC;CAC5C,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAEaC,IAAmC;CAC/C,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAEaC,IAAgC;CAC5C,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAOaC,IAA8B;CAC1C,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAOMC,IAAiC,CACtC,uGACA,yFACD,CAAC,CAAC,KAAK,GAAG;AAaV,SAAgBC,EAAsB,GAA8B;CACnE,OAAO;EACN;EACA;EACAZ,EAAuBa;EACvBhB,EAAwBgB;EACxBX,EAA0BW;EAC1BjB,EAAkB;EAClBA,EAAkB;EAClB;CACD,CAAC,CAAC,KAAK,GAAG;AACX;AASA,SAAgBkB,EAAwB,GAA8B;CACrE,OAAO;EACN;EACAF,EAAsBC,CAAI;EAC1BV,EAA4BU;EAC5B;EAEA;EACAF;CACD,CAAC,CAAC,KAAK,GAAG;AACX;AAEA,IAAaI,IAA0B;CACtC,IAAI;EACH;EACA;EACA;CACD,CAAC,CAAC,KAAK,GAAG;CACV,IAAI;EACH;EACA;EACA;CACD,CAAC,CAAC,KAAK,GAAG;CACV,IAAI;EACH;EACA;EACA;CACD,CAAC,CAAC,KAAK,GAAG;AACX,GAQaC,IAA2BjB,EAAmB,sBAO9CkB,IAAmC;CAC/C,QAAQlB,EAAmB;CAC3B,MAAMA,EAAmB;AAC1B,GAEamB,IAAuB;CACnC,IAAI;CACJ,IAAI;CACJ,IAAI;AACL,GAGaC,IAAqB;AAElC,SAAgBC,EACf,GACA,GACiB;CACjB,OAAOzB,EAAsB0B,GAAUC,CAAY;AACpD"}
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "./lib/strings.js";
3
- import { t } from "./utils-Cospvlj1.js";
4
- import { s as n } from "./typography-CAr3dQhX.js";
5
- import { t as r } from "./button-BS3KDg00.js";
6
- import { t as i } from "./structure-hzCW-XsV.js";
7
- import { h as a, m as o, p as s, t as c, v as l } from "./smart-card-Bek-TwUp.js";
8
- import { t as u } from "./input-DhQdBnV3.js";
9
- import { t as d } from "./form-field-VZRULhUK.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
+ import { t as i } from "./structure-BmisBK-3.js";
7
+ import { h as a, m as o, p as s, t as c, v as l } from "./smart-card-DiC5aac3.js";
8
+ import { t as u } from "./input-DQdEd0YD.js";
9
+ import { t as d } from "./form-field-CwH9y77i.js";
10
10
  import { useMemo as f } from "react";
11
11
  import { jsx as p, jsxs as m } from "react/jsx-runtime";
12
12
  import { Controller as h, useForm as g } from "react-hook-form";
@@ -59,7 +59,7 @@ function x({ title: e, description: n, actions: r, children: i, footer: a, surfa
59
59
  children: i
60
60
  });
61
61
  }
62
- function S({ children: e, leading: r, trailing: a, sticky: o = !1, className: s }) {
62
+ function S({ children: e, leading: n, trailing: a, sticky: o = !1, className: s }) {
63
63
  let c = a ?? e;
64
64
  return /* @__PURE__ */ p("div", {
65
65
  className: t("form-actions-bar--component @container/form-actions-bar", o && "sticky bottom-0 z-30", s),
@@ -69,16 +69,16 @@ function S({ children: e, leading: r, trailing: a, sticky: o = !1, className: s
69
69
  className: "form-actions-bar--row border-t border-border bg-background p-surface",
70
70
  children: /* @__PURE__ */ m("div", {
71
71
  className: "form-actions-bar--layout flex min-w-0 flex-col gap-space-lg @md/form-actions-bar:flex-row @md/form-actions-bar:items-center @md/form-actions-bar:flex-nowrap",
72
- children: [r != null && /* @__PURE__ */ p("div", {
72
+ children: [n != null && /* @__PURE__ */ p("div", {
73
73
  "data-slot": "form-actions-leading",
74
74
  className: "form-actions-bar--leading min-w-0 flex-1",
75
- children: b(r) ? /* @__PURE__ */ p(n, {
75
+ children: b(n) ? /* @__PURE__ */ p(r, {
76
76
  tag: "span",
77
77
  size: "xs",
78
78
  type: "secondary",
79
79
  className: "form-actions-bar--leading-text",
80
- children: r
81
- }) : r
80
+ children: n
81
+ }) : n
82
82
  }), c != null && /* @__PURE__ */ p(i, {
83
83
  "data-slot": "form-actions-trailing",
84
84
  wrap: !0,
@@ -92,7 +92,7 @@ function S({ children: e, leading: r, trailing: a, sticky: o = !1, className: s
92
92
  })
93
93
  });
94
94
  }
95
- function C({ title: e, description: r, errors: c = [], action: u, className: d }) {
95
+ function C({ title: e, description: n, errors: c = [], action: u, className: d }) {
96
96
  return /* @__PURE__ */ m(s, {
97
97
  "data-component": "error-summary",
98
98
  "data-slot": "error-summary",
@@ -100,13 +100,13 @@ function C({ title: e, description: r, errors: c = [], action: u, className: d }
100
100
  className: t("error-summary--component", d),
101
101
  children: [
102
102
  /* @__PURE__ */ p(l, { children: e }),
103
- !!r && /* @__PURE__ */ p(a, { children: r }),
103
+ !!n && /* @__PURE__ */ p(a, { children: n }),
104
104
  c.length > 0 && /* @__PURE__ */ p(i, {
105
105
  render: /* @__PURE__ */ p("ul", {}),
106
106
  gap: "xs",
107
107
  "data-slot": "error-summary-list",
108
108
  className: "error-summary--list col-start-2 m-0 list-disc ps-space-xl text-sm text-muted-foreground",
109
- children: c.map((e, t) => /* @__PURE__ */ p("li", { children: typeof e == "string" || typeof e == "number" || typeof e == "bigint" ? /* @__PURE__ */ p(n, {
109
+ children: c.map((e, t) => /* @__PURE__ */ p("li", { children: typeof e == "string" || typeof e == "number" || typeof e == "bigint" ? /* @__PURE__ */ p(r, {
110
110
  tag: "span",
111
111
  type: "secondary",
112
112
  children: e
@@ -137,15 +137,15 @@ function w({ title: e, description: n, actions: r, tone: o = "warning", classNam
137
137
  ]
138
138
  });
139
139
  }
140
- function T({ submitting: e = !1, dirty: n = !0, disableWhenPristine: i = !1, disabled: a, children: o, ...s }) {
141
- return /* @__PURE__ */ p(r, {
140
+ function T({ submitting: e = !1, dirty: r = !0, disableWhenPristine: i = !1, disabled: a, children: o, ...s }) {
141
+ return /* @__PURE__ */ p(n, {
142
142
  tone: "primary",
143
143
  ...s,
144
144
  "data-component": "submit-state-button",
145
145
  "data-slot": "submit-state-button",
146
146
  type: s.type ?? "submit",
147
147
  loading: e,
148
- disabled: a || i && !n,
148
+ disabled: a || i && !r,
149
149
  className: t("submit-state-button--component", s.className),
150
150
  children: o
151
151
  });
@@ -153,11 +153,11 @@ function T({ submitting: e = !1, dirty: n = !0, disableWhenPristine: i = !1, dis
153
153
  //#endregion
154
154
  //#region src/components/base/forms/operation-password-form.tsx
155
155
  function E(e) {
156
- let { formId: t, onSubmit: r, errors: a, loading: o = !1, label: s } = e, c = ((e) => {
156
+ let { formId: t, onSubmit: n, errors: a, loading: o = !1, label: s } = e, c = ((e) => {
157
157
  let t = a?.[e];
158
158
  return Array.isArray(t) ? t[0] : t;
159
159
  })("password"), l = c ? () => c : void 0, d = (Array.isArray(a?.general) ? a.general[0] : a?.general) || (Array.isArray(a?.server) ? a.server[0] : a?.server), h = f(() => ({ password: "" }), []), { handleSubmit: _, control: v } = g({ defaultValues: h }), b = async (e) => {
160
- await r({ password: e.password });
160
+ await n({ password: e.password });
161
161
  }, x = o;
162
162
  return /* @__PURE__ */ m(i, {
163
163
  render: /* @__PURE__ */ p("form", {}),
@@ -165,7 +165,7 @@ function E(e) {
165
165
  id: t,
166
166
  onSubmit: _(b),
167
167
  className: "operation-password-form--component",
168
- children: [!!d && /* @__PURE__ */ p(n, {
168
+ children: [!!d && /* @__PURE__ */ p(r, {
169
169
  type: "error",
170
170
  children: d
171
171
  }), /* @__PURE__ */ p(y, {
@@ -191,4 +191,4 @@ E.displayName = "OperationPasswordForm";
191
191
  //#endregion
192
192
  export { x as a, _ as c, S as i, w as n, T as o, C as r, y as s, E as t };
193
193
 
194
- //# sourceMappingURL=forms-DDeEnXSY.js.map
194
+ //# sourceMappingURL=forms-B9G_xwzi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forms-DDeEnXSY.js","names":["Text","Button","Stack","AlertDescription","AlertAction","Alert","Card","AlertTitle","Input","FormField","defaultControlledFormFieldStrings","interpolateControlledFormFieldString","template","label","ControlledFormField","errorGetter","stringsProp","chromeProps","strings","useStrings","Controller","validationError","fieldState","resolvedError","name","invalid","cn","children","field","isSimpleText","value","FormSection","actions","footer","className","contentClassName","FormActionsBar","trailing","sticky","leading","ErrorSummary","title","description","errors","error","index","action","DirtyStateBanner","SubmitStateButton","props","submitting","disabled","disableWhenPristine","dirty","OperationPasswordForm","passwordError","passwordErrorFn","topLevelError","defaultValues","useMemo","useForm","submit","onSubmit","values","loading","formId","handleSubmit"],"sources":["../src/components/base/forms/controlled-form-field.strings.ts","../src/components/base/forms/controlled-form-field.tsx","../src/components/base/forms/workflow.tsx","../src/components/base/forms/operation-password-form.tsx"],"sourcesContent":["export interface ControlledFormFieldStrings {\n\trequired: string;\n\trequiredWithLabel: string;\n\tinvalid: string;\n}\n\nexport const defaultControlledFormFieldStrings: ControlledFormFieldStrings = {\n\trequired: 'This field is required',\n\trequiredWithLabel: '{{label}} is required',\n\tinvalid: 'Invalid value',\n};\n\nexport function interpolateControlledFormFieldString(template: string, label: string) {\n\treturn template.replace(/\\{\\{\\s*label\\s*\\}\\}/g, label);\n}\n","/**\n * ControlledFormField — react-hook-form integration for the optional-peer-free\n * `FormField` presentation component. Keeping this binding in its own module\n * prevents unrelated display and form-chrome consumers from loading RHF.\n */\nimport type { ComponentProps, ReactNode } from 'react';\nimport {\n\tController,\n\ttype Control,\n\ttype ControllerFieldState,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldValues,\n\ttype RegisterOptions,\n} from 'react-hook-form';\n\nimport { FormField } from './form-field';\nimport {\n\tdefaultControlledFormFieldStrings,\n\tinterpolateControlledFormFieldString,\n\ttype ControlledFormFieldStrings,\n} from './controlled-form-field.strings';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\ntype FieldChromeProps = Omit<\n\tComponentProps<typeof FormField>,\n\t'children' | 'error' | 'htmlFor'\n>;\n\nexport type FormFieldErrorGetter<TName extends string> = (field: TName) => string | undefined;\n\nexport interface ControlledFormFieldProps<\n\tTFieldValues extends FieldValues,\n\tTName extends FieldPath<TFieldValues>,\n> extends FieldChromeProps {\n\t/** Field name in the react-hook-form schema. */\n\tname: TName;\n\t/** The form's `control` object from `useForm`. */\n\tcontrol: Control<TFieldValues>;\n\t/** Validation rules passed to react-hook-form. */\n\trules?: RegisterOptions<TFieldValues, TName>;\n\t/** Validation message, overriding the one derived from form state. */\n\terror?: FormFieldErrorGetter<TName>;\n\t/** Overrides the field's own copy. */\n\tstrings?: StringsProp<ControlledFormFieldStrings>;\n\tchildren: (\n\t\tfield: ControllerRenderProps<TFieldValues, TName>,\n\t\t/** Validation message, overriding the one derived from form state. */\n\t\terror: string | undefined,\n\t\tinvalid: boolean,\n\t\tfieldState: ControllerFieldState,\n\t) => ReactNode;\n}\n\nexport function ControlledFormField<\n\tTFieldValues extends FieldValues,\n\tTName extends FieldPath<TFieldValues>,\n>({\n\tname,\n\tcontrol,\n\trules,\n\terror: errorGetter,\n\tstrings: stringsProp,\n\tchildren,\n\t...chromeProps\n}: ControlledFormFieldProps<TFieldValues, TName>) {\n\tconst strings = useStrings(defaultControlledFormFieldStrings, stringsProp);\n\n\treturn (\n\t\t<Controller\n\t\t\tname={name}\n\t\t\tcontrol={control}\n\t\t\trules={rules}\n\t\t\trender={({ field, fieldState }) => {\n\t\t\t\tconst validationError = fieldState.error?.message\n\t\t\t\t\t|| (fieldState.error\n\t\t\t\t\t\t? fieldState.error.type === 'required'\n\t\t\t\t\t\t\t? typeof chromeProps.label === 'string'\n\t\t\t\t\t\t\t\t? interpolateControlledFormFieldString(strings.requiredWithLabel, chromeProps.label)\n\t\t\t\t\t\t\t\t: strings.required\n\t\t\t\t\t\t\t: strings.invalid\n\t\t\t\t\t\t: undefined);\n\t\t\t\tconst resolvedError = errorGetter?.(name) || validationError || undefined;\n\t\t\t\tconst invalid = Boolean(resolvedError);\n\n\t\t\t\treturn (\n\t\t\t\t\t<FormField\n\t\t\t\t\t\t{...chromeProps}\n\t\t\t\t\t\terror={resolvedError}\n\t\t\t\t\t\thtmlFor={name}\n\t\t\t\t\t\tclassName={cn('controlled-form-field--component', chromeProps.className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children(field, resolvedError, invalid, fieldState)}\n\t\t\t\t\t</FormField>\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nControlledFormField.displayName = 'ControlledFormField';\n\nexport {\n\tdefaultControlledFormFieldStrings,\n\ttype ControlledFormFieldStrings,\n} from './controlled-form-field.strings';\n","/** Form workflow primitives — section chrome, errors, dirty state, and submit state. */\nimport type { ReactNode } from 'react';\n\nimport { Button } from '../buttons';\nimport type { ButtonProps } from '../buttons';\nimport { Card } from '../cards';\nimport { Stack } from '../structure';\nimport type { SmartCardSurface } from '../cards';\nimport { Alert, AlertAction, AlertDescription, AlertTitle } from '../feedback';\nimport type { AlertTone } from '../feedback';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport interface FormSectionProps {\n\t/** Section title. */\n\ttitle?: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\t/** Controls in the section header. */\n\tactions?: ReactNode;\n\tchildren?: ReactNode;\n\t/** Content below the section body. */\n\tfooter?: ReactNode;\n\t/** Outer chrome. Use `flat` when the section already sits inside a card. */\n\tsurface?: SmartCardSurface;\n\tclassName?: string;\n\t/** Merged onto the section body. */\n\tcontentClassName?: string;\n}\n\nexport function FormSection({\n\ttitle,\n\tdescription,\n\tactions,\n\tchildren,\n\tfooter,\n\tsurface = 'card',\n\tclassName,\n\tcontentClassName,\n}: FormSectionProps) {\n\treturn (\n\t\t<Card\n\t\t\tdata-component=\"form-section\"\n\t\t\tdata-slot=\"form-section\"\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\theaderAction={actions}\n\t\t\tfooterSlot={footer}\n\t\t\tsurface={surface}\n\t\t\tclassName={cn('form-section--component', className)}\n\t\t\tcontentClassName={cn('form-section--content grid gap-space-xl', contentClassName)}\n\t\t>\n\t\t\t{children}\n\t\t</Card>\n\t);\n}\n\nexport interface FormActionsBarProps {\n\t/** Action content used when `trailing` is not provided. */\n\tchildren?: ReactNode;\n\t/** Optional status or context shown before the actions. Scalar copy uses secondary Typography. */\n\tleading?: ReactNode;\n\t/** Preferred action slot. When provided, it takes precedence over `children`. */\n\ttrailing?: ReactNode;\n\t/** Keep the bar attached to the bottom of its nearest scrolling ancestor. */\n\tsticky?: boolean;\n\tclassName?: string;\n}\n\n/** Responsive form-footer chrome for status and consumer-owned actions. */\nexport function FormActionsBar({\n\tchildren,\n\tleading,\n\ttrailing,\n\tsticky = false,\n\tclassName,\n}: FormActionsBarProps) {\n\tconst actions = trailing ?? children;\n\n\treturn (\n\t\t/*\n\t\t * Two elements, because the bar has to be measured and stick at the same\n\t\t * time and one element cannot do both. Its stack/row switch depends on its\n\t\t * own width — a form footer is as often in a drawer as at page width — and\n\t\t * an element cannot match its own container query, so the row has to sit\n\t\t * inside the measured box. `sticky` then has to live on the OUTER element:\n\t\t * a sticky child is confined to its parent's box, so a sticky row inside an\n\t\t * auto-height wrapper has nowhere to travel and silently stops sticking.\n\t\t */\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'form-actions-bar--component @container/form-actions-bar',\n\t\t\t\tsticky && 'sticky bottom-0 z-30',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t<div\n\t\t\tdata-component=\"form-actions-bar\"\n\t\t\tdata-slot=\"form-actions-bar\"\n\t\t\t// Opaque, so a sticky bar covers content scrolling under it without a blur.\n\t\t\tclassName=\"form-actions-bar--row border-t border-border bg-background p-surface\"\n\t\t>\n\t\t<div className=\"form-actions-bar--layout flex min-w-0 flex-col gap-space-lg @md/form-actions-bar:flex-row @md/form-actions-bar:items-center @md/form-actions-bar:flex-nowrap\">\n\t\t\t{leading != null && (\n\t\t\t\t<div data-slot=\"form-actions-leading\" className=\"form-actions-bar--leading min-w-0 flex-1\">\n\t\t\t\t\t{isSimpleText(leading) ? (\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\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"form-actions-bar--leading-text\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{leading}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : leading}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{actions != null && (\n\t\t\t\t<Stack\n\t\t\t\t\tdata-slot=\"form-actions-trailing\"\n\t\t\t\t\twrap\n\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\tclassName=\"form-actions-bar--trailing min-w-0 w-full max-w-full shrink-0 @md/form-actions-bar:ml-auto @md/form-actions-bar:w-auto @md/form-actions-bar:shrink\"\n\t\t\t\t>\n\t\t\t\t\t{actions}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</div>\n\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport interface ErrorSummaryProps {\n\t/** Section title. */\n\ttitle: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\t/** Validation messages listed in the error summary. */\n\terrors?: readonly ReactNode[];\n\t/** Control offered alongside the summary. */\n\taction?: ReactNode;\n\tclassName?: string;\n}\n\nexport function ErrorSummary({\n\ttitle,\n\tdescription,\n\terrors = [],\n\taction,\n\tclassName,\n}: ErrorSummaryProps) {\n\treturn (\n\t\t<Alert\n\t\t\tdata-component=\"error-summary\"\n\t\t\tdata-slot=\"error-summary\"\n\t\t\ttone=\"destructive\"\n\t\t\tclassName={cn('error-summary--component', className)}\n\t\t>\n\t\t\t<AlertTitle>{title}</AlertTitle>\n\t\t\t{!!description && <AlertDescription>{description}</AlertDescription>}\n\t\t\t{errors.length > 0 && (\n\t\t\t\t\t// The messages are the summary's content: they keep the description's\n\t\t\t\t\t// size and ink, and the bullets take that ink too.\n\t\t\t\t\t<Stack render={<ul />} gap=\"xs\" data-slot=\"error-summary-list\" className=\"error-summary--list col-start-2 m-0 list-disc ps-space-xl text-sm text-muted-foreground\">\n\t\t\t\t\t{errors.map((error, index) => (\n\t\t\t\t\t\t<li key={index}>\n\t\t\t\t\t\t\t{typeof error === 'string' || typeof error === 'number' || typeof error === 'bigint' ? (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t{error}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) : error}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t)}\n\t\t\t{!!action && <AlertAction>{action}</AlertAction>}\n\t\t</Alert>\n\t);\n}\n\nexport interface DirtyStateBannerProps {\n\t/** Section title. */\n\ttitle: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\t/** Controls in the section header. */\n\tactions?: ReactNode;\n\t/** Semantic tone of the banner. */\n\ttone?: Extract<AlertTone, 'neutral' | 'info' | 'warning'>;\n\tclassName?: string;\n}\n\nexport function DirtyStateBanner({\n\ttitle,\n\tdescription,\n\tactions,\n\ttone = 'warning',\n\tclassName,\n}: DirtyStateBannerProps) {\n\treturn (\n\t\t<Alert\n\t\t\tdata-component=\"dirty-state-banner\"\n\t\t\tdata-slot=\"dirty-state-banner\"\n\t\t\ttone={tone}\n\t\t\tclassName={cn('dirty-state-banner--component', className)}\n\t\t>\n\t\t\t<AlertTitle>{title}</AlertTitle>\n\t\t\t{!!description && (\n\t\t\t\t<AlertDescription>\n\t\t\t\t\t{description}\n\t\t\t\t</AlertDescription>\n\t\t\t)}\n\t\t\t{actions != null && (\n\t\t\t\t<div className=\"dirty-state-banner--actions col-start-2 min-w-0 pt-space-sm\">\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap gap=\"sm\">{actions}</Stack>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Alert>\n\t);\n}\n\nexport interface SubmitStateButtonProps extends Omit<ButtonProps, 'loading'> {\n\t/** Semantic color. Defaults to `primary`: submitting is the form's main command. */\n\ttone?: ButtonProps['tone'];\n\t/** Shows the pending state and blocks repeat submissions. */\n\tsubmitting?: boolean;\n\t/** Whether the form has unsaved changes. */\n\tdirty?: boolean;\n\t/** Disables submit until `dirty` is true, so a clean form cannot be re-saved. */\n\tdisableWhenPristine?: boolean;\n}\n\nexport function SubmitStateButton({\n\tsubmitting = false,\n\tdirty = true,\n\tdisableWhenPristine = false,\n\tdisabled,\n\tchildren,\n\t...props\n}: SubmitStateButtonProps) {\n\treturn (\n\t\t<Button\n\t\t\t// Submitting is the form's main command; props can still choose another tone.\n\t\t\ttone=\"primary\"\n\t\t\t{...props}\n\t\t\tdata-component=\"submit-state-button\"\n\t\t\tdata-slot=\"submit-state-button\"\n\t\t\ttype={props.type ?? 'submit'}\n\t\t\tloading={submitting}\n\t\t\tdisabled={disabled || (disableWhenPristine && !dirty)}\n\t\t\tclassName={cn('submit-state-button--component', props.className)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n}\n","import { useMemo } from 'react';\nimport type { SubmitHandler } from 'react-hook-form';\nimport { useForm } from 'react-hook-form';\n\nimport { ControlledFormField } from './controlled-form-field';\nimport { Input } from '../text-inputs';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\n\nexport type ErrorBag = Record<string, string | string[] | undefined>;\n\nexport interface OperationPasswordFormProps {\n\tformId: string;\n\tonSubmit: (data: { password: string }) => Promise<void>;\n\terrors?: ErrorBag;\n\t/** Shows the pending indicator. */\n\tloading?: boolean;\n\t/** Display label. */\n\tlabel: string;\n}\n\ninterface PasswordFormValues {\n\tpassword: string;\n}\n\nexport function OperationPasswordForm(props: OperationPasswordFormProps) {\n\tconst { formId, onSubmit, errors, loading = false, label } = props;\n\n\tconst getError = (field: keyof PasswordFormValues): string | undefined => {\n\t\tconst value = errors?.[field];\n\t\treturn Array.isArray(value) ? value[0] : value;\n\t};\n\tconst passwordError = getError('password');\n\tconst passwordErrorFn = passwordError ? () => passwordError : undefined;\n\n\tconst topLevelError =\n\t\t(Array.isArray(errors?.general) ? errors.general[0] : errors?.general) ||\n\t\t(Array.isArray(errors?.server) ? errors.server[0] : errors?.server);\n\n\tconst defaultValues = useMemo<PasswordFormValues>(() => ({ password: '' }), []);\n\n\tconst { handleSubmit, control } = useForm<PasswordFormValues>({ defaultValues });\n\n\tconst submit: SubmitHandler<PasswordFormValues> = async (values) => {\n\t\tawait onSubmit({ password: values.password });\n\t};\n\n\tconst disabled = loading;\n\n\treturn (\n\t\t<Stack\n\t\t\trender={<form />}\n\t\t\tgap=\"xl\"\n\t\t\tid={formId}\n\t\t\tonSubmit={handleSubmit(submit)}\n\t\t\tclassName=\"operation-password-form--component\"\n\t\t>\n\t\t\t{Boolean(topLevelError) && (\n\t\t\t\t<Text\n\t\t\t\t\ttype=\"error\"\n\t\t\t\t>\n\t\t\t\t\t{topLevelError}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t<ControlledFormField\n\t\t\t\tname=\"password\"\n\t\t\t\tcontrol={control}\n\t\t\t\terror={passwordErrorFn}\n\t\t\t\tlabel={label}\n\t\t\t\trequired\n\t\t\t>\n\t\t\t\t{(field, _error, invalid) => (\n\t\t\t\t\t<Input\n\t\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t\tvalue={field.value ?? ''}\n\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\tonBlur={field.onBlur}\n\t\t\t\t\t\tname={field.name}\n\t\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</ControlledFormField>\n\t\t</Stack>\n\t);\n}\n\nOperationPasswordForm.displayName = 'OperationPasswordForm';\n"],"mappings":"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"}
1
+ {"version":3,"file":"forms-B9G_xwzi.js","names":["Text","Stack","AlertDescription","AlertAction","Alert","Card","AlertTitle","Input","FormField","defaultControlledFormFieldStrings","interpolateControlledFormFieldString","template","label","ControlledFormField","errorGetter","stringsProp","chromeProps","strings","useStrings","Controller","validationError","fieldState","resolvedError","name","invalid","cn","children","field","isSimpleText","value","FormSection","actions","footer","className","contentClassName","FormActionsBar","trailing","sticky","leading","ErrorSummary","title","description","errors","error","index","action","DirtyStateBanner","SubmitStateButton","props","Button","submitting","disabled","disableWhenPristine","dirty","OperationPasswordForm","passwordError","passwordErrorFn","topLevelError","defaultValues","useMemo","useForm","submit","onSubmit","values","loading","formId","handleSubmit"],"sources":["../src/components/base/forms/controlled-form-field.strings.ts","../src/components/base/forms/controlled-form-field.tsx","../src/components/base/forms/workflow.tsx","../src/components/base/forms/operation-password-form.tsx"],"sourcesContent":["export interface ControlledFormFieldStrings {\n\trequired: string;\n\trequiredWithLabel: string;\n\tinvalid: string;\n}\n\nexport const defaultControlledFormFieldStrings: ControlledFormFieldStrings = {\n\trequired: 'This field is required',\n\trequiredWithLabel: '{{label}} is required',\n\tinvalid: 'Invalid value',\n};\n\nexport function interpolateControlledFormFieldString(template: string, label: string) {\n\treturn template.replace(/\\{\\{\\s*label\\s*\\}\\}/g, label);\n}\n","/**\n * ControlledFormField — react-hook-form integration for the optional-peer-free\n * `FormField` presentation component. Keeping this binding in its own module\n * prevents unrelated display and form-chrome consumers from loading RHF.\n */\nimport type { ComponentProps, ReactNode } from 'react';\nimport {\n\tController,\n\ttype Control,\n\ttype ControllerFieldState,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldValues,\n\ttype RegisterOptions,\n} from 'react-hook-form';\n\nimport { FormField } from './form-field';\nimport {\n\tdefaultControlledFormFieldStrings,\n\tinterpolateControlledFormFieldString,\n\ttype ControlledFormFieldStrings,\n} from './controlled-form-field.strings';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\ntype FieldChromeProps = Omit<\n\tComponentProps<typeof FormField>,\n\t'children' | 'error' | 'htmlFor'\n>;\n\nexport type FormFieldErrorGetter<TName extends string> = (field: TName) => string | undefined;\n\nexport interface ControlledFormFieldProps<\n\tTFieldValues extends FieldValues,\n\tTName extends FieldPath<TFieldValues>,\n> extends FieldChromeProps {\n\t/** Field name in the react-hook-form schema. */\n\tname: TName;\n\t/** The form's `control` object from `useForm`. */\n\tcontrol: Control<TFieldValues>;\n\t/** Validation rules passed to react-hook-form. */\n\trules?: RegisterOptions<TFieldValues, TName>;\n\t/** Validation message, overriding the one derived from form state. */\n\terror?: FormFieldErrorGetter<TName>;\n\t/** Overrides the field's own copy. */\n\tstrings?: StringsProp<ControlledFormFieldStrings>;\n\tchildren: (\n\t\tfield: ControllerRenderProps<TFieldValues, TName>,\n\t\t/** Validation message, overriding the one derived from form state. */\n\t\terror: string | undefined,\n\t\tinvalid: boolean,\n\t\tfieldState: ControllerFieldState,\n\t) => ReactNode;\n}\n\nexport function ControlledFormField<\n\tTFieldValues extends FieldValues,\n\tTName extends FieldPath<TFieldValues>,\n>({\n\tname,\n\tcontrol,\n\trules,\n\terror: errorGetter,\n\tstrings: stringsProp,\n\tchildren,\n\t...chromeProps\n}: ControlledFormFieldProps<TFieldValues, TName>) {\n\tconst strings = useStrings(defaultControlledFormFieldStrings, stringsProp);\n\n\treturn (\n\t\t<Controller\n\t\t\tname={name}\n\t\t\tcontrol={control}\n\t\t\trules={rules}\n\t\t\trender={({ field, fieldState }) => {\n\t\t\t\tconst validationError = fieldState.error?.message\n\t\t\t\t\t|| (fieldState.error\n\t\t\t\t\t\t? fieldState.error.type === 'required'\n\t\t\t\t\t\t\t? typeof chromeProps.label === 'string'\n\t\t\t\t\t\t\t\t? interpolateControlledFormFieldString(strings.requiredWithLabel, chromeProps.label)\n\t\t\t\t\t\t\t\t: strings.required\n\t\t\t\t\t\t\t: strings.invalid\n\t\t\t\t\t\t: undefined);\n\t\t\t\tconst resolvedError = errorGetter?.(name) || validationError || undefined;\n\t\t\t\tconst invalid = Boolean(resolvedError);\n\n\t\t\t\treturn (\n\t\t\t\t\t<FormField\n\t\t\t\t\t\t{...chromeProps}\n\t\t\t\t\t\terror={resolvedError}\n\t\t\t\t\t\thtmlFor={name}\n\t\t\t\t\t\tclassName={cn('controlled-form-field--component', chromeProps.className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children(field, resolvedError, invalid, fieldState)}\n\t\t\t\t\t</FormField>\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nControlledFormField.displayName = 'ControlledFormField';\n\nexport {\n\tdefaultControlledFormFieldStrings,\n\ttype ControlledFormFieldStrings,\n} from './controlled-form-field.strings';\n","/** Form workflow primitives — section chrome, errors, dirty state, and submit state. */\nimport type { ReactNode } from 'react';\n\nimport { Button } from '../buttons';\nimport type { ButtonProps } from '../buttons';\nimport { Card } from '../cards';\nimport { Stack } from '../structure';\nimport type { SmartCardSurface } from '../cards';\nimport { Alert, AlertAction, AlertDescription, AlertTitle } from '../feedback';\nimport type { AlertTone } from '../feedback';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport interface FormSectionProps {\n\t/** Section title. */\n\ttitle?: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\t/** Controls in the section header. */\n\tactions?: ReactNode;\n\tchildren?: ReactNode;\n\t/** Content below the section body. */\n\tfooter?: ReactNode;\n\t/** Outer chrome. Use `flat` when the section already sits inside a card. */\n\tsurface?: SmartCardSurface;\n\tclassName?: string;\n\t/** Merged onto the section body. */\n\tcontentClassName?: string;\n}\n\nexport function FormSection({\n\ttitle,\n\tdescription,\n\tactions,\n\tchildren,\n\tfooter,\n\tsurface = 'card',\n\tclassName,\n\tcontentClassName,\n}: FormSectionProps) {\n\treturn (\n\t\t<Card\n\t\t\tdata-component=\"form-section\"\n\t\t\tdata-slot=\"form-section\"\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\theaderAction={actions}\n\t\t\tfooterSlot={footer}\n\t\t\tsurface={surface}\n\t\t\tclassName={cn('form-section--component', className)}\n\t\t\tcontentClassName={cn('form-section--content grid gap-space-xl', contentClassName)}\n\t\t>\n\t\t\t{children}\n\t\t</Card>\n\t);\n}\n\nexport interface FormActionsBarProps {\n\t/** Action content used when `trailing` is not provided. */\n\tchildren?: ReactNode;\n\t/** Optional status or context shown before the actions. Scalar copy uses secondary Typography. */\n\tleading?: ReactNode;\n\t/** Preferred action slot. When provided, it takes precedence over `children`. */\n\ttrailing?: ReactNode;\n\t/** Keep the bar attached to the bottom of its nearest scrolling ancestor. */\n\tsticky?: boolean;\n\tclassName?: string;\n}\n\n/** Responsive form-footer chrome for status and consumer-owned actions. */\nexport function FormActionsBar({\n\tchildren,\n\tleading,\n\ttrailing,\n\tsticky = false,\n\tclassName,\n}: FormActionsBarProps) {\n\tconst actions = trailing ?? children;\n\n\treturn (\n\t\t/*\n\t\t * Two elements, because the bar has to be measured and stick at the same\n\t\t * time and one element cannot do both. Its stack/row switch depends on its\n\t\t * own width — a form footer is as often in a drawer as at page width — and\n\t\t * an element cannot match its own container query, so the row has to sit\n\t\t * inside the measured box. `sticky` then has to live on the OUTER element:\n\t\t * a sticky child is confined to its parent's box, so a sticky row inside an\n\t\t * auto-height wrapper has nowhere to travel and silently stops sticking.\n\t\t */\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'form-actions-bar--component @container/form-actions-bar',\n\t\t\t\tsticky && 'sticky bottom-0 z-30',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t<div\n\t\t\tdata-component=\"form-actions-bar\"\n\t\t\tdata-slot=\"form-actions-bar\"\n\t\t\t// Opaque, so a sticky bar covers content scrolling under it without a blur.\n\t\t\tclassName=\"form-actions-bar--row border-t border-border bg-background p-surface\"\n\t\t>\n\t\t<div className=\"form-actions-bar--layout flex min-w-0 flex-col gap-space-lg @md/form-actions-bar:flex-row @md/form-actions-bar:items-center @md/form-actions-bar:flex-nowrap\">\n\t\t\t{leading != null && (\n\t\t\t\t<div data-slot=\"form-actions-leading\" className=\"form-actions-bar--leading min-w-0 flex-1\">\n\t\t\t\t\t{isSimpleText(leading) ? (\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\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"form-actions-bar--leading-text\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{leading}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : leading}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{actions != null && (\n\t\t\t\t<Stack\n\t\t\t\t\tdata-slot=\"form-actions-trailing\"\n\t\t\t\t\twrap\n\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\tclassName=\"form-actions-bar--trailing min-w-0 w-full max-w-full shrink-0 @md/form-actions-bar:ml-auto @md/form-actions-bar:w-auto @md/form-actions-bar:shrink\"\n\t\t\t\t>\n\t\t\t\t\t{actions}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</div>\n\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport interface ErrorSummaryProps {\n\t/** Section title. */\n\ttitle: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\t/** Validation messages listed in the error summary. */\n\terrors?: readonly ReactNode[];\n\t/** Control offered alongside the summary. */\n\taction?: ReactNode;\n\tclassName?: string;\n}\n\nexport function ErrorSummary({\n\ttitle,\n\tdescription,\n\terrors = [],\n\taction,\n\tclassName,\n}: ErrorSummaryProps) {\n\treturn (\n\t\t<Alert\n\t\t\tdata-component=\"error-summary\"\n\t\t\tdata-slot=\"error-summary\"\n\t\t\ttone=\"destructive\"\n\t\t\tclassName={cn('error-summary--component', className)}\n\t\t>\n\t\t\t<AlertTitle>{title}</AlertTitle>\n\t\t\t{!!description && <AlertDescription>{description}</AlertDescription>}\n\t\t\t{errors.length > 0 && (\n\t\t\t\t\t// The messages are the summary's content: they keep the description's\n\t\t\t\t\t// size and ink, and the bullets take that ink too.\n\t\t\t\t\t<Stack render={<ul />} gap=\"xs\" data-slot=\"error-summary-list\" className=\"error-summary--list col-start-2 m-0 list-disc ps-space-xl text-sm text-muted-foreground\">\n\t\t\t\t\t{errors.map((error, index) => (\n\t\t\t\t\t\t<li key={index}>\n\t\t\t\t\t\t\t{typeof error === 'string' || typeof error === 'number' || typeof error === 'bigint' ? (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t{error}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) : error}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t)}\n\t\t\t{!!action && <AlertAction>{action}</AlertAction>}\n\t\t</Alert>\n\t);\n}\n\nexport interface DirtyStateBannerProps {\n\t/** Section title. */\n\ttitle: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\t/** Controls in the section header. */\n\tactions?: ReactNode;\n\t/** Semantic tone of the banner. */\n\ttone?: Extract<AlertTone, 'neutral' | 'info' | 'warning'>;\n\tclassName?: string;\n}\n\nexport function DirtyStateBanner({\n\ttitle,\n\tdescription,\n\tactions,\n\ttone = 'warning',\n\tclassName,\n}: DirtyStateBannerProps) {\n\treturn (\n\t\t<Alert\n\t\t\tdata-component=\"dirty-state-banner\"\n\t\t\tdata-slot=\"dirty-state-banner\"\n\t\t\ttone={tone}\n\t\t\tclassName={cn('dirty-state-banner--component', className)}\n\t\t>\n\t\t\t<AlertTitle>{title}</AlertTitle>\n\t\t\t{!!description && (\n\t\t\t\t<AlertDescription>\n\t\t\t\t\t{description}\n\t\t\t\t</AlertDescription>\n\t\t\t)}\n\t\t\t{actions != null && (\n\t\t\t\t<div className=\"dirty-state-banner--actions col-start-2 min-w-0 pt-space-sm\">\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap gap=\"sm\">{actions}</Stack>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Alert>\n\t);\n}\n\nexport interface SubmitStateButtonProps extends Omit<ButtonProps, 'loading'> {\n\t/** Semantic color. Defaults to `primary`: submitting is the form's main command. */\n\ttone?: ButtonProps['tone'];\n\t/** Shows the pending state and blocks repeat submissions. */\n\tsubmitting?: boolean;\n\t/** Whether the form has unsaved changes. */\n\tdirty?: boolean;\n\t/** Disables submit until `dirty` is true, so a clean form cannot be re-saved. */\n\tdisableWhenPristine?: boolean;\n}\n\nexport function SubmitStateButton({\n\tsubmitting = false,\n\tdirty = true,\n\tdisableWhenPristine = false,\n\tdisabled,\n\tchildren,\n\t...props\n}: SubmitStateButtonProps) {\n\treturn (\n\t\t<Button\n\t\t\t// Submitting is the form's main command; props can still choose another tone.\n\t\t\ttone=\"primary\"\n\t\t\t{...props}\n\t\t\tdata-component=\"submit-state-button\"\n\t\t\tdata-slot=\"submit-state-button\"\n\t\t\ttype={props.type ?? 'submit'}\n\t\t\tloading={submitting}\n\t\t\tdisabled={disabled || (disableWhenPristine && !dirty)}\n\t\t\tclassName={cn('submit-state-button--component', props.className)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n}\n","import { useMemo } from 'react';\nimport type { SubmitHandler } from 'react-hook-form';\nimport { useForm } from 'react-hook-form';\n\nimport { ControlledFormField } from './controlled-form-field';\nimport { Input } from '../text-inputs';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\n\nexport type ErrorBag = Record<string, string | string[] | undefined>;\n\nexport interface OperationPasswordFormProps {\n\tformId: string;\n\tonSubmit: (data: { password: string }) => Promise<void>;\n\terrors?: ErrorBag;\n\t/** Shows the pending indicator. */\n\tloading?: boolean;\n\t/** Display label. */\n\tlabel: string;\n}\n\ninterface PasswordFormValues {\n\tpassword: string;\n}\n\nexport function OperationPasswordForm(props: OperationPasswordFormProps) {\n\tconst { formId, onSubmit, errors, loading = false, label } = props;\n\n\tconst getError = (field: keyof PasswordFormValues): string | undefined => {\n\t\tconst value = errors?.[field];\n\t\treturn Array.isArray(value) ? value[0] : value;\n\t};\n\tconst passwordError = getError('password');\n\tconst passwordErrorFn = passwordError ? () => passwordError : undefined;\n\n\tconst topLevelError =\n\t\t(Array.isArray(errors?.general) ? errors.general[0] : errors?.general) ||\n\t\t(Array.isArray(errors?.server) ? errors.server[0] : errors?.server);\n\n\tconst defaultValues = useMemo<PasswordFormValues>(() => ({ password: '' }), []);\n\n\tconst { handleSubmit, control } = useForm<PasswordFormValues>({ defaultValues });\n\n\tconst submit: SubmitHandler<PasswordFormValues> = async (values) => {\n\t\tawait onSubmit({ password: values.password });\n\t};\n\n\tconst disabled = loading;\n\n\treturn (\n\t\t<Stack\n\t\t\trender={<form />}\n\t\t\tgap=\"xl\"\n\t\t\tid={formId}\n\t\t\tonSubmit={handleSubmit(submit)}\n\t\t\tclassName=\"operation-password-form--component\"\n\t\t>\n\t\t\t{Boolean(topLevelError) && (\n\t\t\t\t<Text\n\t\t\t\t\ttype=\"error\"\n\t\t\t\t>\n\t\t\t\t\t{topLevelError}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t<ControlledFormField\n\t\t\t\tname=\"password\"\n\t\t\t\tcontrol={control}\n\t\t\t\terror={passwordErrorFn}\n\t\t\t\tlabel={label}\n\t\t\t\trequired\n\t\t\t>\n\t\t\t\t{(field, _error, invalid) => (\n\t\t\t\t\t<Input\n\t\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t\tvalue={field.value ?? ''}\n\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\tonBlur={field.onBlur}\n\t\t\t\t\t\tname={field.name}\n\t\t\t\t\t\tinvalid={invalid}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</ControlledFormField>\n\t\t</Stack>\n\t);\n}\n\nOperationPasswordForm.displayName = 'OperationPasswordForm';\n"],"mappings":"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"}