themelia-react-ui 2.0.5 → 3.0.0

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 (968) hide show
  1. package/CHANGELOG.md +326 -0
  2. package/MIGRATION.md +858 -0
  3. package/README.md +35 -24
  4. package/dist/{accordion-B9MHG0cT.js → accordion-DNVqwEIC.js} +37 -37
  5. package/dist/accordion-DNVqwEIC.js.map +1 -0
  6. package/dist/action-menu-D5343RwT.js +286 -0
  7. package/dist/action-menu-D5343RwT.js.map +1 -0
  8. package/dist/ai-artifact-otrz9ZwS.js +1214 -0
  9. package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
  10. package/dist/anchored-positioning-1U_eBFNx.js +9 -0
  11. package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
  12. package/dist/app-shell-CPN30Nb1.js +372 -0
  13. package/dist/app-shell-CPN30Nb1.js.map +1 -0
  14. package/dist/{attachment-Dg_69lPS.js → attachment-D2-fpfmv.js} +15 -15
  15. package/dist/{attachment-Dg_69lPS.js.map → attachment-D2-fpfmv.js.map} +1 -1
  16. package/dist/{auth-DTkkshS8.js → auth-g_oUTDDC.js} +236 -243
  17. package/dist/auth-g_oUTDDC.js.map +1 -0
  18. package/dist/{avatar-CeZaFmNH.js → avatar-Ca3Ihrq4.js} +4 -4
  19. package/dist/{avatar-CeZaFmNH.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
  20. package/dist/{badge-xIiV_E7f.js → badge-oGiXblW7.js} +8 -9
  21. package/dist/badge-oGiXblW7.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +2 -2
  29. package/dist/base/cards.js +3 -3
  30. package/dist/base/carousel.js +11 -11
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +1 -1
  33. package/dist/base/chart.js +1 -1
  34. package/dist/base/choice-inputs.js +2 -2
  35. package/dist/base/code-block.js +1 -1
  36. package/dist/base/combobox.js +1 -1
  37. package/dist/base/command.js +1 -1
  38. package/dist/base/copyable.js +1 -1
  39. package/dist/base/date-pickers.js +2 -2
  40. package/dist/base/display.js +7 -7
  41. package/dist/base/feedback.js +4 -4
  42. package/dist/base/forms-numeric.js +2 -2
  43. package/dist/base/forms.js +2 -2
  44. package/dist/base/inline-edit.js +13 -13
  45. package/dist/base/inline-edit.js.map +1 -1
  46. package/dist/base/item.js +1 -1
  47. package/dist/base/media-gallery.js +203 -2
  48. package/dist/base/media-gallery.js.map +1 -0
  49. package/dist/base/metadata-list.js +1 -1
  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 +32 -22
  54. package/dist/base/qr-code.js.map +1 -1
  55. package/dist/base/repeaters.js +208 -198
  56. package/dist/base/repeaters.js.map +1 -1
  57. package/dist/base/sidebar.js +2 -2
  58. package/dist/base/signature-pad.js +14 -14
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +8 -14
  62. package/dist/base/spinner.js.map +1 -1
  63. package/dist/base/structure.js +1 -1
  64. package/dist/base/table.js +1 -1
  65. package/dist/base/text-inputs.js +3 -3
  66. package/dist/base/toaster.js +2 -2
  67. package/dist/base/tree.js +2 -2
  68. package/dist/base/upload-queue.js +303 -2
  69. package/dist/base/upload-queue.js.map +1 -0
  70. package/dist/base/upload.js +3 -4
  71. package/dist/base/value-inputs.js +1 -1
  72. package/dist/{batch-action-bar-Cb8cuvyy.js → batch-action-bar-D6MZQNnC.js} +10 -10
  73. package/dist/{batch-action-bar-Cb8cuvyy.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
  74. package/dist/blocks/admin.js +242 -228
  75. package/dist/blocks/admin.js.map +1 -1
  76. package/dist/blocks/ai.js +398 -354
  77. package/dist/blocks/ai.js.map +1 -1
  78. package/dist/blocks/analytics/charts.js +1022 -0
  79. package/dist/blocks/analytics/charts.js.map +1 -0
  80. package/dist/blocks/analytics/usage-card.js +1 -1
  81. package/dist/blocks/analytics.js +173 -1392
  82. package/dist/blocks/analytics.js.map +1 -1
  83. package/dist/blocks/collaboration.js +1 -1
  84. package/dist/blocks/commerce/receipt.js +1 -1
  85. package/dist/blocks/commerce.js +1533 -1399
  86. package/dist/blocks/commerce.js.map +1 -1
  87. package/dist/blocks/data-display.js +2 -3
  88. package/dist/blocks/onboarding.js +91 -82
  89. package/dist/blocks/onboarding.js.map +1 -1
  90. package/dist/blocks/planning.js +25 -25
  91. package/dist/blocks/planning.js.map +1 -1
  92. package/dist/blocks/timelines.js +2 -2
  93. package/dist/breadcrumbs-CQ9JSlez.js +136 -0
  94. package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
  95. package/dist/{button-S2Cubiiz.js → button-rd6FiHfQ.js} +12 -8
  96. package/dist/button-rd6FiHfQ.js.map +1 -0
  97. package/dist/{buttons-BedGfygC.js → buttons-pZVgPTZn.js} +230 -246
  98. package/dist/buttons-pZVgPTZn.js.map +1 -0
  99. package/dist/{cards-rNX1M4Xn.js → cards-CgWyqvgZ.js} +25 -22
  100. package/dist/{cards-rNX1M4Xn.js.map → cards-CgWyqvgZ.js.map} +1 -1
  101. package/dist/cascader-Cf05pwaq.js +444 -0
  102. package/dist/cascader-Cf05pwaq.js.map +1 -0
  103. package/dist/{chart-Darg_0Kv.js → chart-CygRCyIZ.js} +5 -5
  104. package/dist/{chart-Darg_0Kv.js.map → chart-CygRCyIZ.js.map} +1 -1
  105. package/dist/{checkbox-fflqmODR.js → checkbox-Dy5_XBMZ.js} +4 -4
  106. package/dist/{checkbox-fflqmODR.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
  107. package/dist/{choice-inputs-zUgBZfE4.js → choice-inputs-oJEsrb5Y.js} +195 -184
  108. package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
  109. package/dist/{code-block-BzmM9Eig.js → code-block-BrLD7mCi.js} +44 -60
  110. package/dist/code-block-BrLD7mCi.js.map +1 -0
  111. package/dist/collapsible-CRCCg_bO.js +80 -0
  112. package/dist/collapsible-CRCCg_bO.js.map +1 -0
  113. package/dist/{collection-content-gDh1v6O4.js → collection-content-D7SoDlYd.js} +3 -3
  114. package/dist/{collection-content-gDh1v6O4.js.map → collection-content-D7SoDlYd.js.map} +1 -1
  115. package/dist/combobox-Dl6f6kHz.js +362 -0
  116. package/dist/combobox-Dl6f6kHz.js.map +1 -0
  117. package/dist/combobox-DrDXtSSt.js +929 -0
  118. package/dist/combobox-DrDXtSSt.js.map +1 -0
  119. package/dist/command-CjZ2VzKC.js +432 -0
  120. package/dist/command-CjZ2VzKC.js.map +1 -0
  121. package/dist/comments-C2MZyRmh.js +1214 -0
  122. package/dist/comments-C2MZyRmh.js.map +1 -0
  123. package/dist/components/base/accordion/accordion.d.ts +11 -3
  124. package/dist/components/base/action-menu/action-menu.d.ts +11 -3
  125. package/dist/components/base/buttons/button.d.ts +2 -2
  126. package/dist/components/base/buttons/index.d.ts +1 -1
  127. package/dist/components/base/buttons/loader-button.d.ts +6 -15
  128. package/dist/components/base/cards/index.d.ts +1 -1
  129. package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
  130. package/dist/components/base/cards/smart-card.d.ts +0 -2
  131. package/dist/components/base/cards/smart-card.types.d.ts +12 -10
  132. package/dist/components/base/cascader/cascader.d.ts +8 -2
  133. package/dist/components/base/cascader/cascader.types.d.ts +24 -2
  134. package/dist/components/base/cascader/index.d.ts +1 -1
  135. package/dist/components/base/choice-inputs/choice-types.d.ts +4 -0
  136. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
  137. package/dist/components/base/choice-inputs/switch.d.ts +1 -1
  138. package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
  139. package/dist/components/base/combobox/combobox-field.d.ts +2 -2
  140. package/dist/components/base/command/command.d.ts +1 -1
  141. package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
  142. package/dist/components/base/date-pickers/datepicker.types.d.ts +11 -7
  143. package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
  144. package/dist/components/base/display/dialog.d.ts +3 -9
  145. package/dist/components/base/display/index.d.ts +2 -3
  146. package/dist/components/base/display/separator.d.ts +1 -1
  147. package/dist/components/base/feedback/alert.d.ts +2 -1
  148. package/dist/components/base/feedback/empty.d.ts +10 -2
  149. package/dist/components/base/feedback/state-display.d.ts +5 -1
  150. package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
  151. package/dist/components/base/forms/form-field.d.ts +7 -2
  152. package/dist/components/base/forms/workflow.d.ts +2 -2
  153. package/dist/components/base/forms-numeric/coordinates-input.d.ts +4 -1
  154. package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
  155. package/dist/components/base/forms-numeric/dimensions-input.d.ts +13 -18
  156. package/dist/components/base/forms-numeric/index.d.ts +3 -3
  157. package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
  158. package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
  159. package/dist/components/base/item/item.types.d.ts +6 -2
  160. package/dist/components/base/metadata-list/index.d.ts +1 -3
  161. package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
  162. package/dist/components/base/navigation/index.d.ts +2 -2
  163. package/dist/components/base/navigation/language-switcher.d.ts +17 -8
  164. package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
  165. package/dist/components/base/navigation/page-header/index.d.ts +1 -1
  166. package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
  167. package/dist/components/base/navigation/pagination.d.ts +5 -5
  168. package/dist/components/base/popover/popover.recipes.d.ts +0 -1
  169. package/dist/components/base/qr-code/qr-code.d.ts +4 -0
  170. package/dist/components/base/repeaters/index.d.ts +1 -1
  171. package/dist/components/base/repeaters/key-value-editor.d.ts +6 -1
  172. package/dist/components/base/sheet/sheet.d.ts +6 -15
  173. package/dist/components/base/sidebar/index.d.ts +1 -6
  174. package/dist/components/base/sidebar/sidebar.d.ts +40 -10
  175. package/dist/components/base/skeleton/skeleton.d.ts +1 -1
  176. package/dist/components/base/structure/structure.types.d.ts +11 -2
  177. package/dist/components/base/text-inputs/index.d.ts +1 -1
  178. package/dist/components/base/tree/index.d.ts +1 -0
  179. package/dist/components/base/tree/tree.d.ts +2 -2
  180. package/dist/components/base/tree/tree.types.d.ts +7 -1
  181. package/dist/components/base/upload/avatar-upload.d.ts +2 -1
  182. package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
  183. package/dist/components/base/upload/image-upload.d.ts +4 -1
  184. package/dist/components/base/upload/index.d.ts +3 -9
  185. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
  186. package/dist/components/base/value-inputs/slider.d.ts +5 -2
  187. package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
  188. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
  189. package/dist/components/blocks/admin/index.d.ts +1 -1
  190. package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
  191. package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
  192. package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
  193. package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
  194. package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
  195. package/dist/components/blocks/ai/ai-citation/types.d.ts +8 -0
  196. package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
  197. package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
  198. package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
  199. package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
  200. package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
  201. package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
  202. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
  203. package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
  204. package/dist/components/blocks/ai/ai-sources/types.d.ts +10 -2
  205. package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
  206. package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
  207. package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
  208. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +8 -0
  209. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  210. package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
  211. package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
  212. package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
  213. package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
  214. package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
  215. package/dist/components/blocks/analytics/index.d.ts +17 -24
  216. package/dist/components/blocks/analytics/metric/metric.d.ts +7 -3
  217. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
  218. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
  219. package/dist/components/blocks/analytics/types.d.ts +13 -4
  220. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  221. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  222. package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
  223. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
  224. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
  225. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
  226. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  227. package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
  228. package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
  229. package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
  230. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
  231. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  232. package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
  233. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  234. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
  235. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
  236. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
  237. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
  238. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
  239. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
  240. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
  241. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
  242. package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
  243. package/dist/components/blocks/commerce/index.d.ts +8 -8
  244. package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
  245. package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
  246. package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
  247. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
  248. package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
  249. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
  250. package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
  251. package/dist/components/blocks/commerce/order-status/types.d.ts +12 -8
  252. package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
  253. package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
  254. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  255. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
  256. package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
  257. package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
  258. package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
  259. package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
  260. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  261. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
  262. package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
  263. package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
  264. package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
  265. package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
  266. package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
  267. package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
  268. package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
  269. package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
  270. package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
  271. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
  272. package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
  273. package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
  274. package/dist/components/blocks/content-block-hooks.d.ts +22 -0
  275. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
  276. package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
  277. package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
  278. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
  279. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
  280. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
  281. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
  282. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
  283. package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
  284. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +10 -3
  285. package/dist/components/blocks/data-display/index.d.ts +0 -1
  286. package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
  287. package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
  288. package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
  289. package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
  290. package/dist/components/blocks/timelines/index.d.ts +2 -2
  291. package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
  292. package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
  293. package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
  294. package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
  295. package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
  296. package/dist/components/features/activities/activities.strings.d.ts +5 -3
  297. package/dist/components/features/activities/activities.types.d.ts +46 -22
  298. package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
  299. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
  300. package/dist/components/features/activities/index.d.ts +1 -1
  301. package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
  302. package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
  303. package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
  304. package/dist/components/features/activities/relative-time.d.ts +18 -0
  305. package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
  306. package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
  307. package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
  308. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
  309. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
  310. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
  311. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
  312. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
  313. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  314. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +20 -4
  315. package/dist/components/features/appointment-calendar/index.d.ts +1 -1
  316. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
  317. package/dist/components/features/async-preview/async-preview.d.ts +2 -2
  318. package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
  319. package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
  320. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  321. package/dist/components/features/combobox/combobox.d.ts +12 -3
  322. package/dist/components/features/combobox/components/error-message.d.ts +3 -1
  323. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +4 -3
  324. package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
  325. package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
  326. package/dist/components/features/combobox/index.d.ts +1 -1
  327. package/dist/components/features/combobox/types.d.ts +68 -37
  328. package/dist/components/features/comments/comments.strings.d.ts +6 -5
  329. package/dist/components/features/comments/comments.types.d.ts +40 -26
  330. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
  331. package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
  332. package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
  333. package/dist/components/features/data-view/data-view.types.d.ts +15 -2
  334. package/dist/components/features/email-composer/email-html.d.ts +5 -0
  335. package/dist/components/features/email-composer/http.d.ts +2 -0
  336. package/dist/components/features/email-composer/strings.d.ts +17 -2
  337. package/dist/components/features/email-composer/types.d.ts +19 -2
  338. package/dist/components/features/email-composer/use-composer.d.ts +2 -78
  339. package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
  340. package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
  341. package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
  342. package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
  343. package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
  344. package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
  345. package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
  346. package/dist/components/features/filters/facets/range-facet.d.ts +24 -7
  347. package/dist/components/features/filters/filter-context.d.ts +9 -0
  348. package/dist/components/features/filters/filters.strings.d.ts +36 -3
  349. package/dist/components/features/filters/filters.types.d.ts +75 -8
  350. package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
  351. package/dist/components/features/filters/index.d.ts +2 -2
  352. package/dist/components/features/filters/operator-options.d.ts +25 -2
  353. package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
  354. package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
  355. package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
  356. package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
  357. package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
  358. package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
  359. package/dist/components/features/filters/partials/filter-popover-content.d.ts +4 -2
  360. package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
  361. package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
  362. package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
  363. package/dist/components/features/filters/utils/filter-utils.d.ts +34 -5
  364. package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
  365. package/dist/components/features/global-search/global-search.d.ts +7 -1
  366. package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
  367. package/dist/components/features/global-search/global-search.types.d.ts +30 -6
  368. package/dist/components/features/global-search/index.d.ts +1 -1
  369. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
  370. package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
  371. package/dist/components/features/kanban/index.d.ts +2 -2
  372. package/dist/components/features/kanban/kanban-context.d.ts +4 -0
  373. package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
  374. package/dist/components/features/kanban/kanban.d.ts +10 -1
  375. package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
  376. package/dist/components/features/kanban/kanban.types.d.ts +26 -0
  377. package/dist/components/features/map/map.d.ts +4 -0
  378. package/dist/components/features/map/place-autocomplete.d.ts +10 -1
  379. package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
  380. package/dist/components/features/media-library/media-library.d.ts +1 -1
  381. package/dist/components/features/media-library/media-library.strings.d.ts +39 -3
  382. package/dist/components/features/media-library/media-library.types.d.ts +82 -9
  383. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  384. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
  385. package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
  386. package/dist/components/features/mentions/index.d.ts +1 -1
  387. package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
  388. package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
  389. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +12 -1
  390. package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
  391. package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
  392. package/dist/components/features/mentions/utils/index.d.ts +0 -1
  393. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  394. package/dist/components/features/overlays/dialog.d.ts +1 -1
  395. package/dist/components/features/overlays/drawer.d.ts +1 -1
  396. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
  397. package/dist/components/features/overlays/index.d.ts +2 -2
  398. package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
  399. package/dist/components/features/overlays/overlays.types.d.ts +27 -10
  400. package/dist/components/features/products/components/index.d.ts +0 -10
  401. package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
  402. package/dist/components/features/products/components/product-details-card.d.ts +1 -1
  403. package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
  404. package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
  405. package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
  406. package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
  407. package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
  408. package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
  409. package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
  410. package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
  411. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  412. package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
  413. package/dist/components/features/products/partials/product-surface.d.ts +15 -0
  414. package/dist/components/features/products/products.strings.d.ts +8 -0
  415. package/dist/components/features/products/products.types.d.ts +26 -8
  416. package/dist/components/features/questionnaire/questionnaire.types.d.ts +7 -2
  417. package/dist/components/features/resource/index.d.ts +2 -3
  418. package/dist/components/features/resource/resource.d.ts +2 -10
  419. package/dist/components/features/resource/resource.types.d.ts +7 -147
  420. package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
  421. package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
  422. package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
  423. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
  424. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
  425. package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
  426. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
  427. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
  428. package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
  429. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
  430. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +5 -4
  431. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  432. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +30 -4
  433. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +10 -1
  434. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
  435. package/dist/components/features/schema-form/schema-form.d.ts +1 -1
  436. package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
  437. package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
  438. package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
  439. package/dist/components/features/suggestions/suggestions.types.d.ts +13 -5
  440. package/dist/components/features/table/data-table.d.ts +1 -1
  441. package/dist/components/features/table/filter-bar.d.ts +1 -1
  442. package/dist/components/features/table/index.d.ts +1 -0
  443. package/dist/components/features/table/pagination.d.ts +1 -1
  444. package/dist/components/features/table/partials/cell-value.d.ts +1 -1
  445. package/dist/components/features/table/table-body.d.ts +1 -1
  446. package/dist/components/features/table/table-header.d.ts +1 -1
  447. package/dist/components/features/table/table-helpers.d.ts +37 -12
  448. package/dist/components/features/table/table-region.recipes.d.ts +11 -0
  449. package/dist/components/features/table/table-toolbar.d.ts +1 -1
  450. package/dist/components/features/table/table.strings.d.ts +4 -0
  451. package/dist/components/features/table/table.types.d.ts +91 -49
  452. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
  453. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
  454. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
  455. package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
  456. package/dist/components/layout/app-shell/index.d.ts +2 -2
  457. package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
  458. package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
  459. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  460. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  461. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  462. package/dist/components/layout/auth/auth-shell.d.ts +1 -1
  463. package/dist/components/layout/auth/auth.types.d.ts +0 -5
  464. package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
  465. package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
  466. package/dist/components/layout/header/header.types.d.ts +19 -8
  467. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
  468. package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
  469. package/dist/components/layout/header/partials/header-search.d.ts +1 -1
  470. package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
  471. package/dist/components/layout/layout.types.d.ts +6 -4
  472. package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
  473. package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
  474. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
  475. package/dist/components/layout/navigation/side-nav.d.ts +3 -2
  476. package/dist/components/layout/normalize-layout-path.d.ts +1 -0
  477. package/dist/components/layout/page/index.d.ts +2 -3
  478. package/dist/components/layout/page/page.strings.d.ts +12 -0
  479. package/dist/components/layout/page/page.types.d.ts +7 -110
  480. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  481. package/dist/components/layout/settings/index.d.ts +1 -1
  482. package/dist/components/layout/settings/settings.d.ts +4 -6
  483. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  484. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  485. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
  486. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  487. package/dist/components/layout/sidebar/index.d.ts +1 -1
  488. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +17 -7
  489. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -0
  490. package/dist/components/layout/sidebar/sidebar.types.d.ts +12 -12
  491. package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
  492. package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
  493. package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
  494. package/dist/components/primitives/date.d.ts +22 -3
  495. package/dist/components/primitives/file-size.d.ts +8 -2
  496. package/dist/components/primitives/index.d.ts +1 -1
  497. package/dist/components/primitives/initials.d.ts +3 -1
  498. package/dist/components/primitives/link.d.ts +11 -3
  499. package/dist/components/primitives/money.d.ts +2 -2
  500. package/dist/components/primitives/number.d.ts +3 -2
  501. package/dist/components/typography/heading.d.ts +9 -3
  502. package/dist/components/typography/index.d.ts +1 -1
  503. package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
  504. package/dist/components/typography/text-link.d.ts +10 -3
  505. package/dist/components/ui/badge.d.ts +2 -4
  506. package/dist/components/ui/breadcrumb.d.ts +2 -3
  507. package/dist/components/ui/button.d.ts +8 -2
  508. package/dist/components/ui/collapsible.d.ts +1 -4
  509. package/dist/components/ui/command.d.ts +20 -18
  510. package/dist/components/ui/dialog.d.ts +3 -9
  511. package/dist/components/ui/empty.d.ts +2 -2
  512. package/dist/components/ui/input-group.d.ts +3 -3
  513. package/dist/components/ui/item.d.ts +3 -3
  514. package/dist/components/ui/popover.d.ts +3 -7
  515. package/dist/components/ui/sheet.d.ts +4 -12
  516. package/dist/components/ui/sidebar-state.d.ts +6 -1
  517. package/dist/components/ui/sidebar.d.ts +7 -4
  518. package/dist/components/ui/tabs.d.ts +2 -2
  519. package/dist/components/ui/toggle-group.d.ts +3 -3
  520. package/dist/components/ui/toggle.d.ts +2 -2
  521. package/dist/components/ui/tooltip.d.ts +1 -3
  522. package/dist/{containers-CIxwbZt5.js → containers-BdfLTP4w.js} +37 -32
  523. package/dist/containers-BdfLTP4w.js.map +1 -0
  524. package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
  525. package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
  526. package/dist/{copyable-DIznBqiT.js → copyable-Bmr14W0d.js} +6 -6
  527. package/dist/{copyable-DIznBqiT.js.map → copyable-Bmr14W0d.js.map} +1 -1
  528. package/dist/{data-display-BdgCAw8T.js → data-display-CWe9SOYh.js} +264 -250
  529. package/dist/data-display-CWe9SOYh.js.map +1 -0
  530. package/dist/date-3qsCE1ID.js +209 -0
  531. package/dist/date-3qsCE1ID.js.map +1 -0
  532. package/dist/date-picker-D1keJQIG.js +1617 -0
  533. package/dist/date-picker-D1keJQIG.js.map +1 -0
  534. package/dist/date-pickers-D8aJoeHc.js +185 -0
  535. package/dist/date-pickers-D8aJoeHc.js.map +1 -0
  536. package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
  537. package/dist/{display-KsZLw9Ov.js → display-VlmP1I0i.js} +23 -46
  538. package/dist/display-VlmP1I0i.js.map +1 -0
  539. package/dist/{dropdown-menu-CLs8Lihj.js → dropdown-menu-B8hjvbkS.js} +9 -9
  540. package/dist/{dropdown-menu-CLs8Lihj.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
  541. package/dist/dropzone-CHBNK3de.js +116 -0
  542. package/dist/dropzone-CHBNK3de.js.map +1 -0
  543. package/dist/features/activities.js +767 -700
  544. package/dist/features/activities.js.map +1 -1
  545. package/dist/features/ai-chat.js +280 -235
  546. package/dist/features/ai-chat.js.map +1 -1
  547. package/dist/features/appointment-calendar.js +430 -334
  548. package/dist/features/appointment-calendar.js.map +1 -1
  549. package/dist/features/async-preview.js +351 -265
  550. package/dist/features/async-preview.js.map +1 -1
  551. package/dist/features/combobox.js +2 -2
  552. package/dist/features/comments.js +1 -1
  553. package/dist/features/data-view.js +212 -151
  554. package/dist/features/data-view.js.map +1 -1
  555. package/dist/features/email-composer/engine.js +1 -1
  556. package/dist/features/email-composer.js +347 -313
  557. package/dist/features/email-composer.js.map +1 -1
  558. package/dist/features/event-calendar.js +501 -348
  559. package/dist/features/event-calendar.js.map +1 -1
  560. package/dist/features/filters.js +2 -2
  561. package/dist/features/global-search.js +250 -210
  562. package/dist/features/global-search.js.map +1 -1
  563. package/dist/features/kanban.js +280 -210
  564. package/dist/features/kanban.js.map +1 -1
  565. package/dist/features/map/style.css +15 -0
  566. package/dist/features/map.js +435 -404
  567. package/dist/features/map.js.map +1 -1
  568. package/dist/features/media-library.js +1745 -1195
  569. package/dist/features/media-library.js.map +1 -1
  570. package/dist/features/mentions.js +2 -2
  571. package/dist/features/overlays.js +2 -2
  572. package/dist/features/products.js +1862 -1759
  573. package/dist/features/products.js.map +1 -1
  574. package/dist/features/questionnaire.js +188 -168
  575. package/dist/features/questionnaire.js.map +1 -1
  576. package/dist/features/resource-assignment.js +223 -191
  577. package/dist/features/resource-assignment.js.map +1 -1
  578. package/dist/features/resource.js +55 -217
  579. package/dist/features/resource.js.map +1 -1
  580. package/dist/features/rich-text-editor.js +28 -19
  581. package/dist/features/rich-text-editor.js.map +1 -1
  582. package/dist/features/schema-form.js +380 -287
  583. package/dist/features/schema-form.js.map +1 -1
  584. package/dist/features/suggestions.js +90 -74
  585. package/dist/features/suggestions.js.map +1 -1
  586. package/dist/features/table.js +2 -2
  587. package/dist/features/theme-tweaker.js +718 -627
  588. package/dist/features/theme-tweaker.js.map +1 -1
  589. package/dist/feedback-DmqmXKLn.js +254 -0
  590. package/dist/feedback-DmqmXKLn.js.map +1 -0
  591. package/dist/{field-affordance-recipes-DWcNcOjh.js → field-affordance-recipes-DfbMadot.js} +13 -9
  592. package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
  593. package/dist/field-control-attributes-B6i335wr.js +18 -0
  594. package/dist/field-control-attributes-B6i335wr.js.map +1 -0
  595. package/dist/field-state-recipes-EtCxpEy3.js +18 -0
  596. package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
  597. package/dist/filters-BviMRMLS.js +2692 -0
  598. package/dist/filters-BviMRMLS.js.map +1 -0
  599. package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
  600. package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
  601. package/dist/form-field-BdfCwSoQ.js +74 -0
  602. package/dist/form-field-BdfCwSoQ.js.map +1 -0
  603. package/dist/{form-sizing-Bs2qFUeE.js → form-sizing-DE_dZw32.js} +3 -3
  604. package/dist/{form-sizing-Bs2qFUeE.js.map → form-sizing-DE_dZw32.js.map} +1 -1
  605. package/dist/{forms-C0RGnJTe.js → forms-B8DzJnBN.js} +35 -35
  606. package/dist/forms-B8DzJnBN.js.map +1 -0
  607. package/dist/forms-numeric-DOBswjKj.js +992 -0
  608. package/dist/forms-numeric-DOBswjKj.js.map +1 -0
  609. package/dist/{header-DMMxG__r.js → header-Cq3G0ZRP.js} +163 -158
  610. package/dist/header-Cq3G0ZRP.js.map +1 -0
  611. package/dist/hooks/use-files.d.ts +2 -0
  612. package/dist/{hooks-DB6CJ4MR.js → hooks-DHfeSMAO.js} +34 -14
  613. package/dist/hooks-DHfeSMAO.js.map +1 -0
  614. package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
  615. package/dist/http-Cu-GPpss.js.map +1 -0
  616. package/dist/{icon-badge-DZF-YjQp.js → icon-badge-B0Kq7wom.js} +3 -3
  617. package/dist/{icon-badge-DZF-YjQp.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
  618. package/dist/index.js +6 -6
  619. package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
  620. package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
  621. package/dist/{input-DMBwAZmr.js → input-2YrgTUrz.js} +3 -3
  622. package/dist/{input-DMBwAZmr.js.map → input-2YrgTUrz.js.map} +1 -1
  623. package/dist/{input-CvyDQlY7.js → input-DfJyrjoR.js} +7 -7
  624. package/dist/{input-CvyDQlY7.js.map → input-DfJyrjoR.js.map} +1 -1
  625. package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-DmuS1ase.js} +2 -2
  626. package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
  627. package/dist/item-GJ9mvCcg.js +279 -0
  628. package/dist/item-GJ9mvCcg.js.map +1 -0
  629. package/dist/layout/app-shell.js +1 -1
  630. package/dist/layout/auth.js +1 -1
  631. package/dist/layout/containers.js +1 -1
  632. package/dist/layout/header.js +1 -1
  633. package/dist/layout/hooks.js +1 -1
  634. package/dist/layout/navigation.js +1 -1
  635. package/dist/layout/page.js +2 -2
  636. package/dist/layout/settings.js +2 -2
  637. package/dist/layout/sidebar.js +3 -3
  638. package/dist/layout/workspace.js +1 -1
  639. package/dist/layout.js +12 -12
  640. package/dist/layout.types-DbtnyAtd.js +33 -0
  641. package/dist/layout.types-DbtnyAtd.js.map +1 -0
  642. package/dist/lib/anchored-positioning.d.ts +11 -0
  643. package/dist/lib/field-affordance-recipes.d.ts +10 -0
  644. package/dist/lib/field-control-attributes.d.ts +11 -0
  645. package/dist/lib/field-state-recipes.d.ts +8 -0
  646. package/dist/lib/focus-recipes.d.ts +7 -0
  647. package/dist/lib/format.d.ts +26 -0
  648. package/dist/lib/money-format.d.ts +6 -0
  649. package/dist/lib/motion-recipes.d.ts +6 -0
  650. package/dist/lib/surface-recipes.d.ts +33 -3
  651. package/dist/lib/theme-scope.d.ts +17 -1
  652. package/dist/lib/token-merge.generated.d.ts +19 -25
  653. package/dist/lib/ui-provider/index.d.ts +1 -1
  654. package/dist/lib/ui-provider/types.d.ts +5 -0
  655. package/dist/lib/use-controllable-state.d.ts +16 -0
  656. package/dist/lib/use-copy-feedback.d.ts +15 -0
  657. package/dist/lib/utils.js +1 -1
  658. package/dist/lib/variant-props.d.ts +9 -0
  659. package/dist/main-landmark-context-BAsyqp2I.js +11 -0
  660. package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
  661. package/dist/mentions-zz0ewNIq.js +670 -0
  662. package/dist/mentions-zz0ewNIq.js.map +1 -0
  663. package/dist/message-BiiVrRrm.js +138 -0
  664. package/dist/message-BiiVrRrm.js.map +1 -0
  665. package/dist/{metadata-list-C3MkU-Om.js → metadata-list-G85roWjS.js} +13 -12
  666. package/dist/metadata-list-G85roWjS.js.map +1 -0
  667. package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
  668. package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
  669. package/dist/navigation-C0Be5C3i.js +304 -0
  670. package/dist/navigation-C0Be5C3i.js.map +1 -0
  671. package/dist/navigation-CmqaQR_G.js +257 -0
  672. package/dist/navigation-CmqaQR_G.js.map +1 -0
  673. package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
  674. package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
  675. package/dist/number-NFWKIoiK.js +340 -0
  676. package/dist/number-NFWKIoiK.js.map +1 -0
  677. package/dist/{overflow-tab-bar-IVFVQFV6.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
  678. package/dist/{overflow-tab-bar-IVFVQFV6.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
  679. package/dist/{overlays-BSgCtM2v.js → overlays-D-gAIfPF.js} +369 -364
  680. package/dist/overlays-D-gAIfPF.js.map +1 -0
  681. package/dist/page-D4pQhgSq.js +216 -0
  682. package/dist/page-D4pQhgSq.js.map +1 -0
  683. package/dist/{page-header-commands-7P3sfE9u.js → page-header-commands-elelNOfd.js} +29 -29
  684. package/dist/{page-header-commands-7P3sfE9u.js.map → page-header-commands-elelNOfd.js.map} +1 -1
  685. package/dist/{pagination-CgCjElfu.js → pagination-BuSWw1US.js} +22 -23
  686. package/dist/pagination-BuSWw1US.js.map +1 -0
  687. package/dist/popover-BpMxbqEK.js +205 -0
  688. package/dist/popover-BpMxbqEK.js.map +1 -0
  689. package/dist/{popover-menu-DlnQ2zlR.js → popover-menu-CO-_iiuz.js} +7 -7
  690. package/dist/{popover-menu-DlnQ2zlR.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
  691. package/dist/{popover.recipes-DdiEp0rd.js → popover.recipes-BqkdvlZn.js} +3 -4
  692. package/dist/{popover.recipes-DdiEp0rd.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
  693. package/dist/{portal-recipes-BpsV_iRw.js → portal-recipes-BPeS4rGB.js} +2 -2
  694. package/dist/{portal-recipes-BpsV_iRw.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
  695. package/dist/primitives-BlC1lXBr.js +447 -0
  696. package/dist/primitives-BlC1lXBr.js.map +1 -0
  697. package/dist/primitives.js +4 -4
  698. package/dist/{progress-BJhQP9WX.js → progress-RARK8AjB.js} +5 -5
  699. package/dist/{progress-BJhQP9WX.js.map → progress-RARK8AjB.js.map} +1 -1
  700. package/dist/receipt-CUf2Vegp.js +114 -0
  701. package/dist/receipt-CUf2Vegp.js.map +1 -0
  702. package/dist/rich-text-Cypm9__d.js +44 -0
  703. package/dist/rich-text-Cypm9__d.js.map +1 -0
  704. package/dist/rich-text-editor-Z6cQepsA.js +919 -0
  705. package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
  706. package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
  707. package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
  708. package/dist/rich-text-tree-DdKHIJx4.js +154 -0
  709. package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
  710. package/dist/{scroll-area-B0dB2cBi.js → scroll-area-B9HKbji0.js} +3 -3
  711. package/dist/{scroll-area-B0dB2cBi.js.map → scroll-area-B9HKbji0.js.map} +1 -1
  712. package/dist/{separator-Ct_WSWTJ.js → separator-DaDe26sf.js} +3 -3
  713. package/dist/separator-DaDe26sf.js.map +1 -0
  714. package/dist/{separator-Bb17I4pu.js → separator-KGsNXt2J.js} +2 -2
  715. package/dist/{separator-Bb17I4pu.js.map → separator-KGsNXt2J.js.map} +1 -1
  716. package/dist/services/actions/action-adapters.d.ts +5 -2
  717. package/dist/services/actions/index.d.ts +1 -1
  718. package/dist/services/actions.js +2 -2
  719. package/dist/services/actions.js.map +1 -1
  720. package/dist/settings-D5j_RJvT.js +160 -0
  721. package/dist/settings-D5j_RJvT.js.map +1 -0
  722. package/dist/sheet-B6j_BE9O.js +241 -0
  723. package/dist/sheet-B6j_BE9O.js.map +1 -0
  724. package/dist/{sidebar-f9gRWXIR.js → sidebar-C-iQ_TJP.js} +379 -350
  725. package/dist/sidebar-C-iQ_TJP.js.map +1 -0
  726. package/dist/sidebar-D5VO2W8S.js +715 -0
  727. package/dist/sidebar-D5VO2W8S.js.map +1 -0
  728. package/dist/{skeleton-BapcJd9C.js → skeleton-Cab_KgVo.js} +13 -13
  729. package/dist/skeleton-Cab_KgVo.js.map +1 -0
  730. package/dist/{smart-card-CW0hjetE.js → smart-card-C59z6KFO.js} +217 -210
  731. package/dist/smart-card-C59z6KFO.js.map +1 -0
  732. package/dist/{structure-DuxKl954.js → structure-DElaQwwN.js} +2 -2
  733. package/dist/{structure-DuxKl954.js.map → structure-DElaQwwN.js.map} +1 -1
  734. package/dist/style.css +1 -1
  735. package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-DV6rrOFq.js} +11 -3
  736. package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
  737. package/dist/table-CSRUgpdK.js +180 -0
  738. package/dist/table-CSRUgpdK.js.map +1 -0
  739. package/dist/table-DdXDBsR_.js +1657 -0
  740. package/dist/table-DdXDBsR_.js.map +1 -0
  741. package/dist/tabs-WnHfV2pM.js +192 -0
  742. package/dist/tabs-WnHfV2pM.js.map +1 -0
  743. package/dist/{text-inputs-B1culiSK.js → text-inputs-ljyBYaCd.js} +112 -112
  744. package/dist/text-inputs-ljyBYaCd.js.map +1 -0
  745. package/dist/theme.css +21 -5
  746. package/dist/timelines-mOmS9Eh3.js +479 -0
  747. package/dist/timelines-mOmS9Eh3.js.map +1 -0
  748. package/dist/tooltip-yjX-Uv-p.js +112 -0
  749. package/dist/tooltip-yjX-Uv-p.js.map +1 -0
  750. package/dist/{tree-CzUJHnFs.js → tree-YpkxUG2Z.js} +80 -72
  751. package/dist/tree-YpkxUG2Z.js.map +1 -0
  752. package/dist/typography/rich-text.js +1 -1
  753. package/dist/{typography-BQnine1k.js → typography-C0dELqYV.js} +46 -40
  754. package/dist/typography-C0dELqYV.js.map +1 -0
  755. package/dist/typography.js +1 -1
  756. package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
  757. package/dist/ui-provider-Bu1S-o96.js.map +1 -0
  758. package/dist/ui-provider.js +2 -2
  759. package/dist/upload-DMuMYJFT.js +875 -0
  760. package/dist/upload-DMuMYJFT.js.map +1 -0
  761. package/dist/{usage-card-BeSLY0i0.js → usage-card-DDPki5P1.js} +57 -54
  762. package/dist/usage-card-DDPki5P1.js.map +1 -0
  763. package/dist/use-controllable-state-BlP8SyBI.js +13 -0
  764. package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
  765. package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
  766. package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
  767. package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
  768. package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
  769. package/dist/{utils-B6kKb8jB.js → utils-BVbAG2J6.js} +128 -112
  770. package/dist/utils-BVbAG2J6.js.map +1 -0
  771. package/dist/value-inputs-h5MwjGCo.js +982 -0
  772. package/dist/value-inputs-h5MwjGCo.js.map +1 -0
  773. package/dist/value-typography-D15uwfj-.js +154 -0
  774. package/dist/value-typography-D15uwfj-.js.map +1 -0
  775. package/dist/workspace-DIryPqBt.js +400 -0
  776. package/dist/workspace-DIryPqBt.js.map +1 -0
  777. package/docs/consumer-skill/SKILL.md +7 -0
  778. package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
  779. package/docs/consumer-skill/examples/analytics.tsx +1 -1
  780. package/docs/consumer-skill/examples/app-layout.tsx +3 -3
  781. package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
  782. package/docs/consumer-skill/examples/detail.tsx +3 -2
  783. package/docs/consumer-skill/examples/edit.tsx +3 -3
  784. package/docs/consumer-skill/examples/email-composer.tsx +1 -1
  785. package/docs/consumer-skill/examples/index-table.tsx +2 -2
  786. package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
  787. package/docs/consumer-skill/references/agents-md.md +27 -23
  788. package/docs/consumer-skill/references/analytics.md +33 -4
  789. package/docs/consumer-skill/references/building-views.md +213 -0
  790. package/docs/consumer-skill/references/catalogue.md +617 -0
  791. package/docs/consumer-skill/references/component-contracts.json +25852 -32067
  792. package/docs/consumer-skill/references/composition.md +42 -21
  793. package/docs/consumer-skill/references/design-contract.md +1 -0
  794. package/docs/consumer-skill/references/discovery.md +8 -5
  795. package/docs/consumer-skill/references/installation.md +59 -10
  796. package/docs/consumer-skill/references/integration.md +28 -5
  797. package/docs/consumer-skill/references/product-composition.md +2 -2
  798. package/docs/consumer-skill/references/public-api.json +726 -641
  799. package/docs/consumer-skill/references/review.md +57 -15
  800. package/docs/consumer-skill/references/rhf-workflows.md +72 -0
  801. package/docs/consumer-skill/references/screen-archetypes.md +2 -2
  802. package/docs/consumer-skill/references/theming.md +8 -3
  803. package/docs/consumer-skill/references/tokens.json +4 -4
  804. package/docs/consumer-skill/references/workflows.md +7 -7
  805. package/docs/consumer-skill/scripts/composition-policy.mjs +178 -44
  806. package/docs/consumer-skill/scripts/composition.mjs +4 -1
  807. package/docs/consumer-skill/scripts/discovery.mjs +3 -1
  808. package/docs/consumer-skill/scripts/setup-skills.mjs +74 -10
  809. package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
  810. package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
  811. package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
  812. package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
  813. package/package.json +12 -13
  814. package/templates/README.md +3 -2
  815. package/templates/admin-shell-template.tsx +50 -11
  816. package/templates/analytics-operations-template.tsx +20 -24
  817. package/templates/customers-template.tsx +30 -25
  818. package/templates/index.ts +2 -8
  819. package/templates/orders-template.tsx +28 -24
  820. package/templates/products-template.tsx +14 -4
  821. package/templates/user-permissions-template.tsx +11 -14
  822. package/dist/accordion-B9MHG0cT.js.map +0 -1
  823. package/dist/action-menu-Dr8K-ghE.js +0 -284
  824. package/dist/action-menu-Dr8K-ghE.js.map +0 -1
  825. package/dist/ai-artifact-C58tQcBy.js +0 -1185
  826. package/dist/ai-artifact-C58tQcBy.js.map +0 -1
  827. package/dist/anchored-positioning-DPnKTvNs.js +0 -6
  828. package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
  829. package/dist/app-shell-B_IuNWOo.js +0 -321
  830. package/dist/app-shell-B_IuNWOo.js.map +0 -1
  831. package/dist/auth-DTkkshS8.js.map +0 -1
  832. package/dist/badge-xIiV_E7f.js.map +0 -1
  833. package/dist/base/sheet.js +0 -3
  834. package/dist/breadcrumbs-J-K2kl4c.js +0 -129
  835. package/dist/breadcrumbs-J-K2kl4c.js.map +0 -1
  836. package/dist/button-S2Cubiiz.js.map +0 -1
  837. package/dist/buttons-BedGfygC.js.map +0 -1
  838. package/dist/cascader-B1MiqkBq.js +0 -439
  839. package/dist/cascader-B1MiqkBq.js.map +0 -1
  840. package/dist/choice-inputs-zUgBZfE4.js.map +0 -1
  841. package/dist/code-block-BzmM9Eig.js.map +0 -1
  842. package/dist/collapsible-BkAI_XD4.js +0 -81
  843. package/dist/collapsible-BkAI_XD4.js.map +0 -1
  844. package/dist/combobox-BEx0vJgF.js +0 -362
  845. package/dist/combobox-BEx0vJgF.js.map +0 -1
  846. package/dist/combobox-BwzoXFSG.js +0 -884
  847. package/dist/combobox-BwzoXFSG.js.map +0 -1
  848. package/dist/command-CrlPIL6m.js +0 -425
  849. package/dist/command-CrlPIL6m.js.map +0 -1
  850. package/dist/comments-Dmpp0YIc.js +0 -1169
  851. package/dist/comments-Dmpp0YIc.js.map +0 -1
  852. package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
  853. package/dist/components/base/display/content-block.d.ts +0 -75
  854. package/dist/components/base/display/content-block.strings.d.ts +0 -5
  855. package/dist/components/base/sheet/index.d.ts +0 -29
  856. package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
  857. package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
  858. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -16
  859. package/dist/components/features/resource/resource.strings.d.ts +0 -12
  860. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
  861. package/dist/components/features/sync/index.d.ts +0 -26
  862. package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
  863. package/dist/components/features/sync/sync.strings.d.ts +0 -18
  864. package/dist/components/features/sync/sync.types.d.ts +0 -44
  865. package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
  866. package/dist/components/ui/slot.d.ts +0 -6
  867. package/dist/containers-CIxwbZt5.js.map +0 -1
  868. package/dist/data-display-BdgCAw8T.js.map +0 -1
  869. package/dist/date-Cq8ioE4o.js +0 -144
  870. package/dist/date-Cq8ioE4o.js.map +0 -1
  871. package/dist/date-picker-RlIzKom_.js +0 -1551
  872. package/dist/date-picker-RlIzKom_.js.map +0 -1
  873. package/dist/date-pickers-DY-CpXS1.js +0 -179
  874. package/dist/date-pickers-DY-CpXS1.js.map +0 -1
  875. package/dist/display-KsZLw9Ov.js.map +0 -1
  876. package/dist/features/sync.js +0 -142
  877. package/dist/features/sync.js.map +0 -1
  878. package/dist/feedback-Dm4izqFn.js +0 -240
  879. package/dist/feedback-Dm4izqFn.js.map +0 -1
  880. package/dist/field-affordance-recipes-DWcNcOjh.js.map +0 -1
  881. package/dist/field-state-recipes-BVA2CWHo.js +0 -12
  882. package/dist/field-state-recipes-BVA2CWHo.js.map +0 -1
  883. package/dist/filters-DzgSJpMK.js +0 -2257
  884. package/dist/filters-DzgSJpMK.js.map +0 -1
  885. package/dist/focus-recipes-B653VaLq.js.map +0 -1
  886. package/dist/form-field-BriWAXyg.js +0 -63
  887. package/dist/form-field-BriWAXyg.js.map +0 -1
  888. package/dist/forms-C0RGnJTe.js.map +0 -1
  889. package/dist/forms-numeric-DIhghX1Q.js +0 -910
  890. package/dist/forms-numeric-DIhghX1Q.js.map +0 -1
  891. package/dist/header-DMMxG__r.js.map +0 -1
  892. package/dist/hooks-DB6CJ4MR.js.map +0 -1
  893. package/dist/http-D_6rOnzU.js.map +0 -1
  894. package/dist/item-DjCcM18E.js +0 -277
  895. package/dist/item-DjCcM18E.js.map +0 -1
  896. package/dist/layout.types-Cn7aUzJp.js +0 -20
  897. package/dist/layout.types-Cn7aUzJp.js.map +0 -1
  898. package/dist/media-gallery-C-vChPmE.js +0 -203
  899. package/dist/media-gallery-C-vChPmE.js.map +0 -1
  900. package/dist/mentions-0_4nWuI-.js +0 -570
  901. package/dist/mentions-0_4nWuI-.js.map +0 -1
  902. package/dist/message-g8p7eVtN.js +0 -128
  903. package/dist/message-g8p7eVtN.js.map +0 -1
  904. package/dist/metadata-list-C3MkU-Om.js.map +0 -1
  905. package/dist/motion-recipes-DitYv6P2.js.map +0 -1
  906. package/dist/navigation-C90-oQFq.js +0 -255
  907. package/dist/navigation-C90-oQFq.js.map +0 -1
  908. package/dist/navigation-DaRjthVk.js +0 -288
  909. package/dist/navigation-DaRjthVk.js.map +0 -1
  910. package/dist/number-CRU3kGuk.js +0 -354
  911. package/dist/number-CRU3kGuk.js.map +0 -1
  912. package/dist/overlays-BSgCtM2v.js.map +0 -1
  913. package/dist/page-DUUKDAjo.js +0 -331
  914. package/dist/page-DUUKDAjo.js.map +0 -1
  915. package/dist/pagination-CgCjElfu.js.map +0 -1
  916. package/dist/popover-B85RenIl.js +0 -201
  917. package/dist/popover-B85RenIl.js.map +0 -1
  918. package/dist/primitives-ByWgGUgt.js +0 -380
  919. package/dist/primitives-ByWgGUgt.js.map +0 -1
  920. package/dist/receipt-tOc7B3hw.js +0 -116
  921. package/dist/receipt-tOc7B3hw.js.map +0 -1
  922. package/dist/rich-text-Dth5E882.js +0 -78
  923. package/dist/rich-text-Dth5E882.js.map +0 -1
  924. package/dist/rich-text-editor-C1fOjBTd.js +0 -1195
  925. package/dist/rich-text-editor-C1fOjBTd.js.map +0 -1
  926. package/dist/rich-text-editor-toolbar-laT3tpBT.js +0 -98
  927. package/dist/rich-text-editor-toolbar-laT3tpBT.js.map +0 -1
  928. package/dist/sanitize-html-DsQmI48u.js +0 -92
  929. package/dist/sanitize-html-DsQmI48u.js.map +0 -1
  930. package/dist/separator-Ct_WSWTJ.js.map +0 -1
  931. package/dist/settings-Bar5wiSo.js +0 -167
  932. package/dist/settings-Bar5wiSo.js.map +0 -1
  933. package/dist/sheet-BGPERY55.js +0 -250
  934. package/dist/sheet-BGPERY55.js.map +0 -1
  935. package/dist/sidebar-D-JYMMbY.js +0 -686
  936. package/dist/sidebar-D-JYMMbY.js.map +0 -1
  937. package/dist/sidebar-f9gRWXIR.js.map +0 -1
  938. package/dist/skeleton-BapcJd9C.js.map +0 -1
  939. package/dist/slot-CLF9kLrS.js +0 -16
  940. package/dist/slot-CLF9kLrS.js.map +0 -1
  941. package/dist/smart-card-CW0hjetE.js.map +0 -1
  942. package/dist/surface-recipes-BKRVW8Os.js.map +0 -1
  943. package/dist/table-B4TE7iOV.js +0 -175
  944. package/dist/table-B4TE7iOV.js.map +0 -1
  945. package/dist/table-CFOWY9pQ.js +0 -1536
  946. package/dist/table-CFOWY9pQ.js.map +0 -1
  947. package/dist/tabs-e7ko9S2o.js +0 -191
  948. package/dist/tabs-e7ko9S2o.js.map +0 -1
  949. package/dist/text-inputs-B1culiSK.js.map +0 -1
  950. package/dist/timelines-D3Sl9ueq.js +0 -458
  951. package/dist/timelines-D3Sl9ueq.js.map +0 -1
  952. package/dist/tooltip-8wz5S_Zr.js +0 -113
  953. package/dist/tooltip-8wz5S_Zr.js.map +0 -1
  954. package/dist/tree-CzUJHnFs.js.map +0 -1
  955. package/dist/typography-BQnine1k.js.map +0 -1
  956. package/dist/ui-provider-C-74NVLc.js.map +0 -1
  957. package/dist/upload-BOW6U2tI.js +0 -855
  958. package/dist/upload-BOW6U2tI.js.map +0 -1
  959. package/dist/upload-queue-qUXn1ykN.js +0 -409
  960. package/dist/upload-queue-qUXn1ykN.js.map +0 -1
  961. package/dist/usage-card-BeSLY0i0.js.map +0 -1
  962. package/dist/utils-B6kKb8jB.js.map +0 -1
  963. package/dist/value-inputs-skdVB2zh.js +0 -980
  964. package/dist/value-inputs-skdVB2zh.js.map +0 -1
  965. package/dist/value-typography-uAmWUAL1.js +0 -116
  966. package/dist/value-typography-uAmWUAL1.js.map +0 -1
  967. package/dist/workspace-DHeHv0qw.js +0 -411
  968. package/dist/workspace-DHeHv0qw.js.map +0 -1
@@ -5,8 +5,8 @@ var e = {
5
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
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
7
  sidebar: "focus-visible:inset-ring focus-visible:inset-ring-sidebar-ring focus-visible:ring-3 focus-visible:ring-sidebar-ring/50"
8
- };
8
+ }, t = "pointer-events-none opacity-0 focus-visible:pointer-events-auto focus-visible:opacity-100";
9
9
  //#endregion
10
- export { e as t };
10
+ export { t as n, e as t };
11
11
 
12
- //# sourceMappingURL=focus-recipes-B653VaLq.js.map
12
+ //# sourceMappingURL=focus-recipes-DSkiUvUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-recipes-DSkiUvUp.js","names":["focusRecipes","visuallyHiddenUntilFocusedRecipe"],"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\n/**\n * Out of sight until it takes keyboard focus, for a skip link or another\n * keyboard-only shortcut. The element keeps its box, so focus does not shift\n * the layout; place it with `absolute` inside a zero-size or relative anchor.\n * It draws its own focus indicator through the control it is applied to.\n */\nexport const visuallyHiddenUntilFocusedRecipe = 'pointer-events-none opacity-0 focus-visible:pointer-events-auto focus-visible:opacity-100';\n"],"mappings":";AAYA,IAAaA,IAAe;CAE3B,OAAO;CAEP,MAAM;CAEN,MAAM;CAEN,OAAO;CAEP,SAAS;AACV,GAQaC,IAAmC"}
@@ -0,0 +1,74 @@
1
+ "use client";
2
+ import { t as e } from "./utils-BVbAG2J6.js";
3
+ import { a as t, c as n } from "./typography-C0dELqYV.js";
4
+ import { i as r, n as i, r as a, t as o } from "./structure-DElaQwwN.js";
5
+ import "./form-sizing-DE_dZw32.js";
6
+ import * as s from "react";
7
+ import { forwardRef as c } from "react";
8
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
9
+ //#region src/components/base/forms/form-field.tsx
10
+ var d = /* @__PURE__ */ new Set([
11
+ o,
12
+ a,
13
+ r,
14
+ i
15
+ ]);
16
+ function f(e, t) {
17
+ return Array.isArray(e) ? e.some((e) => f(e, t)) : s.isValidElement(e) ? e.props.id === t || f(e.props.children, t) : !1;
18
+ }
19
+ var p = c(function({ children: r, label: i, required: a, hint: c, error: p, helperText: m, htmlFor: h, supportingTextId: g, className: _, ...v }, y) {
20
+ let b = !!p, x = p || m || (b ? void 0 : c), S = !!x, C = a, w = s.useId(), T = s.isValidElement(r) ? r.props : void 0, E = s.isValidElement(r) && r.type !== s.Fragment && !d.has(r.type) && (typeof r.type != "string" || [
21
+ "input",
22
+ "select",
23
+ "textarea",
24
+ "button",
25
+ "meter",
26
+ "output",
27
+ "progress"
28
+ ].includes(r.type)) && (h === void 0 || T?.id === void 0 || h === T.id) && (h === void 0 || !f(T?.children, h)), D = E ? r.props.id : void 0, O = h ?? D ?? (i && E ? `form-field-${w}` : void 0), k = i ? `form-field-${w}-label` : void 0, A = g ?? `form-field-${w}-supporting`, j = E ? T : void 0, M = [j?.["aria-describedby"], S ? A : void 0].filter((e) => !!e).flatMap((e) => e.split(/\s+/).filter(Boolean)), N = [...new Set(M)].join(" ") || void 0, P = E ? s.cloneElement(r, {
29
+ ...O && !D ? { id: O } : {},
30
+ ...k && j?.["aria-label"] === void 0 && j?.["aria-labelledby"] === void 0 ? { "aria-labelledby": k } : {},
31
+ "aria-describedby": N,
32
+ ...b || j?.["aria-invalid"] !== void 0 ? { "aria-invalid": b ? !0 : j?.["aria-invalid"] } : {},
33
+ "aria-required": j?.["aria-required"] ?? (C ? !0 : void 0)
34
+ }) : r;
35
+ return /* @__PURE__ */ u(o, {
36
+ ref: y,
37
+ gap: "xs",
38
+ className: e("form-field--component w-full box-border", _),
39
+ ...v,
40
+ children: [
41
+ !!i && /* @__PURE__ */ u(t, {
42
+ id: k,
43
+ htmlFor: O,
44
+ className: e("form-field--label flex items-center gap-space-xs text-inherit", "leading-6"),
45
+ children: [i, !!C && /* @__PURE__ */ l(n, {
46
+ tag: "span",
47
+ size: "inherit",
48
+ type: "error",
49
+ className: "form-field--required",
50
+ "aria-hidden": "true",
51
+ children: "*"
52
+ })]
53
+ }),
54
+ P,
55
+ !!S && /* @__PURE__ */ l(n, {
56
+ id: A,
57
+ tag: "p",
58
+ size: "xs",
59
+ type: b ? "error" : "secondary",
60
+ ...b ? {
61
+ role: "alert",
62
+ "aria-live": "polite"
63
+ } : {},
64
+ className: "form-field--supporting",
65
+ children: x
66
+ })
67
+ ]
68
+ });
69
+ });
70
+ p.displayName = "FormField";
71
+ //#endregion
72
+ export { p as t };
73
+
74
+ //# sourceMappingURL=form-field-BdfCwSoQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field-BdfCwSoQ.js","names":["React","cn","Label","Text","AdaptiveGrid","GridCell","Grid","Stack","React$1","passiveStructureTypes","hasDeclaredDescendantId","content","child","id","FormField","forwardRef","rootProps","hasError","error","supportingText","helperText","hint","showBottomText","resolvedRequired","required","generatedId","elementProps","children","canAssociateChild","htmlFor","childId","resolvedHtmlFor","label","resolvedLabelId","resolvedSupportingTextId","supportingTextId","childProps","descriptionIds","describedBy","resolvedChildren","className"],"sources":["../src/components/base/forms/form-field.tsx"],"sourcesContent":["/**\n * FormField — presentation chrome for a label, control, hint/helper and error.\n * This implementation keeps presentation separate from RHF state bindings.\n * The published `base/forms` family exports those bindings and types, so use\n * its listed react-hook-form peer even when selecting only FormField. Installing\n * that peer does not require adopting RHF for the app's own form state.\n */\n\nimport * as React from 'react';\nimport { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { AdaptiveGrid, Grid, GridCell, Stack } from '../structure';\nimport { Label, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { formLabelLineClass } from './form-sizing';\n\nconst passiveStructureTypes = new Set<unknown>([Stack, Grid, AdaptiveGrid, GridCell]);\n\n/** Reads declared JSX only; component bodies, render props and iterators stay opaque. */\nfunction hasDeclaredDescendantId(content: ReactNode, id: string): boolean {\n\tif (Array.isArray(content)) return content.some(child => hasDeclaredDescendantId(child, id));\n\tif (!React.isValidElement<{ id?: string; children?: ReactNode }>(content)) return false;\n\treturn content.props.id === id || hasDeclaredDescendantId(content.props.children, id);\n}\n\nexport interface FieldChromeProps {\n\t/** Caption rendered above the control. Supplies a default accessible name to direct controls while preserving explicit names and native `htmlFor` association. */\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/**\n\t * Native ID of the labelled control. Direct controls receive it when omitted.\n\t * A matching ID in declared descendants leaves the outer child untouched.\n\t * For a custom compound that creates unseen controls internally, use a passive\n\t * host and assign this ID to its nested control; component bodies are not inspected.\n\t */\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 elementProps = React.isValidElement(children) ? children.props as React.AriaAttributes & { id?: string; children?: ReactNode } : undefined;\n\tconst canAssociateChild = React.isValidElement(children) && children.type !== React.Fragment &&\n\t\t!passiveStructureTypes.has(children.type) &&\n\t\t(typeof children.type !== 'string' || ['input', 'select', 'textarea', 'button', 'meter', 'output', 'progress'].includes(children.type)) &&\n\t\t// An explicit target different from this child's ID belongs to another\n\t\t// control, often inside a custom compound wrapper. Leave that child alone.\n\t\t(htmlFor === undefined || elementProps?.id === undefined || htmlFor === elementProps.id) &&\n\t\t// A declared descendant with the explicit target ID owns that association,\n\t\t// even behind an opaque or memoized wrapper. Do not duplicate its ID/name.\n\t\t(htmlFor === undefined || !hasDeclaredDescendantId(elementProps?.children, htmlFor));\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 resolvedLabelId = label ? `form-field-${generatedId}-label` : undefined;\n\tconst resolvedSupportingTextId = supportingTextId ?? `form-field-${generatedId}-supporting`;\n\tconst childProps = canAssociateChild ? elementProps : undefined;\n\tconst descriptionIds = [childProps?.['aria-describedby'], showBottomText ? resolvedSupportingTextId : undefined]\n\t\t.filter((id): id is string => Boolean(id)).flatMap(id => id.split(/\\s+/).filter(Boolean));\n\tconst describedBy = [...new Set(descriptionIds)].join(' ') || undefined;\n\tconst resolvedChildren = canAssociateChild\n\t\t? React.cloneElement(children as React.ReactElement<React.AriaAttributes & { id?: string }>, {\n\t\t\t...(resolvedHtmlFor && !childId ? { id: resolvedHtmlFor } : {}),\n\t\t\t// Groups are not native labelable elements. Their semantic owner can\n\t\t\t// reference this caption without replacing a consumer's explicit name.\n\t\t\t...(resolvedLabelId && childProps?.['aria-label'] === undefined && childProps?.['aria-labelledby'] === undefined\n\t\t\t\t? { 'aria-labelledby': resolvedLabelId }\n\t\t\t\t: {}),\n\t\t\t'aria-describedby': describedBy,\n\t\t\t// Set the key only with a value: an explicit undefined would override a\n\t\t\t// control's own `invalid` when the control spreads it after its own attribute.\n\t\t\t...(hasError || childProps?.['aria-invalid'] !== undefined ? { 'aria-invalid': hasError ? true : childProps?.['aria-invalid'] } : {}),\n\t\t\t'aria-required': childProps?.['aria-required'] ?? (resolvedRequired ? true : undefined),\n\t\t})\n\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\tid={resolvedLabelId}\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\taria-hidden=\"true\"\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={resolvedSupportingTextId}\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":"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"}
@@ -1,6 +1,6 @@
1
- import { S as e } from "./ui-provider-C-74NVLc.js";
1
+ import { C as e } from "./ui-provider-Bu1S-o96.js";
2
2
  import { t } from "./affordance-geometry.generated-P-aVJisu.js";
3
- import { t as n } from "./field-state-recipes-BVA2CWHo.js";
3
+ import { t as n } from "./field-state-recipes-EtCxpEy3.js";
4
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 = {
@@ -122,4 +122,4 @@ function w(t, n) {
122
122
  //#endregion
123
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 };
124
124
 
125
- //# sourceMappingURL=form-sizing-Bs2qFUeE.js.map
125
+ //# sourceMappingURL=form-sizing-DE_dZw32.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-sizing-Bs2qFUeE.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 * default 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-radius 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
+ {"version":3,"file":"form-sizing-DE_dZw32.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 * default 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-radius 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,13 +1,13 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "./lib/strings.js";
3
- import { t } from "./utils-B6kKb8jB.js";
4
- import { n } from "./buttons-BedGfygC.js";
5
- import { c as r } from "./typography-BQnine1k.js";
6
- import { t as i } from "./structure-DuxKl954.js";
7
- import { h as a, m as o, p as s, t as c, v as l } from "./smart-card-CW0hjetE.js";
3
+ import { t } from "./utils-BVbAG2J6.js";
4
+ import { c as n } from "./typography-C0dELqYV.js";
5
+ import { n as r } from "./buttons-pZVgPTZn.js";
6
+ import { t as i } from "./structure-DElaQwwN.js";
7
+ import { _ as a, f as o, m as s, p as c, t as l } from "./smart-card-C59z6KFO.js";
8
8
  import { n as u, t as d } from "./composition.recipes-COdiFhxB.js";
9
- import { t as f } from "./input-CvyDQlY7.js";
10
- import { t as p } from "./form-field-BriWAXyg.js";
9
+ import { t as f } from "./input-DfJyrjoR.js";
10
+ import { t as p } from "./form-field-BdfCwSoQ.js";
11
11
  import { useMemo as m } from "react";
12
12
  import { jsx as h, jsxs as g } from "react/jsx-runtime";
13
13
  import { Controller as _, useForm as v } from "react-hook-form";
@@ -62,12 +62,12 @@ function S(e, t, { fields: n, root: r = "root.server" }) {
62
62
  function C(e) {
63
63
  return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
64
64
  }
65
- function w({ title: e, description: n, actions: r, children: i, footer: a, surface: o = "card", padding: s, titleSize: l, className: u, contentClassName: f }) {
66
- return /* @__PURE__ */ h(c, {
65
+ function w({ title: e, description: n, actions: r, children: i, footer: a, surface: o = "card", padding: s, titleSize: c, className: u, contentClassName: f }) {
66
+ return /* @__PURE__ */ h(l, {
67
67
  "data-component": "form-section",
68
68
  "data-slot": "form-section",
69
69
  title: e,
70
- titleSize: l ?? (o === "flat" && s === "none" ? "sm" : void 0),
70
+ titleSize: c ?? (o === "flat" && s === "none" ? "sm" : void 0),
71
71
  description: n,
72
72
  headerAction: r,
73
73
  footerSlot: a,
@@ -78,7 +78,7 @@ function w({ title: e, description: n, actions: r, children: i, footer: a, surfa
78
78
  children: i
79
79
  });
80
80
  }
81
- function T({ children: e, leading: n, trailing: a, sticky: o = !1, className: s }) {
81
+ function T({ children: e, leading: r, trailing: a, sticky: o = !1, className: s }) {
82
82
  let c = a ?? e;
83
83
  return /* @__PURE__ */ h("div", {
84
84
  className: t("form-actions-bar--component @container/form-actions-bar", o && "sticky bottom-0 z-30", s),
@@ -88,16 +88,16 @@ function T({ children: e, leading: n, trailing: a, sticky: o = !1, className: s
88
88
  className: "form-actions-bar--row border-t border-border bg-background p-surface",
89
89
  children: /* @__PURE__ */ g("div", {
90
90
  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",
91
- children: [n != null && /* @__PURE__ */ h("div", {
91
+ children: [r != null && /* @__PURE__ */ h("div", {
92
92
  "data-slot": "form-actions-leading",
93
93
  className: "form-actions-bar--leading min-w-0 flex-1",
94
- children: C(n) ? /* @__PURE__ */ h(r, {
94
+ children: C(r) ? /* @__PURE__ */ h(n, {
95
95
  tag: "span",
96
96
  size: "xs",
97
97
  type: "secondary",
98
98
  className: "form-actions-bar--leading-text",
99
- children: n
100
- }) : n
99
+ children: r
100
+ }) : r
101
101
  }), c != null && /* @__PURE__ */ h(i, {
102
102
  "data-slot": "form-actions-trailing",
103
103
  wrap: !0,
@@ -111,42 +111,42 @@ function T({ children: e, leading: n, trailing: a, sticky: o = !1, className: s
111
111
  })
112
112
  });
113
113
  }
114
- function E({ title: e, description: n, errors: c = [], action: u, className: d }) {
115
- return /* @__PURE__ */ g(s, {
114
+ function E({ title: e, description: r, errors: l = [], action: u, className: d }) {
115
+ return /* @__PURE__ */ g(o, {
116
116
  "data-component": "error-summary",
117
117
  "data-slot": "error-summary",
118
118
  tone: "destructive",
119
119
  className: t("error-summary--component", !!u && "has-[>[data-slot=alert-action]]:gap-x-0", d),
120
120
  children: [
121
- /* @__PURE__ */ h(l, { children: e }),
122
- !!n && /* @__PURE__ */ h(a, { children: n }),
123
- c.length > 0 && /* @__PURE__ */ h(i, {
121
+ /* @__PURE__ */ h(a, { children: e }),
122
+ !!r && /* @__PURE__ */ h(s, { children: r }),
123
+ l.length > 0 && /* @__PURE__ */ h(i, {
124
124
  render: /* @__PURE__ */ h("ul", {}),
125
125
  gap: "xs",
126
126
  "data-slot": "error-summary-list",
127
127
  className: "error-summary--list col-start-2 m-0 list-disc ps-space-xl text-sm text-muted-foreground",
128
- children: c.map((e, t) => /* @__PURE__ */ h("li", { children: typeof e == "string" || typeof e == "number" || typeof e == "bigint" ? /* @__PURE__ */ h(r, {
128
+ children: l.map((e, t) => /* @__PURE__ */ h("li", { children: typeof e == "string" || typeof e == "number" || typeof e == "bigint" ? /* @__PURE__ */ h(n, {
129
129
  tag: "span",
130
130
  type: "secondary",
131
131
  children: e
132
132
  }) : e }, t))
133
133
  }),
134
- !!u && /* @__PURE__ */ h(o, {
134
+ !!u && /* @__PURE__ */ h(c, {
135
135
  className: "sm:ms-space-lg",
136
136
  children: u
137
137
  })
138
138
  ]
139
139
  });
140
140
  }
141
- function D({ title: e, description: n, actions: r, tone: o = "warning", className: c }) {
142
- return /* @__PURE__ */ g(s, {
141
+ function D({ title: e, description: n, actions: r, tone: c = "warning", className: l }) {
142
+ return /* @__PURE__ */ g(o, {
143
143
  "data-component": "dirty-state-banner",
144
144
  "data-slot": "dirty-state-banner",
145
- tone: o,
146
- className: t("dirty-state-banner--component", c),
145
+ tone: c,
146
+ className: t("dirty-state-banner--component", l),
147
147
  children: [
148
- /* @__PURE__ */ h(l, { children: e }),
149
- !!n && /* @__PURE__ */ h(a, { children: n }),
148
+ /* @__PURE__ */ h(a, { children: e }),
149
+ !!n && /* @__PURE__ */ h(s, { children: n }),
150
150
  r != null && /* @__PURE__ */ h("div", {
151
151
  className: "dirty-state-banner--actions col-start-2 min-w-0 pt-space-sm",
152
152
  children: /* @__PURE__ */ h(i, {
@@ -159,15 +159,15 @@ function D({ title: e, description: n, actions: r, tone: o = "warning", classNam
159
159
  ]
160
160
  });
161
161
  }
162
- function O({ submitting: e = !1, dirty: r = !0, disableWhenPristine: i = !1, disabled: a, children: o, ...s }) {
163
- return /* @__PURE__ */ h(n, {
162
+ function O({ submitting: e = !1, dirty: n = !0, disableWhenPristine: i = !1, disabled: a, children: o, ...s }) {
163
+ return /* @__PURE__ */ h(r, {
164
164
  tone: "primary",
165
165
  ...s,
166
166
  "data-component": "submit-state-button",
167
167
  "data-slot": "submit-state-button",
168
168
  type: s.type ?? "submit",
169
169
  loading: e,
170
- disabled: a || i && !r,
170
+ disabled: a || i && !n,
171
171
  className: t("submit-state-button--component", s.className),
172
172
  children: o
173
173
  });
@@ -175,11 +175,11 @@ function O({ submitting: e = !1, dirty: r = !0, disableWhenPristine: i = !1, dis
175
175
  //#endregion
176
176
  //#region src/components/base/forms/operation-password-form.tsx
177
177
  function k(e) {
178
- let { formId: t, onSubmit: n, errors: a, loading: o = !1, label: s } = e, c = ((e) => {
178
+ let { formId: t, onSubmit: r, errors: a, loading: o = !1, label: s } = e, c = ((e) => {
179
179
  let t = a?.[e];
180
180
  return Array.isArray(t) ? t[0] : t;
181
181
  })("password"), l = c ? () => c : void 0, u = (Array.isArray(a?.general) ? a.general[0] : a?.general) || (Array.isArray(a?.server) ? a.server[0] : a?.server), d = m(() => ({ password: "" }), []), { handleSubmit: p, control: _ } = v({ defaultValues: d }), y = async (e) => {
182
- await n({ password: e.password });
182
+ await r({ password: e.password });
183
183
  }, b = o;
184
184
  return /* @__PURE__ */ g(i, {
185
185
  render: /* @__PURE__ */ h("form", {}),
@@ -187,7 +187,7 @@ function k(e) {
187
187
  id: t,
188
188
  onSubmit: p(y),
189
189
  className: "operation-password-form--component",
190
- children: [!!u && /* @__PURE__ */ h(r, {
190
+ children: [!!u && /* @__PURE__ */ h(n, {
191
191
  type: "error",
192
192
  children: u
193
193
  }), /* @__PURE__ */ h(x, {
@@ -213,4 +213,4 @@ k.displayName = "OperationPasswordForm";
213
213
  //#endregion
214
214
  export { w as a, x as c, T as i, y as l, D as n, O as o, E as r, S as s, k as t };
215
215
 
216
- //# sourceMappingURL=forms-C0RGnJTe.js.map
216
+ //# sourceMappingURL=forms-B8DzJnBN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-B8DzJnBN.js","names":["Text","Button","Stack","AlertTitle","Alert","AlertDescription","AlertAction","Card","compositionRhythm","compositionClasses","Input","FormField","defaultControlledFormFieldStrings","interpolateControlledFormFieldString","template","label","ControlledFormField","errorProp","stringsProp","chromeProps","strings","useStrings","Controller","validationError","fieldState","resolvedError","name","errorMessage","invalid","cn","children","field","applyServerErrors","errors","allowed","fields","rootMessages","applied","value","message","part","setError","root","isSimpleText","FormSection","titleSize","surface","padding","actions","footer","className","contentClassName","FormActionsBar","trailing","sticky","leading","ErrorSummary","action","title","description","error","index","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/server-errors.ts","../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 presentational\n * `FormField` component. Runtime state bindings stay in this module; the\n * published family still reports RHF for its exported bindings and types.\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'\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?: ReactNode | 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: errorProp,\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 customError = typeof errorProp === 'function' ? errorProp(name) : errorProp;\n\t\t\t\tconst resolvedError = customError || validationError || undefined;\n\t\t\t\t// Rich chrome does not widen the established string callback contract.\n\t\t\t\tconst errorMessage = typeof resolvedError === 'string' ? resolvedError : validationError;\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\tclassName={cn('controlled-form-field--component', chromeProps.className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children(field, errorMessage, 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","import type { FieldPath, FieldValues, UseFormSetError } from 'react-hook-form';\n\n/** Flat server validation messages; transport libraries keep ownership of requests. */\nexport type ServerErrors<TName extends string = string> = Partial<Record<TName, string | readonly string[]>>;\n\nexport interface ApplyServerErrorsOptions<TFieldValues extends FieldValues> {\n\t/** Allowed schema paths. Unknown server keys are reported at the root. */\n\tfields: readonly FieldPath<TFieldValues>[];\n\t/** Root error path for unknown fields and general errors. Defaults to root.server. */\n\troot?: `root.${string}`;\n}\n\n/**\n * Apply an untrusted transport error bag without importing a transport or RHF at\n * runtime. The allowlist prevents unknown server keys from becoming form fields.\n * Invalid/empty messages are ignored; arrays retain every string message.\n * Returns the number of field/root errors applied.\n */\nexport function applyServerErrors<TFieldValues extends FieldValues>(\n\tsetError: UseFormSetError<TFieldValues>,\n\terrors: unknown,\n\t{ fields, root = 'root.server' }: ApplyServerErrorsOptions<TFieldValues>,\n): number {\n\tif (!errors || typeof errors !== 'object' || Array.isArray(errors)) return 0;\n\tconst allowed = new Set<string>(fields);\n\tconst rootMessages: string[] = [];\n\tlet applied = 0;\n\tfor (const [name, value] of Object.entries(errors)) {\n\t\tconst message = typeof value === 'string'\n\t\t\t? value.trim() ? value : undefined\n\t\t\t: Array.isArray(value) ? value.filter((part): part is string => typeof part === 'string' && part.trim() !== '').join('\\n') || undefined : undefined;\n\t\tif (!message) continue;\n\t\tif (allowed.has(name)) {\n\t\t\tsetError(name as FieldPath<TFieldValues>, { type: 'server', message });\n\t\t\tapplied++;\n\t\t} else rootMessages.push(message);\n\t}\n\tif (rootMessages.length) {\n\t\tsetError(root, { type: 'server', message: rootMessages.join('\\n') });\n\t\tapplied++;\n\t}\n\treturn applied;\n}\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, type CardProps } from '../cards';\nimport { Stack } from '../structure';\nimport { compositionClasses, compositionRhythm } from '../structure/composition.recipes';\nimport type { CardSurface } 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` with `padding=\"none\"` inside a padded Card. */\n\tsurface?: CardSurface;\n\t/** Card region insets. Defaults to Card's ordinary inset; use `none` when the parent already owns padding. */\n\tpadding?: CardProps['padding'];\n\t/**\n\t * Section title size. Embedded `surface=\"flat\" padding=\"none\"` inside a padded\n\t * Card defaults to the subordinate `sm` title, below the card's own title;\n\t * otherwise Card's default applies.\n\t */\n\ttitleSize?: CardProps['titleSize'];\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\tpadding,\n\ttitleSize,\n\tclassName,\n\tcontentClassName,\n}: FormSectionProps) {\n\t// Embedded in a padded Card, the section is a subordinate heading level.\n\tconst resolvedTitleSize = titleSize ?? (surface === 'flat' && padding === 'none' ? 'sm' : undefined);\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\ttitleSize={resolvedTitleSize}\n\t\t\tdescription={description}\n\t\t\theaderAction={actions}\n\t\t\tfooterSlot={footer}\n\t\t\tsurface={surface}\n\t\t\tpadding={padding}\n\t\t\tclassName={cn('form-section--component', className)}\n\t\t\tcontentClassName={cn('form-section--content grid', compositionClasses.related, 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={compositionRhythm.commands}\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\t// The summary has no icon, so its empty media column must not add the\n\t\t\t// action column's gap: the title keeps Alert's row inset, and the action\n\t\t\t// takes the same gap as its own leading margin.\n\t\t\tclassName={cn('error-summary--component', !!action && 'has-[>[data-slot=alert-action]]:gap-x-0', 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 className=\"sm:ms-space-lg\">{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={compositionRhythm.commands}>{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":";;;;;;;;;;;;;;AAMA,IAAaY,IAAgE;CAC5E,UAAU;CACV,mBAAmB;CACnB,SAAS;AACV;AAEA,SAAgBC,EAAqC,GAAkB,GAAe;CACrF,OAAOC,EAAS,QAAQ,wBAAwBC,CAAK;AACtD;;;ACyCA,SAAgBC,EAGd,EACD,SACA,YACA,UACA,OAAOC,GACP,SAASC,GACT,aACA,GAAGC,KAC8C;CACjD,IAAMC,IAAUC,EAAWT,GAAmCM,CAAW;CAEzE,OACC,kBAACI,GAAD;EACO;EACG;EACF;EACP,SAAS,EAAE,UAAO,oBAAiB;GAClC,IAAMC,IAAkBC,EAAW,OAAO,YACrCA,EAAW,QACZA,EAAW,MAAM,SAAS,aACzB,OAAOL,EAAY,SAAU,WAC5BN,EAAqCO,EAAQ,mBAAmBD,EAAY,KAAK,IACjFC,EAAQ,WACTA,EAAQ,UACT,KAAA,IAEEK,KADc,OAAOR,KAAc,aAAaA,EAAUS,CAAI,IAAIT,MACnCM,KAAmB,KAAA,GAElDI,IAAe,OAAOF,KAAkB,WAAWA,IAAgBF,GACnEK,IAAU,EAAQH;GAExB,OACC,kBAACd,GAAD;IACC,GAAIQ;IACJ,OAAOM;IACP,WAAWI,EAAG,oCAAoCV,EAAY,SAAS;IAEtE,UAAAW,EAASC,GAAOJ,GAAcC,GAASJ,CAAU;GACxC,CAAA;EAEb;CACA,CAAA;AAEH;AAEA,EAAoB,cAAc;;;ACrFlC,SAAgBQ,EACf,GACA,GACA,EAAE,WAAQ,UAAO,iBACR;CACT,IAAI,CAACC,KAAU,OAAOA,KAAW,YAAY,MAAM,QAAQA,CAAM,GAAG,OAAO;CAC3E,IAAMC,IAAU,IAAI,IAAYC,CAAM,GAChCC,IAAyB,CAAC,GAC5BC,IAAU;CACd,KAAK,IAAM,CAACX,GAAMY,MAAU,OAAO,QAAQL,CAAM,GAAG;EACnD,IAAMM,IAAU,OAAOD,KAAU,WAC9BA,EAAM,KAAK,IAAIA,IAAQ,KAAA,IACvB,MAAM,QAAQA,CAAK,KAAIA,EAAM,QAAQ,MAAyB,OAAOE,KAAS,YAAYA,EAAK,KAAK,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,KAAiB,KAAA;EAC3I,AAAKD,MACDL,EAAQ,IAAIR,CAAI,KACnBe,EAASf,GAAiC;GAAE,MAAM;GAAU;EAAQ,CAAC,GACrE,OACMU,EAAa,KAAKG,CAAO;CACjC;CAKA,OAJIH,EAAa,WAChBK,EAASC,GAAM;EAAE,MAAM;EAAU,SAASN,EAAa,KAAK,IAAI;CAAE,CAAC,GACnE,MAEMC;AACR;;;AC5BA,SAASM,EAAa,GAAqD;CAC1E,OAAO,OAAOL,KAAU,YAAY,OAAOA,KAAU,YAAY,OAAOA,KAAU;AACnF;AA2BA,SAAgBM,EAAY,EAC3B,UACA,gBACA,YACA,aACA,WACA,aAAU,QACV,YACA,cACA,cACA,uBACoB;CAGpB,OACC,kBAACrC,GAAD;EACC,kBAAe;EACf,aAAU;EACH;EACP,WANwBsC,MAAcC,MAAY,UAAUC,MAAY,SAAS,OAAO,KAAA;EAO3E;EACb,cAAcC;EACd,YAAYC;EACH;EACA;EACT,WAAWpB,EAAG,2BAA2BqB,CAAS;EAClD,kBAAkBrB,EAAG,8BAA8BpB,EAAmB,SAAS0C,CAAgB;EAE9F;CACI,CAAA;AAER;AAeA,SAAgBC,EAAe,EAC9B,aACA,YACA,aACA,YAAS,IACT,gBACuB;CACvB,IAAMJ,IAAUK,KAAYvB;CAE5B,OAUC,kBAAC,OAAD;EACC,WAAWD,EACV,2DACAyB,KAAU,wBACVJ,CACD;EAED,UAAA,kBAAC,OAAD;GACC,kBAAe;GACf,aAAU;GAEV,WAAU;GAEX,UAAA,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACEK,KAAW,QACX,kBAAC,OAAD;KAAK,aAAU;KAAuB,WAAU;KAC9C,UAAAZ,EAAaY,CAAO,IACpB,kBAACvD,GAAD;MACC,KAAI;MACJ,MAAK;MACL,MAAK;MACL,WAAU;MAET,UAAAuD;KACI,CAAA,IACHA;IACA,CAAA,GAELP,KAAW,QACX,kBAAC9C,GAAD;KACC,aAAU;KACV,MAAA;KACA,WAAU;KACV,KAAKM,EAAkB;KACvB,SAAQ;KACR,WAAU;KAET,UAAAwC;IACK,CAAA,CAEJ;;EACA,CAAA;CACA,CAAA;AAEP;AAcA,SAAgBQ,EAAa,EAC5B,UACA,gBACA,YAAS,CAAC,GACV,WACA,gBACqB;CACrB,OACC,kBAACpD,GAAD;EACC,kBAAe;EACf,aAAU;EACV,MAAK;EAIL,WAAWyB,EAAG,4BAA4B,CAAC,CAAC4B,KAAU,2CAA2CP,CAAS;EAP3G,UAAA;GASC,kBAAC/C,GAAD,EAAA,UAAauD,EAAkB,CAAA;GAC9B,CAAC,CAACC,KAAe,kBAACtD,GAAD,EAAA,UAAmBsD,EAA8B,CAAA;GAClE1B,EAAO,SAAS,KAGf,kBAAC/B,GAAD;IAAO,QAAQ,kBAAC,MAAD,CAAK,CAAA;IAAG,KAAI;IAAK,aAAU;IAAqB,WAAU;IACxE,UAAA+B,EAAO,KAAK,GAAO,MACnB,kBAAC,MAAD,EAAA,UACE,OAAO2B,KAAU,YAAY,OAAOA,KAAU,YAAY,OAAOA,KAAU,WAC3E,kBAAC5D,GAAD;KAAM,KAAI;KAAO,MAAK;KACpB,UAAA4D;IACI,CAAA,IACHA,EACD,GANKC,CAML,CACJ;GACM,CAAA;GAER,CAAC,CAACJ,KAAU,kBAACnD,GAAD;IAAa,WAAU;IAAkB,UAAAmD;GAAoB,CAAA;EACpE;;AAET;AAcA,SAAgBK,EAAiB,EAChC,UACA,gBACA,YACA,UAAO,WACP,gBACyB;CACzB,OACC,kBAAC1D,GAAD;EACC,kBAAe;EACf,aAAU;EACJ;EACN,WAAWyB,EAAG,iCAAiCqB,CAAS;EAJzD,UAAA;GAMC,kBAAC/C,GAAD,EAAA,UAAauD,EAAkB,CAAA;GAC9B,CAAC,CAACC,KACF,kBAACtD,GAAD,EAAA,UACEsD,EACgB,CAAA;GAElBX,KAAW,QACX,kBAAC,OAAD;IAAK,WAAU;IACd,UAAA,kBAAC9C,GAAD;KAAO,WAAU;KAAa,MAAA;KAAK,KAAKM,EAAkB;KAAW,UAAAwC;IAAe,CAAA;GAChF,CAAA;EAEA;;AAET;AAaA,SAAgBe,EAAkB,EACjC,gBAAa,IACb,WAAQ,IACR,yBAAsB,IACtB,aACA,aACA,GAAGC,KACuB;CAC1B,OACC,kBAAC/D,GAAD;EAEC,MAAK;EACL,GAAI+D;EACJ,kBAAe;EACf,aAAU;EACV,MAAMA,EAAM,QAAQ;EACpB,SAASC;EACT,UAAUC,KAAaC,KAAuB,CAACC;EAC/C,WAAWvC,EAAG,kCAAkCmC,EAAM,SAAS;EAE9D;CACM,CAAA;AAEV;;;AC/PA,SAAgBK,EAAsB,GAAmC;CACxE,IAAM,EAAE,WAAQ,aAAU,WAAQ,aAAU,IAAO,aAAUL,GAMvDM,MAJY,MAAwD;EACzE,IAAMhC,IAAQL,IAASF;EACvB,OAAO,MAAM,QAAQO,CAAK,IAAIA,EAAM,KAAKA;CAC1C,EACsB,CAAS,UAAU,GACnCiC,IAAkBD,UAAsBA,IAAgB,KAAA,GAExDE,KACJ,MAAM,QAAQvC,GAAQ,OAAO,IAAIA,EAAO,QAAQ,KAAKA,GAAQ,aAC7D,MAAM,QAAQA,GAAQ,MAAM,IAAIA,EAAO,OAAO,KAAKA,GAAQ,SAEvDwC,IAAgBC,SAAmC,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,GAExE,EAAE,iBAAc,eAAYC,EAA4B,EAAE,iBAAc,CAAC,GAEzEC,IAA4C,OAAO,MAAW;EACnE,MAAMC,EAAS,EAAE,UAAUC,EAAO,SAAS,CAAC;CAC7C,GAEMZ,IAAWa;CAEjB,OACC,kBAAC7E,GAAD;EACC,QAAQ,kBAAC,QAAD,CAAO,CAAA;EACf,KAAI;EACJ,IAAI8E;EACJ,UAAUC,EAAaL,CAAM;EAC7B,WAAU;EALX,UAAA,CAOE,EAAQJ,KACR,kBAACxE,GAAD;GACC,MAAK;GAEJ,UAAAwE;EACI,CAAA,GAGP,kBAACxD,GAAD;GACC,MAAK;GACI;GACT,OAAOuD;GACA;GACP,UAAA;GAEE,WAAA,GAAO,GAAQ,MAChB,kBAAC7D,GAAD;IACC,MAAK;IACL,OAAOqB,EAAM,SAAS;IACtB,UAAUA,EAAM;IAChB,QAAQA,EAAM;IACd,MAAMA,EAAM;IACH;IACC;IACV,WAAA;GACA,CAAA;EAEkB,CAAA,CACf;;AAET;AAEA,EAAsB,cAAc"}