themelia-react-ui 1.0.1 → 2.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 (640) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/README.md +67 -16
  3. package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
  4. package/dist/accordion-CQXVcd7Q.js.map +1 -0
  5. package/dist/action-menu-BTpyPWJ2.js +264 -0
  6. package/dist/action-menu-BTpyPWJ2.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
  8. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
  10. package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
  12. package/dist/app-shell-BE_j8-AT.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
  14. package/dist/attachment-q69dlt5Y.js.map +1 -0
  15. package/dist/auth-M3vGMgDR.js +723 -0
  16. package/dist/auth-M3vGMgDR.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
  18. package/dist/avatar-djdaaQ_s.js.map +1 -0
  19. package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
  20. package/dist/badge-0tATj-tW.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +33 -35
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +246 -222
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +94 -92
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +7 -4
  51. package/dist/base/qr-code.js.map +1 -1
  52. package/dist/base/repeaters.js +53 -53
  53. package/dist/base/repeaters.js.map +1 -1
  54. package/dist/base/sheet.js +1 -1
  55. package/dist/base/sidebar.js +1 -1
  56. package/dist/base/signature-pad.js +84 -82
  57. package/dist/base/signature-pad.js.map +1 -1
  58. package/dist/base/skeleton.js +1 -1
  59. package/dist/base/spinner.js +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +2 -2
  63. package/dist/base/toaster.js +7 -7
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/blocks/admin.js +228 -219
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +182 -212
  72. package/dist/blocks/ai.js.map +1 -1
  73. package/dist/blocks/analytics/usage-card.js +1 -1
  74. package/dist/blocks/analytics.js +665 -620
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +2 -2
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1439 -1553
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +1 -1
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +88 -97
  84. package/dist/blocks/planning.js.map +1 -1
  85. package/dist/blocks/timelines.js +1 -1
  86. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
  87. package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
  88. package/dist/button-BS3KDg00.js +674 -0
  89. package/dist/button-BS3KDg00.js.map +1 -0
  90. package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
  91. package/dist/button-R9CCoH7A.js.map +1 -0
  92. package/dist/buttons-DS0ZIwJ_.js +99 -0
  93. package/dist/buttons-DS0ZIwJ_.js.map +1 -0
  94. package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
  95. package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
  96. package/dist/chart-DwYRKKc-.js +152 -0
  97. package/dist/chart-DwYRKKc-.js.map +1 -0
  98. package/dist/checkbox-B7ygNTYp.js +35 -0
  99. package/dist/checkbox-B7ygNTYp.js.map +1 -0
  100. package/dist/choice-inputs-DrJ17tpL.js +752 -0
  101. package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
  102. package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
  103. package/dist/code-block-CD0B7M93.js.map +1 -0
  104. package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
  105. package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
  106. package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
  107. package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
  108. package/dist/combobox-6dvVny2q.js +272 -0
  109. package/dist/combobox-6dvVny2q.js.map +1 -0
  110. package/dist/combobox-CB7039j7.js +865 -0
  111. package/dist/combobox-CB7039j7.js.map +1 -0
  112. package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
  113. package/dist/command-kPMPjIxJ.js.map +1 -0
  114. package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
  115. package/dist/comments-You0Bzbr.js.map +1 -0
  116. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -2
  118. package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
  119. package/dist/components/base/badge/badge.d.ts +1 -1
  120. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  121. package/dist/components/base/buttons/base-button.d.ts +7 -0
  122. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  123. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  124. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  125. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  126. package/dist/components/base/buttons/text-button.d.ts +2 -2
  127. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  128. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  129. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  130. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  131. package/dist/components/base/carousel/carousel.d.ts +3 -1
  132. package/dist/components/base/chart/chart.d.ts +7 -7
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
  135. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  136. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  137. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  138. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  139. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  140. package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
  141. package/dist/components/base/display/alert-dialog.d.ts +8 -2
  142. package/dist/components/base/display/content-block.d.ts +4 -2
  143. package/dist/components/base/display/date-block.d.ts +1 -1
  144. package/dist/components/base/display/dialog.d.ts +12 -5
  145. package/dist/components/base/display/surface-title.d.ts +6 -1
  146. package/dist/components/base/feedback/alert.d.ts +1 -1
  147. package/dist/components/base/feedback/state-display.d.ts +5 -4
  148. package/dist/components/base/forms/form-field.d.ts +1 -0
  149. package/dist/components/base/forms/form-sizing.d.ts +35 -3
  150. package/dist/components/base/forms/workflow.d.ts +2 -0
  151. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  152. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  153. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  154. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  155. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  156. package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
  157. package/dist/components/base/navigation/tabs.d.ts +3 -5
  158. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  159. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  160. package/dist/components/base/sheet/index.d.ts +29 -1
  161. package/dist/components/base/sheet/sheet.d.ts +14 -5
  162. package/dist/components/base/spinner/spinner.d.ts +3 -2
  163. package/dist/components/base/structure/structure.types.d.ts +1 -1
  164. package/dist/components/base/table/index.d.ts +1 -1
  165. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  166. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  167. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  168. package/dist/components/base/upload/upload.recipes.d.ts +11 -0
  169. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  170. package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
  171. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  172. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  173. package/dist/components/blocks/analytics/index.d.ts +1 -1
  174. package/dist/components/blocks/analytics/types.d.ts +1 -1
  175. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  176. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  177. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  178. package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
  179. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  180. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  181. package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
  182. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  183. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  184. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  185. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
  186. package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
  187. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  188. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  190. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  191. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  192. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  193. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  194. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  195. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  196. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  197. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  198. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  199. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  200. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  201. package/dist/components/features/media-library/media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  203. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  204. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  205. package/dist/components/features/overlays/drawer.d.ts +1 -1
  206. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  207. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  208. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  209. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  210. package/dist/components/features/overlays/overlays.types.d.ts +46 -22
  211. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  212. package/dist/components/features/products/partials/index.d.ts +1 -1
  213. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  214. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  215. package/dist/components/features/products/products.types.d.ts +2 -1
  216. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  217. package/dist/components/features/table/data-table.d.ts +1 -1
  218. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  219. package/dist/components/features/table/table.types.d.ts +1 -1
  220. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  221. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  222. package/dist/components/layout/page/index.d.ts +1 -1
  223. package/dist/components/layout/page/page.d.ts +0 -1
  224. package/dist/components/layout/page/page.types.d.ts +62 -6
  225. package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
  226. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  227. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  228. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  229. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  230. package/dist/components/primitives/date.d.ts +16 -3
  231. package/dist/components/primitives/dimensions.d.ts +6 -0
  232. package/dist/components/primitives/duration.d.ts +6 -0
  233. package/dist/components/primitives/file-size.d.ts +6 -0
  234. package/dist/components/primitives/index.d.ts +1 -1
  235. package/dist/components/primitives/initials.d.ts +11 -2
  236. package/dist/components/primitives/link.d.ts +7 -0
  237. package/dist/components/primitives/money.d.ts +29 -7
  238. package/dist/components/primitives/number.d.ts +17 -0
  239. package/dist/components/primitives/value-typography.d.ts +54 -0
  240. package/dist/components/primitives/value.d.ts +31 -6
  241. package/dist/components/typography/heading.d.ts +13 -2
  242. package/dist/components/typography/index.d.ts +1 -1
  243. package/dist/components/typography/label.d.ts +3 -0
  244. package/dist/components/typography/running-text.d.ts +12 -0
  245. package/dist/components/typography/text-link.d.ts +23 -1
  246. package/dist/components/typography/text.d.ts +12 -0
  247. package/dist/components/typography/text.styles.d.ts +37 -5
  248. package/dist/components/ui/button.d.ts +1 -1
  249. package/dist/components/ui/checkbox.d.ts +5 -0
  250. package/dist/components/ui/overlay.recipes.d.ts +15 -2
  251. package/dist/components/ui/popover.d.ts +1 -1
  252. package/dist/components/ui/select.d.ts +3 -1
  253. package/dist/components/ui/sidebar.d.ts +1 -1
  254. package/dist/components/ui/switch.d.ts +5 -0
  255. package/dist/components/ui/table.d.ts +2 -1
  256. package/dist/container.recipes-D9t8MHR3.js +27 -0
  257. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  258. package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
  259. package/dist/containers-D_L4mTVb.js.map +1 -0
  260. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  261. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  262. package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
  263. package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
  264. package/dist/data-display-3xWQUnMA.js +1335 -0
  265. package/dist/data-display-3xWQUnMA.js.map +1 -0
  266. package/dist/date-picker-DrDFj8Lo.js +1527 -0
  267. package/dist/date-picker-DrDFj8Lo.js.map +1 -0
  268. package/dist/date-pickers-CnFCb0n2.js +174 -0
  269. package/dist/date-pickers-CnFCb0n2.js.map +1 -0
  270. package/dist/date-uf3z37Nm.js +144 -0
  271. package/dist/date-uf3z37Nm.js.map +1 -0
  272. package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
  273. package/dist/display-DrdvPwF0.js.map +1 -0
  274. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
  275. package/dist/dropdown-menu-CURh59jb.js.map +1 -0
  276. package/dist/features/activities.js +177 -163
  277. package/dist/features/activities.js.map +1 -1
  278. package/dist/features/ai-chat.js +187 -183
  279. package/dist/features/ai-chat.js.map +1 -1
  280. package/dist/features/async-preview.js +9 -9
  281. package/dist/features/async-preview.js.map +1 -1
  282. package/dist/features/combobox.js +1 -1
  283. package/dist/features/comments.js +1 -1
  284. package/dist/features/data-view.js +25 -23
  285. package/dist/features/data-view.js.map +1 -1
  286. package/dist/features/email-composer/engine.js +1 -1
  287. package/dist/features/email-composer.js +353 -355
  288. package/dist/features/email-composer.js.map +1 -1
  289. package/dist/features/event-calendar.js +346 -354
  290. package/dist/features/event-calendar.js.map +1 -1
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +225 -227
  293. package/dist/features/global-search.js.map +1 -1
  294. package/dist/features/kanban.js +29 -29
  295. package/dist/features/kanban.js.map +1 -1
  296. package/dist/features/map.js +59 -58
  297. package/dist/features/map.js.map +1 -1
  298. package/dist/features/media-library.js +898 -900
  299. package/dist/features/media-library.js.map +1 -1
  300. package/dist/features/mentions.js +1 -1
  301. package/dist/features/overlays.js +1 -1
  302. package/dist/features/products.js +1412 -1444
  303. package/dist/features/products.js.map +1 -1
  304. package/dist/features/questionnaire.js +51 -49
  305. package/dist/features/questionnaire.js.map +1 -1
  306. package/dist/features/resource-assignment.js +103 -97
  307. package/dist/features/resource-assignment.js.map +1 -1
  308. package/dist/features/resource.js +13 -13
  309. package/dist/features/resource.js.map +1 -1
  310. package/dist/features/rich-text-editor.js +2 -2
  311. package/dist/features/schema-form.js +187 -183
  312. package/dist/features/schema-form.js.map +1 -1
  313. package/dist/features/suggestions.js +3 -3
  314. package/dist/features/sync.js +7 -7
  315. package/dist/features/sync.js.map +1 -1
  316. package/dist/features/table.js +1 -1
  317. package/dist/features/theme-tweaker.js +508 -503
  318. package/dist/features/theme-tweaker.js.map +1 -1
  319. package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
  320. package/dist/feedback-C7nR0UtT.js.map +1 -0
  321. package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
  322. package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
  323. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
  324. package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
  325. package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
  326. package/dist/filters-Da-gNPsE.js.map +1 -0
  327. package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
  328. package/dist/form-field-VZRULhUK.js.map +1 -0
  329. package/dist/form-sizing-uWP4lzVh.js +126 -0
  330. package/dist/form-sizing-uWP4lzVh.js.map +1 -0
  331. package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
  332. package/dist/forms-DDeEnXSY.js.map +1 -0
  333. package/dist/forms-numeric-D3CO60IF.js +905 -0
  334. package/dist/forms-numeric-D3CO60IF.js.map +1 -0
  335. package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
  336. package/dist/header-2ycNqGOR.js.map +1 -0
  337. package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
  338. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
  339. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  340. package/dist/http-CdEIHyQf.js.map +1 -0
  341. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
  342. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
  343. package/dist/index.js +2 -2
  344. package/dist/input-BoLm9Hks.js +20 -0
  345. package/dist/input-BoLm9Hks.js.map +1 -0
  346. package/dist/input-DhQdBnV3.js +255 -0
  347. package/dist/input-DhQdBnV3.js.map +1 -0
  348. package/dist/item-xzh8Df65.js +264 -0
  349. package/dist/item-xzh8Df65.js.map +1 -0
  350. package/dist/layout/app-shell.js +1 -1
  351. package/dist/layout/auth.js +1 -1
  352. package/dist/layout/containers.js +1 -1
  353. package/dist/layout/header.js +1 -1
  354. package/dist/layout/hooks.js +1 -1
  355. package/dist/layout/navigation.js +1 -1
  356. package/dist/layout/page.js +1 -1
  357. package/dist/layout/settings.js +1 -1
  358. package/dist/layout/sidebar.js +2 -2
  359. package/dist/layout/workspace.js +1 -1
  360. package/dist/layout.js +10 -10
  361. package/dist/lib/affordance-geometry.generated.d.ts +46 -10
  362. package/dist/lib/control-group-recipes.d.ts +22 -0
  363. package/dist/lib/field-affordance-recipes.d.ts +70 -2
  364. package/dist/lib/field-state-recipes.d.ts +6 -4
  365. package/dist/lib/format.d.ts +9 -0
  366. package/dist/lib/money-format.d.ts +30 -0
  367. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  368. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
  369. package/dist/lib/surface-recipes.d.ts +13 -8
  370. package/dist/lib/token-merge.generated.d.ts +144 -2
  371. package/dist/lib/track-recipes.d.ts +1 -1
  372. package/dist/lib/ui-provider/provider.d.ts +7 -2
  373. package/dist/lib/ui-provider/store.d.ts +6 -2
  374. package/dist/lib/ui-provider/types.d.ts +9 -4
  375. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  376. package/dist/lib/utils.js +1 -1
  377. package/dist/media-gallery-DQUQ0m3O.js +201 -0
  378. package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
  379. package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
  380. package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
  381. package/dist/message-YfFmbXNP.js +127 -0
  382. package/dist/message-YfFmbXNP.js.map +1 -0
  383. package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
  384. package/dist/navigation-Cbp5V8gG.js.map +1 -0
  385. package/dist/navigation-Cs1npsPm.js +300 -0
  386. package/dist/navigation-Cs1npsPm.js.map +1 -0
  387. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
  388. package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
  389. package/dist/number-CKRBYmZK.js +352 -0
  390. package/dist/number-CKRBYmZK.js.map +1 -0
  391. package/dist/overlay.recipes-CNO2S9V6.js +34 -0
  392. package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
  393. package/dist/overlays-DhZO7N-I.js +994 -0
  394. package/dist/overlays-DhZO7N-I.js.map +1 -0
  395. package/dist/page-C6R_8jFt.js +325 -0
  396. package/dist/page-C6R_8jFt.js.map +1 -0
  397. package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
  398. package/dist/page-header-hUTzcRZX.js.map +1 -0
  399. package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
  400. package/dist/pagination-Cm0jqa3I.js.map +1 -0
  401. package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
  402. package/dist/popover-Dcv_9jxr.js.map +1 -0
  403. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
  404. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
  405. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
  406. package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
  407. package/dist/primitives-BHrwQXFC.js +379 -0
  408. package/dist/primitives-BHrwQXFC.js.map +1 -0
  409. package/dist/primitives.js +5 -5
  410. package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
  411. package/dist/progress-Br9WTFya.js.map +1 -0
  412. package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
  413. package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
  414. package/dist/rich-text-editor-CF8QYt5p.js +574 -0
  415. package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
  416. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
  417. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
  418. package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
  419. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
  420. package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
  421. package/dist/scroll-area-DRdr16Pt.js.map +1 -0
  422. package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
  423. package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
  424. package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
  425. package/dist/separator-Do5GWDYi.js.map +1 -0
  426. package/dist/services/actions/action-adapters.d.ts +4 -0
  427. package/dist/services/actions.js +8 -3
  428. package/dist/services/actions.js.map +1 -1
  429. package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
  430. package/dist/settings-DHk0L2MF.js.map +1 -0
  431. package/dist/sheet-DRFNY1_D.js +207 -0
  432. package/dist/sheet-DRFNY1_D.js.map +1 -0
  433. package/dist/sidebar-Cb8WzOvE.js +511 -0
  434. package/dist/sidebar-Cb8WzOvE.js.map +1 -0
  435. package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
  436. package/dist/sidebar-Crc9M9JV.js.map +1 -0
  437. package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
  438. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
  439. package/dist/smart-card-Bek-TwUp.js +599 -0
  440. package/dist/smart-card-Bek-TwUp.js.map +1 -0
  441. package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
  442. package/dist/spinner-CmTAbEp0.js.map +1 -0
  443. package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
  444. package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
  445. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  446. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  447. package/dist/style.css +1 -1
  448. package/dist/surface-recipes-DOdoBXGm.js +28 -0
  449. package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
  450. package/dist/table-D6zKeYQX.js +162 -0
  451. package/dist/table-D6zKeYQX.js.map +1 -0
  452. package/dist/table-Dn4XSrSB.js +1444 -0
  453. package/dist/table-Dn4XSrSB.js.map +1 -0
  454. package/dist/tabs-Dk8E_knt.js +189 -0
  455. package/dist/tabs-Dk8E_knt.js.map +1 -0
  456. package/dist/text-inputs-BFpku0Qd.js +331 -0
  457. package/dist/text-inputs-BFpku0Qd.js.map +1 -0
  458. package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
  459. package/dist/text.styles-g4He6UIW.js.map +1 -0
  460. package/dist/theme.css +90 -124
  461. package/dist/themes/green.css +24 -0
  462. package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
  463. package/dist/timelines-CxuAFIc2.js.map +1 -0
  464. package/dist/track-recipes-CDcKmndW.js +10 -0
  465. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  466. package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
  467. package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
  468. package/dist/typography/rich-text.js +1 -1
  469. package/dist/typography-CAr3dQhX.js +116 -0
  470. package/dist/typography-CAr3dQhX.js.map +1 -0
  471. package/dist/typography.js +2 -2
  472. package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
  473. package/dist/ui-provider-D2_TeLqw.js.map +1 -0
  474. package/dist/ui-provider.js +1 -1
  475. package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
  476. package/dist/upload-B0WHW7ak.js.map +1 -0
  477. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
  478. package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
  479. package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
  480. package/dist/usage-card-U0YBLTNT.js.map +1 -0
  481. package/dist/utils-Cospvlj1.js +4445 -0
  482. package/dist/utils-Cospvlj1.js.map +1 -0
  483. package/dist/value-inputs-CjfzGMsN.js +854 -0
  484. package/dist/value-inputs-CjfzGMsN.js.map +1 -0
  485. package/dist/value-typography-Deb3yQZg.js +116 -0
  486. package/dist/value-typography-Deb3yQZg.js.map +1 -0
  487. package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
  488. package/dist/workspace-YoFjXi6i.js.map +1 -0
  489. package/docs/consumer-skill/SKILL.md +123 -119
  490. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  491. package/docs/consumer-skill/examples/app-layout.tsx +42 -14
  492. package/docs/consumer-skill/examples/detail.tsx +20 -5
  493. package/docs/consumer-skill/examples/edit.tsx +1 -1
  494. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  495. package/docs/consumer-skill/examples/manifest.json +37 -3
  496. package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
  497. package/docs/consumer-skill/examples/website.tsx +56 -0
  498. package/docs/consumer-skill/references/analytics.md +70 -0
  499. package/docs/consumer-skill/references/composition.md +195 -9
  500. package/docs/consumer-skill/references/design-contract.md +33 -7
  501. package/docs/consumer-skill/references/discovery.md +80 -5
  502. package/docs/consumer-skill/references/installation.md +22 -0
  503. package/docs/consumer-skill/references/integration.md +46 -1
  504. package/docs/consumer-skill/references/public-api.json +2083 -237
  505. package/docs/consumer-skill/references/review.md +74 -6
  506. package/docs/consumer-skill/references/theming.md +59 -8
  507. package/docs/consumer-skill/references/tokens.json +180 -9
  508. package/docs/consumer-skill/references/workflows.md +34 -0
  509. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  510. package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
  511. package/docs/consumer-skill/scripts/discovery.mjs +69 -9
  512. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  513. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  514. package/package.json +11 -6
  515. package/dist/accordion-B-5Focs8.js.map +0 -1
  516. package/dist/action-menu-Cx3SdfbN.js +0 -265
  517. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  518. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  519. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  520. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  521. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  522. package/dist/attachment-BO2R47wn.js.map +0 -1
  523. package/dist/auth-OFwWSAap.js +0 -704
  524. package/dist/auth-OFwWSAap.js.map +0 -1
  525. package/dist/avatar-Bpzty83c.js.map +0 -1
  526. package/dist/badge-BZXZT9wd.js.map +0 -1
  527. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  528. package/dist/button-BS6l5JUw.js.map +0 -1
  529. package/dist/buttons-Co6GavvM.js +0 -674
  530. package/dist/buttons-Co6GavvM.js.map +0 -1
  531. package/dist/chart-DVfcwQu6.js +0 -149
  532. package/dist/chart-DVfcwQu6.js.map +0 -1
  533. package/dist/checkbox-BavDRjF7.js +0 -34
  534. package/dist/checkbox-BavDRjF7.js.map +0 -1
  535. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  536. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  537. package/dist/code-block-xHKbAJDj.js.map +0 -1
  538. package/dist/combobox-DEbdr-3u.js +0 -273
  539. package/dist/combobox-DEbdr-3u.js.map +0 -1
  540. package/dist/combobox-xv3yJbzl.js +0 -850
  541. package/dist/combobox-xv3yJbzl.js.map +0 -1
  542. package/dist/command-C0xe7u9B.js.map +0 -1
  543. package/dist/comments-DviPLnwy.js.map +0 -1
  544. package/dist/containers-6s-ucRQQ.js.map +0 -1
  545. package/dist/data-display-cWIRdeaf.js +0 -1129
  546. package/dist/data-display-cWIRdeaf.js.map +0 -1
  547. package/dist/date-BFNMnrS5.js +0 -140
  548. package/dist/date-BFNMnrS5.js.map +0 -1
  549. package/dist/date-picker-CA6ogMQB.js +0 -1521
  550. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  551. package/dist/date-pickers-BPIKLdsD.js +0 -224
  552. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  553. package/dist/display-CFM5myut.js.map +0 -1
  554. package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
  555. package/dist/feedback-DWUkgEjR.js.map +0 -1
  556. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  557. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  558. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  559. package/dist/filters-BhsUtsxW.js.map +0 -1
  560. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  561. package/dist/form-sizing-BWs70_a2.js +0 -100
  562. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  563. package/dist/format-iamDSqs2.js +0 -110
  564. package/dist/format-iamDSqs2.js.map +0 -1
  565. package/dist/forms-B7pzS25o.js.map +0 -1
  566. package/dist/forms-numeric-BUBxELBv.js +0 -867
  567. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  568. package/dist/header-C59QZyxV.js.map +0 -1
  569. package/dist/http-CLTVJc5I.js.map +0 -1
  570. package/dist/input-WwYQZJzG.js +0 -202
  571. package/dist/input-WwYQZJzG.js.map +0 -1
  572. package/dist/input-ci9fIgFH.js +0 -20
  573. package/dist/input-ci9fIgFH.js.map +0 -1
  574. package/dist/item-pJ0GsOiJ.js +0 -257
  575. package/dist/item-pJ0GsOiJ.js.map +0 -1
  576. package/dist/media-gallery-DhDRgnVZ.js +0 -200
  577. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  578. package/dist/message-COsdEvXT.js +0 -108
  579. package/dist/message-COsdEvXT.js.map +0 -1
  580. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  581. package/dist/navigation-DBEu4POU.js +0 -267
  582. package/dist/navigation-DBEu4POU.js.map +0 -1
  583. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  584. package/dist/number-BNT_BIzJ.js +0 -269
  585. package/dist/number-BNT_BIzJ.js.map +0 -1
  586. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  587. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  588. package/dist/overlays-B11wZka6.js +0 -982
  589. package/dist/overlays-B11wZka6.js.map +0 -1
  590. package/dist/page-BV6ioQg3.js +0 -202
  591. package/dist/page-BV6ioQg3.js.map +0 -1
  592. package/dist/page-header-DQRa0jug.js.map +0 -1
  593. package/dist/pagination-C29vvt3I.js.map +0 -1
  594. package/dist/popover-CoLDEg19.js.map +0 -1
  595. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  596. package/dist/primitives-DKPOGVpj.js +0 -330
  597. package/dist/primitives-DKPOGVpj.js.map +0 -1
  598. package/dist/progress-BOe8l_FZ.js.map +0 -1
  599. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  600. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  601. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  602. package/dist/scroll-area-BheMQ270.js.map +0 -1
  603. package/dist/select-B2mb-qN2.js +0 -108
  604. package/dist/select-B2mb-qN2.js.map +0 -1
  605. package/dist/separator-Gk_WXH-l.js.map +0 -1
  606. package/dist/settings-BnCyyPOJ.js.map +0 -1
  607. package/dist/sheet-B-q914Ad.js +0 -205
  608. package/dist/sheet-B-q914Ad.js.map +0 -1
  609. package/dist/sidebar-C_2p3Tfj.js +0 -501
  610. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  611. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  612. package/dist/smart-card-CYLn46e6.js +0 -578
  613. package/dist/smart-card-CYLn46e6.js.map +0 -1
  614. package/dist/spinner-BY9HbUEh.js.map +0 -1
  615. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  616. package/dist/surface-recipes-CQfRr-VL.js +0 -27
  617. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  618. package/dist/table-BS39xnlq.js +0 -1424
  619. package/dist/table-BS39xnlq.js.map +0 -1
  620. package/dist/table-DnlAJ-xR.js +0 -146
  621. package/dist/table-DnlAJ-xR.js.map +0 -1
  622. package/dist/tabs-B5cNMWiP.js +0 -187
  623. package/dist/tabs-B5cNMWiP.js.map +0 -1
  624. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  625. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  626. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  627. package/dist/timelines-B9ICkQcV.js.map +0 -1
  628. package/dist/track-recipes-LLPNVwFg.js +0 -10
  629. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  630. package/dist/typography-Cv8MT-82.js +0 -96
  631. package/dist/typography-Cv8MT-82.js.map +0 -1
  632. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  633. package/dist/upload-D8Za5x_c.js.map +0 -1
  634. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  635. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  636. package/dist/utils-C2EKeIw3.js +0 -72
  637. package/dist/utils-C2EKeIw3.js.map +0 -1
  638. package/dist/value-inputs-DX2dbxjj.js +0 -824
  639. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  640. package/dist/workspace-C1PZmk8L.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"inline-edit.js","names":["React","useDensityConfig","cn","affordanceGeometry","Button","Grid","Stack","editableTextSizeClasses","formControlMinHeightClasses","formFieldTriggerClasses","formControlIconClasses","resolveFormControlSize","Input","Textarea","FormField","React$1","inlineEditRecipes","defaultInlineEditStrings","InlineEdit","valueProp","editingProp","stringsProp","sizeProp","providedId","rootProps","generatedId","id","supportingId","strings","useStrings","size","defaultScale","localValue","setLocalValue","defaultValue","value","localEditing","setLocalEditing","defaultEditing","editing","readOnly","disabled","draft","setDraft","error","setError","saving","setSaving","editorRef","triggerRef","pending","generation","latest","previous","restoreFocus","invalidate","entering","replaced","requestEditing","next","onEditingChange","dismiss","save","loading","nextValue","controller","version","committedAtStart","current","validationError","required","validate","onSave","onValueChange","cause","onKeyDown","event","multiline","support","description","accessibleName","label","editLabel","display","renderValue","Text","placeholder","displayClasses","editorProps","clearable","invalid","className","name","textareaProps","inputProps","LoaderCircle","PencilIcon","CheckIcon","XIcon"],"sources":["../../src/components/base/inline-edit/inline-edit.recipes.ts","../../src/components/base/inline-edit/inline-edit.tsx"],"sourcesContent":["/** Private field/action layout; geometry remains generated from shared roots. */\nexport const inlineEditRecipes = {\n\tframe: 'transition-[grid-template-columns,column-gap] duration-180 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n\tclosedColumns: 'grid-cols-[minmax(0,1fr)_0px]',\n\tactionsTrack: 'min-w-0 flex items-center justify-end overflow-hidden focus-within:overflow-visible transition-opacity duration-180 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n} as const;\n","import * as React from 'react';\nimport { CheckIcon, LoaderCircle, PencilIcon, XIcon } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { affordanceGeometry } from '../../../lib/affordance-geometry.generated';\nimport { editableTextSizeClasses } from '../../../lib/editable-text-recipe';\nimport { useDensityConfig } from '../../../lib/ui-provider';\nimport { formControlIconClasses, formControlMinHeightClasses, formFieldTriggerClasses, resolveFormControlSize } from '../forms/form-sizing';\nimport { Button } from '../buttons';\nimport { FormField } from '../forms/form-field';\nimport { Grid, Stack } from '../structure';\nimport { Input, Textarea, type InputProps, type TextareaProps } from '../text-inputs';\nimport { Text } from '../../typography';\nimport { inlineEditRecipes } from './inline-edit.recipes';\n\nexport interface InlineEditStrings {\n\t/** Accessible name of the edit action when editLabel is absent. */\n\tedit: string;\n\t/** Accessible name of the save action. */\n\tsave: string;\n\t/** Accessible name of the cancel action, including while saving. */\n\tcancel: string;\n\t/** Live announcement and save action name during persistence. */\n\tsaving: string;\n\t/** Validation copy for a required empty value. */\n\trequired: string;\n\t/** Fallback copy for a rejected save without an Error message. */\n\tsaveError: string;\n\t/** Display copy for an empty value when placeholder is absent. */\n\tempty: string;\n}\n\nexport const defaultInlineEditStrings: InlineEditStrings = {\n\tedit: 'Edit value', save: 'Save changes', cancel: 'Cancel editing',\n\tsaving: 'Saving changes', required: 'Enter a value.',\n\tsaveError: 'Unable to save. Try again.', empty: 'Add a value',\n};\n\nexport interface InlineEditSaveContext {\n\t/** Aborted on cancel, unmount, external value replacement, or external dismissal. */\n\tsignal: AbortSignal;\n}\n\ntype SharedControlProps = Pick<InputProps, 'size' | 'invalid' | 'loading' | 'clearable' | 'onClear' | 'showCharacterCount'>;\ntype OwnedEditorProps = keyof SharedControlProps | 'value' | 'defaultValue' | 'onChange' | 'ref' | 'id' | 'name' | 'form' | 'required' | 'disabled' | 'readOnly' | 'placeholder' | 'autoComplete' | 'maxLength' | 'rows' | 'returnValueWithAddons';\n\nexport interface InlineEditProps extends SharedControlProps, Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'defaultValue' | 'onChange'> {\n\t/** Native Input attributes, adornments and strings. Draft/state ownership stays with InlineEdit. */\n\tinputProps?: Omit<InputProps, OwnedEditorProps>;\n\t/** Native Textarea attributes, resizing options and strings. Draft/state ownership stays with InlineEdit. */\n\ttextareaProps?: Omit<TextareaProps, OwnedEditorProps>;\n\t/** Committed value. Draft edits remain local until save succeeds. */\n\tvalue?: string;\n\t/** Initial committed value for uncontrolled usage. */\n\tdefaultValue?: string;\n\t/** Called with the new committed value after a successful changed save. */\n\tonValueChange?: (value: string) => void;\n\t/** Controlled editor visibility. */\n\tediting?: boolean;\n\t/** Initial visibility for uncontrolled usage. */\n\tdefaultEditing?: boolean;\n\t/** Requests a visibility change; controlled parents must update editing. */\n\tonEditingChange?: (editing: boolean) => void;\n\t/** Uses Textarea. Plain Enter inserts a newline; Ctrl/Cmd+Enter saves. */\n\tmultiline?: boolean;\n\t/** Field caption above both presentation and editing states. */\n\tlabel?: React.ReactNode;\n\t/** Supporting copy, replaced by a validation or save error when present. */\n\tdescription?: React.ReactNode;\n\t/** Empty display copy and editor placeholder. */\n\tplaceholder?: string;\n\t/** Accessible edit action name, useful when the display is a title. */\n\teditLabel?: string;\n\t/** Custom passive display content. Do not nest interactive elements. */\n\trenderValue?: (value: string) => React.ReactNode;\n\t/** Prevents editing and disables the edit action. */\n\tdisabled?: boolean;\n\t/** Renders passive content with no edit action. */\n\treadOnly?: boolean;\n\t/** Save-time validation for an empty draft; marks the editor aria-required without constraining the parent form. */\n\trequired?: boolean;\n\t/** Return an error message to keep the draft open without calling onSave. */\n\tvalidate?: (value: string) => string | undefined | null;\n\t/** Persist the draft; rejection keeps it open for correction or retry. */\n\tonSave?: (value: string, context: InlineEditSaveContext) => void | Promise<void>;\n\t/** Native form field name. Only the committed value is submitted. */\n\tname?: string;\n\t/** Associates the committed hidden field with a native form. */\n\tform?: string;\n\t/** Native editor autocomplete hint. */\n\tautoComplete?: string;\n\t/** Maximum editor character count. */\n\tmaxLength?: number;\n\t/** Native Textarea row count. */\n\trows?: number;\n\t/** Localized component copy. */\n\tstrings?: StringsProp<InlineEditStrings>;\n}\n\n/** Inline text editing with an isolated draft and explicit, cancellable saves. */\nexport const InlineEdit = React.forwardRef<HTMLDivElement, InlineEditProps>(function InlineEdit({\n\tvalue: valueProp, defaultValue = '', onValueChange,\n\tediting: editingProp, defaultEditing = false, onEditingChange,\n\tmultiline = false, label, description, placeholder, editLabel, renderValue,\n\tdisabled = false, readOnly = false, required = false, validate, onSave,\n\tname, form, autoComplete, maxLength, rows = 3, strings: stringsProp,\n\tsize: sizeProp, invalid = false, loading = false, clearable, onClear, showCharacterCount, inputProps, textareaProps,\n\tid: providedId, className, ...rootProps\n}, ref) {\n\tconst generatedId = React.useId();\n\tconst id = providedId ?? `inline-edit-${generatedId}`;\n\tconst supportingId = `${id}-supporting`;\n\tconst strings = useStrings(defaultInlineEditStrings, stringsProp);\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveFormControlSize(sizeProp, defaultScale);\n\tconst [localValue, setLocalValue] = React.useState(defaultValue);\n\tconst value = valueProp ?? localValue;\n\tconst [localEditing, setLocalEditing] = React.useState(defaultEditing);\n\tconst editing = (editingProp ?? localEditing) && !readOnly && !disabled;\n\tconst [draft, setDraft] = React.useState(value);\n\tconst [error, setError] = React.useState<string>();\n\tconst [saving, setSaving] = React.useState(false);\n\tconst editorRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n\tconst triggerRef = React.useRef<HTMLButtonElement>(null);\n\tconst pending = React.useRef<AbortController | null>(null);\n\tconst generation = React.useRef(0);\n\tconst latest = React.useRef({ value, editing });\n\tlatest.current = { value, editing };\n\tconst previous = React.useRef({ value, editing: false });\n\tconst restoreFocus = React.useRef(false);\n\n\tfunction invalidate() {\n\t\tgeneration.current += 1;\n\t\tpending.current?.abort();\n\t\tpending.current = null;\n\t}\n\n\tReact.useLayoutEffect(() => {\n\t\tconst entering = editing && !previous.current.editing;\n\t\tconst replaced = value !== previous.current.value;\n\t\tif (!editing || entering || replaced) {\n\t\t\tinvalidate();\n\t\t\tsetDraft(value);\n\t\t\tsetError(undefined);\n\t\t\tsetSaving(false);\n\t\t}\n\t\tif (entering) editorRef.current?.focus();\n\t\tif (!editing && restoreFocus.current) {\n\t\t\ttriggerRef.current?.focus();\n\t\t\trestoreFocus.current = false;\n\t\t}\n\t\tprevious.current = { value, editing };\n\t}, [value, editing]);\n\n\tReact.useEffect(() => () => { invalidate(); }, []);\n\n\tfunction requestEditing(next: boolean) {\n\t\tif (editingProp === undefined) setLocalEditing(next);\n\t\tonEditingChange?.(next);\n\t}\n\n\tfunction dismiss() {\n\t\tinvalidate();\n\t\tsetSaving(false);\n\t\tsetDraft(value);\n\t\tsetError(undefined);\n\t\trestoreFocus.current = true;\n\t\trequestEditing(false);\n\t}\n\n\tasync function save() {\n\t\tif (pending.current || !editing || loading) return;\n\t\tif (draft === value) { dismiss(); return; }\n\t\tconst nextValue = draft;\n\t\tconst controller = new AbortController();\n\t\tconst version = ++generation.current;\n\t\tconst committedAtStart = value;\n\t\tconst current = () => !controller.signal.aborted && generation.current === version\n\t\t\t&& latest.current.editing && latest.current.value === committedAtStart;\n\t\ttry {\n\t\t\tconst validationError = (required && !nextValue.trim() ? strings.required : validate?.(nextValue))\n\t\t\t\t|| (editorRef.current && !editorRef.current.checkValidity() ? editorRef.current.validationMessage : undefined);\n\t\t\tif (validationError) {\n\t\t\t\tsetError(validationError);\n\t\t\t\teditorRef.current?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetError(undefined);\n\t\t\tpending.current = controller;\n\t\t\tsetSaving(true);\n\t\t\t// Keep keyboard cancellation inside the editor when the save action disables.\n\t\t\teditorRef.current?.focus();\n\t\t\tawait onSave?.(nextValue, { signal: controller.signal });\n\t\t\tif (!current()) return;\n\t\t\tpending.current = null;\n\t\t\tsetSaving(false);\n\t\t\tif (valueProp === undefined) setLocalValue(nextValue);\n\t\t\tonValueChange?.(nextValue);\n\t\t\trestoreFocus.current = true;\n\t\t\trequestEditing(false);\n\t\t} catch (cause) {\n\t\t\tif (!current()) return;\n\t\t\tpending.current = null;\n\t\t\tsetSaving(false);\n\t\t\tsetError(cause instanceof Error && cause.message ? cause.message : strings.saveError);\n\t\t\teditorRef.current?.focus();\n\t\t}\n\t}\n\n\tfunction onKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n\t\tif (!editing || event.defaultPrevented || event.nativeEvent.isComposing) return;\n\t\tif (event.key === 'Escape') {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tdismiss();\n\t\t} else if (event.key === 'Enter' && event.target === editorRef.current\n\t\t\t&& (!multiline || event.ctrlKey || event.metaKey)) {\n\t\t\tevent.preventDefault();\n\t\t\tvoid save();\n\t\t}\n\t}\n\n\tconst support = error || description;\n\tconst accessibleName = rootProps['aria-label'] ?? (typeof label === 'string' ? label : label ? undefined : editLabel ?? strings.edit);\n\tconst display = renderValue?.(value) ?? <Text tag=\"span\" size=\"inherit\" type={value ? 'main' : 'secondary'} className={cn('min-w-0', multiline ? 'whitespace-pre-wrap break-words' : 'truncate')}>{value || placeholder || strings.empty}</Text>;\n\tconst displayClasses = cn(formFieldTriggerClasses(size), editableTextSizeClasses[size], '!h-auto',\n\t\tmultiline ? ['items-start px-control py-control-y-offset', size === 'sm' ? 'min-h-textarea-sm' : 'min-h-textarea'] : formControlMinHeightClasses[size]);\n\tconst editorProps = {\n\t\tid, value: draft, onChange: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n\t\t\tif (!saving) { setDraft(event.target.value); setError(undefined); }\n\t\t},\n\t\t// Uncommitted controls must not validate or submit the surrounding native form.\n\t\tform: `inline-edit-draft-${generatedId}`,\n\t\tplaceholder, autoComplete, maxLength, size, loading, clearable: clearable && !saving, onClear, showCharacterCount,\n\t\t'aria-required': required || undefined, readOnly: saving,\n\t\tinvalid: invalid || Boolean(error), 'aria-label': accessibleName, 'aria-labelledby': rootProps['aria-labelledby'],\n\t\t'aria-describedby': support ? supportingId : undefined,\n\t\t'aria-errormessage': error ? supportingId : undefined,\n\t};\n\n\treturn <FormField {...rootProps} ref={ref} id={`${id}-root`} label={label} htmlFor={id}\n\t\trequired={required} helperText={description} error={editing ? error : undefined}\n\t\tsupportingTextId={supportingId} className={cn('inline-edit--component min-w-0', className)}\n\t\tdata-editing={editing || undefined} data-saving={saving || undefined} aria-busy={loading || saving || undefined}>\n\t\t\t{name && <input type=\"hidden\" name={name} form={form} value={value} disabled={disabled} />}\n\t\t\t{readOnly ? <div id={id} className={cn('inline-edit--value min-w-0', displayClasses)} aria-invalid={invalid || undefined}>{display}</div> : <Grid columns={1} gap={editing ? 'lg' : 'none'} align=\"center\"\n\t\t\t\tclassName={cn('inline-edit--frame', editing && 'inline-edit--editor', inlineEditRecipes.frame,\n\t\t\t\t\tediting ? affordanceGeometry.inlineEditColumns[multiline ? 'multiline' : 'single'] : inlineEditRecipes.closedColumns)}\n\t\t\t\tonKeyDown={onKeyDown} aria-busy={saving || undefined}>\n\t\t\t\t<div className=\"inline-edit--field min-w-0\">\n\t\t\t\t\t{editing ? (multiline ? <Textarea {...textareaProps} {...editorProps} rows={rows} ref={editorRef as React.Ref<HTMLTextAreaElement>} />\n\t\t\t\t\t\t: <Input {...inputProps} {...editorProps} ref={editorRef as React.Ref<HTMLInputElement>} />)\n\t\t\t\t\t\t: <Button id={id} ref={triggerRef} type=\"button\" tone=\"neutral\" buttonStyle=\"ghost\" fullWidth\n\t\t\t\t\t\t\tdisabled={disabled || loading} aria-invalid={invalid || undefined} aria-label={editLabel ?? (typeof label === 'string' ? `${strings.edit}: ${label}` : strings.edit)} aria-describedby={description ? supportingId : undefined}\n\t\t\t\t\t\t\tonClick={() => requestEditing(true)}\n\t\t\t\t\t\t\tclassName={cn('inline-edit--trigger group justify-between whitespace-normal text-start', displayClasses)}>\n\t\t\t\t\t\t\t{display}\n\t\t\t\t\t\t\t{loading ? <LoaderCircle aria-hidden=\"true\" className={cn(formControlIconClasses[size], 'self-center animate-spin motion-reduce:animate-none')} /> : <PencilIcon aria-hidden=\"true\" className=\"size-icon-sm self-center shrink-0 text-muted-foreground opacity-0 transition-opacity duration-150 motion-reduce:transition-none pointer-coarse:opacity-100 [@media(hover:none)]:opacity-100 group-hover:opacity-100 group-focus-visible:opacity-100\" />}\n\t\t\t\t\t\t</Button>}\n\t\t\t\t</div>\n\t\t\t\t<div aria-hidden={!editing || undefined} inert={!editing || undefined}\n\t\t\t\t\tclassName={cn(inlineEditRecipes.actionsTrack, editing ? 'opacity-100' : 'pointer-events-none opacity-0')}>\n\t\t\t\t<Stack direction={multiline ? 'vertical' : 'horizontal'} gap=\"xs\" wrap={false} className=\"inline-edit--actions shrink-0\">\n\t\t\t\t\t<Button type=\"button\" size=\"sm\" iconOnly tone=\"primary\" buttonStyle=\"solid\"\n\t\t\t\t\t\taria-label={saving ? strings.saving : strings.save} disabled={!editing || saving || loading} aria-busy={saving || undefined} onClick={() => { void save(); }}>\n\t\t\t\t\t\t{saving ? <LoaderCircle aria-hidden=\"true\" className=\"size-icon-sm animate-spin motion-reduce:animate-none\" /> : <CheckIcon aria-hidden=\"true\" className=\"size-icon-sm\" />}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button type=\"button\" size=\"sm\" iconOnly tone=\"neutral\" buttonStyle=\"ghost\"\n\t\t\t\t\t\taria-label={strings.cancel} disabled={!editing} onClick={dismiss}><XIcon aria-hidden=\"true\" className=\"size-icon-sm\" /></Button>\n\t\t\t\t</Stack>\n\t\t\t\t</div>\n\t\t\t\t{saving && <Text tag=\"span\" role=\"status\" className=\"sr-only\">{strings.saving}</Text>}\n\t\t\t</Grid>}\n\t</FormField>;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAagB,IAAoB;CAChC,OAAO;CACP,eAAe;CACf,cAAc;AACf,GC2BaC,IAA8C;CAC1D,MAAM;CAAc,MAAM;CAAgB,QAAQ;CAClD,QAAQ;CAAkB,UAAU;CACpC,WAAW;CAA8B,OAAO;AACjD,GAgEaC,IAAalB,EAAM,WAA4C,SAAoB,EAC/F,OAAOmB,GAAW,mBAAe,IAAI,mBACrC,SAASC,GAAa,qBAAiB,IAAO,qBAC9C,eAAY,IAAO,UAAO,gBAAa,gBAAa,cAAW,iBAC/D,cAAW,IAAO,cAAW,IAAO,cAAW,IAAO,cAAU,YAChE,SAAM,UAAM,kBAAc,eAAW,WAAO,GAAG,SAASC,IACxD,MAAMC,IAAU,aAAU,IAAO,aAAU,IAAO,eAAW,aAAS,wBAAoB,gBAAY,mBACtG,IAAIC,IAAY,eAAW,GAAGC,KAC5B,IAAK;CACP,IAAMC,IAAczB,EAAM,MAAM,GAC1B0B,IAAKH,MAAc,eAAeE,KAClCE,IAAe,GAAGD,EAAG,cACrBE,IAAUC,EAAWZ,GAA0BI,EAAW,GAC1D,EAAE,qBAAiBpB,EAAiB,GACpC6B,IAAOnB,GAAuBW,IAAUS,EAAY,GACpD,CAACC,IAAYC,KAAiBjC,EAAM,SAASkC,EAAY,GACzDC,IAAQhB,KAAaa,IACrB,CAACI,IAAcC,MAAmBrC,EAAM,SAASsC,EAAc,GAC/DC,KAAWnB,KAAegB,OAAiB,CAACI,KAAY,CAACC,GACzD,CAACC,GAAOC,KAAY3C,EAAM,SAASmC,CAAK,GACxC,CAACS,GAAOC,KAAY7C,EAAM,SAAiB,GAC3C,CAAC8C,GAAQC,KAAa/C,EAAM,SAAS,EAAK,GAC1CgD,IAAYhD,EAAM,OAA+C,IAAI,GACrEiD,IAAajD,EAAM,OAA0B,IAAI,GACjDkD,IAAUlD,EAAM,OAA+B,IAAI,GACnDmD,IAAanD,EAAM,OAAO,CAAC,GAC3BoD,IAASpD,EAAM,OAAO;EAAE;EAAO;CAAQ,CAAC;CAC9C,EAAO,UAAU;EAAE;EAAO;CAAQ;CAClC,IAAMqD,IAAWrD,EAAM,OAAO;EAAE;EAAO,SAAS;CAAM,CAAC,GACjDsD,IAAetD,EAAM,OAAO,EAAK;CAEvC,SAASuD,IAAa;EAGrB,AAFA,EAAW,WAAW,GACtBL,EAAQ,SAAS,MAAM,GACvB,EAAQ,UAAU;CACnB;CAmBA,AAjBAnC,EAAM,sBAAsB;EAC3B,IAAMyC,IAAWjB,KAAW,CAACc,EAAS,QAAQ,SACxCI,IAAWtB,MAAUkB,EAAS,QAAQ;EAY5C,CAXI,CAACd,KAAWiB,KAAYC,OAC3BF,EAAW,GACXZ,EAASR,CAAK,GACdU,EAAS,KAAA,CAAS,GAClBE,EAAU,EAAK,IAEZS,KAAUR,EAAU,SAAS,MAAM,GACnC,CAACT,KAAWe,EAAa,YAC5BL,EAAW,SAAS,MAAM,GAC1B,EAAa,UAAU,KAExB,EAAS,UAAU;GAAE;GAAO;EAAQ;CACrC,GAAG,CAACd,GAAOI,CAAO,CAAC,GAEnBxB,EAAM,sBAAsB;EAAE,EAAW;CAAG,GAAG,CAAC,CAAC;CAEjD,SAAS2C,EAAe,GAAe;EAEtC,AADItC,MAAgB,KAAA,KAAWiB,GAAgBsB,CAAI,GACnDC,KAAkBD,CAAI;CACvB;CAEA,SAASE,IAAU;EAMlB,AALAN,EAAW,GACXR,EAAU,EAAK,GACfJ,EAASR,CAAK,GACdU,EAAS,KAAA,CAAS,GAClB,EAAa,UAAU,IACvBa,EAAe,EAAK;CACrB;CAEA,eAAeI,IAAO;EACrB,IAAIZ,EAAQ,WAAW,CAACX,KAAWwB,GAAS;EAC5C,IAAIrB,MAAUP,GAAO;GAAE,EAAQ;GAAG;EAAQ;EAC1C,IAAM6B,IAAYtB,GACZuB,IAAa,IAAI,gBAAgB,GACjCC,IAAU,EAAEf,EAAW,SACvBgB,IAAmBhC,GACnBiC,UAAgB,CAACH,EAAW,OAAO,WAAWd,EAAW,YAAYe,KACvEd,EAAO,QAAQ,WAAWA,EAAO,QAAQ,UAAUe;EACvD,IAAI;GACH,IAAME,KAAmBC,KAAY,CAACN,EAAU,KAAK,IAAIpC,EAAQ,WAAW2C,KAAWP,CAAS,OAC3FhB,EAAU,WAAW,CAACA,EAAU,QAAQ,cAAc,IAAIA,EAAU,QAAQ,oBAAoB,KAAA;GACrG,IAAIqB,GAAiB;IAEpB,AADAxB,EAASwB,CAAe,GACxBrB,EAAU,SAAS,MAAM;IACzB;GACD;GAOA,IANAH,EAAS,KAAA,CAAS,GAClB,EAAQ,UAAUoB,GAClBlB,EAAU,EAAI,GAEdC,EAAU,SAAS,MAAM,GACzB,MAAMwB,KAASR,GAAW,EAAE,QAAQC,EAAW,OAAO,CAAC,GACnD,CAACG,EAAQ,GAAG;GAMhB,AALA,EAAQ,UAAU,MAClBrB,EAAU,EAAK,GACX5B,MAAc,KAAA,KAAWc,EAAc+B,CAAS,GACpDS,KAAgBT,CAAS,GACzB,EAAa,UAAU,IACvBN,EAAe,EAAK;EACrB,SAASgB,GAAO;GACf,IAAI,CAACN,EAAQ,GAAG;GAIhB,AAHA,EAAQ,UAAU,MAClBrB,EAAU,EAAK,GACfF,EAAS6B,aAAiB,SAASA,EAAM,UAAUA,EAAM,UAAU9C,EAAQ,SAAS,GACpFoB,EAAU,SAAS,MAAM;EAC1B;CACD;CAEA,SAAS2B,GAAU,GAA4C;EAC9D,AAAI,CAACpC,KAAWqC,EAAM,oBAAoBA,EAAM,YAAY,gBACxDA,EAAM,QAAQ,YACjBA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GACtBf,EAAQ,KACEe,EAAM,QAAQ,WAAWA,EAAM,WAAW5B,EAAU,YAC1D,CAAC6B,KAAaD,EAAM,WAAWA,EAAM,aACzCA,EAAM,eAAe,GACrBd,EAAU;CAEZ;CAEA,IAAMgB,KAAUlC,KAASmC,GACnBC,KAAiBxD,EAAU,kBAAkB,OAAOyD,KAAU,WAAWA,IAAQA,IAAQ,KAAA,IAAYC,KAAatD,EAAQ,OAC1HuD,IAAUC,KAAcjD,CAAK,KAAK,kBAACkD,GAAD;EAAM,KAAI;EAAO,MAAK;EAAU,MAAMlD,IAAQ,SAAS;EAAa,WAAWjC,EAAG,WAAW2E,IAAY,oCAAoC,UAAU;EAAI,UAAA1C,KAASmD,KAAe1D,EAAQ;CAAY,CAAA,GACzO2D,IAAiBrF,EAAGO,GAAwBqB,CAAI,GAAGvB,GAAwBuB,IAAO,WACvF+C,IAAY,CAAC,8CAA8C/C,MAAS,OAAO,sBAAsB,gBAAgB,IAAItB,GAA4BsB,EAAK,GACjJ0D,IAAc;EACnB;EAAI,OAAO9C;EAAO,WAAW,MAAqE;GACjG,AAAKI,MAAUH,EAASiC,EAAM,OAAO,KAAK,GAAG/B,EAAS,KAAA,CAAS;EAChE;EAEA,MAAM,qBAAqBpB;EAC3B;EAAa;EAAc;EAAW;EAAM;EAAS,WAAWgE,MAAa,CAAC3C;EAAQ;EAAS;EAC/F,iBAAiBwB,KAAY,KAAA;EAAW,UAAUxB;EAClD,SAAS4C,KAAW,EAAQ9C;EAAQ,cAAcoC;EAAgB,mBAAmBxD,EAAU;EAC/F,oBAAoBsD,KAAUnD,IAAe,KAAA;EAC7C,qBAAqBiB,IAAQjB,IAAe,KAAA;CAC7C;CAEA,OAAO,kBAACb,IAAD;EAAW,GAAIU;EAAgB;EAAK,IAAI,GAAGE,EAAG;EAAe;EAAO,SAASA;EACzE;EAAU,YAAYqD;EAAa,OAAOxC,IAAUK,IAAQ,KAAA;EACtE,kBAAkBjB;EAAc,WAAWzB,EAAG,kCAAkCyF,EAAS;EACzF,gBAAcpD,KAAW,KAAA;EAAW,eAAaO,KAAU,KAAA;EAAW,aAAWiB,KAAWjB,KAAU,KAAA;EAHhG,UAAA,CAIJ8C,KAAQ,kBAAC,SAAD;GAAO,MAAK;GAAe;GAAY;GAAa;GAAiB;EAAW,CAAA,GACxFpD,IAAW,kBAAC,OAAD;GAAS;GAAI,WAAWtC,EAAG,8BAA8BqF,CAAc;GAAG,gBAAcG,KAAW,KAAA;GAAY,UAAAP;EAAa,CAAA,IAAI,kBAAC9E,IAAD;GAAM,SAAS;GAAG,KAAKkC,IAAU,OAAO;GAAQ,OAAM;GACjM,WAAWrC,EAAG,sBAAsBqC,KAAW,uBAAuBvB,EAAkB,OACvFuB,IAAUpC,EAAmB,kBAAkB0E,IAAY,cAAc,YAAY7D,EAAkB,aAAa;GAC1G;GAAW,aAAW8B,KAAU,KAAA;GAHgG,UAAA;IAI3I,kBAAC,OAAD;KAAK,WAAU;KACb,UAAAP,IAAWsC,IAAY,kBAAChE,IAAD;MAAU,GAAIgF;MAAe,GAAIL;MAAmB;MAAM,KAAKxC;KAA8C,CAAA,IAClI,kBAACpC,IAAD;MAAO,GAAIkF;MAAY,GAAIN;MAAa,KAAKxC;KAA2C,CAAA,IACxF,kBAAC5C,GAAD;MAAY;MAAI,KAAK6C;MAAY,MAAK;MAAS,MAAK;MAAU,aAAY;MAAQ,WAAA;MACnF,UAAUR,KAAYsB;MAAS,gBAAc2B,KAAW,KAAA;MAAW,cAAYR,MAAc,OAAOD,KAAU,WAAW,GAAGrD,EAAQ,KAAK,IAAIqD,MAAUrD,EAAQ;MAAO,oBAAkBmD,IAAcpD,IAAe,KAAA;MACrN,eAAe+B,EAAe,EAAI;MAClC,WAAWxD,EAAG,2EAA2EqF,CAAc;MAHtG,UAAA,CAIAJ,GACApB,IAAU,kBAACgC,GAAD;OAAc,eAAY;OAAO,WAAW7F,EAAGQ,GAAuBoB,IAAO,qDAAqD;MAAI,CAAA,IAAI,kBAACkE,IAAD;OAAY,eAAY;OAAO,WAAU;MAAuP,CAAA,CAC9a;;IACL,CAAA;IACL,kBAAC,OAAD;KAAK,eAAa,CAACzD,KAAW,KAAA;KAAW,OAAO,CAACA,KAAW,KAAA;KAC3D,WAAWrC,EAAGc,EAAkB,cAAcuB,IAAU,gBAAgB,+BAA+B;KACxG,UAAA,kBAACjC,IAAD;MAAO,WAAWuE,IAAY,aAAa;MAAc,KAAI;MAAK,MAAM;MAAO,WAAU;MAAzF,UAAA,CACC,kBAACzE,GAAD;OAAQ,MAAK;OAAS,MAAK;OAAK,UAAA;OAAS,MAAK;OAAU,aAAY;OACnE,cAAY0C,IAASlB,EAAQ,SAASA,EAAQ;OAAM,UAAU,CAACW,KAAWO,KAAUiB;OAAS,aAAWjB,KAAU,KAAA;OAAW,eAAe;QAAE,EAAU;OAAG;OAC1J,UAAAA,IAAS,kBAACiD,GAAD;QAAc,eAAY;QAAO,WAAU;OAAwD,CAAA,IAAI,kBAACE,IAAD;QAAW,eAAY;QAAO,WAAU;OAAgB,CAAA;MAClK,CAAA,GACR,kBAAC7F,GAAD;OAAQ,MAAK;OAAS,MAAK;OAAK,UAAA;OAAS,MAAK;OAAU,aAAY;OACnE,cAAYwB,EAAQ;OAAQ,UAAU,CAACW;OAAS,SAASsB;OAAS,UAAA,kBAACqC,IAAD;QAAO,eAAY;QAAO,WAAU;OAAgB,CAAA;MAAS,CAAA,CAC1H;;IACF,CAAA;IACJpD,KAAU,kBAACuC,GAAD;KAAM,KAAI;KAAO,MAAK;KAAS,WAAU;KAAW,UAAAzD,EAAQ;IAAa,CAAA;GAC/E;EACG,CAAA,CAAA;;AACZ,CAAC"}
1
+ {"version":3,"file":"inline-edit.js","names":["React","useDensityConfig","cn","affordanceGeometry","Text","Button","Grid","Stack","editableTextSizeClasses","formControlMinHeightClasses","formFieldTriggerClasses","resolveFormControlSize","formTextareaInsetClasses","formControlIconClasses","Input","FormField","Textarea","React$1","inlineEditRecipes","defaultInlineEditStrings","InlineEdit","valueProp","editingProp","stringsProp","sizeProp","providedId","rootProps","generatedId","id","supportingId","strings","useStrings","size","defaultScale","localValue","setLocalValue","defaultValue","value","localEditing","setLocalEditing","defaultEditing","editing","readOnly","disabled","draft","setDraft","error","setError","saving","setSaving","editorRef","triggerRef","pending","generation","latest","previous","restoreFocus","invalidate","entering","replaced","requestEditing","next","onEditingChange","dismiss","save","loading","nextValue","controller","version","committedAtStart","current","validationError","required","validate","onSave","onValueChange","cause","onKeyDown","event","multiline","support","description","accessibleName","label","editLabel","display","renderValue","placeholder","displayClasses","editorProps","clearable","invalid","className","name","textareaProps","inputProps","LoaderCircle","PencilIcon","CheckIcon","XIcon"],"sources":["../../src/components/base/inline-edit/inline-edit.recipes.ts","../../src/components/base/inline-edit/inline-edit.tsx"],"sourcesContent":["/** Private field/action layout; geometry remains generated from shared roots. */\nexport const inlineEditRecipes = {\n\tframe: 'transition-[grid-template-columns,column-gap] duration-180 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n\tclosedColumns: 'grid-cols-[minmax(0,1fr)_0px]',\n\tactionsTrack: 'min-w-0 flex items-center justify-end overflow-hidden focus-within:overflow-visible transition-opacity duration-180 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n} as const;\n","import * as React from 'react';\nimport { CheckIcon, LoaderCircle, PencilIcon, XIcon } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { affordanceGeometry } from '../../../lib/affordance-geometry.generated';\nimport { editableTextSizeClasses } from '../../../lib/editable-text-recipe';\nimport { useDensityConfig } from '../../../lib/ui-provider';\nimport { formControlIconClasses, formControlMinHeightClasses, formFieldTriggerClasses, formTextareaInsetClasses, resolveFormControlSize } from '../forms/form-sizing';\nimport { Button } from '../buttons';\nimport { FormField } from '../forms/form-field';\nimport { Grid, Stack } from '../structure';\nimport { Input, Textarea, type InputProps, type TextareaProps } from '../text-inputs';\nimport { Text } from '../../typography';\nimport { inlineEditRecipes } from './inline-edit.recipes';\n\nexport interface InlineEditStrings {\n\t/** Accessible name of the edit action when editLabel is absent. */\n\tedit: string;\n\t/** Accessible name of the save action. */\n\tsave: string;\n\t/** Accessible name of the cancel action, including while saving. */\n\tcancel: string;\n\t/** Live announcement and save action name during persistence. */\n\tsaving: string;\n\t/** Validation copy for a required empty value. */\n\trequired: string;\n\t/** Fallback copy for a rejected save without an Error message. */\n\tsaveError: string;\n\t/** Display copy for an empty value when placeholder is absent. */\n\tempty: string;\n}\n\nexport const defaultInlineEditStrings: InlineEditStrings = {\n\tedit: 'Edit value', save: 'Save changes', cancel: 'Cancel editing',\n\tsaving: 'Saving changes', required: 'Enter a value.',\n\tsaveError: 'Unable to save. Try again.', empty: 'Add a value',\n};\n\nexport interface InlineEditSaveContext {\n\t/** Aborted on cancel, unmount, external value replacement, or external dismissal. */\n\tsignal: AbortSignal;\n}\n\ntype SharedControlProps = Pick<InputProps, 'size' | 'invalid' | 'loading' | 'clearable' | 'onClear' | 'showCharacterCount'>;\ntype OwnedEditorProps = keyof SharedControlProps | 'value' | 'defaultValue' | 'onChange' | 'ref' | 'id' | 'name' | 'form' | 'required' | 'disabled' | 'readOnly' | 'placeholder' | 'autoComplete' | 'maxLength' | 'rows' | 'returnValueWithAddons';\n\nexport interface InlineEditProps extends SharedControlProps, Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'defaultValue' | 'onChange'> {\n\t/** Native Input attributes, adornments and strings. Draft/state ownership stays with InlineEdit. */\n\tinputProps?: Omit<InputProps, OwnedEditorProps>;\n\t/** Native Textarea attributes, resizing options and strings. Draft/state ownership stays with InlineEdit. */\n\ttextareaProps?: Omit<TextareaProps, OwnedEditorProps>;\n\t/** Committed value. Draft edits remain local until save succeeds. */\n\tvalue?: string;\n\t/** Initial committed value for uncontrolled usage. */\n\tdefaultValue?: string;\n\t/** Called with the new committed value after a successful changed save. */\n\tonValueChange?: (value: string) => void;\n\t/** Controlled editor visibility. */\n\tediting?: boolean;\n\t/** Initial visibility for uncontrolled usage. */\n\tdefaultEditing?: boolean;\n\t/** Requests a visibility change; controlled parents must update editing. */\n\tonEditingChange?: (editing: boolean) => void;\n\t/** Uses Textarea. Plain Enter inserts a newline; Ctrl/Cmd+Enter saves. */\n\tmultiline?: boolean;\n\t/** Field caption above both presentation and editing states. */\n\tlabel?: React.ReactNode;\n\t/** Supporting copy, replaced by a validation or save error when present. */\n\tdescription?: React.ReactNode;\n\t/** Empty display copy and editor placeholder. */\n\tplaceholder?: string;\n\t/** Accessible edit action name, useful when the display is a title. */\n\teditLabel?: string;\n\t/** Custom passive display content. Do not nest interactive elements. */\n\trenderValue?: (value: string) => React.ReactNode;\n\t/** Prevents editing and disables the edit action. */\n\tdisabled?: boolean;\n\t/** Renders passive content with no edit action. */\n\treadOnly?: boolean;\n\t/** Save-time validation for an empty draft; marks the editor aria-required without constraining the parent form. */\n\trequired?: boolean;\n\t/** Return an error message to keep the draft open without calling onSave. */\n\tvalidate?: (value: string) => string | undefined | null;\n\t/** Persist the draft; rejection keeps it open for correction or retry. */\n\tonSave?: (value: string, context: InlineEditSaveContext) => void | Promise<void>;\n\t/** Native form field name. Only the committed value is submitted. */\n\tname?: string;\n\t/** Associates the committed hidden field with a native form. */\n\tform?: string;\n\t/** Native editor autocomplete hint. */\n\tautoComplete?: string;\n\t/** Maximum editor character count. */\n\tmaxLength?: number;\n\t/** Native Textarea row count. */\n\trows?: number;\n\t/** Localized component copy. */\n\tstrings?: StringsProp<InlineEditStrings>;\n}\n\n/** Inline text editing with an isolated draft and explicit, cancellable saves. */\nexport const InlineEdit = React.forwardRef<HTMLDivElement, InlineEditProps>(function InlineEdit({\n\tvalue: valueProp, defaultValue = '', onValueChange,\n\tediting: editingProp, defaultEditing = false, onEditingChange,\n\tmultiline = false, label, description, placeholder, editLabel, renderValue,\n\tdisabled = false, readOnly = false, required = false, validate, onSave,\n\tname, form, autoComplete, maxLength, rows = 3, strings: stringsProp,\n\tsize: sizeProp, invalid = false, loading = false, clearable, onClear, showCharacterCount, inputProps, textareaProps,\n\tid: providedId, className, ...rootProps\n}, ref) {\n\tconst generatedId = React.useId();\n\tconst id = providedId ?? `inline-edit-${generatedId}`;\n\tconst supportingId = `${id}-supporting`;\n\tconst strings = useStrings(defaultInlineEditStrings, stringsProp);\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveFormControlSize(sizeProp, defaultScale);\n\tconst [localValue, setLocalValue] = React.useState(defaultValue);\n\tconst value = valueProp ?? localValue;\n\tconst [localEditing, setLocalEditing] = React.useState(defaultEditing);\n\tconst editing = (editingProp ?? localEditing) && !readOnly && !disabled;\n\tconst [draft, setDraft] = React.useState(value);\n\tconst [error, setError] = React.useState<string>();\n\tconst [saving, setSaving] = React.useState(false);\n\tconst editorRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n\tconst triggerRef = React.useRef<HTMLButtonElement>(null);\n\tconst pending = React.useRef<AbortController | null>(null);\n\tconst generation = React.useRef(0);\n\tconst latest = React.useRef({ value, editing });\n\tlatest.current = { value, editing };\n\tconst previous = React.useRef({ value, editing: false });\n\tconst restoreFocus = React.useRef(false);\n\n\tfunction invalidate() {\n\t\tgeneration.current += 1;\n\t\tpending.current?.abort();\n\t\tpending.current = null;\n\t}\n\n\tReact.useLayoutEffect(() => {\n\t\tconst entering = editing && !previous.current.editing;\n\t\tconst replaced = value !== previous.current.value;\n\t\tif (!editing || entering || replaced) {\n\t\t\tinvalidate();\n\t\t\tsetDraft(value);\n\t\t\tsetError(undefined);\n\t\t\tsetSaving(false);\n\t\t}\n\t\tif (entering) editorRef.current?.focus();\n\t\tif (!editing && restoreFocus.current) {\n\t\t\ttriggerRef.current?.focus();\n\t\t\trestoreFocus.current = false;\n\t\t}\n\t\tprevious.current = { value, editing };\n\t}, [value, editing]);\n\n\tReact.useEffect(() => () => { invalidate(); }, []);\n\n\tfunction requestEditing(next: boolean) {\n\t\tif (editingProp === undefined) setLocalEditing(next);\n\t\tonEditingChange?.(next);\n\t}\n\n\tfunction dismiss() {\n\t\tinvalidate();\n\t\tsetSaving(false);\n\t\tsetDraft(value);\n\t\tsetError(undefined);\n\t\trestoreFocus.current = true;\n\t\trequestEditing(false);\n\t}\n\n\tasync function save() {\n\t\tif (pending.current || !editing || loading) return;\n\t\tif (draft === value) { dismiss(); return; }\n\t\tconst nextValue = draft;\n\t\tconst controller = new AbortController();\n\t\tconst version = ++generation.current;\n\t\tconst committedAtStart = value;\n\t\tconst current = () => !controller.signal.aborted && generation.current === version\n\t\t\t&& latest.current.editing && latest.current.value === committedAtStart;\n\t\ttry {\n\t\t\tconst validationError = (required && !nextValue.trim() ? strings.required : validate?.(nextValue))\n\t\t\t\t|| (editorRef.current && !editorRef.current.checkValidity() ? editorRef.current.validationMessage : undefined);\n\t\t\tif (validationError) {\n\t\t\t\tsetError(validationError);\n\t\t\t\teditorRef.current?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetError(undefined);\n\t\t\tpending.current = controller;\n\t\t\tsetSaving(true);\n\t\t\t// Keep keyboard cancellation inside the editor when the save action disables.\n\t\t\teditorRef.current?.focus();\n\t\t\tawait onSave?.(nextValue, { signal: controller.signal });\n\t\t\tif (!current()) return;\n\t\t\tpending.current = null;\n\t\t\tsetSaving(false);\n\t\t\tif (valueProp === undefined) setLocalValue(nextValue);\n\t\t\tonValueChange?.(nextValue);\n\t\t\trestoreFocus.current = true;\n\t\t\trequestEditing(false);\n\t\t} catch (cause) {\n\t\t\tif (!current()) return;\n\t\t\tpending.current = null;\n\t\t\tsetSaving(false);\n\t\t\tsetError(cause instanceof Error && cause.message ? cause.message : strings.saveError);\n\t\t\teditorRef.current?.focus();\n\t\t}\n\t}\n\n\tfunction onKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n\t\tif (!editing || event.defaultPrevented || event.nativeEvent.isComposing) return;\n\t\tif (event.key === 'Escape') {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tdismiss();\n\t\t} else if (event.key === 'Enter' && event.target === editorRef.current\n\t\t\t&& (!multiline || event.ctrlKey || event.metaKey)) {\n\t\t\tevent.preventDefault();\n\t\t\tvoid save();\n\t\t}\n\t}\n\n\tconst support = error || description;\n\tconst accessibleName = rootProps['aria-label'] ?? (typeof label === 'string' ? label : label ? undefined : editLabel ?? strings.edit);\n\tconst display = renderValue?.(value) ?? <Text tag=\"span\" size=\"inherit\" lineHeight=\"inherit\" type={value ? 'main' : 'secondary'} className={cn('min-w-0', multiline ? 'whitespace-pre-wrap break-words' : 'truncate')}>{value || placeholder || strings.empty}</Text>;\n\tconst displayClasses = cn(formFieldTriggerClasses(size), editableTextSizeClasses[size], '!h-auto',\n\t\tmultiline ? ['items-start px-control', formTextareaInsetClasses[size], size === 'sm' ? 'min-h-textarea-sm' : 'min-h-textarea'] : formControlMinHeightClasses[size]);\n\tconst editorProps = {\n\t\tid, value: draft, onChange: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n\t\t\tif (!saving) { setDraft(event.target.value); setError(undefined); }\n\t\t},\n\t\t// Uncommitted controls must not validate or submit the surrounding native form.\n\t\tform: `inline-edit-draft-${generatedId}`,\n\t\tplaceholder, autoComplete, maxLength, size, loading, clearable: clearable && !saving, onClear, showCharacterCount,\n\t\t'aria-required': required || undefined, readOnly: saving,\n\t\tinvalid: invalid || Boolean(error), 'aria-label': accessibleName, 'aria-labelledby': rootProps['aria-labelledby'],\n\t\t'aria-describedby': support ? supportingId : undefined,\n\t\t'aria-errormessage': error ? supportingId : undefined,\n\t};\n\n\treturn <FormField {...rootProps} ref={ref} id={`${id}-root`} label={label} htmlFor={id}\n\t\trequired={required} helperText={description} error={editing ? error : undefined}\n\t\tsupportingTextId={supportingId} className={cn('inline-edit--component min-w-0', className)}\n\t\tdata-editing={editing || undefined} data-saving={saving || undefined} aria-busy={loading || saving || undefined}>\n\t\t\t{name && <input type=\"hidden\" name={name} form={form} value={value} disabled={disabled} />}\n\t\t\t{readOnly ? <div id={id} className={cn('inline-edit--value min-w-0', displayClasses)} aria-invalid={invalid || undefined}>{display}</div> : <Grid columns={1} gap={editing ? 'lg' : 'none'} align=\"center\"\n\t\t\t\tclassName={cn('inline-edit--frame', editing && 'inline-edit--editor', inlineEditRecipes.frame,\n\t\t\t\t\tediting ? affordanceGeometry.inlineEditColumns[multiline ? 'multiline' : 'single'] : inlineEditRecipes.closedColumns)}\n\t\t\t\tonKeyDown={onKeyDown} aria-busy={saving || undefined}>\n\t\t\t\t<div className=\"inline-edit--field min-w-0\">\n\t\t\t\t\t{editing ? (multiline ? <Textarea {...textareaProps} {...editorProps} rows={rows} ref={editorRef as React.Ref<HTMLTextAreaElement>} />\n\t\t\t\t\t\t: <Input {...inputProps} {...editorProps} ref={editorRef as React.Ref<HTMLInputElement>} />)\n\t\t\t\t\t\t: <button id={id} ref={triggerRef} type=\"button\"\n\t\t\t\t\t\t\tdisabled={disabled || loading} aria-invalid={invalid || undefined} aria-label={editLabel ?? (typeof label === 'string' ? `${strings.edit}: ${label}` : strings.edit)} aria-describedby={description ? supportingId : undefined}\n\t\t\t\t\t\t\tonClick={() => requestEditing(true)}\n\t\t\t\t\t\t\tclassName={cn('inline-edit--trigger group box-border m-0 cursor-pointer justify-between whitespace-normal text-start', displayClasses)}>\n\t\t\t\t\t\t\t{display}\n\t\t\t\t\t\t\t{loading ? <LoaderCircle aria-hidden=\"true\" className={cn(formControlIconClasses[size], 'self-center animate-spin motion-reduce:animate-none')} /> : <PencilIcon aria-hidden=\"true\" className=\"size-icon-sm self-center shrink-0 text-muted-foreground opacity-0 transition-opacity duration-150 motion-reduce:transition-none pointer-coarse:opacity-100 [@media(hover:none)]:opacity-100 group-hover:opacity-100 group-focus-visible:opacity-100\" />}\n\t\t\t\t\t\t</button>}\n\t\t\t\t</div>\n\t\t\t\t<div aria-hidden={!editing || undefined} inert={!editing || undefined}\n\t\t\t\t\tclassName={cn(inlineEditRecipes.actionsTrack, editing ? 'opacity-100' : 'pointer-events-none opacity-0')}>\n\t\t\t\t<Stack direction={multiline ? 'vertical' : 'horizontal'} gap=\"xs\" wrap={false} className=\"inline-edit--actions shrink-0\">\n\t\t\t\t\t<Button type=\"button\" size=\"sm\" iconOnly tone=\"primary\" buttonStyle=\"solid\"\n\t\t\t\t\t\taria-label={saving ? strings.saving : strings.save} disabled={!editing || saving || loading} aria-busy={saving || undefined} onClick={() => { void save(); }}>\n\t\t\t\t\t\t{saving ? <LoaderCircle aria-hidden=\"true\" className=\"size-icon-sm animate-spin motion-reduce:animate-none\" /> : <CheckIcon aria-hidden=\"true\" className=\"size-icon-sm\" />}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button type=\"button\" size=\"sm\" iconOnly tone=\"neutral\" buttonStyle=\"ghost\"\n\t\t\t\t\t\taria-label={strings.cancel} disabled={!editing} onClick={dismiss}><XIcon aria-hidden=\"true\" className=\"size-icon-sm\" /></Button>\n\t\t\t\t</Stack>\n\t\t\t\t</div>\n\t\t\t\t{saving && <Text tag=\"span\" role=\"status\" className=\"sr-only\">{strings.saving}</Text>}\n\t\t\t</Grid>}\n\t</FormField>;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAakB,IAAoB;CAChC,OAAO;CACP,eAAe;CACf,cAAc;AACf,GC2BaC,IAA8C;CAC1D,MAAM;CAAc,MAAM;CAAgB,QAAQ;CAClD,QAAQ;CAAkB,UAAU;CACpC,WAAW;CAA8B,OAAO;AACjD,GAgEaC,IAAapB,EAAM,WAA4C,SAAoB,EAC/F,OAAOqB,GAAW,mBAAe,IAAI,mBACrC,SAASC,GAAa,qBAAiB,IAAO,qBAC9C,eAAY,IAAO,UAAO,gBAAa,gBAAa,cAAW,iBAC/D,cAAW,IAAO,cAAW,IAAO,cAAW,IAAO,cAAU,YAChE,SAAM,UAAM,kBAAc,eAAW,WAAO,GAAG,SAASC,IACxD,MAAMC,IAAU,aAAU,IAAO,aAAU,IAAO,eAAW,aAAS,wBAAoB,gBAAY,mBACtG,IAAIC,IAAY,eAAW,GAAGC,KAC5B,IAAK;CACP,IAAMC,IAAc3B,EAAM,MAAM,GAC1B4B,IAAKH,MAAc,eAAeE,KAClCE,IAAe,GAAGD,EAAG,cACrBE,IAAUC,EAAWZ,GAA0BI,EAAW,GAC1D,EAAE,qBAAiBtB,EAAiB,GACpC+B,IAAOrB,GAAuBa,IAAUS,EAAY,GACpD,CAACC,IAAYC,MAAiBnC,EAAM,SAASoC,EAAY,GACzDC,IAAQhB,KAAaa,IACrB,CAACI,IAAcC,MAAmBvC,EAAM,SAASwC,EAAc,GAC/DC,KAAWnB,KAAegB,OAAiB,CAACI,KAAY,CAACC,GACzD,CAACC,GAAOC,KAAY7C,EAAM,SAASqC,CAAK,GACxC,CAACS,GAAOC,KAAY/C,EAAM,SAAiB,GAC3C,CAACgD,GAAQC,KAAajD,EAAM,SAAS,EAAK,GAC1CkD,IAAYlD,EAAM,OAA+C,IAAI,GACrEmD,IAAanD,EAAM,OAA0B,IAAI,GACjDoD,IAAUpD,EAAM,OAA+B,IAAI,GACnDqD,IAAarD,EAAM,OAAO,CAAC,GAC3BsD,IAAStD,EAAM,OAAO;EAAE;EAAO;CAAQ,CAAC;CAC9C,EAAO,UAAU;EAAE;EAAO;CAAQ;CAClC,IAAMuD,IAAWvD,EAAM,OAAO;EAAE;EAAO,SAAS;CAAM,CAAC,GACjDwD,IAAexD,EAAM,OAAO,EAAK;CAEvC,SAASyD,IAAa;EAGrB,AAFA,EAAW,WAAW,GACtBL,EAAQ,SAAS,MAAM,GACvB,EAAQ,UAAU;CACnB;CAmBA,AAjBAnC,EAAM,sBAAsB;EAC3B,IAAMyC,IAAWjB,KAAW,CAACc,EAAS,QAAQ,SACxCI,IAAWtB,MAAUkB,EAAS,QAAQ;EAY5C,CAXI,CAACd,KAAWiB,KAAYC,OAC3BF,EAAW,GACXZ,EAASR,CAAK,GACdU,EAAS,KAAA,CAAS,GAClBE,EAAU,EAAK,IAEZS,KAAUR,EAAU,SAAS,MAAM,GACnC,CAACT,KAAWe,EAAa,YAC5BL,EAAW,SAAS,MAAM,GAC1B,EAAa,UAAU,KAExB,EAAS,UAAU;GAAE;GAAO;EAAQ;CACrC,GAAG,CAACd,GAAOI,CAAO,CAAC,GAEnBxB,EAAM,sBAAsB;EAAE,EAAW;CAAG,GAAG,CAAC,CAAC;CAEjD,SAAS2C,EAAe,GAAe;EAEtC,AADItC,MAAgB,KAAA,KAAWiB,GAAgBsB,CAAI,GACnDC,KAAkBD,CAAI;CACvB;CAEA,SAASE,IAAU;EAMlB,AALAN,EAAW,GACXR,EAAU,EAAK,GACfJ,EAASR,CAAK,GACdU,EAAS,KAAA,CAAS,GAClB,EAAa,UAAU,IACvBa,EAAe,EAAK;CACrB;CAEA,eAAeI,IAAO;EACrB,IAAIZ,EAAQ,WAAW,CAACX,KAAWwB,GAAS;EAC5C,IAAIrB,MAAUP,GAAO;GAAE,EAAQ;GAAG;EAAQ;EAC1C,IAAM6B,IAAYtB,GACZuB,IAAa,IAAI,gBAAgB,GACjCC,IAAU,EAAEf,EAAW,SACvBgB,IAAmBhC,GACnBiC,UAAgB,CAACH,EAAW,OAAO,WAAWd,EAAW,YAAYe,KACvEd,EAAO,QAAQ,WAAWA,EAAO,QAAQ,UAAUe;EACvD,IAAI;GACH,IAAME,KAAmBC,KAAY,CAACN,EAAU,KAAK,IAAIpC,EAAQ,WAAW2C,KAAWP,CAAS,OAC3FhB,EAAU,WAAW,CAACA,EAAU,QAAQ,cAAc,IAAIA,EAAU,QAAQ,oBAAoB,KAAA;GACrG,IAAIqB,GAAiB;IAEpB,AADAxB,EAASwB,CAAe,GACxBrB,EAAU,SAAS,MAAM;IACzB;GACD;GAOA,IANAH,EAAS,KAAA,CAAS,GAClB,EAAQ,UAAUoB,GAClBlB,EAAU,EAAI,GAEdC,EAAU,SAAS,MAAM,GACzB,MAAMwB,KAASR,GAAW,EAAE,QAAQC,EAAW,OAAO,CAAC,GACnD,CAACG,EAAQ,GAAG;GAMhB,AALA,EAAQ,UAAU,MAClBrB,EAAU,EAAK,GACX5B,MAAc,KAAA,KAAWc,GAAc+B,CAAS,GACpDS,KAAgBT,CAAS,GACzB,EAAa,UAAU,IACvBN,EAAe,EAAK;EACrB,SAASgB,GAAO;GACf,IAAI,CAACN,EAAQ,GAAG;GAIhB,AAHA,EAAQ,UAAU,MAClBrB,EAAU,EAAK,GACfF,EAAS6B,aAAiB,SAASA,EAAM,UAAUA,EAAM,UAAU9C,EAAQ,SAAS,GACpFoB,EAAU,SAAS,MAAM;EAC1B;CACD;CAEA,SAAS2B,GAAU,GAA4C;EAC9D,AAAI,CAACpC,KAAWqC,EAAM,oBAAoBA,EAAM,YAAY,gBACxDA,EAAM,QAAQ,YACjBA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GACtBf,EAAQ,KACEe,EAAM,QAAQ,WAAWA,EAAM,WAAW5B,EAAU,YAC1D,CAAC6B,KAAaD,EAAM,WAAWA,EAAM,aACzCA,EAAM,eAAe,GACrBd,EAAU;CAEZ;CAEA,IAAMgB,KAAUlC,KAASmC,GACnBC,KAAiBxD,EAAU,kBAAkB,OAAOyD,KAAU,WAAWA,IAAQA,IAAQ,KAAA,IAAYC,KAAatD,EAAQ,OAC1HuD,IAAUC,KAAcjD,CAAK,KAAK,kBAACjC,GAAD;EAAM,KAAI;EAAO,MAAK;EAAU,YAAW;EAAU,MAAMiC,IAAQ,SAAS;EAAa,WAAWnC,EAAG,WAAW6E,IAAY,oCAAoC,UAAU;EAAI,UAAA1C,KAASkD,KAAezD,EAAQ;CAAY,CAAA,GAC9P0D,IAAiBtF,EAAGQ,GAAwBsB,CAAI,GAAGxB,GAAwBwB,IAAO,WACvF+C,IAAY;EAAC;EAA0BnE,EAAyBoB;EAAOA,MAAS,OAAO,sBAAsB;CAAgB,IAAIvB,GAA4BuB,EAAK,GAC7JyD,IAAc;EACnB;EAAI,OAAO7C;EAAO,WAAW,MAAqE;GACjG,AAAKI,MAAUH,EAASiC,EAAM,OAAO,KAAK,GAAG/B,EAAS,KAAA,CAAS;EAChE;EAEA,MAAM,qBAAqBpB;EAC3B;EAAa;EAAc;EAAW;EAAM;EAAS,WAAW+D,MAAa,CAAC1C;EAAQ;EAAS;EAC/F,iBAAiBwB,KAAY,KAAA;EAAW,UAAUxB;EAClD,SAAS2C,KAAW,EAAQ7C;EAAQ,cAAcoC;EAAgB,mBAAmBxD,EAAU;EAC/F,oBAAoBsD,KAAUnD,IAAe,KAAA;EAC7C,qBAAqBiB,IAAQjB,IAAe,KAAA;CAC7C;CAEA,OAAO,kBAACd,IAAD;EAAW,GAAIW;EAAgB;EAAK,IAAI,GAAGE,EAAG;EAAe;EAAO,SAASA;EACzE;EAAU,YAAYqD;EAAa,OAAOxC,IAAUK,IAAQ,KAAA;EACtE,kBAAkBjB;EAAc,WAAW3B,EAAG,kCAAkC0F,EAAS;EACzF,gBAAcnD,KAAW,KAAA;EAAW,eAAaO,KAAU,KAAA;EAAW,aAAWiB,KAAWjB,KAAU,KAAA;EAHhG,UAAA,CAIJ6C,KAAQ,kBAAC,SAAD;GAAO,MAAK;GAAe;GAAY;GAAa;GAAiB;EAAW,CAAA,GACxFnD,IAAW,kBAAC,OAAD;GAAS;GAAI,WAAWxC,EAAG,8BAA8BsF,CAAc;GAAG,gBAAcG,KAAW,KAAA;GAAY,UAAAN;EAAa,CAAA,IAAI,kBAAC/E,IAAD;GAAM,SAAS;GAAG,KAAKmC,IAAU,OAAO;GAAQ,OAAM;GACjM,WAAWvC,EAAG,sBAAsBuC,KAAW,uBAAuBvB,EAAkB,OACvFuB,IAAUtC,EAAmB,kBAAkB4E,IAAY,cAAc,YAAY7D,EAAkB,aAAa;GAC1G;GAAW,aAAW8B,KAAU,KAAA;GAHgG,UAAA;IAI3I,kBAAC,OAAD;KAAK,WAAU;KACb,UAAAP,IAAWsC,IAAY,kBAAC/D,IAAD;MAAU,GAAI8E;MAAe,GAAIL;MAAmB;MAAM,KAAKvC;KAA8C,CAAA,IAClI,kBAACpC,IAAD;MAAO,GAAIiF;MAAY,GAAIN;MAAa,KAAKvC;KAA2C,CAAA,IACxF,kBAAC,UAAD;MAAY;MAAI,KAAKC;MAAY,MAAK;MACvC,UAAUR,KAAYsB;MAAS,gBAAc0B,KAAW,KAAA;MAAW,cAAYP,MAAc,OAAOD,KAAU,WAAW,GAAGrD,EAAQ,KAAK,IAAIqD,MAAUrD,EAAQ;MAAO,oBAAkBmD,IAAcpD,IAAe,KAAA;MACrN,eAAe+B,EAAe,EAAI;MAClC,WAAW1D,EAAG,yGAAyGsF,CAAc;MAHpI,UAAA,CAIAH,GACApB,IAAU,kBAAC+B,GAAD;OAAc,eAAY;OAAO,WAAW9F,EAAGW,GAAuBmB,IAAO,qDAAqD;MAAI,CAAA,IAAI,kBAACiE,IAAD;OAAY,eAAY;OAAO,WAAU;MAAuP,CAAA,CAC9a;;IACL,CAAA;IACL,kBAAC,OAAD;KAAK,eAAa,CAACxD,KAAW,KAAA;KAAW,OAAO,CAACA,KAAW,KAAA;KAC3D,WAAWvC,EAAGgB,EAAkB,cAAcuB,IAAU,gBAAgB,+BAA+B;KACxG,UAAA,kBAAClC,IAAD;MAAO,WAAWwE,IAAY,aAAa;MAAc,KAAI;MAAK,MAAM;MAAO,WAAU;MAAzF,UAAA,CACC,kBAAC1E,GAAD;OAAQ,MAAK;OAAS,MAAK;OAAK,UAAA;OAAS,MAAK;OAAU,aAAY;OACnE,cAAY2C,IAASlB,EAAQ,SAASA,EAAQ;OAAM,UAAU,CAACW,KAAWO,KAAUiB;OAAS,aAAWjB,KAAU,KAAA;OAAW,eAAe;QAAE,EAAU;OAAG;OAC1J,UAAAA,IAAS,kBAACgD,GAAD;QAAc,eAAY;QAAO,WAAU;OAAwD,CAAA,IAAI,kBAACE,IAAD;QAAW,eAAY;QAAO,WAAU;OAAgB,CAAA;MAClK,CAAA,GACR,kBAAC7F,GAAD;OAAQ,MAAK;OAAS,MAAK;OAAK,UAAA;OAAS,MAAK;OAAU,aAAY;OACnE,cAAYyB,EAAQ;OAAQ,UAAU,CAACW;OAAS,SAASsB;OAAS,UAAA,kBAACoC,IAAD;QAAO,eAAY;QAAO,WAAU;OAAgB,CAAA;MAAS,CAAA,CAC1H;;IACF,CAAA;IACJnD,KAAU,kBAAC5C,GAAD;KAAM,KAAI;KAAO,MAAK;KAAS,WAAU;KAAW,UAAA0B,EAAQ;IAAa,CAAA;GAC/E;EACG,CAAA,CAAA;;AACZ,CAAC"}
package/dist/base/item.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../item-pJ0GsOiJ.js";
2
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../item-xzh8Df65.js";
3
3
  export { c as Item, i as ItemActions, o as ItemContent, n as ItemDescription, e as ItemFooter, a as ItemGroup, s as ItemHeader, t as ItemMedia, r as ItemSeparator, l as ItemTitle };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { n as e, t } from "../media-gallery-DhDRgnVZ.js";
2
+ import { n as e, t } from "../media-gallery-DQUQ0m3O.js";
3
3
  export { t as MediaGallery, e as defaultMediaGalleryStrings };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "../dropdown-menu-BlnyHr-9.js";
3
- import { n as g, t as _ } from "../breadcrumbs-DdQ_I5ra.js";
4
- import { a as v, i as y, n as b, r as x, t as S } from "../navigation-DBEu4POU.js";
5
- import { i as C, n as w, o as T, r as E, t as D } from "../tabs-B5cNMWiP.js";
6
- import { t as O } from "../page-header-DQRa0jug.js";
7
- import { a as k, c as A, i as j, n as M, o as N, r as P, s as F, t as I } from "../pagination-C29vvt3I.js";
2
+ import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "../dropdown-menu-CURh59jb.js";
3
+ import { n as g, t as _ } from "../breadcrumbs-BG_FfMK4.js";
4
+ import { a as v, i as y, n as b, r as x, t as S } from "../navigation-Cs1npsPm.js";
5
+ import { i as C, n as w, o as T, r as E, t as D } from "../tabs-Dk8E_knt.js";
6
+ import { t as O } from "../page-header-hUTzcRZX.js";
7
+ import { a as k, c as A, i as j, n as M, o as N, r as P, s as F, t as I } from "../pagination-Cm0jqa3I.js";
8
8
  export { _ as Breadcrumbs, m as DropdownMenu, l as DropdownMenuCheckboxItem, f as DropdownMenuContent, o as DropdownMenuGroup, e as DropdownMenuItem, u as DropdownMenuLabel, p as DropdownMenuLinkItem, t as DropdownMenuPortal, s as DropdownMenuRadioGroup, h as DropdownMenuRadioItem, n as DropdownMenuSeparator, r as DropdownMenuShortcut, d as DropdownMenuSub, c as DropdownMenuSubContent, a as DropdownMenuSubTrigger, i as DropdownMenuTrigger, v as LanguageSwitcher, x as NavigationTabs, S as OverflowTabBar, O as PageHeading, I as PaginationContent, M as PaginationEllipsis, P as PaginationItem, j as PaginationLink, k as PaginationNext, N as PaginationPrevious, F as PaginationPrimitive, D as Tabs, w as TabsContent, E as TabsList, C as TabsTrigger, g as defaultBreadcrumbsStrings, y as defaultNavigationTabsStrings, b as defaultOverflowTabBarStrings, A as defaultPaginationStrings, T as defaultTabsScrollStrings };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { n as e, t } from "../popover-menu-GLIQTJTx.js";
2
+ import { n as e, t } from "../popover-menu-DnRFKnHP.js";
3
3
  export { t as PopoverMenu, e as defaultPopoverMenuStrings };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../popover-CoLDEg19.js";
2
+ import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../popover-Dcv_9jxr.js";
3
3
  export { i as Popover, o as PopoverAnchor, s as PopoverContent, r as PopoverDescription, a as PopoverFooter, n as PopoverHeader, e as PopoverTitle, t as PopoverTrigger };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "../utils-C2EKeIw3.js";
2
+ import { t as e } from "../utils-Cospvlj1.js";
3
3
  import { forwardRef as t, useEffect as n, useRef as r, useState as i } from "react";
4
4
  import { jsx as a } from "react/jsx-runtime";
5
5
  import { formatHex as o, parse as s } from "culori";
@@ -7,7 +7,7 @@ import c from "qrcode";
7
7
  //#region src/components/base/qr-code/qr-code.tsx
8
8
  var l = t(function({ data: t, foreground: l, background: u, robustness: d = "M", className: f, ...p }, m) {
9
9
  let h = r(null), [g, _] = i("");
10
- return n(() => {
10
+ if (n(() => {
11
11
  let e = h.current;
12
12
  if (!e) return;
13
13
  let n = 0, r = !0, i = async () => {
@@ -47,7 +47,10 @@ var l = t(function({ data: t, foreground: l, background: u, robustness: d = "M",
47
47
  l,
48
48
  u,
49
49
  d
50
- ]), t.trim() ? /* @__PURE__ */ a("div", {
50
+ ]), !t.trim()) return null;
51
+ let v = p["aria-label"] !== void 0 || p["aria-labelledby"] !== void 0;
52
+ return /* @__PURE__ */ a("div", {
53
+ role: v ? "img" : void 0,
51
54
  ...p,
52
55
  ref: (e) => {
53
56
  if (h.current = e, typeof m == "function") return m(e);
@@ -55,7 +58,7 @@ var l = t(function({ data: t, foreground: l, background: u, robustness: d = "M",
55
58
  },
56
59
  className: e("qr-code--component size-full [&_svg]:size-full", f),
57
60
  dangerouslySetInnerHTML: { __html: g }
58
- }) : null;
61
+ });
59
62
  });
60
63
  //#endregion
61
64
  export { l as QRCode };
@@ -1 +1 @@
1
- {"version":3,"file":"qr-code.js","names":["cn","QR","QRCode","forwardRef","props","host","useRef","svg","setSvg","useState","useEffect","element","generation","active","generate","current","styles","color","parsed","parse","override","token","formatHex","fallback","next","data","robustness","foreground","background","observer","node","ref","className"],"sources":["../../src/components/base/qr-code/qr-code.tsx"],"sourcesContent":["import { formatHex, parse } from 'culori';\nimport QR from 'qrcode';\nimport { forwardRef, useEffect, useRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport type QRCodeProps = HTMLAttributes<HTMLDivElement> & {\n data: string;\n foreground?: string;\n background?: string;\n robustness?: 'L' | 'M' | 'Q' | 'H';\n};\n\nexport const QRCode = forwardRef<HTMLDivElement, QRCodeProps>(function QRCode({data, foreground, background, robustness = 'M', className, ...props}, ref) {\n const host = useRef<HTMLDivElement | null>(null);\n const [svg, setSvg] = useState('');\n useEffect(() => {\n const element = host.current;\n if (!element) return;\n let generation = 0;\n let active = true;\n const generate = async () => {\n const current = ++generation;\n const styles = getComputedStyle(element);\n const color = (override: string | undefined, token: string, fallback: string) => {\n const parsed = parse((override ?? styles.getPropertyValue(token)).trim());\n return parsed ? formatHex(parsed) ?? fallback : fallback;\n };\n try {\n const next = await QR.toString(data.trim(), {type:'svg', width:200, margin:0, errorCorrectionLevel:robustness, color:{dark:color(foreground,'--foreground','#000000'), light:color(background,'--background','#ffffff')}});\n if(active && current === generation) setSvg(next);\n } catch { if(active && current === generation) setSvg(''); }\n };\n void generate();\n // Themes inherit from the actual host; observe only theme attributes, never generated SVG children.\n const observer = new MutationObserver(() => {void generate();});\n for (let node: HTMLElement | null = element; node; node = node.parentElement) observer.observe(node, {attributes:true, attributeFilter:['class','style']});\n return () => {active=false;observer.disconnect();};\n },[data,foreground,background,robustness]);\n if (!data.trim()) return null;\n return <div {...props} ref={node => {host.current=node;if(typeof ref==='function') return ref(node);if(ref)ref.current=node;}} className={cn('qr-code--component size-full [&_svg]:size-full',className)} dangerouslySetInnerHTML={{__html:svg}} />;\n});\n"],"mappings":";;;;;;;AAYA,IAAaE,IAASC,EAAwC,SAAgB,EAAC,SAAM,eAAY,eAAY,gBAAa,KAAK,cAAW,GAAGC,KAAQ,GAAK;CACzJ,IAAMC,IAAOC,EAA8B,IAAI,GACzC,CAACC,GAAKC,KAAUC,EAAS,EAAE;CAyBjC,OAxBAC,QAAgB;EACf,IAAMC,IAAUN,EAAK;EACrB,IAAI,CAACM,GAAS;EACd,IAAIC,IAAa,GACbC,IAAS,IACPC,IAAW,YAAY;GAC5B,IAAMC,IAAU,EAAEH,GACZI,IAAS,iBAAiBL,CAAO,GACjCM,KAAS,GAA8B,GAAe,MAAqB;IAChF,IAAMC,IAASC,GAAOC,KAAYJ,EAAO,iBAAiBK,CAAK,EAAA,CAAG,KAAK,CAAC;IACxE,OAAOH,IAASI,EAAUJ,CAAM,KAAKK,IAAWA;GACjD;GACA,IAAI;IACH,IAAMC,IAAO,MAAMvB,EAAG,SAASwB,EAAK,KAAK,GAAG;KAAC,MAAK;KAAO,OAAM;KAAK,QAAO;KAAG,sBAAqBC;KAAY,OAAM;MAAC,MAAKT,EAAMU,GAAW,gBAAe,SAAS;MAAG,OAAMV,EAAMW,GAAW,gBAAe,SAAS;KAAC;IAAC,CAAC;IACzN,AAAGf,KAAUE,MAAYH,KAAYJ,EAAOgB,CAAI;GACjD,QAAQ;IAAE,AAAGX,KAAUE,MAAYH,KAAYJ,EAAO,EAAE;GAAG;EAC5D;EACA,EAAc;EAEd,IAAMqB,IAAW,IAAI,uBAAuB;GAAC,EAAc;EAAE,CAAC;EAC9D,KAAK,IAAIC,IAA2BnB,GAASmB,GAAM,IAAOA,EAAK,eAAe,EAAS,QAAQA,GAAM;GAAC,YAAW;GAAM,iBAAgB,CAAC,SAAQ,OAAO;EAAC,CAAC;EACzJ,aAAa;GAAc,AAAb,IAAO,IAAMD,EAAS,WAAW;EAAE;CAClD,GAAE;EAACJ;EAAKE;EAAWC;EAAWF;CAAU,CAAC,GACpCD,EAAK,KAAK,IACR,kBAAC,OAAD;EAAK,GAAIrB;EAAO,MAAK,MAAQ;GAAmB,IAAlB,EAAK,UAAQ0B,GAAQ,OAAOC,KAAM,YAAY,OAAOA,EAAID,CAAI;GAAE,AAAGC,MAAI,EAAI,UAAQD;EAAK;EAAG,WAAW9B,EAAG,kDAAiDgC,CAAS;EAAG,yBAAyB,EAAC,QAAOzB,EAAG;CAAI,CAAA,IADzN;AAE1B,CAAC"}
1
+ {"version":3,"file":"qr-code.js","names":["cn","QR","QRCode","forwardRef","props","host","useRef","svg","setSvg","useState","useEffect","element","generation","active","generate","current","styles","color","parsed","parse","override","token","formatHex","fallback","next","data","robustness","foreground","background","observer","node","labelled","ref","className"],"sources":["../../src/components/base/qr-code/qr-code.tsx"],"sourcesContent":["import { formatHex, parse } from 'culori';\nimport QR from 'qrcode';\nimport { forwardRef, useEffect, useRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport type QRCodeProps = HTMLAttributes<HTMLDivElement> & {\n /** Encoded payload. Pass `aria-label` to describe it; the code is then exposed as one image. */\n data: string;\n foreground?: string;\n background?: string;\n robustness?: 'L' | 'M' | 'Q' | 'H';\n};\n\nexport const QRCode = forwardRef<HTMLDivElement, QRCodeProps>(function QRCode({data, foreground, background, robustness = 'M', className, ...props}, ref) {\n const host = useRef<HTMLDivElement | null>(null);\n const [svg, setSvg] = useState('');\n useEffect(() => {\n const element = host.current;\n if (!element) return;\n let generation = 0;\n let active = true;\n const generate = async () => {\n const current = ++generation;\n const styles = getComputedStyle(element);\n const color = (override: string | undefined, token: string, fallback: string) => {\n const parsed = parse((override ?? styles.getPropertyValue(token)).trim());\n return parsed ? formatHex(parsed) ?? fallback : fallback;\n };\n try {\n const next = await QR.toString(data.trim(), {type:'svg', width:200, margin:0, errorCorrectionLevel:robustness, color:{dark:color(foreground,'--foreground','#000000'), light:color(background,'--background','#ffffff')}});\n if(active && current === generation) setSvg(next);\n } catch { if(active && current === generation) setSvg(''); }\n };\n void generate();\n // Themes inherit from the actual host; observe only theme attributes, never generated SVG children.\n const observer = new MutationObserver(() => {void generate();});\n for (let node: HTMLElement | null = element; node; node = node.parentElement) observer.observe(node, {attributes:true, attributeFilter:['class','style']});\n return () => {active=false;observer.disconnect();};\n },[data,foreground,background,robustness]);\n if (!data.trim()) return null;\n // A labelled code is one image to assistive technology; the generated SVG has no name of its own.\n const labelled = props['aria-label'] !== undefined || props['aria-labelledby'] !== undefined;\n return <div role={labelled ? 'img' : undefined} {...props} ref={node => {host.current=node;if(typeof ref==='function') return ref(node);if(ref)ref.current=node;}} className={cn('qr-code--component size-full [&_svg]:size-full',className)} dangerouslySetInnerHTML={{__html:svg}} />;\n});\n"],"mappings":";;;;;;;AAaA,IAAaE,IAASC,EAAwC,SAAgB,EAAC,SAAM,eAAY,eAAY,gBAAa,KAAK,cAAW,GAAGC,KAAQ,GAAK;CACzJ,IAAMC,IAAOC,EAA8B,IAAI,GACzC,CAACC,GAAKC,KAAUC,EAAS,EAAE;CAwBjC,IAvBAC,QAAgB;EACf,IAAMC,IAAUN,EAAK;EACrB,IAAI,CAACM,GAAS;EACd,IAAIC,IAAa,GACbC,IAAS,IACPC,IAAW,YAAY;GAC5B,IAAMC,IAAU,EAAEH,GACZI,IAAS,iBAAiBL,CAAO,GACjCM,KAAS,GAA8B,GAAe,MAAqB;IAChF,IAAMC,IAASC,GAAOC,KAAYJ,EAAO,iBAAiBK,CAAK,EAAA,CAAG,KAAK,CAAC;IACxE,OAAOH,IAASI,EAAUJ,CAAM,KAAKK,IAAWA;GACjD;GACA,IAAI;IACH,IAAMC,IAAO,MAAMvB,EAAG,SAASwB,EAAK,KAAK,GAAG;KAAC,MAAK;KAAO,OAAM;KAAK,QAAO;KAAG,sBAAqBC;KAAY,OAAM;MAAC,MAAKT,EAAMU,GAAW,gBAAe,SAAS;MAAG,OAAMV,EAAMW,GAAW,gBAAe,SAAS;KAAC;IAAC,CAAC;IACzN,AAAGf,KAAUE,MAAYH,KAAYJ,EAAOgB,CAAI;GACjD,QAAQ;IAAE,AAAGX,KAAUE,MAAYH,KAAYJ,EAAO,EAAE;GAAG;EAC5D;EACA,EAAc;EAEd,IAAMqB,IAAW,IAAI,uBAAuB;GAAC,EAAc;EAAE,CAAC;EAC9D,KAAK,IAAIC,IAA2BnB,GAASmB,GAAM,IAAOA,EAAK,eAAe,EAAS,QAAQA,GAAM;GAAC,YAAW;GAAM,iBAAgB,CAAC,SAAQ,OAAO;EAAC,CAAC;EACzJ,aAAa;GAAc,AAAb,IAAO,IAAMD,EAAS,WAAW;EAAE;CAClD,GAAE;EAACJ;EAAKE;EAAWC;EAAWF;CAAU,CAAC,GACrC,CAACD,EAAK,KAAK,GAAG,OAAO;CAEzB,IAAMM,IAAW3B,EAAM,kBAAkB,KAAA,KAAaA,EAAM,uBAAuB,KAAA;CACnF,OAAO,kBAAC,OAAD;EAAK,MAAM2B,IAAW,QAAQ,KAAA;EAAW,GAAI3B;EAAO,MAAK,MAAQ;GAAmB,IAAlB,EAAK,UAAQ0B,GAAQ,OAAOE,KAAM,YAAY,OAAOA,EAAIF,CAAI;GAAE,AAAGE,MAAI,EAAI,UAAQF;EAAK;EAAG,WAAW9B,EAAG,kDAAiDiC,CAAS;EAAG,yBAAyB,EAAC,QAAO1B,EAAG;CAAI,CAAA;AACvR,CAAC"}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import { s as e } from "../ui-provider-CftIB6TY.js";
2
+ import { s as e } from "../ui-provider-D2_TeLqw.js";
3
3
  import { useStrings as t } from "../lib/strings.js";
4
- import { t as n } from "../utils-C2EKeIw3.js";
5
- import { n as r } from "../buttons-Co6GavvM.js";
6
- import { a as i, n as a } from "../typography-Cv8MT-82.js";
7
- import { t as o } from "../structure-MvKVq-oL.js";
8
- import { t as s } from "../input-WwYQZJzG.js";
9
- import { d as c } from "../text-inputs-Dh9XGyiS.js";
10
- import { t as l } from "../form-field-Bn7ZH1rA.js";
4
+ import { t as n } from "../utils-Cospvlj1.js";
5
+ import { i as r, s as i } from "../typography-CAr3dQhX.js";
6
+ import { t as a } from "../button-BS3KDg00.js";
7
+ import { t as o } from "../structure-hzCW-XsV.js";
8
+ import { t as s } from "../input-DhQdBnV3.js";
9
+ import { t as c } from "../form-field-VZRULhUK.js";
10
+ import { d as l } from "../text-inputs-BFpku0Qd.js";
11
11
  import { forwardRef as u, memo as d, useCallback as f, useId as p, useMemo as m, useReducer as h, useRef as g, useState as _ } from "react";
12
12
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
13
13
  import { GripVertical as b, Plus as x, Trash2 as S, X as C } from "lucide-react";
@@ -26,15 +26,15 @@ var L = {
26
26
  removeAriaLabel: L.removeAriaLabel,
27
27
  dragHandleAriaLabel: "Drag to reorder"
28
28
  };
29
- function te({ item: e, index: t, sortable: i, rowVariant: a, removeVariant: o, hideRemove: s, disabled: c, strings: l, actionSize: u, onRemove: d, renderRow: f }) {
29
+ function te({ item: e, index: t, sortable: r, rowVariant: i, removeVariant: o, hideRemove: s, disabled: c, strings: l, actionSize: u, onRemove: d, renderRow: f }) {
30
30
  let p = F({
31
31
  id: e.id,
32
- disabled: c || !i
33
- }), m = i ? p.isDragging : !1, h = i ? {
32
+ disabled: c || !r
33
+ }), m = r ? p.isDragging : !1, h = r ? {
34
34
  transform: I.Transform.toString(p.transform),
35
35
  transition: p.transition,
36
36
  opacity: m ? .6 : 1
37
- } : void 0, g = i ? p.setNodeRef : void 0, _ = i ? p.attributes : {}, x = i ? p.listeners : void 0, w = i ? /* @__PURE__ */ v(r, {
37
+ } : void 0, g = r ? p.setNodeRef : void 0, _ = r ? p.attributes : {}, x = r ? p.listeners : void 0, w = r ? /* @__PURE__ */ v(a, {
38
38
  type: "button",
39
39
  tone: "secondary",
40
40
  buttonStyle: "ghost",
@@ -49,7 +49,7 @@ function te({ item: e, index: t, sortable: i, rowVariant: a, removeVariant: o, h
49
49
  className: "size-icon",
50
50
  "aria-hidden": "true"
51
51
  })
52
- }) : null, T = s ? null : o === "icon-button" ? /* @__PURE__ */ v(r, {
52
+ }) : null, T = s ? null : o === "icon-button" ? /* @__PURE__ */ v(a, {
53
53
  type: "button",
54
54
  tone: "secondary",
55
55
  buttonStyle: "outline",
@@ -63,7 +63,7 @@ function te({ item: e, index: t, sortable: i, rowVariant: a, removeVariant: o, h
63
63
  className: "size-icon",
64
64
  "aria-hidden": "true"
65
65
  })
66
- }) : /* @__PURE__ */ v(r, {
66
+ }) : /* @__PURE__ */ v(a, {
67
67
  type: "button",
68
68
  tone: "secondary",
69
69
  buttonStyle: "ghost",
@@ -78,7 +78,7 @@ function te({ item: e, index: t, sortable: i, rowVariant: a, removeVariant: o, h
78
78
  "aria-hidden": "true"
79
79
  })
80
80
  });
81
- return a === "card" ? /* @__PURE__ */ v("div", {
81
+ return i === "card" ? /* @__PURE__ */ v("div", {
82
82
  ref: g,
83
83
  style: h,
84
84
  "data-repeater-item-id": e.id,
@@ -115,16 +115,16 @@ function te({ item: e, index: t, sortable: i, rowVariant: a, removeVariant: o, h
115
115
  ]
116
116
  });
117
117
  }
118
- function z({ items: a, renderRow: s, onAdd: c, onRemove: l, onMove: u, sortable: d = !1, rowVariant: p = "inline", removeVariant: h = "ghost", hideRemove: g = !1, hideAdd: _ = !1, disabled: b = !1, strings: S, className: C }) {
118
+ function z({ items: r, renderRow: s, onAdd: c, onRemove: l, onMove: u, sortable: d = !1, rowVariant: p = "inline", removeVariant: h = "ghost", hideRemove: g = !1, hideAdd: _ = !1, disabled: b = !1, strings: S, className: C }) {
119
119
  let w = t(R, S), { defaultScale: T } = e(), E = T ?? "md", F = M(j(k, { activationConstraint: { distance: 4 } }), j(O, { coordinateGetter: P })), I = f((e) => {
120
120
  let { active: t, over: n } = e;
121
121
  if (!n || t.id === n.id) return;
122
- let r = a.findIndex((e) => e.id === t.id), i = a.findIndex((e) => e.id === n.id);
123
- r < 0 || i < 0 || u?.(r, i);
124
- }, [a, u]), L = m(() => a.map((e) => e.id), [a]), z = /* @__PURE__ */ v(o, {
122
+ let i = r.findIndex((e) => e.id === t.id), a = r.findIndex((e) => e.id === n.id);
123
+ i < 0 || a < 0 || u?.(i, a);
124
+ }, [r, u]), L = m(() => r.map((e) => e.id), [r]), z = /* @__PURE__ */ v(o, {
125
125
  gap: "md",
126
126
  className: "repeater--list",
127
- children: a.map((e, t) => /* @__PURE__ */ v(te, {
127
+ children: r.map((e, t) => /* @__PURE__ */ v(te, {
128
128
  item: e,
129
129
  index: t,
130
130
  sortable: d,
@@ -141,8 +141,8 @@ function z({ items: a, renderRow: s, onAdd: c, onRemove: l, onMove: u, sortable:
141
141
  return /* @__PURE__ */ y(o, {
142
142
  gap: "lg",
143
143
  className: n("repeater--component", C),
144
- children: [a.length === 0 ? /* @__PURE__ */ v("div", {
145
- className: "repeater--empty rounded-radius border border-dashed border-input p-surface",
144
+ children: [r.length === 0 ? /* @__PURE__ */ v("div", {
145
+ className: "repeater--empty rounded-radius border border-dashed border-border p-surface",
146
146
  children: /* @__PURE__ */ v(i, {
147
147
  type: "secondary",
148
148
  children: w.emptyState
@@ -156,7 +156,7 @@ function z({ items: a, renderRow: s, onAdd: c, onRemove: l, onMove: u, sortable:
156
156
  strategy: ee,
157
157
  children: z
158
158
  })
159
- }) : z, !_ && /* @__PURE__ */ y(r, {
159
+ }) : z, !_ && /* @__PURE__ */ y(a, {
160
160
  type: "button",
161
161
  tone: "secondary",
162
162
  buttonStyle: "outline",
@@ -354,12 +354,12 @@ function q({ name: e, fields: r, invalid: i, disabled: a = !1, sortable: u = !1,
354
354
  invalid: !!i,
355
355
  disabled: a
356
356
  })
357
- }, t.name) : /* @__PURE__ */ v(l, {
357
+ }, t.name) : /* @__PURE__ */ v(c, {
358
358
  label: t.label,
359
359
  required: t.required,
360
360
  hint: t.hint,
361
361
  htmlFor: r,
362
- children: t.type === "textarea" ? /* @__PURE__ */ v(c, {
362
+ children: t.type === "textarea" ? /* @__PURE__ */ v(l, {
363
363
  ...o,
364
364
  id: r,
365
365
  placeholder: t.placeholder,
@@ -390,19 +390,19 @@ var ie = {
390
390
  addButton: "Add row",
391
391
  removeRowAriaLabel: "Remove row",
392
392
  emptyState: "No rows yet."
393
- }, J = () => typeof crypto < "u" && "randomUUID" in crypto ? crypto.randomUUID() : Math.random().toString(36).slice(2, 10), ae = d(function({ row: e, keyPlaceholder: t, valuePlaceholder: r, keyLabel: i, valueLabel: o, invalid: c, onKeyChange: l, onValueChange: u }) {
393
+ }, J = () => typeof crypto < "u" && "randomUUID" in crypto ? crypto.randomUUID() : Math.random().toString(36).slice(2, 10), ae = d(function({ row: e, keyPlaceholder: t, valuePlaceholder: i, keyLabel: a, valueLabel: o, invalid: c, onKeyChange: l, onValueChange: u }) {
394
394
  let { id: d, key: f, value: p } = e;
395
395
  return /* @__PURE__ */ y("div", {
396
396
  className: n("key-value-editor--row", "grid grid-cols-1 @md/key-value-editor:grid-cols-2 gap-space-md"),
397
397
  children: [/* @__PURE__ */ y("div", {
398
398
  className: "grid min-w-0 gap-space-sm",
399
- children: [!!i && /* @__PURE__ */ v(a, {
399
+ children: [!!a && /* @__PURE__ */ v(r, {
400
400
  htmlFor: `${d}-key`,
401
401
  className: "@md/key-value-editor:sr-only",
402
- children: i
402
+ children: a
403
403
  }), /* @__PURE__ */ v(s, {
404
404
  id: `${d}-key`,
405
- "aria-label": i || t,
405
+ "aria-label": a || t,
406
406
  value: f ?? "",
407
407
  placeholder: t,
408
408
  onChange: (e) => l(d, e.target.value),
@@ -410,22 +410,22 @@ var ie = {
410
410
  })]
411
411
  }), /* @__PURE__ */ y("div", {
412
412
  className: "grid min-w-0 gap-space-sm",
413
- children: [!!o && /* @__PURE__ */ v(a, {
413
+ children: [!!o && /* @__PURE__ */ v(r, {
414
414
  htmlFor: `${d}-value`,
415
415
  className: "@md/key-value-editor:sr-only",
416
416
  children: o
417
417
  }), /* @__PURE__ */ v(s, {
418
418
  id: `${d}-value`,
419
- "aria-label": o || r,
419
+ "aria-label": o || i,
420
420
  value: p ?? "",
421
- placeholder: r,
421
+ placeholder: i,
422
422
  onChange: (e) => u(d, e.target.value),
423
423
  invalid: c
424
424
  })]
425
425
  })]
426
426
  });
427
- }), Y = u(function({ value: r, onValueChange: i, invalid: o, sortable: s = !1, strings: c }, l) {
428
- let u = t(ie, c), { defaultScale: d } = e(), p = g(!1), [m, h] = _(() => r && Object.keys(r).length > 0 ? Object.entries(r).map(([e, t]) => ({
427
+ }), Y = u(function({ value: i, onValueChange: a, invalid: o, sortable: s = !1, strings: c }, l) {
428
+ let u = t(ie, c), { defaultScale: d } = e(), p = g(!1), [m, h] = _(() => i && Object.keys(i).length > 0 ? Object.entries(i).map(([e, t]) => ({
429
429
  id: J(),
430
430
  key: e,
431
431
  value: String(t ?? "")
@@ -437,10 +437,10 @@ var ie = {
437
437
  let t = {};
438
438
  e.forEach(({ key: e, value: n }) => {
439
439
  e.trim() !== "" && (t[e] = n ?? "");
440
- }), p.current = !0, i?.(t), queueMicrotask(() => {
440
+ }), p.current = !0, a?.(t), queueMicrotask(() => {
441
441
  p.current = !1;
442
442
  });
443
- }, [i]), x = f((e, t) => {
443
+ }, [a]), x = f((e, t) => {
444
444
  h((n) => {
445
445
  let r = n.map((n) => n.id === e ? {
446
446
  ...n,
@@ -480,14 +480,14 @@ var ie = {
480
480
  return r.splice(t, 0, i), b(r), r;
481
481
  });
482
482
  }, [b]), E = !!u.keyLabel || !!u.valueLabel, D = d === "sm" ? {
483
- left: "pl-[calc(var(--spacing-action-sm)+var(--spacing-space-md))]",
484
- right: "pr-[calc(var(--spacing-action-sm)+var(--spacing-space-md))]"
483
+ left: "ps-[calc(var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]",
484
+ right: "pe-[calc(var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]"
485
485
  } : d === "lg" ? {
486
- left: "pl-[calc(var(--spacing-action-lg)+var(--spacing-space-md))]",
487
- right: "pr-[calc(var(--spacing-action-lg)+var(--spacing-space-md))]"
486
+ left: "ps-[calc(var(--height-action)*10/9*var(--density-scale)+0.5rem*var(--space-scale))]",
487
+ right: "pe-[calc(var(--height-action)*10/9*var(--density-scale)+0.5rem*var(--space-scale))]"
488
488
  } : {
489
- left: "pl-[calc(var(--spacing-action)+var(--spacing-space-md))]",
490
- right: "pr-[calc(var(--spacing-action)+var(--spacing-space-md))]"
489
+ left: "ps-[calc(var(--height-action)*var(--density-scale)+0.5rem*var(--space-scale))]",
490
+ right: "pe-[calc(var(--height-action)*var(--density-scale)+0.5rem*var(--space-scale))]"
491
491
  }, O = s ? D.left : "", k = D.right, A = s ? {
492
492
  sortable: !0,
493
493
  onMove: T
@@ -498,10 +498,10 @@ var ie = {
498
498
  children: [E && /* @__PURE__ */ y("div", {
499
499
  "data-action-gutter": !0,
500
500
  className: n("hidden @md/key-value-editor:grid grid-cols-2 gap-space-md", O, k),
501
- children: [/* @__PURE__ */ v("div", { children: !!u.keyLabel && /* @__PURE__ */ v(a, {
501
+ children: [/* @__PURE__ */ v("div", { children: !!u.keyLabel && /* @__PURE__ */ v(r, {
502
502
  className: "flex items-center",
503
503
  children: u.keyLabel
504
- }) }), /* @__PURE__ */ v("div", { children: !!u.valueLabel && /* @__PURE__ */ v(a, {
504
+ }) }), /* @__PURE__ */ v("div", { children: !!u.valueLabel && /* @__PURE__ */ v(r, {
505
505
  className: "flex items-center",
506
506
  children: u.valueLabel
507
507
  }) })]
@@ -531,19 +531,19 @@ var ie = {
531
531
  Y.displayName = "KeyValueEditor";
532
532
  //#endregion
533
533
  //#region src/components/base/repeaters/localized-string-field.tsx
534
- function X({ name: e, type: t = "text", placeholder: r, primaryLocale: i, secondaryLocale: a, activeLocale: o, invalid: l, className: u }) {
534
+ function X({ name: e, type: t = "text", placeholder: r, primaryLocale: i, secondaryLocale: a, activeLocale: o, invalid: c, className: u }) {
535
535
  let { register: d } = E(), f = `${e}.${o === "primary" ? i : a}`;
536
- return t === "textarea" ? /* @__PURE__ */ v(c, {
536
+ return t === "textarea" ? /* @__PURE__ */ v(l, {
537
537
  ...d(f),
538
538
  placeholder: r,
539
539
  minRows: 3,
540
- invalid: l,
540
+ invalid: c,
541
541
  className: n("localized-string-field--component", u)
542
542
  }, f) : /* @__PURE__ */ v(s, {
543
543
  ...d(f),
544
544
  type: t === "number" ? "number" : "text",
545
545
  placeholder: r,
546
- invalid: l,
546
+ invalid: c,
547
547
  className: n("localized-string-field--component", u)
548
548
  }, f);
549
549
  }
@@ -558,12 +558,12 @@ function Z({ name: e, fields: t, primaryLocale: r, secondaryLocale: i, activeLoc
558
558
  gap: "lg",
559
559
  children: t.map((t) => {
560
560
  let n = `${e}.${p}.${t.name}`;
561
- return /* @__PURE__ */ v(l, {
561
+ return /* @__PURE__ */ v(c, {
562
562
  label: t.label,
563
563
  htmlFor: n,
564
564
  required: t.required,
565
565
  className: "w-full",
566
- children: t.type === "textarea" ? /* @__PURE__ */ v(c, {
566
+ children: t.type === "textarea" ? /* @__PURE__ */ v(l, {
567
567
  ...f(n),
568
568
  id: n,
569
569
  placeholder: t.placeholder,
@@ -591,16 +591,16 @@ var Q = {
591
591
  removeAriaLabel: L.removeAriaLabel,
592
592
  dragHandleAriaLabel: "Drag to reorder"
593
593
  };
594
- function $({ name: e, primaryLocale: r, secondaryLocale: i, activeLocale: a, invalid: o, disabled: s = !1, sortable: l = !1, strings: u, className: d }) {
594
+ function $({ name: e, primaryLocale: r, secondaryLocale: i, activeLocale: a, invalid: o, disabled: s = !1, sortable: c = !1, strings: u, className: d }) {
595
595
  let f = t(Q, u), p = `${e}.${a === "primary" ? r : i}`;
596
596
  return /* @__PURE__ */ v(G, {
597
597
  name: p,
598
- sortable: l,
598
+ sortable: c,
599
599
  invalid: o,
600
600
  disabled: s,
601
601
  className: n("localized-string-repeater--component", d),
602
602
  strings: f,
603
- renderField: (e) => /* @__PURE__ */ v(c, {
603
+ renderField: (e) => /* @__PURE__ */ v(l, {
604
604
  ref: e.ref,
605
605
  name: e.name,
606
606
  value: e.value,