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":"theme-tweaker.js","names":["PortalThemeScope","resolveUIConfig","UIProvider","ThemeScope$1","cn","Button","Text","Heading","Grid","Stack","AlertTitle","Alert","AlertMetadataItem","AlertMetadata","AlertDescription","Card","useOverlayVisibility","DialogClose","ActionDialog","MonoValue","SmartAccordion","Badge","Input","Textarea","FormField","ToggleField","Select","ColorInput","SliderField","DecimalInput","Item","TabsTrigger","TabsList","Tabs","defaultAdminUIThemeSelectors","VARIABLE_NAME_PATTERN","UNSAFE_CSS_VALUE_PATTERN","UNSAFE_SELECTOR_PATTERN","createAdminUITheme","value","isAdminUIThemeVariableName","validatedEntries","overrides","entry","name","rawValue","strict","hasControlCharacter","code","character","left","right","validateSelector","selector","scope","serializeBlock","entries","serializeAdminUITheme","selectors","options","blocks","theme","block","banner","createSerializableUIConfig","resolved","config","_runtimeDateLocale","_runtimeRelativeTimeFormatter","serializableDates","serializeUIProviderConfig","serializable","getActiveAdminUIThemeOverrides","mode","adminUIThemeToStyle","countAdminUIThemeOverrides","createScopedAdminUIThemeSelectors","scopeSelector","createThemeTweakerExportArtifact","resolvedTheme","artifactOptions","providerConfig","downloadAdminUITheme","artifact","downloadAdminUITextFile","blob","text","mimeType","url","anchor","fileName","ThemeScope","forwardRef","props","className","style","resolveTarget","target","selfRef","useAppliedTheme","apply","element","originals","applied","originalLight","originalDark","manageModeClass","expected","original","AdminUIThemeProvider","scopeProps","useRef","forwardedRef","effectiveTheme","useMemo","resolvedConfig","THEME_COLORS","STATE_COLORS","SURFACE_COLORS","FONT_VARIABLES","TYPOGRAPHY_VARIABLES","step","SHADOW_VARIABLES","STRUCTURAL_VARIABLES","LAYOUT_VARIABLES","DESCRIPTIONS","LABELS","RANGE_CONTROLS","labelFromName","part","genericDescription","group","fields","names","defaultThemeTweakerFields","field","defaultThemeProviderSettingsStrings","selectOptions","values","strings","ThemeProviderSettings","scaleOptions","COMPONENT_SCALES","weekdays","day","update","slice","key","Info","event","next","SEMANTIC_TONES","defaultThemeTweakerStrings","clamp","max","min","contrastForeground","digits","color","hex","offset","channel","sum","index","match","lightness","deriveAdminUIPalette","dark","harmonize","night","light","primary","BODY_STEPS","HEADING_STEPS","deriveAdminUITypeScale","boundedBase","baseSize","boundedRatio","ratio","factor","pixels","deriveAdminUIElevation","intensity","alpha","GROUPS","GROUP_ICONS","Palette","ShieldCheck","Type","Shapes","LayoutGrid","Settings2","ThemeExportArtifact","titleId","useId","title","description","Copy","onCopy","copyLabel","Download","downloading","onDownload","downloadLabel","parseRangeValue","parsed","control","serializeRangeValue","precision","resolveInspectionTarget","self","captureResolvedTheme","root","originalStyles","capture","computed","sharedNames","ThemeVariableField","id","resetAction","RotateCcw","onReset","placeholder","effectiveValue","interpolateString","onChange","currentValue","DefaultThemePreview","CheckCircle2","updateThemeVariable","bucket","nextBucket","ThemeTweaker","stringsProp","useStrings","internalTheme","setInternalTheme","useState","defaultValue","internalConfig","setInternalConfig","defaultConfig","setGroup","search","setSearch","derivePalette","setDerivePalette","baseTypeSize","setBaseTypeSize","typeRatio","setTypeRatio","elevationIntensity","setElevationIntensity","actionStatus","setActionStatus","exportDialog","exporting","setExporting","useImperativeHandle","setResolvedTheme","effectiveValues","setEffectiveValues","timeout","inspectionTarget","serializationError","exportTheme","error","providerFileName","cssText","overrideCount","normalizedSearch","visibleFields","visibleSections","sections","existing","b","a","commit","onValueChange","commitConfig","onConfigChange","applyModeRecipe","applySharedRecipe","setMode","onModeChange","exportThemeArtifact","onExport","copyText","exportProviderConfig","reset","previous","statusMessage","recipeControls","content","preview","showIntro","Sun","Moon","actionsSlot","Search","nextGroup","GroupIcon","scopes","visibleSection","scopeLabel","sectionLabel","fieldValue"],"sources":["../../src/components/features/theme-tweaker/theme-tweaker.utils.ts","../../src/components/features/theme-tweaker/theme-scope.tsx","../../src/components/features/theme-tweaker/use-applied-theme.ts","../../src/components/features/theme-tweaker/admin-ui-theme-provider.tsx","../../src/components/features/theme-tweaker/theme-tweaker.fields.ts","../../src/components/features/theme-tweaker/theme-provider-settings.tsx","../../src/components/features/theme-tweaker/theme-tweaker.strings.ts","../../src/components/features/theme-tweaker/theme-tweaker.recipes.ts","../../src/components/features/theme-tweaker/theme-tweaker.tsx"],"sourcesContent":["import {\n\ttype UIConfig,\n} from '../../../lib/ui-provider';\nimport { resolveUIConfig } from '../../../lib/ui-provider/store';\n\nimport type {\n\tAdminUIThemeDefinition,\n\tAdminUIThemeMode,\n\tAdminUIThemeOverrides,\n\tAdminUIThemeSelectors,\n\tAdminUIThemeStyle,\n\tAdminUIThemeVariableName,\n\tCreateThemeTweakerExportArtifactOptions,\n\tSerializeAdminUIThemeOptions,\n\tThemeTweakerExportArtifact,\n} from './theme-tweaker.types';\n\nexport const defaultAdminUIThemeSelectors: AdminUIThemeSelectors = {\n\tshared: ':root',\n\tlight: ':root,\\n.light',\n\tdark: '.dark',\n};\n\nconst VARIABLE_NAME_PATTERN = /^--[a-z][a-z0-9-]*$/i;\nconst UNSAFE_CSS_VALUE_PATTERN = /[;{}]/;\nconst UNSAFE_SELECTOR_PATTERN = /[;{}]/;\n\nexport function createAdminUITheme(\n\tvalue: Partial<AdminUIThemeDefinition> = {},\n): AdminUIThemeDefinition {\n\treturn {\n\t\tmode: value.mode ?? 'light',\n\t\tshared: { ...(value.shared ?? {}) },\n\t\tlight: { ...(value.light ?? {}) },\n\t\tdark: { ...(value.dark ?? {}) },\n\t};\n}\n\nexport function isAdminUIThemeVariableName(\n\tvalue: string,\n): value is AdminUIThemeVariableName {\n\treturn VARIABLE_NAME_PATTERN.test(value);\n}\n\nfunction validatedEntries(\n\toverrides: AdminUIThemeOverrides,\n\tstrict = true,\n): Array<[AdminUIThemeVariableName, string]> {\n\treturn Object.entries(overrides)\n\t\t.filter((entry): entry is [AdminUIThemeVariableName, string] => (\n\t\t\ttypeof entry[1] === 'string' && entry[1].trim().length > 0\n\t\t))\n\t\t.flatMap(([name, rawValue]) => {\n\t\t\tif (!isAdminUIThemeVariableName(name)) {\n\t\t\t\tif (!strict) return [];\n\t\t\t\tthrow new TypeError(`Invalid CSS variable name: ${name}`);\n\t\t\t}\n\t\t\tconst value = rawValue.trim();\n\t\t\tconst hasControlCharacter = [...value].some((character) => {\n\t\t\t\tconst code = character.charCodeAt(0);\n\t\t\t\treturn code < 32 || code === 127;\n\t\t\t});\n\t\t\tif (UNSAFE_CSS_VALUE_PATTERN.test(value) || hasControlCharacter) {\n\t\t\t\tif (!strict) return [];\n\t\t\t\tthrow new TypeError(`Unsafe CSS value for ${name}.`);\n\t\t\t}\n\t\t\treturn [[name, value] as [AdminUIThemeVariableName, string]];\n\t\t})\n\t\t.sort(([left], [right]) => left.localeCompare(right));\n}\n\nfunction validateSelector(selector: string, scope: keyof AdminUIThemeSelectors): string {\n\tconst value = selector.trim();\n\tif (value.length === 0 || UNSAFE_SELECTOR_PATTERN.test(value)) {\n\t\tthrow new TypeError(`Invalid ${scope} theme selector.`);\n\t}\n\treturn value;\n}\n\nfunction serializeBlock(\n\tselector: string,\n\toverrides: AdminUIThemeOverrides,\n): string | null {\n\tconst entries = validatedEntries(overrides);\n\tif (entries.length === 0) return null;\n\treturn [\n\t\t`${selector} {`,\n\t\t...entries.map(([name, value]) => `\\t${name}: ${value};`),\n\t\t'}',\n\t].join('\\n');\n}\n\nexport function serializeAdminUITheme(\n\ttheme: AdminUIThemeDefinition,\n\toptions: SerializeAdminUIThemeOptions = {},\n): string {\n\tconst selectors = options.selectors ?? defaultAdminUIThemeSelectors;\n\tconst blocks = [\n\t\tserializeBlock(validateSelector(selectors.shared, 'shared'), theme.shared),\n\t\tserializeBlock(validateSelector(selectors.light, 'light'), theme.light),\n\t\tserializeBlock(validateSelector(selectors.dark, 'dark'), theme.dark),\n\t].filter((block): block is string => block !== null);\n\tconst banner = options.banner === false\n\t\t? null\n\t\t: `/* ${options.banner ?? 'themelia-react-ui theme overrides'} */`;\n\n\treturn `${[\n\t\t...(banner ? [banner] : []),\n\t\t...(blocks.length > 0 ? blocks : ['/* No explicit overrides. */']),\n\t].join('\\n\\n')}\\n`;\n}\n\n/**\n * Returns the complete serializable UIProvider contract. Function and\n * date-fns-locale hooks remain consumer-owned and are intentionally omitted.\n */\nexport function createSerializableUIConfig(config: UIConfig = {}): UIConfig {\n\tconst resolved = resolveUIConfig(config);\n\tconst {\n\t\tlocale: _runtimeDateLocale,\n\t\tformatRelativeTime: _runtimeRelativeTimeFormatter,\n\t\t...serializableDates\n\t} = resolved.dates;\n\n\treturn {\n\t\t...resolved,\n\t\tdates: serializableDates,\n\t};\n}\n\nexport function serializeUIProviderConfig(config: UIConfig = {}): string {\n\tconst serializable = createSerializableUIConfig(config);\n\treturn `import type { UIConfig } from 'themelia-react-ui/ui-provider';\\n\\nexport const adminUIConfig = ${JSON.stringify(serializable, null, '\\t')} satisfies UIConfig;\\n`;\n}\n\nexport function getActiveAdminUIThemeOverrides(\n\ttheme: AdminUIThemeDefinition,\n\tmode: AdminUIThemeMode = theme.mode,\n): AdminUIThemeOverrides {\n\treturn {\n\t\t...theme.shared,\n\t\t...theme[mode],\n\t};\n}\n\nexport function adminUIThemeToStyle(\n\ttheme: AdminUIThemeDefinition,\n\tmode: AdminUIThemeMode = theme.mode,\n): AdminUIThemeStyle {\n\treturn Object.fromEntries(\n\t\tvalidatedEntries(getActiveAdminUIThemeOverrides(theme, mode), false),\n\t) as AdminUIThemeStyle;\n}\n\nexport function countAdminUIThemeOverrides(theme: AdminUIThemeDefinition): number {\n\treturn validatedEntries(theme.shared, false).length\n\t\t+ validatedEntries(theme.light, false).length\n\t\t+ validatedEntries(theme.dark, false).length;\n}\n\nexport function createScopedAdminUIThemeSelectors(\n\tscopeSelector: string,\n): AdminUIThemeSelectors {\n\tconst scope = validateSelector(scopeSelector, 'shared');\n\treturn {\n\t\tshared: scope,\n\t\tlight: `${scope},\\n${scope}.light,\\n.light ${scope}`,\n\t\tdark: `${scope}.dark,\\n.dark ${scope}`,\n\t};\n}\n\nexport function createThemeTweakerExportArtifact(\n\ttheme: AdminUIThemeDefinition,\n\tfileName = 'admin-ui-theme.css',\n\toptions: SerializeAdminUIThemeOptions = {},\n\tartifactOptions: CreateThemeTweakerExportArtifactOptions = {},\n): ThemeTweakerExportArtifact {\n\tconst resolvedTheme = createAdminUITheme(artifactOptions.resolvedTheme ?? theme);\n\tconst providerConfig = createSerializableUIConfig(artifactOptions.providerConfig);\n\treturn {\n\t\tfileName,\n\t\tcssText: serializeAdminUITheme(resolvedTheme, {\n\t\t\t...options,\n\t\t\tbanner: options.banner ?? 'themelia-react-ui complete theme',\n\t\t}),\n\t\toverrideCssText: serializeAdminUITheme(theme, options),\n\t\ttheme: createAdminUITheme(theme),\n\t\tresolvedTheme,\n\t\toverrideCount: countAdminUIThemeOverrides(theme),\n\t\tproviderFileName: artifactOptions.providerFileName ?? 'admin-ui.config.ts',\n\t\tproviderConfig,\n\t\tproviderConfigText: serializeUIProviderConfig(providerConfig),\n\t};\n}\n\nexport function downloadAdminUITheme(\n\tartifact: Pick<ThemeTweakerExportArtifact, 'cssText' | 'fileName'>,\n): void {\n\tdownloadAdminUITextFile({\n\t\tfileName: artifact.fileName,\n\t\ttext: artifact.cssText,\n\t\tmimeType: 'text/css;charset=utf-8',\n\t});\n}\n\nexport function downloadAdminUITextFile({\n\tfileName,\n\ttext,\n\tmimeType = 'text/plain;charset=utf-8',\n}: {\n\tfileName: string;\n\ttext: string;\n\tmimeType?: string;\n}): void {\n\tif (typeof document === 'undefined' || typeof URL === 'undefined') {\n\t\tthrow new Error('File download requires a browser document. Provide onExport in non-browser environments.');\n\t}\n\tconst blob = new Blob([text], { type: mimeType });\n\tconst url = URL.createObjectURL(blob);\n\tconst anchor = document.createElement('a');\n\tanchor.href = url;\n\tanchor.download = fileName;\n\tanchor.hidden = true;\n\tdocument.body.append(anchor);\n\tanchor.click();\n\tanchor.remove();\n\tURL.revokeObjectURL(url);\n}\n","import { forwardRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { ThemeScope as PortalThemeScope } from '../../../lib/theme-scope';\n\nimport type { ThemeScopeProps } from './theme-tweaker.types';\nimport { adminUIThemeToStyle } from './theme-tweaker.utils';\n\n/**\n * One-DOM-node CSS-variable boundary with a shared portal host. Visual values\n * inherit through CSS; the portal context only identifies that host. UIProvider\n * owns display defaults such as locale, currency, and component sizing policy.\n */\nexport const ThemeScope = forwardRef<HTMLDivElement, ThemeScopeProps>(function ThemeScope({\n\ttheme,\n\tmode = theme.mode,\n\tclassName,\n\tstyle,\n\tchildren,\n\t...props\n}, ref) {\n\treturn (\n\t\t<PortalThemeScope\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t\tdata-theme-mode={mode}\n\t\t\tclassName={cn('theme-scope--component', mode, className)}\n\t\t\tstyle={{\n\t\t\t\t...adminUIThemeToStyle(theme, mode),\n\t\t\t\t...style,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</PortalThemeScope>\n\t);\n});\n\nThemeScope.displayName = 'ThemeScope';\n","import { useEffect, type RefObject } from 'react';\n\nimport type {\n\tAdminUIThemeDefinition,\n\tThemeTweakerTarget,\n} from './theme-tweaker.types';\nimport { adminUIThemeToStyle } from './theme-tweaker.utils';\n\ninterface UseAppliedThemeOptions {\n\tapply: boolean;\n\tmanageModeClass: boolean;\n\tselfRef: RefObject<HTMLDivElement | null>;\n\ttarget: ThemeTweakerTarget;\n\ttheme: AdminUIThemeDefinition;\n}\n\nfunction resolveTarget(\n\ttarget: ThemeTweakerTarget,\n\tselfRef: RefObject<HTMLDivElement | null>,\n): HTMLElement | null {\n\tif (target === null) return null;\n\tif (target === 'self') return selfRef.current;\n\tif (target === 'document') {\n\t\treturn typeof document === 'undefined' ? null : document.documentElement;\n\t}\n\tif (typeof target === 'function') return target();\n\treturn target;\n}\n\nexport function useAppliedTheme({\n\tapply,\n\tmanageModeClass,\n\tselfRef,\n\ttarget,\n\ttheme,\n}: UseAppliedThemeOptions): void {\n\tuseEffect(() => {\n\t\tif (!apply || target === 'self') return;\n\t\tconst element = resolveTarget(target, selfRef);\n\t\tif (!element) return;\n\n\t\tconst style = adminUIThemeToStyle(theme);\n\t\tconst originals = new Map<string, { value: string; priority: string }>();\n\t\tconst applied = new Map<string, string>();\n\t\tfor (const [name, value] of Object.entries(style)) {\n\t\t\tif (typeof value !== 'string') continue;\n\t\t\toriginals.set(name, {\n\t\t\t\tvalue: element.style.getPropertyValue(name),\n\t\t\t\tpriority: element.style.getPropertyPriority(name),\n\t\t\t});\n\t\t\telement.style.setProperty(name, value);\n\t\t\tapplied.set(name, value);\n\t\t}\n\n\t\tconst originalLight = element.classList.contains('light');\n\t\tconst originalDark = element.classList.contains('dark');\n\t\tif (manageModeClass) {\n\t\t\telement.classList.toggle('light', theme.mode === 'light');\n\t\t\telement.classList.toggle('dark', theme.mode === 'dark');\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor (const [name, expected] of applied) {\n\t\t\t\tif (element.style.getPropertyValue(name) !== expected) continue;\n\t\t\t\tconst original = originals.get(name);\n\t\t\t\tif (original?.value) {\n\t\t\t\t\telement.style.setProperty(name, original.value, original.priority);\n\t\t\t\t} else {\n\t\t\t\t\telement.style.removeProperty(name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (manageModeClass) {\n\t\t\t\telement.classList.toggle('light', originalLight);\n\t\t\t\telement.classList.toggle('dark', originalDark);\n\t\t\t}\n\t\t};\n\t}, [apply, manageModeClass, selfRef, target, theme]);\n}\n","import { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';\n\nimport { UIProvider } from '../../../lib/ui-provider';\nimport { resolveUIConfig } from '../../../lib/ui-provider/store';\nimport { cn } from '../../../lib/utils';\n\nimport { ThemeScope } from './theme-scope';\nimport type { AdminUIThemeProviderProps } from './theme-tweaker.types';\nimport { createAdminUITheme } from './theme-tweaker.utils';\nimport { useAppliedTheme } from './use-applied-theme';\n\n/**\n * Root consumer boundary combining mount-once UI display defaults with a\n * live CSS-variable theme and the shared scoped-portal host.\n */\nexport const AdminUIThemeProvider = forwardRef<HTMLDivElement, AdminUIThemeProviderProps>(\n\tfunction AdminUIThemeProvider({\n\t\tconfig,\n\t\ttheme,\n\t\tmode = theme.mode,\n\t\ttarget = 'document',\n\t\tmanageModeClass = true,\n\t\tclassName,\n\t\tchildren,\n\t\t...scopeProps\n\t}, forwardedRef) {\n\t\tconst selfRef = useRef<HTMLDivElement>(null);\n\t\tuseImperativeHandle(forwardedRef, () => selfRef.current as HTMLDivElement);\n\t\tconst effectiveTheme = useMemo(\n\t\t\t() => createAdminUITheme({ ...theme, mode }),\n\t\t\t[mode, theme],\n\t\t);\n\t\tconst resolvedConfig = useMemo(() => resolveUIConfig(config), [config]);\n\n\t\tuseAppliedTheme({\n\t\t\tapply: target === 'document',\n\t\t\tmanageModeClass,\n\t\t\tselfRef,\n\t\t\ttarget,\n\t\t\ttheme: effectiveTheme,\n\t\t});\n\n\t\treturn (\n\t\t\t<UIProvider config={resolvedConfig}>\n\t\t\t\t<ThemeScope\n\t\t\t\t\t{...scopeProps}\n\t\t\t\t\tref={selfRef}\n\t\t\t\t\ttheme={effectiveTheme}\n\t\t\t\t\tmode={mode}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'admin-ui-theme-provider--component bg-background text-foreground',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</ThemeScope>\n\t\t\t</UIProvider>\n\t\t);\n\t},\n);\n\nAdminUIThemeProvider.displayName = 'AdminUIThemeProvider';\n","import type {\n\tAdminUIThemeVariableName,\n\tThemeTweakerField,\n\tThemeTweakerFieldKind,\n\tThemeTweakerFieldScope,\n\tThemeTweakerGroup,\n\tThemeTweakerRangeControl,\n\tThemeTweakerSection,\n} from './theme-tweaker.types';\n\nconst THEME_COLORS = [\n\t'--background',\n\t'--foreground',\n\t'--card',\n\t'--card-foreground',\n\t'--popover',\n\t'--popover-foreground',\n\t'--primary',\n\t'--primary-foreground',\n\t'--secondary',\n\t'--secondary-foreground',\n\t'--muted',\n\t'--muted-foreground',\n\t'--accent',\n\t'--accent-foreground',\n\t'--destructive',\n\t'--destructive-foreground',\n\t'--border',\n\t'--input',\n\t'--ring',\n\t'--chart-1',\n\t'--chart-2',\n\t'--chart-3',\n\t'--chart-4',\n\t'--chart-5',\n\t'--sidebar',\n\t'--sidebar-foreground',\n\t'--sidebar-primary',\n\t'--sidebar-primary-foreground',\n\t'--sidebar-accent',\n\t'--sidebar-accent-foreground',\n\t'--sidebar-border',\n\t'--sidebar-ring',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst STATE_COLORS = [\n\t'--success',\n\t'--success-foreground',\n\t'--info',\n\t'--info-foreground',\n\t'--warning',\n\t'--warning-foreground',\n\t'--warning-accent',\n\t'--link-color',\n\t'--primary-accent',\n\t'--inverse-background',\n\t'--inverse-foreground',\n\t'--inverse-muted',\n\t'--inverse-subtle',\n\t'--inverse-disabled',\n\t'--inverse-surface',\n\t'--inverse-surface-strong',\n\t'--inverse-border',\n\t'--inverse-decoration',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\n/**\n * Package-owned surface colors. Kept apart from `THEME_COLORS` because that\n * array is consumed by index-based slices, so appending to it would silently\n * reshuffle the colour sections.\n */\nconst SURFACE_COLORS = [\n\t'--overlay-backdrop',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst FONT_VARIABLES = [\n\t'--font-heading',\n\t'--font-sans',\n\t'--font-serif',\n\t'--font-mono',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst TEXT_STEPS = [\n\t'xxs',\n\t'xs',\n\t'pxs',\n\t'sm',\n\t'base',\n\t'lg',\n\t'xl',\n\t'2xl',\n\t'3xl',\n\t'4xl',\n\t'5xl',\n\t'6xl',\n\t'7xl',\n\t'8xl',\n\t'9xl',\n] as const;\n\nconst TYPOGRAPHY_VARIABLES = TEXT_STEPS.flatMap((step) => [\n\t`--text-${step}` as AdminUIThemeVariableName,\n\t`--text-${step}--line-height` as AdminUIThemeVariableName,\n]);\n\nconst SHADOW_VARIABLES = [\n\t'--shadow-2xs',\n\t'--shadow-xs',\n\t'--shadow-sm',\n\t'--shadow',\n\t'--shadow-md',\n\t'--shadow-lg',\n\t'--shadow-xl',\n\t'--shadow-2xl',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst STRUCTURAL_VARIABLES = [\n\t'--space-scale',\n\t'--density-scale',\n\t'--height-action',\n\t'--height-control',\n\t'--control-x',\n\t'--row-x',\n\t'--row-y',\n\t'--surface-x',\n\t'--surface-y',\n\t'--icon',\n\t'--avatar',\n\t'--shell-header-height',\n\t'--shell-sidebar-width',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst LAYOUT_VARIABLES = [\n\t'--content-width-sm',\n\t'--content-width-md',\n\t'--content-width-lg',\n\t'--content-width-xl',\n\t'--content-width-2xl',\n\t'--adaptive-grid-min-sm',\n\t'--adaptive-grid-min-md',\n\t'--adaptive-grid-min-lg',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst DESCRIPTIONS: Partial<Record<AdminUIThemeVariableName, string>> = {\n\t'--background': 'Application canvas and default page background.',\n\t'--foreground': 'Primary text and icon color on the application canvas.',\n\t'--primary': 'Brand and primary-action color.',\n\t'--primary-foreground': 'Text and icons on solid primary fills.',\n\t'--muted': 'Subdued backgrounds for passive regions and skeletons.',\n\t'--muted-foreground': 'Secondary text, metadata, and passive icons.',\n\t'--border': 'Default divider, outline, and surface-border color.',\n\t'--ring': 'Focus-visible ring and outline color.',\n\t'--link-color': 'Inline link and copyable-value accent color.',\n\t'--overlay-backdrop': 'Scrim painted behind dialog, alert dialog, sheet, and drawer surfaces.',\n\t'--primary-accent': 'Brand color used as foreground for icons, spinners, and active marks.',\n\t'--warning-accent': 'Warning color used as foreground for icons and marks on tinted warning surfaces.',\n\t'--radius': 'Base shadcn corner radius from which package radii derive.',\n\t'--space-scale': 'Multiplies structural gaps and padding without changing control heights.',\n\t'--density-scale': 'Multiplies actions, controls, rows, and density-sensitive geometry.',\n\t'--height-action': 'Base height for buttons and clickable action triggers.',\n\t'--height-control': 'Base height for inputs, selects, and editable controls.',\n\t'--control-x': 'Default inline inset for actions and form controls.',\n\t'--row-x': 'Shared inline inset for collection, menu, command, and table rows.',\n\t'--row-y': 'Shared vertical inset for collection, menu, command, and table rows.',\n\t'--surface-x': 'Default inline inset for cards, dialogs, panels, and content surfaces.',\n\t'--gap-normal': 'Title/description gap for normal surfaces; multiplied once by spacing scale.',\n\t'--gap-dense': 'Title/supporting-copy gap for dense rows and menus; multiplied once by spacing scale.',\n\t'--surface-y': 'Default vertical inset for cards, dialogs, panels, and content surfaces.',\n\t'--icon': 'Default interface icon size.',\n\t'--avatar': 'Default avatar size used by ordinary rows and cards.',\n\t'--shell-header-height': 'Minimum application-header shell height.',\n\t'--shell-sidebar-width': 'Expanded application-sidebar width.',\n\t'--content-width-sm': 'Compact centered content measure used by Container.',\n\t'--content-width-md': 'Medium centered content measure used by Container.',\n\t'--content-width-lg': 'Default readable page measure used by Container.',\n\t'--content-width-xl': 'Wide application content measure used by Container.',\n\t'--content-width-2xl': 'Maximum standard application measure used by Container.',\n\t'--adaptive-grid-min-sm': 'Compact minimum peer width used by AdaptiveGrid.',\n\t'--adaptive-grid-min-md': 'Default minimum peer width used by AdaptiveGrid.',\n\t'--adaptive-grid-min-lg': 'Spacious minimum peer width used by AdaptiveGrid.',\n};\n\nconst LABELS: Partial<Record<AdminUIThemeVariableName, string>> = {\n\t'--space-scale': 'Spacing scale',\n\t'--density-scale': 'Density scale',\n\t'--height-action': 'Action height',\n\t'--height-control': 'Control height',\n\t'--control-x': 'Control horizontal padding',\n\t'--row-x': 'Row horizontal padding',\n\t'--row-y': 'Row vertical padding',\n\t'--surface-x': 'Surface horizontal padding',\n\t'--surface-y': 'Surface vertical padding',\n\t'--gap-normal': 'Normal copy gap',\n\t'--gap-dense': 'Dense copy gap',\n\t'--icon': 'Interface icon size',\n\t'--avatar': 'Default avatar size',\n\t'--shell-header-height': 'Header height',\n\t'--shell-sidebar-width': 'Sidebar width',\n\t'--content-width-sm': 'Small content width',\n\t'--content-width-md': 'Medium content width',\n\t'--content-width-lg': 'Large content width',\n\t'--content-width-xl': 'Extra-large content width',\n\t'--content-width-2xl': 'Maximum content width',\n\t'--adaptive-grid-min-sm': 'Compact adaptive column',\n\t'--adaptive-grid-min-md': 'Default adaptive column',\n\t'--adaptive-grid-min-lg': 'Spacious adaptive column',\n};\n\nconst RANGE_CONTROLS: Partial<\n\tRecord<AdminUIThemeVariableName, ThemeTweakerRangeControl>\n> = {\n\t'--radius': { type: 'range', min: 0, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--space-scale': { type: 'range', min: 0.75, max: 1.35, step: 0.025, decimalPlaces: 3 },\n\t'--density-scale': { type: 'range', min: 0.75, max: 1.35, step: 0.025, decimalPlaces: 3 },\n\t'--height-action': { type: 'range', min: 1.5, max: 3.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--height-control': { type: 'range', min: 1.5, max: 3.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--control-x': { type: 'range', min: 0.25, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--row-x': { type: 'range', min: 0.25, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--row-y': { type: 'range', min: 0.25, max: 1.25, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--surface-x': { type: 'range', min: 0.5, max: 2.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--gap-normal': { type: 'range', min: 0, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--gap-dense': { type: 'range', min: 0, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--surface-y': { type: 'range', min: 0.5, max: 2.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--icon': { type: 'range', min: 0.75, max: 2, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--avatar': { type: 'range', min: 1.5, max: 4, step: 0.125, unit: 'rem', decimalPlaces: 3 },\n\t'--shell-header-height': { type: 'range', min: 3, max: 7, step: 0.125, unit: 'rem', decimalPlaces: 3 },\n\t'--shell-sidebar-width': { type: 'range', min: 12, max: 24, step: 0.25, unit: 'rem', decimalPlaces: 2 },\n\t'--content-width-sm': { type: 'range', min: 20, max: 72, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-md': { type: 'range', min: 24, max: 80, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-lg': { type: 'range', min: 32, max: 96, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-xl': { type: 'range', min: 40, max: 108, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-2xl': { type: 'range', min: 48, max: 120, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--adaptive-grid-min-sm': { type: 'range', min: 8, max: 24, step: 0.5, unit: 'rem', decimalPlaces: 1 },\n\t'--adaptive-grid-min-md': { type: 'range', min: 8, max: 32, step: 0.5, unit: 'rem', decimalPlaces: 1 },\n\t'--adaptive-grid-min-lg': { type: 'range', min: 12, max: 40, step: 0.5, unit: 'rem', decimalPlaces: 1 },\n};\n\nfunction labelFromName(name: AdminUIThemeVariableName): string {\n\treturn name\n\t\t.replace(/^--/, '')\n\t\t.replace(/--/g, ' · ')\n\t\t.split('-')\n\t\t.map((part) => part.length <= 3 ? part.toUpperCase() : `${part[0].toUpperCase()}${part.slice(1)}`)\n\t\t.join(' ');\n}\n\nfunction genericDescription(\n\tname: AdminUIThemeVariableName,\n\tgroup: ThemeTweakerGroup,\n): string {\n\tif (name.startsWith('--chart-')) return 'Categorical chart-series color; keep status meaning separate.';\n\tif (name.startsWith('--sidebar-')) return 'Sidebar-specific theme color.';\n\tif (name.startsWith('--inverse-')) return 'Explicitly inverse surface and content color.';\n\tif (name.endsWith('-foreground')) return 'Foreground color paired with the matching solid or surface token.';\n\tif (name.endsWith('--line-height')) return 'Line height paired with the matching typography step.';\n\tif (name.startsWith('--text-')) return 'Font size for the matching typography step.';\n\tif (name.startsWith('--font-')) return 'Font family stack for the matching content role.';\n\tif (name.startsWith('--shadow')) return 'Elevation shadow used by package surfaces and overlays.';\n\tif (group === 'states') return 'Semantic state color shared by package status surfaces.';\n\treturn 'Public theme variable used across package components.';\n}\n\nfunction fields(\n\tnames: readonly AdminUIThemeVariableName[],\n\tgroup: ThemeTweakerGroup,\n\tsection: ThemeTweakerSection,\n\tscope: ThemeTweakerFieldScope,\n\tkind: ThemeTweakerFieldKind,\n): ThemeTweakerField[] {\n\treturn names.map((name) => ({\n\t\tname,\n\t\tlabel: LABELS[name] ?? labelFromName(name),\n\t\tdescription: DESCRIPTIONS[name] ?? genericDescription(name, group),\n\t\tgroup,\n\t\tsection,\n\t\tscope,\n\t\tkind,\n\t\tcontrol: RANGE_CONTROLS[name],\n\t}));\n}\n\n/**\n * Exhaustive editable surface: every shadcn runtime theme variable plus every\n * canonical package-owned root token. Internal and generated utility variables\n * are deliberately absent.\n */\nexport const defaultThemeTweakerFields: readonly ThemeTweakerField[] = [\n\t...fields(THEME_COLORS.slice(0, 6), 'colors', 'surfaces-content', 'mode', 'color'),\n\t...fields(SURFACE_COLORS, 'colors', 'surfaces-content', 'shared', 'color'),\n\t...fields(THEME_COLORS.slice(6, 19), 'colors', 'brand-actions', 'mode', 'color'),\n\t...fields(THEME_COLORS.slice(19, 24), 'colors', 'charts', 'mode', 'color'),\n\t...fields(THEME_COLORS.slice(24), 'colors', 'sidebar', 'mode', 'color'),\n\t...fields(STATE_COLORS.slice(0, 7), 'states', 'semantic-feedback', 'mode', 'color'),\n\t...fields(STATE_COLORS.slice(7), 'states', 'inverse-surfaces', 'mode', 'color'),\n\t...fields(FONT_VARIABLES, 'typography', 'font-families', 'shared', 'font'),\n\t...fields(TYPOGRAPHY_VARIABLES, 'typography', 'type-scale', 'shared', 'length'),\n\t...fields(['--radius'], 'shape', 'radius', 'shared', 'length'),\n\t...fields(SHADOW_VARIABLES, 'shape', 'elevation', 'mode', 'shadow'),\n\t...fields(STRUCTURAL_VARIABLES.slice(0, 2), 'structure', 'global-scales', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(2, 5), 'structure', 'actions-controls', 'shared', 'length'),\n\t...fields(['--gap-normal', '--gap-dense'], 'structure', 'rows-surfaces', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(5, 9), 'structure', 'rows-surfaces', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(9, 11), 'structure', 'media', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(11), 'structure', 'application-shell', 'shared', 'length'),\n\t...fields(LAYOUT_VARIABLES.slice(0, 5), 'structure', 'content-widths', 'shared', 'length'),\n\t...fields(LAYOUT_VARIABLES.slice(5), 'structure', 'adaptive-layout', 'shared', 'length'),\n].map((field) => (\n\tfield.name === '--space-scale' || field.name === '--density-scale'\n\t\t? { ...field, kind: 'number' as const }\n\t\t: field\n));\n","import { Info } from 'lucide-react';\n\nimport { SmartAccordion } from '../../base/accordion';\nimport {\n\tAlert,\n\tAlertDescription,\n\tAlertMetadata,\n\tAlertMetadataItem,\n\tAlertTitle,\n} from '../../base/feedback';\nimport { FormField } from '../../base/forms';\nimport { Input } from '../../base/text-inputs';\nimport { Select, ToggleField } from '../../base/choice-inputs';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { COMPONENT_SCALES, SEMANTIC_TONES } from '../../../lib/component-vocabulary';\nimport type { UIConfig } from '../../../lib/ui-provider';\n\nimport { createSerializableUIConfig } from './theme-tweaker.utils';\n\ninterface ThemeProviderSettingsProps {\n\t/** Configuration for this surface. */\n\tconfig: UIConfig;\n\t/** Fired with the next value. */\n\tonChange: (config: UIConfig) => void;\n\t/** Overrides this surface's own copy. */\n\tstrings?: ThemeProviderSettingsStrings;\n}\n\nexport interface ThemeProviderSettingsStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tboundaryTitle: string;\n\tboundaryDescription: string;\n\tsummary: {\n\t\tlocale: string;\n\t\tcurrency: string;\n\t\tcontrols: string;\n\t\tcards: string;\n\t};\n\t/** Sections to render, in display order. */\n\tsections: {\n\t\tregional: { title: string; description: string };\n\t\tcontent: { title: string; description: string };\n\t\tcomponents: { title: string; description: string };\n\t\ttoasts: { title: string; description: string };\n\t};\n\tlabels: Record<\n\t\t| 'locale'\n\t\t| 'defaultCurrency'\n\t\t| 'displayCurrency'\n\t\t| 'moneyFormat'\n\t\t| 'firstDay'\n\t\t| 'dateFormat'\n\t\t| 'textSize'\n\t\t| 'commentComposer'\n\t\t| 'dualPricing'\n\t\t| 'dualPricingMode'\n\t\t| 'dualPricingLayout'\n\t\t| 'componentScale'\n\t\t| 'itemVariant'\n\t\t| 'buttonTone'\n\t\t| 'buttonStyle'\n\t\t| 'badgeTone'\n\t\t| 'cardSurface'\n\t\t| 'spinner'\n\t\t| 'cardDivider'\n\t\t| 'toastPosition'\n\t\t| 'toastTheme'\n\t\t| 'toastDuration'\n\t\t| 'visibleToasts'\n\t\t| 'closeButton'\n\t\t| 'richColors',\n\t\tstring\n\t>;\n\tdualPricingDescription: string;\n\tdisplayCurrencyPlaceholder: string;\n\toptions: Record<string, string>;\n}\n\nexport const defaultThemeProviderSettingsStrings: ThemeProviderSettingsStrings = {\n\ttitle: 'Application defaults',\n\tdescription: 'Configure the stable display behavior that accompanies the exported CSS theme.',\n\tboundaryTitle: 'Root provider recipe',\n\tboundaryDescription: 'These defaults take effect when UIProvider mounts. CSS variables continue to preview live; accept provider changes by remounting the application root.',\n\tsummary: {\n\t\tlocale: 'Locale',\n\t\tcurrency: 'Currency',\n\t\tcontrols: 'Controls',\n\t\tcards: 'Cards',\n\t},\n\tsections: {\n\t\tregional: {\n\t\t\ttitle: 'Regional formatting',\n\t\t\tdescription: 'Locale, currency, money, and date conventions.',\n\t\t},\n\t\tcontent: {\n\t\t\ttitle: 'Content behavior',\n\t\t\tdescription: 'Typography, comments, and dual-pricing presentation.',\n\t\t},\n\t\tcomponents: {\n\t\t\ttitle: 'Component defaults',\n\t\t\tdescription: 'Sizes, variants, surfaces, and action treatment.',\n\t\t},\n\t\ttoasts: {\n\t\t\ttitle: 'Toast defaults',\n\t\t\tdescription: 'Placement, duration, appearance, and capacity.',\n\t\t},\n\t},\n\tlabels: {\n\t\tlocale: 'Locale',\n\t\tdefaultCurrency: 'Default currency',\n\t\tdisplayCurrency: 'Display currency',\n\t\tmoneyFormat: 'Money format',\n\t\tfirstDay: 'First day of week',\n\t\tdateFormat: 'Date format',\n\t\ttextSize: 'Default text size',\n\t\tcommentComposer: 'Comment composer',\n\t\tdualPricing: 'Dual pricing',\n\t\tdualPricingMode: 'Dual-pricing mode',\n\t\tdualPricingLayout: 'Dual-pricing layout',\n\t\tcomponentScale: 'Component scale',\n\t\titemVariant: 'Item variant',\n\t\tbuttonTone: 'Button tone',\n\t\tbuttonStyle: 'Button style',\n\t\tbadgeTone: 'Badge tone',\n\t\tcardSurface: 'Card surface',\n\t\tspinner: 'Spinner',\n\t\tcardDivider: 'Card header divider',\n\t\ttoastPosition: 'Position',\n\t\ttoastTheme: 'Theme',\n\t\ttoastDuration: 'Duration (ms)',\n\t\tvisibleToasts: 'Visible toasts',\n\t\tcloseButton: 'Close button',\n\t\trichColors: 'Rich semantic colors',\n\t},\n\tdualPricingDescription: 'Show an optional display currency.',\n\tdisplayCurrencyPlaceholder: 'Optional',\n\toptions: {\n\t\tdefault: 'Default',\n\t\tdecimal: 'Decimal',\n\t\twith_code: 'With code',\n\t\twith_symbol: 'With symbol',\n\t\tlocale_aware: 'Locale aware',\n\t\tsunday: 'Sunday',\n\t\tmonday: 'Monday',\n\t\ttuesday: 'Tuesday',\n\t\twednesday: 'Wednesday',\n\t\tthursday: 'Thursday',\n\t\tfriday: 'Friday',\n\t\tsaturday: 'Saturday',\n\t\ttop: 'Top',\n\t\tbottom: 'Bottom',\n\t\tdefault_only: 'Default only',\n\t\tdual: 'Dual',\n\t\tdynamic: 'Dynamic',\n\t\tinline: 'Inline',\n\t\tlines: 'Lines',\n\t\toutline: 'Outline',\n\t\tmuted: 'Muted',\n\t\tprimary: 'Primary',\n\t\tsecondary: 'Secondary',\n\t\tdark: 'Dark',\n\t\twarning: 'Warning',\n\t\tsuccess: 'Success',\n\t\tlight: 'Light',\n\t\tsolid: 'Solid',\n\t\tghost: 'Ghost',\n\t\tinfo: 'Info',\n\t\tdestructive: 'Destructive',\n\t\txs: 'XS',\n\t\tsm: 'SM',\n\t\tmd: 'MD',\n\t\tcard: 'Card',\n\t\tflat: 'Flat',\n\t\tframed: 'Framed',\n\t\tshimmer: 'Shimmer',\n\t\tprogress: 'Progress',\n\t\tsystem: 'System',\n\t\t'top-right': 'Top right',\n\t\t'top-left': 'Top left',\n\t\t'top-center': 'Top center',\n\t\t'bottom-right': 'Bottom right',\n\t\t'bottom-left': 'Bottom left',\n\t\t'bottom-center': 'Bottom center',\n\t\txxs: 'XXS',\n\t\tpxs: 'PXS',\n\t\tbase: 'Base',\n\t\tlg: 'LG',\n\t\txl: 'XL',\n\t},\n};\n\nfunction selectOptions(values: readonly string[], strings: ThemeProviderSettingsStrings) {\n\treturn values.map((value) => ({\n\t\tvalue,\n\t\tlabel: strings.options[value] ?? value.replaceAll('_', ' ').replace(/\\b\\w/g, (character) => character.toUpperCase()),\n\t}));\n}\n\nexport function ThemeProviderSettings({ config, onChange, strings = defaultThemeProviderSettingsStrings }: ThemeProviderSettingsProps) {\n\tconst resolved = createSerializableUIConfig(config);\n\tconst scaleOptions = selectOptions(COMPONENT_SCALES, strings);\n\tconst weekdays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].map((day, value) => ({\n\t\tvalue: String(value),\n\t\tlabel: strings.options[day],\n\t}));\n\tconst update = (slice: keyof UIConfig, key: string, value: unknown) => {\n\t\tonChange({\n\t\t\t...resolved,\n\t\t\t[slice]: {\n\t\t\t\t...(resolved[slice] as object),\n\t\t\t\t[key]: value,\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t<Stack gap=\"lg\" className=\"theme-tweaker--provider-settings\">\n\t\t\t<Stack gap=\"normal\">\n\t\t\t\t<Text weight=\"semibold\">{strings.title}</Text>\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.description}\n\t\t\t\t</Text>\n\t\t\t</Stack>\n\t\t\t<Alert tone=\"info\" role=\"note\" className=\"theme-tweaker--provider-boundary\">\n\t\t\t\t<Info aria-hidden=\"true\" />\n\t\t\t\t<AlertTitle>{strings.boundaryTitle}</AlertTitle>\n\t\t\t\t<AlertDescription>{strings.boundaryDescription}</AlertDescription>\n\t\t\t\t<AlertMetadata>\n\t\t\t\t\t<AlertMetadataItem label={strings.summary.locale} value={resolved.formatting?.locale ?? strings.options.default} />\n\t\t\t\t\t<AlertMetadataItem label={strings.summary.currency} value={resolved.money?.defaultCurrency ?? strings.options.default} />\n\t\t\t\t\t<AlertMetadataItem\n\t\t\t\t\t\tlabel={strings.summary.controls}\n\t\t\t\t\t\tvalue={strings.options[resolved.density?.defaultScale ?? 'md'] ?? resolved.density?.defaultScale ?? strings.options.md}\n\t\t\t\t\t/>\n\t\t\t\t\t<AlertMetadataItem\n\t\t\t\t\t\tlabel={strings.summary.cards}\n\t\t\t\t\t\tvalue={strings.options[resolved.card?.defaultSurface ?? 'card'] ?? resolved.card?.defaultSurface ?? strings.options.default}\n\t\t\t\t\t/>\n\t\t\t\t</AlertMetadata>\n\t\t\t</Alert>\n\t\t\t<SmartAccordion\n\t\t\t\tmultiple\n\t\t\t\tdefaultValue={['regional']}\n\t\t\t\tvariant=\"bordered\"\n\t\t\t\ticonStyle=\"none\"\n\t\t\t\tcontentClassName=\"pb-surface\"\n\t\t\t\titems={[\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'regional',\n\t\t\t\t\t\ttitle: strings.sections.regional.title,\n\t\t\t\t\t\tdescription: strings.sections.regional.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.locale}>\n\t\t\t\t\t\t\t\t\t<Input value={resolved.formatting?.locale ?? ''} onChange={(event) => update('formatting', 'locale', event.target.value)} />\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.defaultCurrency}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.defaultCurrency ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('money', 'defaultCurrency', event.target.value.toUpperCase())}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.displayCurrency}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.displayCurrency ?? ''}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.displayCurrencyPlaceholder}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('money', 'displayCurrency', event.target.value.toUpperCase() || undefined)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.moneyFormat}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.formatMode}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['decimal', 'with_code', 'with_symbol', 'locale_aware'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'formatMode', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.firstDay}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={String(resolved.dates?.weekStartsOn ?? 1)}\n\t\t\t\t\t\t\t\t\t\toptions={weekdays}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('dates', 'weekStartsOn', Number(next))}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.dateFormat}>\n\t\t\t\t\t\t\t\t\t<Input value={resolved.dates?.format ?? ''} onChange={(event) => update('dates', 'format', event.target.value)} />\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'content',\n\t\t\t\t\t\ttitle: strings.sections.content.title,\n\t\t\t\t\t\tdescription: strings.sections.content.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.textSize}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.typography?.defaultTextSize}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['xxs', 'xs', 'pxs', 'sm', 'base', 'lg', 'xl'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('typography', 'defaultTextSize', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.commentComposer}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.comments?.composerPosition}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['top', 'bottom'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('comments', 'composerPosition', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.dualPricing}\n\t\t\t\t\t\t\t\t\tdescription={strings.dualPricingDescription}\n\t\t\t\t\t\t\t\t\tvalue={resolved.money?.dualPricingEnabled ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'dualPricingEnabled', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.dualPricingMode}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.displayMode}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['default_only', 'dual', 'dynamic'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'displayMode', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.dualPricingLayout}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.dualPricingDisplay}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['inline', 'lines'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'dualPricingDisplay', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'components',\n\t\t\t\t\t\ttitle: strings.sections.components.title,\n\t\t\t\t\t\tdescription: strings.sections.components.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.componentScale}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.density?.defaultScale}\n\t\t\t\t\t\t\t\t\t\toptions={scaleOptions}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('density', 'defaultScale', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.itemVariant}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.item?.defaultVariant}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['default', 'outline', 'muted'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('item', 'defaultVariant', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.buttonTone}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.button?.defaultTone}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(SEMANTIC_TONES, strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('button', 'defaultTone', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.buttonStyle}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.button?.defaultButtonStyle}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['solid', 'outline', 'ghost'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('button', 'defaultButtonStyle', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.badgeTone}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.badge?.defaultTone}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(SEMANTIC_TONES, strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('badge', 'defaultTone', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.cardSurface}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.card?.defaultSurface}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['card', 'flat', 'framed'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('card', 'defaultSurface', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.spinner}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.spinner?.defaultVariant}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['default', 'shimmer', 'progress'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('spinner', 'defaultVariant', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.cardDivider}\n\t\t\t\t\t\t\t\t\tvalue={resolved.card?.defaultHeaderDivider ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('card', 'defaultHeaderDivider', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'toasts',\n\t\t\t\t\t\ttitle: strings.sections.toasts.title,\n\t\t\t\t\t\tdescription: strings.sections.toasts.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.toastPosition}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.position}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['top-right', 'top-left', 'top-center', 'bottom-right', 'bottom-left', 'bottom-center'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'position', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.toastTheme}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.theme}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['light', 'dark', 'system'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'theme', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.toastDuration}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\tmin={1000}\n\t\t\t\t\t\t\t\t\t\tstep={500}\n\t\t\t\t\t\t\t\t\t\tvalue={String(resolved.toast?.duration ?? 5000)}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('toast', 'duration', Number(event.target.value))}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.visibleToasts}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\tmin={1}\n\t\t\t\t\t\t\t\t\t\tmax={10}\n\t\t\t\t\t\t\t\t\t\tvalue={String(resolved.toast?.visibleToasts ?? 4)}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('toast', 'visibleToasts', Number(event.target.value))}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.closeButton}\n\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.closeButton ?? true}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'closeButton', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.richColors}\n\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.richColors ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'richColors', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n","import { defaultThemeProviderSettingsStrings, type ThemeProviderSettingsStrings } from './theme-provider-settings';\n\nexport interface ThemeTweakerStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tsearchLabel: string;\n\tsearchPlaceholder: string;\n\tsearchHint: string;\n\tsearchResults: string;\n\tallGroups: string;\n\tgroupNavigationLabel: string;\n\tpreviousGroup: string;\n\tnextGroup: string;\n\tgroupNavigationTitle: string;\n\tgroupNavigationDescription: string;\n\tsharedScope: string;\n\tmixedScope: string;\n\tvariableCount: string;\n\tgroupSectionLabel: string;\n\tlightMode: string;\n\tdarkMode: string;\n\treset: string;\n\tcopy: string;\n\tcopyProvider: string;\n\tcopyOverrides: string;\n\texportProvider: string;\n\texportOptions: string;\n\texport: string;\n\texportPending: string;\n\texportDialogTitle: string;\n\texportDialogDescription: string;\n\tdownloadCss: string;\n\tdownloadProvider: string;\n\tclose: string;\n\tcopiedStatus: string;\n\texportedStatus: string;\n\tinvalidTheme: string;\n\temptySearch: string;\n\tinheritValue: string;\n\tresetVariable: string;\n\tchooseColor: string;\n\tadjustVariable: string;\n\tchangedCount: string;\n\tcssOutputLabel: string;\n\tcssOutputDescription: string;\n\toverrideOutputLabel: string;\n\toverrideOutputDescription: string;\n\tproviderOutputLabel: string;\n\tproviderOutputDescription: string;\n\tautoPalette: string;\n\tautoPaletteDescription: string;\n\ttypeRecipeTitle: string;\n\ttypeRecipeDescription: string;\n\tbaseTypeSize: string;\n\ttypeRatio: string;\n\televationRecipeTitle: string;\n\televationRecipeDescription: string;\n\televationIntensity: string;\n\tpreviewTitle: string;\n\tpreviewDescription: string;\n\tpreviewItemTitle: string;\n\tpreviewItemDescription: string;\n\tpreviewFieldLabel: string;\n\tpreviewFieldPlaceholder: string;\n\tpreviewAction: string;\n\tpreviewSuccess: string;\n\tpreviewWarning: string;\n\tpreviewContract: string;\n\tproviderSettings: ThemeProviderSettingsStrings;\n\tgroups: Record<'colors' | 'states' | 'typography' | 'shape' | 'structure' | 'defaults', string>;\n\tgroupDescriptions: Record<'colors' | 'states' | 'typography' | 'shape' | 'structure' | 'defaults', string>;\n\tsections: Record<\n\t\t| 'surfaces-content'\n\t\t| 'brand-actions'\n\t\t| 'charts'\n\t\t| 'sidebar'\n\t\t| 'semantic-feedback'\n\t\t| 'inverse-surfaces'\n\t\t| 'font-families'\n\t\t| 'type-scale'\n\t\t| 'radius'\n\t\t| 'elevation'\n\t\t| 'global-scales'\n\t\t| 'actions-controls'\n\t\t| 'rows-surfaces'\n\t\t| 'media'\n\t\t| 'application-shell'\n\t\t| 'content-widths'\n\t\t| 'adaptive-layout',\n\t\tstring\n\t>;\n}\n\nexport const defaultThemeTweakerStrings: ThemeTweakerStrings = {\n\ttitle: 'Theme tweaker',\n\tdescription: 'Edit the public theme contract, calculate coherent recipes, and export complete CSS plus root display defaults.',\n\tsearchLabel: 'Search variables',\n\tsearchPlaceholder: 'Search by token, label, or purpose…',\n\tsearchHint: 'Search spans every public theme group.',\n\tsearchResults: 'Results: {{count}}',\n\tallGroups: 'All groups',\n\tgroupNavigationLabel: 'Theme categories',\n\tpreviousGroup: 'Previous categories',\n\tnextGroup: 'Next categories',\n\tgroupNavigationTitle: 'Theme controls',\n\tgroupNavigationDescription: 'Choose one contract area to edit.',\n\tsharedScope: 'Shared',\n\tmixedScope: 'Mixed scope',\n\tvariableCount: 'Variables: {{count}}',\n\tgroupSectionLabel: '{{group}} · {{section}}',\n\tlightMode: 'Light',\n\tdarkMode: 'Dark',\n\treset: 'Reset overrides',\n\tcopy: 'Copy CSS',\n\tcopyProvider: 'Copy provider config',\n\tcopyOverrides: 'Copy override-only CSS',\n\texportProvider: 'Export provider config',\n\texportOptions: 'More export options',\n\texport: 'Export',\n\texportPending: 'Downloading…',\n\texportDialogTitle: 'Export theme',\n\texportDialogDescription: 'Review, copy, or download the complete CSS theme and its matching UIProvider configuration.',\n\tdownloadCss: 'Download CSS',\n\tdownloadProvider: 'Download provider config',\n\tclose: 'Close',\n\tcopiedStatus: 'Copied to the clipboard.',\n\texportedStatus: 'File downloaded.',\n\tinvalidTheme: 'Fix the invalid CSS override before copying or exporting.',\n\temptySearch: 'No public theme variables match this search.',\n\tinheritValue: 'Inherit package value',\n\tresetVariable: 'Reset variable',\n\tchooseColor: 'Choose {{label}}',\n\tadjustVariable: 'Adjust {{label}}',\n\tchangedCount: 'Overrides: {{count}}',\n\tcssOutputLabel: 'Complete theme CSS',\n\tcssOutputDescription: 'A standalone light, dark, typography, shape, and structure contract for every public variable.',\n\toverrideOutputLabel: 'Override-only CSS',\n\toverrideOutputDescription: 'The compact alternative containing only values changed in this session.',\n\tproviderOutputLabel: 'UIProvider config',\n\tproviderOutputDescription: 'Mount-once display defaults for the application root.',\n\tautoPalette: 'Derive supporting colors',\n\tautoPaletteDescription: 'Keep status pairs, muted surfaces, accents, borders, charts, links, and sidebar actions coherent with the primary color.',\n\ttypeRecipeTitle: 'Calculated type scale',\n\ttypeRecipeDescription: 'Generate every public font step and line height from one body anchor and modular ratio.',\n\tbaseTypeSize: 'Base size',\n\ttypeRatio: 'Heading ratio',\n\televationRecipeTitle: 'Calculated elevation',\n\televationRecipeDescription: 'Generate the complete shadow ladder from one restrained intensity.',\n\televationIntensity: 'Shadow intensity',\n\tpreviewTitle: 'Semantic preview',\n\tpreviewDescription: 'The same variables drive surfaces, typography, controls, rows, and states.',\n\tpreviewItemTitle: 'Customer workspace',\n\tpreviewItemDescription: 'Long descriptions and actions keep the package rhythm.',\n\tpreviewFieldLabel: 'Workspace name',\n\tpreviewFieldPlaceholder: 'Acme operations',\n\tpreviewAction: 'Save changes',\n\tpreviewSuccess: 'Healthy',\n\tpreviewWarning: 'Review',\n\tpreviewContract: 'CSS variables',\n\tproviderSettings: defaultThemeProviderSettingsStrings,\n\tgroups: {\n\t\tcolors: 'Colors',\n\t\tstates: 'States',\n\t\ttypography: 'Typography',\n\t\tshape: 'Shape & elevation',\n\t\tstructure: 'Structure',\n\t\tdefaults: 'Provider',\n\t},\n\tgroupDescriptions: {\n\t\tcolors: 'Application surfaces, brand actions, charts, and sidebar colors.',\n\t\tstates: 'Semantic feedback and inverse-surface color pairs.',\n\t\ttypography: 'Font families and the calculated public type scale.',\n\t\tshape: 'Corner radius and the complete elevation ladder.',\n\t\tstructure: 'Density, spacing, controls, rows, media, and shell geometry.',\n\t\tdefaults: 'Mount-once UIProvider formatting and component defaults.',\n\t},\n\tsections: {\n\t\t'surfaces-content': 'Surfaces & content',\n\t\t'brand-actions': 'Brand & actions',\n\t\tcharts: 'Charts',\n\t\tsidebar: 'Sidebar',\n\t\t'semantic-feedback': 'Semantic feedback',\n\t\t'inverse-surfaces': 'Inverse surfaces',\n\t\t'font-families': 'Font families',\n\t\t'type-scale': 'Type scale',\n\t\tradius: 'Radius',\n\t\televation: 'Elevation',\n\t\t'global-scales': 'Global scales',\n\t\t'actions-controls': 'Actions & controls',\n\t\t'rows-surfaces': 'Rows & surfaces',\n\t\tmedia: 'Media',\n\t\t'application-shell': 'Application shell',\n\t\t'content-widths': 'Content widths',\n\t\t'adaptive-layout': 'Adaptive layout',\n\t},\n};\n","import type {\n\tAdminUIThemeMode,\n\tAdminUIThemeOverrides,\n} from './theme-tweaker.types';\n\nexport interface AdminUIPaletteRecipe {\n\tprimary: string;\n\tmode?: AdminUIThemeMode;\n}\n\nexport interface AdminUITypeScaleRecipe {\n\t/** Body-size anchor in pixels. The package default is 16. */\n\tbaseSize: number;\n\t/** Modular ratio for headings and display sizes. Defaults to 1.2. */\n\tratio?: number;\n}\n\nexport interface AdminUIElevationRecipe {\n\t/** Bounded visual intensity from 0 (flat) to 1 (pronounced). */\n\tintensity: number;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n\treturn Math.min(max, Math.max(min, value));\n}\n\nfunction contrastForeground(color: string, mode: AdminUIThemeMode): string {\n\tconst digits = color.trim().match(/^#([\\da-f]{3}|[\\da-f]{6})$/i)?.[1];\n\tconst hex = digits?.length === 3 ? [...digits].map(value => value + value).join('') : digits;\n\tif (hex) {\n\t\tconst channels = [0, 2, 4].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16) / 255);\n\t\tconst luminance = channels\n\t\t\t.map((channel) => channel <= 0.03928 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4)\n\t\t\t.reduce((sum, channel, index) => sum + channel * [0.2126, 0.7152, 0.0722][index], 0);\n\t\treturn luminance > 0.28 ? 'oklch(0.18 0.01 260)' : 'oklch(0.985 0 0)';\n\t}\n\n\tconst match = color.match(/oklch\\(\\s*([\\d.]+)(%)?/i);\n\tconst lightness = Number.parseFloat(match?.[1] ?? 'NaN') / (match?.[2] ? 100 : 1);\n\tif (Number.isFinite(lightness)) {\n\t\treturn lightness > 0.67 ? 'oklch(0.18 0.01 260)' : 'oklch(0.985 0 0)';\n\t}\n\n\treturn mode === 'dark' ? 'oklch(0.18 0.01 260)' : 'oklch(0.985 0 0)';\n}\n\n/**\n * Builds a coherent brand recipe from one primary color. Derived values stay\n * expressed in CSS so they continue to follow consumer-edited background and\n * foreground tokens without introducing another runtime color system.\n */\nexport function deriveAdminUIPalette({\n\tprimary,\n\tmode = 'light',\n}: AdminUIPaletteRecipe): AdminUIThemeOverrides {\n\tconst dark = mode === 'dark';\n\t// A small brand influence ties the palette together without erasing status hues.\n\tconst harmonize = (light: string, night: string) => `color-mix(in oklab, ${dark ? night : light} 94%, var(--primary))`;\n\treturn {\n\t\t'--primary': primary,\n\t\t'--primary-accent': dark\n\t\t\t? 'oklch(from var(--primary) clamp(0.7, l, 0.85) min(c, 0.16) h)'\n\t\t\t: 'oklch(from var(--primary) clamp(0.35, l, 0.55) min(c, 0.16) h)',\n\t\t'--success': harmonize('oklch(0.48 0.11 155)', 'oklch(0.74 0.12 155)'),\n\t\t'--success-foreground': dark ? 'oklch(0.23 0.025 155)' : 'oklch(0.985 0 0)',\n\t\t'--info': harmonize('oklch(0.52 0.12 250)', 'oklch(0.75 0.1 250)'),\n\t\t'--info-foreground': dark ? 'oklch(0.23 0.025 250)' : 'oklch(0.985 0 0)',\n\t\t'--warning': harmonize('oklch(0.78 0.13 75)', 'oklch(0.81 0.12 75)'),\n\t\t'--warning-foreground': 'oklch(0.28 0.035 60)',\n\t\t'--warning-accent': harmonize('oklch(0.54 0.11 65)', 'oklch(0.81 0.12 75)'),\n\t\t'--destructive': harmonize('oklch(0.55 0.17 25)', 'oklch(0.74 0.14 25)'),\n\t\t'--destructive-foreground': dark ? 'oklch(0.23 0.035 25)' : 'oklch(0.985 0 0)',\n\t\t'--primary-foreground': contrastForeground(primary, mode),\n\t\t'--secondary': 'color-mix(in oklab, var(--primary) 10%, var(--background))',\n\t\t'--secondary-foreground': 'var(--foreground)',\n\t\t'--muted': 'color-mix(in oklab, var(--primary) 7%, var(--background))',\n\t\t'--muted-foreground': 'color-mix(in oklab, var(--foreground) 62%, var(--background))',\n\t\t'--accent': 'color-mix(in oklab, var(--primary) 14%, var(--background))',\n\t\t'--accent-foreground': 'var(--foreground)',\n\t\t'--border': 'color-mix(in oklab, var(--primary) 14%, var(--background))',\n\t\t'--input': 'color-mix(in oklab, var(--primary) 18%, var(--background))',\n\t\t'--ring': 'var(--primary)',\n\t\t'--link-color': 'var(--primary-accent)',\n\t\t'--chart-1': 'var(--primary)',\n\t\t'--chart-2': harmonize('oklch(0.56 0.11 230)', 'oklch(0.76 0.11 230)'),\n\t\t'--chart-3': harmonize('oklch(0.56 0.15 285)', 'oklch(0.76 0.15 285)'),\n\t\t'--chart-4': harmonize('oklch(0.58 0.14 330)', 'oklch(0.76 0.14 330)'),\n\t\t'--chart-5': harmonize('oklch(0.6 0.12 60)', 'oklch(0.76 0.12 60)'),\n\t\t'--sidebar-primary': 'var(--primary)',\n\t\t'--sidebar-primary-foreground': 'var(--primary-foreground)',\n\t\t'--sidebar-accent': 'var(--accent)',\n\t\t'--sidebar-accent-foreground': 'var(--accent-foreground)',\n\t\t'--sidebar-border': 'var(--border)',\n\t\t'--sidebar-ring': 'var(--ring)',\n\t};\n}\n\nconst BODY_STEPS = {\n\txxs: 0.75,\n\txs: 0.75,\n\tpxs: 0.8125,\n\tsm: 0.875,\n\tbase: 1,\n} as const;\n\nconst HEADING_STEPS = ['lg', 'xl', '2xl', '3xl', '4xl', '5xl', '6xl', '7xl', '8xl', '9xl'] as const;\n\n/** Generates the full public typography ladder from one base size. */\nexport function deriveAdminUITypeScale({\n\tbaseSize,\n\tratio = 1.2,\n}: AdminUITypeScaleRecipe): AdminUIThemeOverrides {\n\tconst boundedBase = clamp(baseSize, 14, 20);\n\tconst boundedRatio = clamp(ratio, 1.125, 1.333);\n\tconst overrides: AdminUIThemeOverrides = {};\n\n\tfor (const [step, factor] of Object.entries(BODY_STEPS)) {\n\t\tconst pixels = Math.max(12, boundedBase * factor);\n\t\toverrides[`--text-${step}`] = `${Number((pixels / 16).toFixed(4))}rem`;\n\t\toverrides[`--text-${step}--line-height`] = `${Number((Math.max(pixels + 6, pixels * 1.45) / pixels).toFixed(4))}`;\n\t}\n\n\tHEADING_STEPS.forEach((step, index) => {\n\t\tconst pixels = boundedBase * boundedRatio ** (index + 1);\n\t\toverrides[`--text-${step}`] = `${Number((pixels / 16).toFixed(4))}rem`;\n\t\toverrides[`--text-${step}--line-height`] = `${Number(clamp(1.55 - index * 0.065, 1, 1.5).toFixed(4))}`;\n\t});\n\n\treturn overrides;\n}\n\n/** Generates all public elevation steps from one bounded intensity. */\nexport function deriveAdminUIElevation({ intensity }: AdminUIElevationRecipe): AdminUIThemeOverrides {\n\tconst value = clamp(intensity, 0, 1);\n\tconst alpha = (factor: number) => Number((value * factor).toFixed(3));\n\treturn {\n\t\t'--shadow-2xs': `0 1px 2px 0 oklch(0 0 0 / ${alpha(0.06)})`,\n\t\t'--shadow-xs': `0 1px 3px 0 oklch(0 0 0 / ${alpha(0.07)})`,\n\t\t'--shadow-sm': `0 1px 2px 0 oklch(0 0 0 / ${alpha(0.10)}), 0 3px 8px -3px oklch(0 0 0 / ${alpha(0.13)})`,\n\t\t'--shadow': `0 1px 3px 0 oklch(0 0 0 / ${alpha(0.13)}), 0 4px 10px -3px oklch(0 0 0 / ${alpha(0.13)})`,\n\t\t'--shadow-md': `0 2px 4px -2px oklch(0 0 0 / ${alpha(0.13)}), 0 6px 16px -4px oklch(0 0 0 / ${alpha(0.17)})`,\n\t\t'--shadow-lg': `0 2px 6px -2px oklch(0 0 0 / ${alpha(0.13)}), 0 10px 24px -6px oklch(0 0 0 / ${alpha(0.20)})`,\n\t\t'--shadow-xl': `0 14px 28px -8px oklch(0 0 0 / ${alpha(0.22)}), 0 6px 12px -6px oklch(0 0 0 / ${alpha(0.12)})`,\n\t\t'--shadow-2xl': `0 24px 48px -14px oklch(0 0 0 / ${alpha(0.28)})`,\n\t};\n}\n","import { CheckCircle2, Copy, Download, LayoutGrid, Moon, Palette, RotateCcw, Search, Settings2, Shapes, ShieldCheck, Sun, Type, type LucideIcon } from 'lucide-react';\nimport { forwardRef, useEffect, useId, useImperativeHandle, useMemo, useRef, useState, type ReactNode } from 'react';\n\nimport { SmartAccordion } from '../../base/accordion';\nimport { Badge } from '../../base/badge';\nimport { Button } from '../../base/buttons';\nimport { Card } from '../../base/cards';\nimport { DialogClose } from '../../base/display/dialog';\nimport { ActionDialog, useOverlayVisibility } from '../overlays';\nimport { ColorInput, SliderField } from '../../base/value-inputs';\nimport { FormField } from '../../base/forms';\nimport { Input, Textarea } from '../../base/text-inputs';\nimport { ToggleField } from '../../base/choice-inputs';\nimport { DecimalInput } from '../../base/forms-numeric';\nimport { Item } from '../../base/item';\nimport { Tabs, TabsList, TabsTrigger } from '../../base/navigation';\nimport { Grid, Stack } from '../../base/structure';\nimport { MonoValue } from '../../primitives';\nimport { Heading, Text } from '../../typography';\nimport { interpolateString, useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultThemeTweakerFields } from './theme-tweaker.fields';\nimport { defaultThemeTweakerStrings, type ThemeTweakerStrings } from './theme-tweaker.strings';\nimport { ThemeProviderSettings } from './theme-provider-settings';\nimport type {\n\tAdminUIThemeDefinition,\n\tAdminUIThemeMode,\n\tAdminUIThemeOverrides,\n\tThemeTweakerField,\n\tThemeTweakerGroup,\n\tThemeTweakerProps,\n\tThemeTweakerRangeControl,\n\tThemeTweakerSection,\n} from './theme-tweaker.types';\nimport {\n\tadminUIThemeToStyle,\n\tcountAdminUIThemeOverrides,\n\tcreateAdminUITheme,\n\tcreateSerializableUIConfig,\n\tcreateThemeTweakerExportArtifact,\n\tdownloadAdminUITheme,\n\tdownloadAdminUITextFile,\n} from './theme-tweaker.utils';\nimport { deriveAdminUIElevation, deriveAdminUIPalette, deriveAdminUITypeScale } from './theme-tweaker.recipes';\nimport { ThemeScope } from './theme-scope';\nimport { useAppliedTheme } from './use-applied-theme';\n\nconst GROUPS: readonly ThemeTweakerGroup[] = ['colors', 'states', 'typography', 'shape', 'structure', 'defaults'];\n\nconst GROUP_ICONS: Record<ThemeTweakerGroup, LucideIcon> = {\n\tcolors: Palette,\n\tstates: ShieldCheck,\n\ttypography: Type,\n\tshape: Shapes,\n\tstructure: LayoutGrid,\n\tdefaults: Settings2,\n};\n\ntype ActionStatus = 'idle' | 'copied' | 'exported';\n\ninterface ThemeExportArtifactProps {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tcode: string;\n\tcopyLabel: string;\n\tdownloadLabel: string;\n\t/** Fired when an entry is copied. */\n\tonCopy: () => void;\n\t/** Fired when an entry is downloaded. */\n\tonDownload: () => void;\n\tdownloading?: boolean;\n}\n\nfunction ThemeExportArtifact({\n\ttitle,\n\tdescription,\n\tcode,\n\tcopyLabel,\n\tdownloadLabel,\n\tonCopy,\n\tonDownload,\n\tdownloading = false,\n}: ThemeExportArtifactProps) {\n\tconst titleId = useId();\n\n\treturn (\n\t\t<Stack\n\t\t\trender={<section aria-labelledby={titleId} />}\n\t\t\tgap=\"md\"\n\t\t\tclassName=\"theme-tweaker--export-artifact min-w-0\"\n\t\t>\n\t\t\t<Stack\n\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\talign={{ base: 'stretch', sm: 'start' }}\n\t\t\t\tjustify={{ sm: 'between' }}\n\t\t\t\tgap=\"md\"\n\t\t\t\tclassName=\"theme-tweaker--export-artifact-header\"\n\t\t\t>\n\t\t\t\t<Stack gap=\"dense\" className=\"min-w-0\">\n\t\t\t\t\t<Heading id={titleId} tag=\"h3\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Text>\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap className=\"theme-tweaker--export-artifact-actions sm:shrink-0\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\ticon={Copy}\n\t\t\t\t\t\tonClick={onCopy}\n\t\t\t\t\t>\n\t\t\t\t\t\t{copyLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon={Download}\n\t\t\t\t\t\tloading={downloading}\n\t\t\t\t\t\tonClick={onDownload}\n\t\t\t\t\t>\n\t\t\t\t\t\t{downloadLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<pre\n\t\t\t\ttabIndex={0}\n\t\t\t\taria-label={title}\n\t\t\t\tclassName=\"theme-tweaker--export-code max-h-48 min-w-0 overflow-auto rounded-radius border border-border bg-muted/30 p-surface-xs font-mono text-xs leading-relaxed text-foreground focus-visible:outline-1 focus-visible:ring-[3px] focus-visible:ring-ring/50 sm:max-h-72\"\n\t\t\t>\n\t\t\t\t<code>{code}</code>\n\t\t\t</pre>\n\t\t</Stack>\n\t);\n}\n\ninterface VisibleThemeSection {\n\tgroup: ThemeTweakerGroup;\n\tsection: ThemeTweakerSection;\n\tfields: ThemeTweakerField[];\n}\n\ninterface ThemeVariableFieldProps {\n\tfield: ThemeTweakerField;\n\tvalue: string;\n\teffectiveValue: string;\n\t/** Fired with the next value. */\n\tonChange: (value: string) => void;\n\tonReset: () => void;\n\t/** Overrides this surface's own copy. */\n\tstrings: ThemeTweakerStrings;\n}\n\nfunction parseRangeValue(value: string, control: ThemeTweakerRangeControl): number {\n\tconst parsed = Number.parseFloat(value);\n\tif (!Number.isFinite(parsed)) return control.min;\n\treturn Math.min(control.max, Math.max(control.min, parsed));\n}\n\nfunction serializeRangeValue(value: number, control: ThemeTweakerRangeControl): string {\n\tconst precision = control.decimalPlaces ?? 3;\n\tconst normalized = Number(value.toFixed(precision));\n\treturn `${normalized}${control.unit ?? ''}`;\n}\n\nfunction resolveInspectionTarget(target: ThemeTweakerProps['target'], self: HTMLDivElement | null): HTMLElement | null {\n\tif (target === 'document') return document.documentElement;\n\tif (target === 'self' || target === null) return self;\n\tif (typeof target === 'function') return target();\n\treturn target ?? self;\n}\n\nfunction captureResolvedTheme(theme: AdminUIThemeDefinition, fields: readonly ThemeTweakerField[]): AdminUIThemeDefinition {\n\tif (typeof document === 'undefined' || typeof window === 'undefined') return createAdminUITheme(theme);\n\tconst root = document.documentElement;\n\tconst names = [...new Set(fields.map((field) => field.name))];\n\tconst originalLight = root.classList.contains('light');\n\tconst originalDark = root.classList.contains('dark');\n\tconst originalStyles = new Map(\n\t\tnames.map((name) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\tvalue: root.style.getPropertyValue(name),\n\t\t\t\tpriority: root.style.getPropertyPriority(name),\n\t\t\t},\n\t\t]),\n\t);\n\n\tconst capture = (mode: AdminUIThemeMode) => {\n\t\tfor (const name of names) root.style.removeProperty(name);\n\t\troot.classList.toggle('light', mode === 'light');\n\t\troot.classList.toggle('dark', mode === 'dark');\n\t\tfor (const [name, value] of Object.entries(adminUIThemeToStyle(theme, mode))) {\n\t\t\tif (typeof value === 'string') root.style.setProperty(name, value);\n\t\t}\n\t\tconst computed = window.getComputedStyle(root);\n\t\treturn Object.fromEntries(names.map((name) => [name, computed.getPropertyValue(name).trim()] as const).filter((entry) => entry[1].length > 0));\n\t};\n\n\ttry {\n\t\tconst light = capture('light');\n\t\tconst dark = capture('dark');\n\t\tconst sharedNames = new Set(fields.filter((field) => field.scope === 'shared').map((field) => field.name));\n\t\treturn createAdminUITheme({\n\t\t\tmode: theme.mode,\n\t\t\tshared: Object.fromEntries(Object.entries(light).filter(([name]) => sharedNames.has(name as `--${string}`))),\n\t\t\tlight: Object.fromEntries(Object.entries(light).filter(([name]) => !sharedNames.has(name as `--${string}`))),\n\t\t\tdark: Object.fromEntries(Object.entries(dark).filter(([name]) => !sharedNames.has(name as `--${string}`))),\n\t\t});\n\t} finally {\n\t\tfor (const name of names) {\n\t\t\tconst original = originalStyles.get(name);\n\t\t\tif (original?.value) root.style.setProperty(name, original.value, original.priority);\n\t\t\telse root.style.removeProperty(name);\n\t\t}\n\t\troot.classList.toggle('light', originalLight);\n\t\troot.classList.toggle('dark', originalDark);\n\t}\n}\n\nfunction ThemeVariableField({ field, value, effectiveValue, onChange, onReset, strings }: ThemeVariableFieldProps) {\n\tconst id = `theme-variable-${useId().replace(/:/g, '')}`;\n\tconst resetAction = (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\ticonOnly\n\t\t\ttone=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\ticon={RotateCcw}\n\t\t\twithTooltip={strings.resetVariable}\n\t\t\taria-label={`${strings.resetVariable}: ${field.label}`}\n\t\t\tdisabled={!value}\n\t\t\tonClick={onReset}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t{strings.resetVariable}\n\t\t\t</Text>\n\t\t</Button>\n\t);\n\tconst placeholder = field.placeholder ?? effectiveValue ?? strings.inheritValue;\n\tlet control: ReactNode;\n\n\tif (field.kind === 'color') {\n\t\tcontrol = (\n\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap={false}>\n\t\t\t\t<ColorInput\n\t\t\t\t\tid={id}\n\t\t\t\t\taria-label={field.label}\n\t\t\t\t\taria-description={field.description}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tpreviewValue={value || effectiveValue || `var(${field.name})`}\n\t\t\t\t\tpickerAriaLabel={interpolateString(strings.chooseColor, {\n\t\t\t\t\t\tlabel: field.label,\n\t\t\t\t\t})}\n\t\t\t\t\tonValueChange={onChange}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"min-w-0 flex-1\"\n\t\t\t\t/>\n\t\t\t\t{resetAction}\n\t\t\t</Stack>\n\t\t);\n\t} else if (field.control?.type === 'range') {\n\t\tconst currentValue = parseRangeValue(value || effectiveValue, field.control);\n\t\tcontrol = (\n\t\t\t<Stack gap=\"sm\">\n\t\t\t\t<SliderField\n\t\t\t\t\tid={`${id}-slider`}\n\t\t\t\t\taria-label={interpolateString(strings.adjustVariable, {\n\t\t\t\t\t\tlabel: field.label,\n\t\t\t\t\t})}\n\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\tmin={field.control.min}\n\t\t\t\t\tmax={field.control.max}\n\t\t\t\t\tstep={field.control.step}\n\t\t\t\t\tonValueChange={(next) => onChange(serializeRangeValue(next, field.control as ThemeTweakerRangeControl))}\n\t\t\t\t/>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap={false}>\n\t\t\t\t\t<Stack gap=\"none\" className=\"w-28 max-w-full shrink-0\">\n\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\taria-label={field.label}\n\t\t\t\t\t\t\taria-description={field.description}\n\t\t\t\t\t\t\tvalue={String(currentValue)}\n\t\t\t\t\t\t\tdecimalPlaces={field.control.decimalPlaces ?? 3}\n\t\t\t\t\t\t\tmin={field.control.min}\n\t\t\t\t\t\t\tmax={field.control.max}\n\t\t\t\t\t\t\tallowEmpty\n\t\t\t\t\t\t\tnormalizeOnBlur={false}\n\t\t\t\t\t\t\tendAddon={field.control.unit}\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\tconst next = event.target.value.trim();\n\t\t\t\t\t\t\t\tonChange(next ? `${next}${field.control?.unit ?? ''}` : '');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"font-mono tabular-nums\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t{resetAction}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t} else if (field.kind === 'font' || field.kind === 'shadow') {\n\t\tcontrol = (\n\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"start\" wrap={false}>\n\t\t\t\t<Stack className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Textarea\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\taria-label={field.label}\n\t\t\t\t\t\taria-description={field.description}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={(event) => onChange(event.target.value)}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t\tautoResize\n\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t\t{resetAction}\n\t\t\t</Stack>\n\t\t);\n\t} else {\n\t\tcontrol = (\n\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap={false}>\n\t\t\t\t<Input\n\t\t\t\t\tid={id}\n\t\t\t\t\taria-label={field.label}\n\t\t\t\t\taria-description={field.description}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(event) => onChange(event.target.value)}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"min-w-0 flex-1 font-mono\"\n\t\t\t\t/>\n\t\t\t\t{resetAction}\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FormField\n\t\t\tlabel={\n\t\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"sm\" align=\"baseline\" justify=\"between\" wrap className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" className=\"min-w-0\">\n\t\t\t\t\t\t{field.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<MonoValue size=\"xs\" type=\"secondary\" weight=\"regular\" className=\"max-w-full break-all\">\n\t\t\t\t\t\t{field.name}\n\t\t\t\t\t</MonoValue>\n\t\t\t\t</Stack>\n\t\t\t}\n\t\t\thtmlFor={id}\n\t\t\tclassName=\"theme-tweaker--field min-w-0 border-t border-border/60 py-row-y first:border-t-0\"\n\t\t>\n\t\t\t{control}\n\t\t</FormField>\n\t);\n}\n\nfunction DefaultThemePreview({ strings }: { strings: ThemeTweakerStrings }) {\n\treturn (\n\t\t<Card title={strings.previewTitle} description={strings.previewDescription} icon={<Palette />} headerDivider className=\"theme-tweaker--preview-card\">\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" wrap>\n\t\t\t\t\t<Badge tone=\"success\">{strings.previewSuccess}</Badge>\n\t\t\t\t\t<Badge tone=\"warning\">{strings.previewWarning}</Badge>\n\t\t\t\t\t<Badge tone=\"secondary\">{strings.previewContract}</Badge>\n\t\t\t\t</Stack>\n\t\t\t\t<Item\n\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\tpadding=\"default\"\n\t\t\t\t\tmedia={<Palette />}\n\t\t\t\t\tmediaVariant=\"icon\"\n\t\t\t\t\ttitle={strings.previewItemTitle}\n\t\t\t\t\tdescription={strings.previewItemDescription}\n\t\t\t\t\ttrailing={<CheckCircle2 className=\"size-icon text-success\" />}\n\t\t\t\t/>\n\t\t\t\t<FormField label={strings.previewFieldLabel}>\n\t\t\t\t\t<Input placeholder={strings.previewFieldPlaceholder} />\n\t\t\t\t</FormField>\n\t\t\t\t<Button type=\"button\">{strings.previewAction}</Button>\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nfunction updateThemeVariable(theme: AdminUIThemeDefinition, field: ThemeTweakerField, rawValue: string): AdminUIThemeDefinition {\n\tconst bucket = field.scope === 'shared' ? 'shared' : theme.mode;\n\tconst nextBucket = { ...theme[bucket] };\n\tif (rawValue.trim().length === 0) {\n\t\tdelete nextBucket[field.name];\n\t} else {\n\t\tnextBucket[field.name] = rawValue;\n\t}\n\treturn {\n\t\t...theme,\n\t\t[bucket]: nextBucket,\n\t};\n}\n\nexport const ThemeTweaker = forwardRef<HTMLDivElement, ThemeTweakerProps>(function ThemeTweaker(\n\t{\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\tonModeChange,\n\t\tfields = defaultThemeTweakerFields,\n\t\ttarget = 'self',\n\t\tapply = true,\n\t\tmanageModeClass = true,\n\t\tpreview,\n\t\tfileName = 'admin-ui-theme.css',\n\t\tconfig,\n\t\tdefaultConfig,\n\t\tonConfigChange,\n\t\tproviderFileName = 'admin-ui.config.ts',\n\t\tshowIntro = true,\n\t\tselectors,\n\t\tonExport,\n\t\tonCopy,\n\t\tonReset,\n\t\tonError,\n\t\tactionsSlot,\n\t\tstrings: stringsProp,\n\t\tclassName,\n\t\t...props\n\t},\n\tforwardedRef,\n) {\n\tconst strings = useStrings(defaultThemeTweakerStrings, stringsProp);\n\tconst [internalTheme, setInternalTheme] = useState(() => createAdminUITheme(defaultValue));\n\tconst theme = useMemo(() => (value ? createAdminUITheme(value) : internalTheme), [internalTheme, value]);\n\tconst [internalConfig, setInternalConfig] = useState(() => createSerializableUIConfig(defaultConfig));\n\tconst providerConfig = useMemo(() => createSerializableUIConfig(config ?? internalConfig), [config, internalConfig]);\n\tconst [group, setGroup] = useState<ThemeTweakerGroup>('colors');\n\tconst [search, setSearch] = useState('');\n\tconst [derivePalette, setDerivePalette] = useState(true);\n\tconst [baseTypeSize, setBaseTypeSize] = useState(16);\n\tconst [typeRatio, setTypeRatio] = useState(1.2);\n\tconst [elevationIntensity, setElevationIntensity] = useState(0.8);\n\tconst [actionStatus, setActionStatus] = useState<ActionStatus>('idle');\n\t// useOverlayVisibility rather than a bare useState: it is the package's own\n\t// overlay state hook, and `overlayProps` is exactly the open/onOpenChange\n\t// pair ActionDialog wants, so the wiring cannot drift out of step.\n\tconst exportDialog = useOverlayVisibility();\n\tconst [exporting, setExporting] = useState(false);\n\tconst selfRef = useRef<HTMLDivElement>(null);\n\tuseImperativeHandle(forwardedRef, () => selfRef.current as HTMLDivElement);\n\n\tuseAppliedTheme({\n\t\tapply,\n\t\tmanageModeClass,\n\t\tselfRef,\n\t\ttarget,\n\t\ttheme,\n\t});\n\tconst [resolvedTheme, setResolvedTheme] = useState<AdminUIThemeDefinition>(() => createAdminUITheme(theme));\n\tconst [effectiveValues, setEffectiveValues] = useState<Record<string, string>>({});\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\tconst timeout = window.setTimeout(() => {\n\t\t\tconst inspectionTarget = resolveInspectionTarget(target, selfRef.current);\n\t\t\tif (!inspectionTarget) return;\n\t\t\tconst computed = window.getComputedStyle(inspectionTarget);\n\t\t\tsetEffectiveValues(Object.fromEntries(fields.map((field) => [field.name, computed.getPropertyValue(field.name).trim()])));\n\t\t\tsetResolvedTheme(captureResolvedTheme(theme, fields));\n\t\t}, 0);\n\t\treturn () => window.clearTimeout(timeout);\n\t}, [apply, fields, target, theme]);\n\n\tconst serialization = useMemo(() => {\n\t\ttry {\n\t\t\tconst exportTheme = createAdminUITheme({\n\t\t\t\tmode: theme.mode,\n\t\t\t\tshared: { ...resolvedTheme.shared, ...theme.shared },\n\t\t\t\tlight: { ...resolvedTheme.light, ...theme.light },\n\t\t\t\tdark: { ...resolvedTheme.dark, ...theme.dark },\n\t\t\t});\n\t\t\tconst artifact = createThemeTweakerExportArtifact(\n\t\t\t\ttheme,\n\t\t\t\tfileName,\n\t\t\t\t{ selectors },\n\t\t\t\t{\n\t\t\t\t\tresolvedTheme: exportTheme,\n\t\t\t\t\tproviderConfig,\n\t\t\t\t\tproviderFileName,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tartifact,\n\t\t\t\terror: null,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tartifact: null,\n\t\t\t\terror,\n\t\t\t};\n\t\t}\n\t}, [fileName, providerConfig, providerFileName, resolvedTheme, selectors, theme]);\n\tconst { artifact, error: serializationError } = serialization;\n\tconst cssText = artifact?.cssText ?? `/* ${strings.invalidTheme} */\\n`;\n\tconst overrideCount = useMemo(() => countAdminUIThemeOverrides(theme), [theme]);\n\tconst normalizedSearch = search.trim().toLowerCase();\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tfields.filter((field) => {\n\t\t\t\tif (!normalizedSearch && field.group !== group) return false;\n\t\t\t\tif (!normalizedSearch) return true;\n\t\t\t\treturn [field.name, field.label, field.description].filter(Boolean).some((part) => part?.toLowerCase().includes(normalizedSearch));\n\t\t\t}),\n\t\t[fields, group, normalizedSearch],\n\t);\n\tconst visibleSections = useMemo(() => {\n\t\tconst sections = new Map<string, VisibleThemeSection>();\n\t\tfor (const field of visibleFields) {\n\t\t\tconst key = `${field.group}:${field.section}`;\n\t\t\tconst existing = sections.get(key);\n\t\t\tif (existing) {\n\t\t\t\texisting.fields.push(field);\n\t\t\t} else {\n\t\t\t\tsections.set(key, {\n\t\t\t\t\tgroup: field.group,\n\t\t\t\t\tsection: field.section,\n\t\t\t\t\tfields: [field],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Brand controls are the starting point; retain caller ordering within every section.\n\t\treturn [...sections.values()].sort((a, b) => Number(b.section === 'brand-actions') - Number(a.section === 'brand-actions'));\n\t}, [visibleFields]);\n\n\tconst commit = (next: AdminUIThemeDefinition) => {\n\t\tif (value === undefined) setInternalTheme(next);\n\t\tonValueChange?.(next);\n\t\tsetActionStatus('idle');\n\t};\n\n\tconst commitConfig = (next: ReturnType<typeof createSerializableUIConfig>) => {\n\t\tif (config === undefined) setInternalConfig(next);\n\t\tonConfigChange?.(next);\n\t\tsetActionStatus('idle');\n\t};\n\n\tconst applyModeRecipe = (overrides: AdminUIThemeOverrides) => {\n\t\tcommit({\n\t\t\t...theme,\n\t\t\t[theme.mode]: { ...theme[theme.mode], ...overrides },\n\t\t});\n\t};\n\n\tconst applySharedRecipe = (overrides: AdminUIThemeOverrides) => {\n\t\tcommit({\n\t\t\t...theme,\n\t\t\tshared: { ...theme.shared, ...overrides },\n\t\t});\n\t};\n\n\tconst setMode = (mode: AdminUIThemeMode) => {\n\t\tif (mode === theme.mode) return;\n\t\tcommit({ ...theme, mode });\n\t\tonModeChange?.(mode);\n\t};\n\n\tconst exportThemeArtifact = async () => {\n\t\ttry {\n\t\t\tif (serializationError) throw serializationError;\n\t\t\tsetExporting(true);\n\t\t\tif (!artifact) throw new Error(strings.invalidTheme);\n\t\t\tif (onExport) {\n\t\t\t\tawait onExport(artifact);\n\t\t\t} else {\n\t\t\t\tdownloadAdminUITheme(artifact);\n\t\t\t}\n\t\t\tsetActionStatus('exported');\n\t\t} catch (error) {\n\t\t\tonError?.(error);\n\t\t\tif (import.meta.env?.DEV) {\n\t\t\t\tconsole.warn('[ThemeTweaker] theme export failed.', error);\n\t\t\t}\n\t\t} finally {\n\t\t\tsetExporting(false);\n\t\t}\n\t};\n\n\tconst copyText = async (text: string) => {\n\t\ttry {\n\t\t\tif (onCopy) await onCopy(text);\n\t\t\telse if (typeof navigator !== 'undefined' && navigator.clipboard) await navigator.clipboard.writeText(text);\n\t\t\telse throw new Error('Clipboard access is unavailable. Provide onCopy for this environment.');\n\t\t\tsetActionStatus('copied');\n\t\t} catch (error) {\n\t\t\tonError?.(error);\n\t\t\tif (import.meta.env?.DEV) console.warn('[ThemeTweaker] copy failed.', error);\n\t\t}\n\t};\n\n\tconst exportProviderConfig = () => {\n\t\ttry {\n\t\t\tif (!artifact) throw serializationError ?? new Error(strings.invalidTheme);\n\t\t\tdownloadAdminUITextFile({\n\t\t\t\tfileName: artifact.providerFileName,\n\t\t\t\ttext: artifact.providerConfigText,\n\t\t\t\tmimeType: 'text/typescript;charset=utf-8',\n\t\t\t});\n\t\t\tsetActionStatus('exported');\n\t\t} catch (error) {\n\t\t\tonError?.(error);\n\t\t\tif (import.meta.env?.DEV) console.warn('[ThemeTweaker] provider export failed.', error);\n\t\t}\n\t};\n\n\tconst reset = () => {\n\t\tconst previous = theme;\n\t\tconst next = createAdminUITheme({ mode: theme.mode });\n\t\tcommit(next);\n\t\tonReset?.(previous);\n\t\tsetActionStatus('idle');\n\t};\n\tconst statusMessage = serializationError\n\t\t? strings.invalidTheme\n\t\t: actionStatus === 'copied'\n\t\t\t? strings.copiedStatus\n\t\t\t: actionStatus === 'exported'\n\t\t\t\t? strings.exportedStatus\n\t\t\t\t: null;\n\tconst recipeControls =\n\t\tgroup === 'colors' ? (\n\t\t\t<ToggleField className=\"theme-tweaker--recipe\" label={strings.autoPalette} description={strings.autoPaletteDescription} value={derivePalette} onValueChange={setDerivePalette} />\n\t\t) : group === 'typography' ? (\n\t\t\t<Card title={strings.typeRecipeTitle} description={strings.typeRecipeDescription} surface=\"flat\" padding=\"none\" className=\"theme-tweaker--recipe\">\n\t\t\t\t<Grid columns={1} gap=\"md\" className=\"@2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t<FormField label={strings.baseTypeSize}>\n\t\t\t\t\t\t<SliderField\n\t\t\t\t\t\t\taria-label={strings.baseTypeSize}\n\t\t\t\t\t\t\tvalue={baseTypeSize}\n\t\t\t\t\t\t\tmin={14}\n\t\t\t\t\t\t\tmax={20}\n\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\t\tsetBaseTypeSize(next);\n\t\t\t\t\t\t\t\tapplySharedRecipe(\n\t\t\t\t\t\t\t\t\tderiveAdminUITypeScale({\n\t\t\t\t\t\t\t\t\t\tbaseSize: next,\n\t\t\t\t\t\t\t\t\t\tratio: typeRatio,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t\t<FormField label={strings.typeRatio}>\n\t\t\t\t\t\t<SliderField\n\t\t\t\t\t\t\taria-label={strings.typeRatio}\n\t\t\t\t\t\t\tvalue={typeRatio}\n\t\t\t\t\t\t\tmin={1.125}\n\t\t\t\t\t\t\tmax={1.333}\n\t\t\t\t\t\t\tstep={0.01}\n\t\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\t\tsetTypeRatio(next);\n\t\t\t\t\t\t\t\tapplySharedRecipe(\n\t\t\t\t\t\t\t\t\tderiveAdminUITypeScale({\n\t\t\t\t\t\t\t\t\t\tbaseSize: baseTypeSize,\n\t\t\t\t\t\t\t\t\t\tratio: next,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t</Grid>\n\t\t\t</Card>\n\t\t) : group === 'shape' ? (\n\t\t\t<Card title={strings.elevationRecipeTitle} description={strings.elevationRecipeDescription} surface=\"flat\" padding=\"none\" className=\"theme-tweaker--recipe\">\n\t\t\t\t<FormField label={strings.elevationIntensity}>\n\t\t\t\t\t<SliderField\n\t\t\t\t\t\taria-label={strings.elevationIntensity}\n\t\t\t\t\t\tvalue={elevationIntensity}\n\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\tmax={1}\n\t\t\t\t\t\tstep={0.05}\n\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\tsetElevationIntensity(next);\n\t\t\t\t\t\t\tapplyModeRecipe(deriveAdminUIElevation({ intensity: next }));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</FormField>\n\t\t\t</Card>\n\t\t) : null;\n\n\tconst content = (\n\t\t<div className={cn('grid min-w-0 grid-cols-1 gap-space-xl theme-tweaker--layout', preview !== false && '@3xl/theme-tweaker:grid-cols-2')}>\n\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--controls @container/theme-tweaker-controls min-w-0\">\n\t\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--header shrink-0\">\n\t\t\t\t\t{showIntro ? (\n\t\t\t\t\t\t<Stack gap=\"normal\" className=\"theme-tweaker--intro\">\n\t\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" wrap>\n\t\t\t\t\t\t\t\t<Heading tag=\"h2\" className=\"theme-tweaker--title\">\n\t\t\t\t\t\t\t\t\t{strings.title}\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t\t<Badge tone=\"secondary\">\n\t\t\t\t\t\t\t\t\t{interpolateString(strings.changedCount, {\n\t\t\t\t\t\t\t\t\t\tcount: overrideCount,\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"theme-tweaker--description\">\n\t\t\t\t\t\t\t\t{strings.description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\tjustify=\"between\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\twrap\n\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\tclassName=\"theme-tweaker--toolbar\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" wrap>\n\t\t\t\t\t\t\t<Tabs value={theme.mode} onValueChange={(next) => setMode(next as AdminUIThemeMode)}>\n\t\t\t\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t\t\t\t<TabsTrigger value=\"light\">\n\t\t\t\t\t\t\t\t\t\t<Sun className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t{strings.lightMode}\n\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t\t<TabsTrigger value=\"dark\">\n\t\t\t\t\t\t\t\t\t\t<Moon className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t{strings.darkMode}\n\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t</TabsList>\n\t\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" justify=\"end\" wrap={false} className=\"theme-tweaker--actions\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\ticon={Download}\n\t\t\t\t\t\t\t\tdisabled={Boolean(serializationError)}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetActionStatus('idle');\n\t\t\t\t\t\t\t\t\texportDialog.show();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings.export}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{actionsSlot}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t\t{strings.searchLabel}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName=\"theme-tweaker--search\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\tonChange={(event) => setSearch(event.target.value)}\n\t\t\t\t\t\t\tplaceholder={strings.searchPlaceholder}\n\t\t\t\t\t\t\tstartIcon={Search}\n\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\tonClear={() => setSearch('')}\n\t\t\t\t\t\t\taria-description={strings.searchHint}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t</Stack>\n\n\t\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--workspace min-h-0\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={strings.groupNavigationLabel}\n\t\t\t\t\t\tclassName=\"theme-tweaker--navigation min-w-0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tabs\n\t\t\t\t\t\t\tvalue={group}\n\t\t\t\t\t\t\tonValueChange={(nextGroup) => {\n\t\t\t\t\t\t\t\tsetSearch('');\n\t\t\t\t\t\t\t\tsetGroup(nextGroup as ThemeTweakerGroup);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TabsList scrollable scrollStrings={{ previous: strings.previousGroup, next: strings.nextGroup }} className=\"theme-tweaker--group-list\">\n\t\t\t\t\t\t\t\t\t{GROUPS.map((nextGroup) => {\n\t\t\t\t\t\t\t\t\t\tconst GroupIcon = GROUP_ICONS[nextGroup];\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\t\t\t\t\t\tkey={nextGroup}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={nextGroup}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => setSearch('')}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"theme-tweaker--group-trigger\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<GroupIcon aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-w-0 flex-1 truncate text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.groups[nextGroup]}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</TabsList>\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t</nav>\n\n\t\t\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--body theme-tweaker--editor min-h-0 min-w-0\">\n\t\t\t\t\t\t<Stack gap=\"normal\" className=\"theme-tweaker--editor-heading\">\n\t\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" wrap>\n\t\t\t\t\t\t\t\t<Heading tag=\"h3\">{normalizedSearch ? strings.allGroups : strings.groups[group]}</Heading>\n\t\t\t\t\t\t\t\t{!showIntro ? <Badge tone=\"secondary\">{interpolateString(strings.changedCount, { count: overrideCount })}</Badge> : null}\n\t\t\t\t\t\t\t\t{normalizedSearch ? (\n\t\t\t\t\t\t\t\t\t<Badge tone=\"secondary\" role=\"status\" aria-live=\"polite\">\n\t\t\t\t\t\t\t\t\t\t{interpolateString(strings.searchResults, { count: visibleFields.length })}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t{normalizedSearch ? strings.searchHint : strings.groupDescriptions[group]}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t{!normalizedSearch ? recipeControls : null}\n\t\t\t\t\t\t{group === 'defaults' && !normalizedSearch ? (\n\t\t\t\t\t\t\t<ThemeProviderSettings config={providerConfig} onChange={commitConfig} strings={strings.providerSettings} />\n\t\t\t\t\t\t) : visibleSections.length > 0 ? (\n\t\t\t\t\t\t\t<SmartAccordion\n\t\t\t\t\t\t\t\tkey={`${group}:${normalizedSearch}`}\n\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\tdefaultValue={[`${visibleSections[0].group}:${visibleSections[0].section}`]}\n\t\t\t\t\t\t\t\tvariant=\"bordered\"\n\t\t\t\t\t\t\t\ticonStyle=\"none\"\n\t\t\t\t\t\t\t\tclassName=\"theme-tweaker--sections shrink-0\"\n\t\t\t\t\t\t\t\titemClassName=\"theme-tweaker--section\"\n\t\t\t\t\t\t\t\titems={visibleSections.map((visibleSection) => {\n\t\t\t\t\t\t\t\t\tconst scopes = new Set(visibleSection.fields.map((field) => field.scope));\n\t\t\t\t\t\t\t\t\tconst scopeLabel =\n\t\t\t\t\t\t\t\t\t\tscopes.size > 1\n\t\t\t\t\t\t\t\t\t\t\t? strings.mixedScope\n\t\t\t\t\t\t\t\t\t\t\t: scopes.has('shared')\n\t\t\t\t\t\t\t\t\t\t\t\t? strings.sharedScope\n\t\t\t\t\t\t\t\t\t\t\t\t: theme.mode === 'light'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? strings.lightMode\n\t\t\t\t\t\t\t\t\t\t\t\t\t: strings.darkMode;\n\t\t\t\t\t\t\t\t\tconst sectionLabel = normalizedSearch\n\t\t\t\t\t\t\t\t\t\t? interpolateString(strings.groupSectionLabel, {\n\t\t\t\t\t\t\t\t\t\t\t\tgroup: strings.groups[visibleSection.group],\n\t\t\t\t\t\t\t\t\t\t\t\tsection: strings.sections[visibleSection.section],\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t: strings.sections[visibleSection.section];\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tvalue: `${visibleSection.group}:${visibleSection.section}`,\n\t\t\t\t\t\t\t\t\t\ttitle: sectionLabel,\n\t\t\t\t\t\t\t\t\t\tdescription: interpolateString(strings.variableCount, {\n\t\t\t\t\t\t\t\t\t\t\tcount: visibleSection.fields.length,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\tbadge: <Badge tone=\"secondary\">{scopeLabel}</Badge>,\n\t\t\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t\t\t<Stack gap=\"none\" className=\"theme-tweaker--fields\">\n\t\t\t\t\t\t\t\t\t\t\t\t{visibleSection.fields.map((field) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst bucket = field.scope === 'shared' ? 'shared' : theme.mode;\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst fieldValue = theme[bucket][field.name] ?? '';\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ThemeVariableField\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={field.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield={field}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={fieldValue}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\teffectiveValue={effectiveValues[field.name] ?? ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={(next) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (field.name === '--primary' && derivePalette && next.trim()) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tapplyModeRecipe(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tderiveAdminUIPalette({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprimary: next,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmode: theme.mode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcommit(updateThemeVariable(theme, field, next));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonReset={() => commit(updateThemeVariable(theme, field, ''))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"theme-tweaker--empty rounded-radius border border-dashed border-border p-surface\">\n\t\t\t\t\t\t\t\t{strings.emptySearch}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\n\t\t\t{preview !== false ? <Stack className=\"theme-tweaker--preview min-w-0 self-start\">{preview ?? <DefaultThemePreview strings={strings} />}</Stack> : null}\n\n\t\t\t{/*\n\t\t\t * Presented through ActionDialog rather than a raw Dialog:\n\t\t\t * features/overlays is the package's single overlay surface. The two\n\t\t\t * things this dialog needs beyond the defaults are seams on it —\n\t\t\t * `surfaceStyle` carries the edited theme's variables onto the surface\n\t\t\t * so the export previews in the theme being edited, and `footer`\n\t\t\t * replaces the default action pair with reset/close.\n\t\t\t */}\n\t\t\t<ActionDialog\n\t\t\t\t{...exportDialog.overlayProps}\n\t\t\t\ttitle={strings.exportDialogTitle}\n\t\t\t\tdescription={strings.exportDialogDescription}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tshowCancel={false}\n\t\t\t\tshowConfirm={false}\n\t\t\t\tsurfaceStyle={adminUIThemeToStyle(theme)}\n\t\t\t\tclassName={cn('theme-tweaker--export-dialog sm:max-w-4xl', theme.mode)}\n\t\t\t\tfooter={(\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tjustify=\"between\"\n\t\t\t\t\t\tclassName=\"theme-tweaker--export-footer w-full\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\ticon={RotateCcw}\n\t\t\t\t\t\t\tdisabled={overrideCount === 0}\n\t\t\t\t\t\t\tonClick={reset}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.reset}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<DialogClose render={<Button tone=\"secondary\" buttonStyle=\"outline\">{strings.close}</Button>} />\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Stack gap=\"xl\" className=\"theme-tweaker--export-body\">\n\t\t\t\t\t<ThemeExportArtifact\n\t\t\t\t\t\ttitle={strings.cssOutputLabel}\n\t\t\t\t\t\tdescription={strings.cssOutputDescription}\n\t\t\t\t\t\tcode={cssText}\n\t\t\t\t\t\tcopyLabel={strings.copy}\n\t\t\t\t\t\tdownloadLabel={exporting ? strings.exportPending : strings.downloadCss}\n\t\t\t\t\t\tdownloading={exporting}\n\t\t\t\t\t\tonCopy={() => void copyText(cssText)}\n\t\t\t\t\t\tonDownload={() => void exportThemeArtifact()}\n\t\t\t\t\t/>\n\t\t\t\t\t<ThemeExportArtifact\n\t\t\t\t\t\ttitle={strings.providerOutputLabel}\n\t\t\t\t\t\tdescription={strings.providerOutputDescription}\n\t\t\t\t\t\tcode={artifact?.providerConfigText ?? ''}\n\t\t\t\t\t\tcopyLabel={strings.copyProvider}\n\t\t\t\t\t\tdownloadLabel={strings.downloadProvider}\n\t\t\t\t\t\tonCopy={() => void copyText(artifact?.providerConfigText ?? '')}\n\t\t\t\t\t\tonDownload={exportProviderConfig}\n\t\t\t\t\t/>\n\t\t\t\t\t{statusMessage ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype={serializationError ? 'error' : 'secondary'}\n\t\t\t\t\t\t\trole=\"status\"\n\t\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\t\tclassName=\"theme-tweaker--status\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{statusMessage}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : null}\n\t\t\t\t</Stack>\n\t\t\t</ActionDialog>\n\t\t</div>\n\t);\n\n\tif (target === 'self') {\n\t\treturn (\n\t\t\t<ThemeScope\n\t\t\t\t{...props}\n\t\t\t\tref={selfRef}\n\t\t\t\ttheme={apply ? theme : createAdminUITheme({ mode: theme.mode })}\n\t\t\t\tclassName={cn('theme-tweaker--component @container/theme-tweaker bg-background text-foreground', className)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</ThemeScope>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div {...props} ref={selfRef} className={cn('theme-tweaker--component @container/theme-tweaker', className)}>\n\t\t\t{content}\n\t\t</div>\n\t);\n});\n\nThemeTweaker.displayName = 'ThemeTweaker';\n"],"mappings":"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"}
1
+ {"version":3,"file":"theme-tweaker.js","names":["PortalThemeScope","resolveUIConfig","UIProvider","ThemeScope$1","cn","Heading","Text","Button","Grid","Stack","AlertMetadataItem","AlertMetadata","AlertDescription","Alert","Card","AlertTitle","useOverlayVisibility","ActionDialog","MonoValue","SmartAccordion","Badge","Input","FormField","Textarea","ToggleField","Select","ColorInput","SliderField","DecimalInput","Item","TabsTrigger","TabsList","Tabs","defaultAdminUIThemeSelectors","VARIABLE_NAME_PATTERN","UNSAFE_CSS_VALUE_PATTERN","UNSAFE_SELECTOR_PATTERN","createAdminUITheme","value","isAdminUIThemeVariableName","validatedEntries","overrides","entry","name","rawValue","strict","hasControlCharacter","code","character","left","right","validateSelector","selector","scope","serializeBlock","entries","serializeAdminUITheme","selectors","options","blocks","theme","block","banner","createSerializableUIConfig","resolved","config","_runtimeDateLocale","_runtimeRelativeTimeFormatter","serializableDates","serializeUIProviderConfig","serializable","getActiveAdminUIThemeOverrides","mode","adminUIThemeToStyle","countAdminUIThemeOverrides","createScopedAdminUIThemeSelectors","scopeSelector","createThemeTweakerExportArtifact","resolvedTheme","artifactOptions","providerConfig","downloadAdminUITheme","artifact","downloadAdminUITextFile","blob","text","mimeType","url","anchor","fileName","ThemeScope","forwardRef","props","className","style","resolveTarget","target","selfRef","useAppliedTheme","apply","element","originals","applied","originalLight","originalDark","manageModeClass","expected","original","AdminUIThemeProvider","scopeProps","useRef","forwardedRef","effectiveTheme","useMemo","THEME_COLORS","STATE_COLORS","SURFACE_COLORS","FONT_VARIABLES","TYPOGRAPHY_VARIABLES","step","SHADOW_VARIABLES","STRUCTURAL_VARIABLES","LAYOUT_VARIABLES","DESCRIPTIONS","LABELS","RANGE_CONTROLS","labelFromName","part","genericDescription","group","fields","names","defaultThemeTweakerFields","field","defaultThemeProviderSettingsStrings","selectOptions","values","strings","ThemeProviderSettings","scaleOptions","COMPONENT_SCALES","weekdays","day","update","slice","key","Info","event","next","SEMANTIC_TONES","defaultThemeTweakerStrings","clamp","max","min","contrastForeground","digits","color","hex","offset","channel","sum","index","match","lightness","deriveAdminUIPalette","dark","harmonize","night","light","primary","BODY_STEPS","HEADING_STEPS","deriveAdminUITypeScale","boundedBase","baseSize","boundedRatio","ratio","factor","pixels","deriveAdminUIElevation","intensity","alpha","GROUPS","GROUP_ICONS","Palette","ShieldCheck","Type","Shapes","LayoutGrid","Settings2","ThemeExportArtifact","titleId","useId","title","description","Copy","onCopy","copyLabel","Download","downloading","onDownload","downloadLabel","parseRangeValue","parsed","control","serializeRangeValue","precision","resolveInspectionTarget","self","captureResolvedTheme","root","originalStyles","capture","computed","sharedNames","ThemeVariableField","id","resetAction","RotateCcw","onReset","placeholder","effectiveValue","interpolateString","onChange","currentValue","DefaultThemePreview","CheckCircle2","updateThemeVariable","bucket","nextBucket","ThemeTweaker","stringsProp","useStrings","internalTheme","setInternalTheme","useState","defaultValue","internalConfig","setInternalConfig","defaultConfig","setGroup","search","setSearch","derivePalette","setDerivePalette","baseTypeSize","setBaseTypeSize","typeRatio","setTypeRatio","elevationIntensity","setElevationIntensity","actionStatus","setActionStatus","exportDialog","exporting","setExporting","useImperativeHandle","setResolvedTheme","effectiveValues","setEffectiveValues","timeout","inspectionTarget","serializationError","exportTheme","error","providerFileName","cssText","overrideCount","normalizedSearch","visibleFields","visibleSections","sections","existing","b","a","commit","onValueChange","commitConfig","onConfigChange","applyModeRecipe","applySharedRecipe","setMode","onModeChange","exportThemeArtifact","onExport","copyText","exportProviderConfig","reset","previous","statusMessage","recipeControls","content","preview","showIntro","Sun","Moon","actionsSlot","Search","nextGroup","GroupIcon","scopes","visibleSection","scopeLabel","sectionLabel","fieldValue"],"sources":["../../src/components/features/theme-tweaker/theme-tweaker.utils.ts","../../src/components/features/theme-tweaker/theme-scope.tsx","../../src/components/features/theme-tweaker/use-applied-theme.ts","../../src/components/features/theme-tweaker/admin-ui-theme-provider.tsx","../../src/components/features/theme-tweaker/theme-tweaker.fields.ts","../../src/components/features/theme-tweaker/theme-provider-settings.tsx","../../src/components/features/theme-tweaker/theme-tweaker.strings.ts","../../src/components/features/theme-tweaker/theme-tweaker.recipes.ts","../../src/components/features/theme-tweaker/theme-tweaker.tsx"],"sourcesContent":["import {\n\ttype UIConfig,\n} from '../../../lib/ui-provider';\nimport { resolveUIConfig } from '../../../lib/ui-provider/store';\n\nimport type {\n\tAdminUIThemeDefinition,\n\tAdminUIThemeMode,\n\tAdminUIThemeOverrides,\n\tAdminUIThemeSelectors,\n\tAdminUIThemeStyle,\n\tAdminUIThemeVariableName,\n\tCreateThemeTweakerExportArtifactOptions,\n\tSerializeAdminUIThemeOptions,\n\tThemeTweakerExportArtifact,\n} from './theme-tweaker.types';\n\nexport const defaultAdminUIThemeSelectors: AdminUIThemeSelectors = {\n\tshared: ':root',\n\tlight: ':root,\\n.light',\n\tdark: '.dark',\n};\n\nconst VARIABLE_NAME_PATTERN = /^--[a-z][a-z0-9-]*$/i;\nconst UNSAFE_CSS_VALUE_PATTERN = /[;{}]/;\nconst UNSAFE_SELECTOR_PATTERN = /[;{}]/;\n\nexport function createAdminUITheme(\n\tvalue: Partial<AdminUIThemeDefinition> = {},\n): AdminUIThemeDefinition {\n\treturn {\n\t\tmode: value.mode ?? 'light',\n\t\tshared: { ...value.shared },\n\t\tlight: { ...value.light },\n\t\tdark: { ...value.dark },\n\t};\n}\n\nexport function isAdminUIThemeVariableName(\n\tvalue: string,\n): value is AdminUIThemeVariableName {\n\treturn VARIABLE_NAME_PATTERN.test(value);\n}\n\nfunction validatedEntries(\n\toverrides: AdminUIThemeOverrides,\n\tstrict = true,\n): Array<[AdminUIThemeVariableName, string]> {\n\treturn Object.entries(overrides)\n\t\t.filter((entry): entry is [AdminUIThemeVariableName, string] => (\n\t\t\ttypeof entry[1] === 'string' && entry[1].trim().length > 0\n\t\t))\n\t\t.flatMap(([name, rawValue]) => {\n\t\t\tif (!isAdminUIThemeVariableName(name)) {\n\t\t\t\tif (!strict) return [];\n\t\t\t\tthrow new TypeError(`Invalid CSS variable name: ${name}`);\n\t\t\t}\n\t\t\tconst value = rawValue.trim();\n\t\t\tconst hasControlCharacter = [...value].some((character) => {\n\t\t\t\tconst code = character.charCodeAt(0);\n\t\t\t\treturn code < 32 || code === 127;\n\t\t\t});\n\t\t\tif (UNSAFE_CSS_VALUE_PATTERN.test(value) || hasControlCharacter) {\n\t\t\t\tif (!strict) return [];\n\t\t\t\tthrow new TypeError(`Unsafe CSS value for ${name}.`);\n\t\t\t}\n\t\t\treturn [[name, value] as [AdminUIThemeVariableName, string]];\n\t\t})\n\t\t.sort(([left], [right]) => left.localeCompare(right));\n}\n\nfunction validateSelector(selector: string, scope: keyof AdminUIThemeSelectors): string {\n\tconst value = selector.trim();\n\tif (value.length === 0 || UNSAFE_SELECTOR_PATTERN.test(value)) {\n\t\tthrow new TypeError(`Invalid ${scope} theme selector.`);\n\t}\n\treturn value;\n}\n\nfunction serializeBlock(\n\tselector: string,\n\toverrides: AdminUIThemeOverrides,\n): string | null {\n\tconst entries = validatedEntries(overrides);\n\tif (entries.length === 0) return null;\n\treturn [\n\t\t`${selector} {`,\n\t\t...entries.map(([name, value]) => `\\t${name}: ${value};`),\n\t\t'}',\n\t].join('\\n');\n}\n\nexport function serializeAdminUITheme(\n\ttheme: AdminUIThemeDefinition,\n\toptions: SerializeAdminUIThemeOptions = {},\n): string {\n\tconst selectors = options.selectors ?? defaultAdminUIThemeSelectors;\n\tconst blocks = [\n\t\tserializeBlock(validateSelector(selectors.shared, 'shared'), theme.shared),\n\t\tserializeBlock(validateSelector(selectors.light, 'light'), theme.light),\n\t\tserializeBlock(validateSelector(selectors.dark, 'dark'), theme.dark),\n\t].filter((block): block is string => block !== null);\n\tconst banner = options.banner === false\n\t\t? null\n\t\t: `/* ${options.banner ?? 'themelia-react-ui theme overrides'} */`;\n\n\treturn `${[\n\t\t...(banner ? [banner] : []),\n\t\t...(blocks.length > 0 ? blocks : ['/* No explicit overrides. */']),\n\t].join('\\n\\n')}\\n`;\n}\n\n/**\n * Returns the complete serializable UIProvider contract. Function and\n * date-fns-locale hooks remain consumer-owned and are intentionally omitted.\n */\nexport function createSerializableUIConfig(config: UIConfig = {}): UIConfig {\n\tconst resolved = resolveUIConfig(config);\n\tconst {\n\t\tlocale: _runtimeDateLocale,\n\t\tformatRelativeTime: _runtimeRelativeTimeFormatter,\n\t\t...serializableDates\n\t} = resolved.dates;\n\n\treturn {\n\t\t...resolved,\n\t\tdates: serializableDates,\n\t};\n}\n\nexport function serializeUIProviderConfig(config: UIConfig = {}): string {\n\tconst serializable = createSerializableUIConfig(config);\n\treturn `import type { UIConfig } from 'themelia-react-ui/ui-provider';\\n\\nexport const adminUIConfig = ${JSON.stringify(serializable, null, '\\t')} satisfies UIConfig;\\n`;\n}\n\nexport function getActiveAdminUIThemeOverrides(\n\ttheme: AdminUIThemeDefinition,\n\tmode: AdminUIThemeMode = theme.mode,\n): AdminUIThemeOverrides {\n\treturn {\n\t\t...theme.shared,\n\t\t...theme[mode],\n\t};\n}\n\nexport function adminUIThemeToStyle(\n\ttheme: AdminUIThemeDefinition,\n\tmode: AdminUIThemeMode = theme.mode,\n): AdminUIThemeStyle {\n\treturn Object.fromEntries(\n\t\tvalidatedEntries(getActiveAdminUIThemeOverrides(theme, mode), false),\n\t) as AdminUIThemeStyle;\n}\n\nexport function countAdminUIThemeOverrides(theme: AdminUIThemeDefinition): number {\n\treturn validatedEntries(theme.shared, false).length\n\t\t+ validatedEntries(theme.light, false).length\n\t\t+ validatedEntries(theme.dark, false).length;\n}\n\nexport function createScopedAdminUIThemeSelectors(\n\tscopeSelector: string,\n): AdminUIThemeSelectors {\n\tconst scope = validateSelector(scopeSelector, 'shared');\n\treturn {\n\t\tshared: scope,\n\t\tlight: `${scope},\\n${scope}.light,\\n.light ${scope}`,\n\t\tdark: `${scope}.dark,\\n.dark ${scope}`,\n\t};\n}\n\nexport function createThemeTweakerExportArtifact(\n\ttheme: AdminUIThemeDefinition,\n\tfileName = 'admin-ui-theme.css',\n\toptions: SerializeAdminUIThemeOptions = {},\n\tartifactOptions: CreateThemeTweakerExportArtifactOptions = {},\n): ThemeTweakerExportArtifact {\n\tconst resolvedTheme = createAdminUITheme(artifactOptions.resolvedTheme ?? theme);\n\tconst providerConfig = createSerializableUIConfig(artifactOptions.providerConfig);\n\treturn {\n\t\tfileName,\n\t\tcssText: serializeAdminUITheme(resolvedTheme, {\n\t\t\t...options,\n\t\t\tbanner: options.banner ?? 'themelia-react-ui complete theme',\n\t\t}),\n\t\toverrideCssText: serializeAdminUITheme(theme, options),\n\t\ttheme: createAdminUITheme(theme),\n\t\tresolvedTheme,\n\t\toverrideCount: countAdminUIThemeOverrides(theme),\n\t\tproviderFileName: artifactOptions.providerFileName ?? 'admin-ui.config.ts',\n\t\tproviderConfig,\n\t\tproviderConfigText: serializeUIProviderConfig(providerConfig),\n\t};\n}\n\nexport function downloadAdminUITheme(\n\tartifact: Pick<ThemeTweakerExportArtifact, 'cssText' | 'fileName'>,\n): void {\n\tdownloadAdminUITextFile({\n\t\tfileName: artifact.fileName,\n\t\ttext: artifact.cssText,\n\t\tmimeType: 'text/css;charset=utf-8',\n\t});\n}\n\nexport function downloadAdminUITextFile({\n\tfileName,\n\ttext,\n\tmimeType = 'text/plain;charset=utf-8',\n}: {\n\tfileName: string;\n\ttext: string;\n\tmimeType?: string;\n}): void {\n\tif (typeof document === 'undefined' || typeof URL === 'undefined') {\n\t\tthrow new Error('File download requires a browser document. Provide onExport in non-browser environments.');\n\t}\n\tconst blob = new Blob([text], { type: mimeType });\n\tconst url = URL.createObjectURL(blob);\n\tconst anchor = document.createElement('a');\n\tanchor.href = url;\n\tanchor.download = fileName;\n\tanchor.hidden = true;\n\tdocument.body.append(anchor);\n\tanchor.click();\n\tanchor.remove();\n\tURL.revokeObjectURL(url);\n}\n","import { forwardRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { ThemeScope as PortalThemeScope } from '../../../lib/theme-scope';\n\nimport type { ThemeScopeProps } from './theme-tweaker.types';\nimport { adminUIThemeToStyle } from './theme-tweaker.utils';\n\n/**\n * One-DOM-node CSS-variable boundary with a shared portal host. Visual values\n * inherit through CSS; the portal context only identifies that host. UIProvider\n * owns display defaults such as locale, currency, and component sizing policy.\n */\nexport const ThemeScope = forwardRef<HTMLDivElement, ThemeScopeProps>(function ThemeScope({\n\ttheme,\n\tmode = theme.mode,\n\tclassName,\n\tstyle,\n\tchildren,\n\t...props\n}, ref) {\n\treturn (\n\t\t<PortalThemeScope\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t\tdata-theme-mode={mode}\n\t\t\tclassName={cn('theme-scope--component', mode, className)}\n\t\t\tstyle={{\n\t\t\t\t...adminUIThemeToStyle(theme, mode),\n\t\t\t\t...style,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</PortalThemeScope>\n\t);\n});\n\nThemeScope.displayName = 'ThemeScope';\n","import { useEffect, type RefObject } from 'react';\n\nimport type {\n\tAdminUIThemeDefinition,\n\tThemeTweakerTarget,\n} from './theme-tweaker.types';\nimport { adminUIThemeToStyle } from './theme-tweaker.utils';\n\ninterface UseAppliedThemeOptions {\n\tapply: boolean;\n\tmanageModeClass: boolean;\n\tselfRef: RefObject<HTMLDivElement | null>;\n\ttarget: ThemeTweakerTarget;\n\ttheme: AdminUIThemeDefinition;\n}\n\nfunction resolveTarget(\n\ttarget: ThemeTweakerTarget,\n\tselfRef: RefObject<HTMLDivElement | null>,\n): HTMLElement | null {\n\tif (target === null) return null;\n\tif (target === 'self') return selfRef.current;\n\tif (target === 'document') {\n\t\treturn typeof document === 'undefined' ? null : document.documentElement;\n\t}\n\tif (typeof target === 'function') return target();\n\treturn target;\n}\n\nexport function useAppliedTheme({\n\tapply,\n\tmanageModeClass,\n\tselfRef,\n\ttarget,\n\ttheme,\n}: UseAppliedThemeOptions): void {\n\tuseEffect(() => {\n\t\tif (!apply || target === 'self') return;\n\t\tconst element = resolveTarget(target, selfRef);\n\t\tif (!element) return;\n\n\t\tconst style = adminUIThemeToStyle(theme);\n\t\tconst originals = new Map<string, { value: string; priority: string }>();\n\t\tconst applied = new Map<string, string>();\n\t\tfor (const [name, value] of Object.entries(style)) {\n\t\t\tif (typeof value !== 'string') continue;\n\t\t\toriginals.set(name, {\n\t\t\t\tvalue: element.style.getPropertyValue(name),\n\t\t\t\tpriority: element.style.getPropertyPriority(name),\n\t\t\t});\n\t\t\telement.style.setProperty(name, value);\n\t\t\tapplied.set(name, value);\n\t\t}\n\n\t\tconst originalLight = element.classList.contains('light');\n\t\tconst originalDark = element.classList.contains('dark');\n\t\tif (manageModeClass) {\n\t\t\telement.classList.toggle('light', theme.mode === 'light');\n\t\t\telement.classList.toggle('dark', theme.mode === 'dark');\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor (const [name, expected] of applied) {\n\t\t\t\tif (element.style.getPropertyValue(name) !== expected) continue;\n\t\t\t\tconst original = originals.get(name);\n\t\t\t\tif (original?.value) {\n\t\t\t\t\telement.style.setProperty(name, original.value, original.priority);\n\t\t\t\t} else {\n\t\t\t\t\telement.style.removeProperty(name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (manageModeClass) {\n\t\t\t\telement.classList.toggle('light', originalLight);\n\t\t\t\telement.classList.toggle('dark', originalDark);\n\t\t\t}\n\t\t};\n\t}, [apply, manageModeClass, selfRef, target, theme]);\n}\n","import { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';\n\nimport { UIProvider } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\n\nimport { ThemeScope } from './theme-scope';\nimport type { AdminUIThemeProviderProps } from './theme-tweaker.types';\nimport { createAdminUITheme } from './theme-tweaker.utils';\nimport { useAppliedTheme } from './use-applied-theme';\n\n/**\n * Root consumer boundary combining mount-once UI display defaults with a\n * live CSS-variable theme and the shared scoped-portal host.\n */\nexport const AdminUIThemeProvider = forwardRef<HTMLDivElement, AdminUIThemeProviderProps>(\n\tfunction AdminUIThemeProvider({\n\t\tconfig,\n\t\ttheme,\n\t\tmode = theme.mode,\n\t\ttarget = 'document',\n\t\tmanageModeClass = true,\n\t\tclassName,\n\t\tchildren,\n\t\t...scopeProps\n\t}, forwardedRef) {\n\t\tconst selfRef = useRef<HTMLDivElement>(null);\n\t\tuseImperativeHandle(forwardedRef, () => selfRef.current as HTMLDivElement);\n\t\tconst effectiveTheme = useMemo(\n\t\t\t() => createAdminUITheme({ ...theme, mode }),\n\t\t\t[mode, theme],\n\t\t);\n\t\tuseAppliedTheme({\n\t\t\tapply: target === 'document',\n\t\t\tmanageModeClass,\n\t\t\tselfRef,\n\t\t\ttarget,\n\t\t\ttheme: effectiveTheme,\n\t\t});\n\n\t\treturn (\n\t\t\t<UIProvider config={config}>\n\t\t\t\t<ThemeScope\n\t\t\t\t\t{...scopeProps}\n\t\t\t\t\tref={selfRef}\n\t\t\t\t\ttheme={effectiveTheme}\n\t\t\t\t\tmode={mode}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'admin-ui-theme-provider--component bg-background text-foreground',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</ThemeScope>\n\t\t\t</UIProvider>\n\t\t);\n\t},\n);\n\nAdminUIThemeProvider.displayName = 'AdminUIThemeProvider';\n","import type {\n\tAdminUIThemeVariableName,\n\tThemeTweakerField,\n\tThemeTweakerFieldKind,\n\tThemeTweakerFieldScope,\n\tThemeTweakerGroup,\n\tThemeTweakerRangeControl,\n\tThemeTweakerSection,\n} from './theme-tweaker.types';\n\nconst THEME_COLORS = [\n\t'--background',\n\t'--foreground',\n\t'--card',\n\t'--card-foreground',\n\t'--popover',\n\t'--popover-foreground',\n\t'--primary',\n\t'--primary-foreground',\n\t'--secondary',\n\t'--secondary-foreground',\n\t'--muted',\n\t'--muted-foreground',\n\t'--accent',\n\t'--accent-foreground',\n\t'--destructive',\n\t'--destructive-foreground',\n\t'--border',\n\t'--input',\n\t'--ring',\n\t'--chart-1',\n\t'--chart-2',\n\t'--chart-3',\n\t'--chart-4',\n\t'--chart-5',\n\t'--sidebar',\n\t'--sidebar-foreground',\n\t'--sidebar-primary',\n\t'--sidebar-primary-foreground',\n\t'--sidebar-accent',\n\t'--sidebar-accent-foreground',\n\t'--sidebar-border',\n\t'--sidebar-ring',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst STATE_COLORS = [\n\t'--success',\n\t'--success-foreground',\n\t'--info',\n\t'--info-foreground',\n\t'--warning',\n\t'--warning-foreground',\n\t'--warning-accent',\n\t'--link-color',\n\t'--primary-accent',\n\t'--inverse-background',\n\t'--inverse-foreground',\n\t'--inverse-muted',\n\t'--inverse-subtle',\n\t'--inverse-disabled',\n\t'--inverse-surface',\n\t'--inverse-surface-strong',\n\t'--inverse-border',\n\t'--inverse-decoration',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\n/**\n * Package-owned surface colors. Kept apart from `THEME_COLORS` because that\n * array is consumed by index-based slices, so appending to it would silently\n * reshuffle the colour sections.\n */\nconst SURFACE_COLORS = [\n\t'--overlay-backdrop',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst FONT_VARIABLES = [\n\t'--font-heading',\n\t'--font-sans',\n\t'--font-serif',\n\t'--font-mono',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst TEXT_STEPS = [\n\t'xxs',\n\t'xs',\n\t'pxs',\n\t'sm',\n\t'base',\n\t'lg',\n\t'xl',\n\t'2xl',\n\t'3xl',\n\t'4xl',\n\t'5xl',\n\t'6xl',\n\t'7xl',\n\t'8xl',\n\t'9xl',\n] as const;\n\nconst TYPOGRAPHY_VARIABLES = TEXT_STEPS.flatMap((step) => [\n\t`--text-${step}` as AdminUIThemeVariableName,\n\t`--text-${step}--line-height` as AdminUIThemeVariableName,\n]);\n\nconst SHADOW_VARIABLES = [\n\t'--shadow-2xs',\n\t'--shadow-xs',\n\t'--shadow-sm',\n\t'--shadow',\n\t'--shadow-md',\n\t'--shadow-lg',\n\t'--shadow-xl',\n\t'--shadow-2xl',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst STRUCTURAL_VARIABLES = [\n\t'--space-scale',\n\t'--density-scale',\n\t'--height-action',\n\t'--height-control',\n\t'--control-x',\n\t'--row-x',\n\t'--row-y',\n\t'--surface-x',\n\t'--surface-y',\n\t'--icon',\n\t'--avatar',\n\t'--shell-header-height',\n\t'--shell-sidebar-width',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst LAYOUT_VARIABLES = [\n\t'--content-width-sm',\n\t'--content-width-md',\n\t'--content-width-lg',\n\t'--content-width-xl',\n\t'--content-width-2xl',\n\t'--adaptive-grid-min-sm',\n\t'--adaptive-grid-min-md',\n\t'--adaptive-grid-min-lg',\n] as const satisfies readonly AdminUIThemeVariableName[];\n\nconst DESCRIPTIONS: Partial<Record<AdminUIThemeVariableName, string>> = {\n\t'--background': 'Application canvas and default page background.',\n\t'--foreground': 'Primary text and icon color on the application canvas.',\n\t'--primary': 'Brand and primary-action color.',\n\t'--primary-foreground': 'Text and icons on solid primary fills.',\n\t'--muted': 'Subdued backgrounds for passive regions and skeletons.',\n\t'--muted-foreground': 'Secondary text, metadata, and passive icons.',\n\t'--border': 'Default divider, outline, and surface-border color.',\n\t'--ring': 'Focus-visible ring and outline color.',\n\t'--link-color': 'Inline link and copyable-value accent color.',\n\t'--overlay-backdrop': 'Scrim painted behind dialog, alert dialog, sheet, and drawer surfaces.',\n\t'--primary-accent': 'Brand color used as foreground for icons, spinners, and active marks.',\n\t'--warning-accent': 'Warning color used as foreground for icons and marks on tinted warning surfaces.',\n\t'--radius': 'Outer surface radius; controls and collection rows derive a bounded inner curve from this same root.',\n\t'--space-scale': 'Multiplies structural gaps and padding without changing control heights.',\n\t'--density-scale': 'Multiplies actions, controls, rows, and density-sensitive geometry.',\n\t'--height-action': 'Base height for buttons and clickable action triggers.',\n\t'--height-control': 'Base height for inputs, selects, and editable controls.',\n\t'--control-x': 'Default inline inset for actions and form controls.',\n\t'--row-x': 'Shared inline inset for collection, menu, command, and table rows.',\n\t'--row-y': 'Shared vertical inset for collection, menu, command, and table rows.',\n\t'--surface-x': 'Default inline inset for cards, dialogs, panels, and content surfaces.',\n\t'--gap-normal': 'Title/description gap for normal surfaces; multiplied once by spacing scale.',\n\t'--gap-dense': 'Title/supporting-copy gap for dense rows and menus; multiplied once by spacing scale.',\n\t'--surface-y': 'Default vertical inset for cards, dialogs, panels, and content surfaces.',\n\t'--icon': 'Default interface icon size.',\n\t'--avatar': 'Default avatar size used by ordinary rows and cards.',\n\t'--shell-header-height': 'Minimum application-header shell height.',\n\t'--shell-sidebar-width': 'Expanded application-sidebar width.',\n\t'--content-width-sm': 'Compact centered content measure used by Container.',\n\t'--content-width-md': 'Medium centered content measure used by Container.',\n\t'--content-width-lg': 'Default readable page measure used by Container.',\n\t'--content-width-xl': 'Wide application content measure used by Container.',\n\t'--content-width-2xl': 'Maximum standard application measure used by Container.',\n\t'--adaptive-grid-min-sm': 'Compact minimum peer width used by AdaptiveGrid.',\n\t'--adaptive-grid-min-md': 'Default minimum peer width used by AdaptiveGrid.',\n\t'--adaptive-grid-min-lg': 'Spacious minimum peer width used by AdaptiveGrid.',\n};\n\nconst LABELS: Partial<Record<AdminUIThemeVariableName, string>> = {\n\t'--space-scale': 'Spacing scale',\n\t'--density-scale': 'Density scale',\n\t'--height-action': 'Action height',\n\t'--height-control': 'Control height',\n\t'--control-x': 'Control horizontal padding',\n\t'--row-x': 'Row horizontal padding',\n\t'--row-y': 'Row vertical padding',\n\t'--surface-x': 'Surface horizontal padding',\n\t'--surface-y': 'Surface vertical padding',\n\t'--gap-normal': 'Normal copy gap',\n\t'--gap-dense': 'Dense copy gap',\n\t'--icon': 'Interface icon size',\n\t'--avatar': 'Default avatar size',\n\t'--shell-header-height': 'Header height',\n\t'--shell-sidebar-width': 'Sidebar width',\n\t'--content-width-sm': 'Small content width',\n\t'--content-width-md': 'Medium content width',\n\t'--content-width-lg': 'Large content width',\n\t'--content-width-xl': 'Extra-large content width',\n\t'--content-width-2xl': 'Maximum content width',\n\t'--adaptive-grid-min-sm': 'Compact adaptive column',\n\t'--adaptive-grid-min-md': 'Default adaptive column',\n\t'--adaptive-grid-min-lg': 'Spacious adaptive column',\n};\n\nconst RANGE_CONTROLS: Partial<\n\tRecord<AdminUIThemeVariableName, ThemeTweakerRangeControl>\n> = {\n\t'--radius': { type: 'range', min: 0, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--space-scale': { type: 'range', min: 0.75, max: 1.35, step: 0.025, decimalPlaces: 3 },\n\t'--density-scale': { type: 'range', min: 0.75, max: 1.35, step: 0.025, decimalPlaces: 3 },\n\t'--height-action': { type: 'range', min: 1.5, max: 3.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--height-control': { type: 'range', min: 1.5, max: 3.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--control-x': { type: 'range', min: 0.25, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--row-x': { type: 'range', min: 0.25, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--row-y': { type: 'range', min: 0.25, max: 1.25, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--surface-x': { type: 'range', min: 0.5, max: 2.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--gap-normal': { type: 'range', min: 0, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--gap-dense': { type: 'range', min: 0, max: 1.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--surface-y': { type: 'range', min: 0.5, max: 2.5, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--icon': { type: 'range', min: 0.75, max: 2, step: 0.0625, unit: 'rem', decimalPlaces: 4 },\n\t'--avatar': { type: 'range', min: 1.5, max: 4, step: 0.125, unit: 'rem', decimalPlaces: 3 },\n\t'--shell-header-height': { type: 'range', min: 3, max: 7, step: 0.125, unit: 'rem', decimalPlaces: 3 },\n\t'--shell-sidebar-width': { type: 'range', min: 12, max: 24, step: 0.25, unit: 'rem', decimalPlaces: 2 },\n\t'--content-width-sm': { type: 'range', min: 20, max: 72, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-md': { type: 'range', min: 24, max: 80, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-lg': { type: 'range', min: 32, max: 96, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-xl': { type: 'range', min: 40, max: 108, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--content-width-2xl': { type: 'range', min: 48, max: 120, step: 1, unit: 'rem', decimalPlaces: 0 },\n\t'--adaptive-grid-min-sm': { type: 'range', min: 8, max: 24, step: 0.5, unit: 'rem', decimalPlaces: 1 },\n\t'--adaptive-grid-min-md': { type: 'range', min: 8, max: 32, step: 0.5, unit: 'rem', decimalPlaces: 1 },\n\t'--adaptive-grid-min-lg': { type: 'range', min: 12, max: 40, step: 0.5, unit: 'rem', decimalPlaces: 1 },\n};\n\nfunction labelFromName(name: AdminUIThemeVariableName): string {\n\treturn name\n\t\t.replace(/^--/, '')\n\t\t.replace(/--/g, ' · ')\n\t\t.split('-')\n\t\t.map((part) => part.length <= 3 ? part.toUpperCase() : `${part[0].toUpperCase()}${part.slice(1)}`)\n\t\t.join(' ');\n}\n\nfunction genericDescription(\n\tname: AdminUIThemeVariableName,\n\tgroup: ThemeTweakerGroup,\n): string {\n\tif (name.startsWith('--chart-')) return 'Categorical chart-series color; keep status meaning separate.';\n\tif (name.startsWith('--sidebar-')) return 'Sidebar-specific theme color.';\n\tif (name.startsWith('--inverse-')) return 'Explicitly inverse surface and content color.';\n\tif (name.endsWith('-foreground')) return 'Foreground color paired with the matching solid or surface token.';\n\tif (name.endsWith('--line-height')) return 'Line height paired with the matching typography step.';\n\tif (name.startsWith('--text-')) return 'Font size for the matching typography step.';\n\tif (name.startsWith('--font-')) return 'Font family stack for the matching content role.';\n\tif (name.startsWith('--shadow')) return 'Elevation shadow used by package surfaces and overlays.';\n\tif (group === 'states') return 'Semantic state color shared by package status surfaces.';\n\treturn 'Public theme variable used across package components.';\n}\n\nfunction fields(\n\tnames: readonly AdminUIThemeVariableName[],\n\tgroup: ThemeTweakerGroup,\n\tsection: ThemeTweakerSection,\n\tscope: ThemeTweakerFieldScope,\n\tkind: ThemeTweakerFieldKind,\n): ThemeTweakerField[] {\n\treturn names.map((name) => ({\n\t\tname,\n\t\tlabel: LABELS[name] ?? labelFromName(name),\n\t\tdescription: DESCRIPTIONS[name] ?? genericDescription(name, group),\n\t\tgroup,\n\t\tsection,\n\t\tscope,\n\t\tkind,\n\t\tcontrol: RANGE_CONTROLS[name],\n\t}));\n}\n\n/**\n * Exhaustive editable surface: every shadcn runtime theme variable plus every\n * canonical package-owned root token. Internal and generated utility variables\n * are deliberately absent.\n */\nexport const defaultThemeTweakerFields: readonly ThemeTweakerField[] = [\n\t...fields(THEME_COLORS.slice(0, 6), 'colors', 'surfaces-content', 'mode', 'color'),\n\t...fields(SURFACE_COLORS, 'colors', 'surfaces-content', 'shared', 'color'),\n\t...fields(THEME_COLORS.slice(6, 19), 'colors', 'brand-actions', 'mode', 'color'),\n\t...fields(THEME_COLORS.slice(19, 24), 'colors', 'charts', 'mode', 'color'),\n\t...fields(THEME_COLORS.slice(24), 'colors', 'sidebar', 'mode', 'color'),\n\t...fields(STATE_COLORS.slice(0, 7), 'states', 'semantic-feedback', 'mode', 'color'),\n\t...fields(STATE_COLORS.slice(7), 'states', 'inverse-surfaces', 'mode', 'color'),\n\t...fields(FONT_VARIABLES, 'typography', 'font-families', 'shared', 'font'),\n\t...fields(TYPOGRAPHY_VARIABLES, 'typography', 'type-scale', 'shared', 'length'),\n\t...fields(['--radius'], 'shape', 'radius', 'shared', 'length'),\n\t...fields(SHADOW_VARIABLES, 'shape', 'elevation', 'mode', 'shadow'),\n\t...fields(STRUCTURAL_VARIABLES.slice(0, 2), 'structure', 'global-scales', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(2, 5), 'structure', 'actions-controls', 'shared', 'length'),\n\t...fields(['--gap-normal', '--gap-dense'], 'structure', 'rows-surfaces', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(5, 9), 'structure', 'rows-surfaces', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(9, 11), 'structure', 'media', 'shared', 'length'),\n\t...fields(STRUCTURAL_VARIABLES.slice(11), 'structure', 'application-shell', 'shared', 'length'),\n\t...fields(LAYOUT_VARIABLES.slice(0, 5), 'structure', 'content-widths', 'shared', 'length'),\n\t...fields(LAYOUT_VARIABLES.slice(5), 'structure', 'adaptive-layout', 'shared', 'length'),\n].map((field) => (\n\tfield.name === '--space-scale' || field.name === '--density-scale'\n\t\t? { ...field, kind: 'number' as const }\n\t\t: field\n));\n","import { Info } from 'lucide-react';\n\nimport { SmartAccordion } from '../../base/accordion';\nimport {\n\tAlert,\n\tAlertDescription,\n\tAlertMetadata,\n\tAlertMetadataItem,\n\tAlertTitle,\n} from '../../base/feedback';\nimport { FormField } from '../../base/forms';\nimport { Input } from '../../base/text-inputs';\nimport { Select, ToggleField } from '../../base/choice-inputs';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { COMPONENT_SCALES, SEMANTIC_TONES } from '../../../lib/component-vocabulary';\nimport type { UIConfig } from '../../../lib/ui-provider';\n\nimport { createSerializableUIConfig } from './theme-tweaker.utils';\n\ninterface ThemeProviderSettingsProps {\n\t/** Configuration for this surface. */\n\tconfig: UIConfig;\n\t/** Fired with the next value. */\n\tonChange: (config: UIConfig) => void;\n\t/** Overrides this surface's own copy. */\n\tstrings?: ThemeProviderSettingsStrings;\n}\n\nexport interface ThemeProviderSettingsStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tboundaryTitle: string;\n\tboundaryDescription: string;\n\tsummary: {\n\t\tlocale: string;\n\t\tcurrency: string;\n\t\tcontrols: string;\n\t\tcards: string;\n\t};\n\t/** Sections to render, in display order. */\n\tsections: {\n\t\tregional: { title: string; description: string };\n\t\tcontent: { title: string; description: string };\n\t\tcomponents: { title: string; description: string };\n\t\ttoasts: { title: string; description: string };\n\t};\n\tlabels: Record<\n\t\t| 'locale'\n\t\t| 'defaultCurrency'\n\t\t| 'displayCurrency'\n\t\t| 'moneyFormat'\n\t\t| 'firstDay'\n\t\t| 'dateFormat'\n\t\t| 'textSize'\n\t\t| 'commentComposer'\n\t\t| 'dualPricing'\n\t\t| 'dualPricingMode'\n\t\t| 'dualPricingLayout'\n\t\t| 'componentScale'\n\t\t| 'itemVariant'\n\t\t| 'buttonTone'\n\t\t| 'buttonStyle'\n\t\t| 'badgeTone'\n\t\t| 'cardSurface'\n\t\t| 'spinner'\n\t\t| 'cardDivider'\n\t\t| 'toastPosition'\n\t\t| 'toastTheme'\n\t\t| 'toastDuration'\n\t\t| 'visibleToasts'\n\t\t| 'closeButton'\n\t\t| 'richColors',\n\t\tstring\n\t> & { cardFooterDivider?: string };\n\tdualPricingDescription: string;\n\tdisplayCurrencyPlaceholder: string;\n\toptions: Record<string, string>;\n}\n\nexport const defaultThemeProviderSettingsStrings: ThemeProviderSettingsStrings = {\n\ttitle: 'Application defaults',\n\tdescription: 'Configure the stable display behavior that accompanies the exported CSS theme.',\n\tboundaryTitle: 'Root provider recipe',\n\tboundaryDescription: 'These defaults take effect when UIProvider mounts. CSS variables continue to preview live; accept provider changes by remounting the application root.',\n\tsummary: {\n\t\tlocale: 'Locale',\n\t\tcurrency: 'Currency',\n\t\tcontrols: 'Controls',\n\t\tcards: 'Cards',\n\t},\n\tsections: {\n\t\tregional: {\n\t\t\ttitle: 'Regional formatting',\n\t\t\tdescription: 'Locale, currency, money, and date conventions.',\n\t\t},\n\t\tcontent: {\n\t\t\ttitle: 'Content behavior',\n\t\t\tdescription: 'Typography, comments, and dual-pricing presentation.',\n\t\t},\n\t\tcomponents: {\n\t\t\ttitle: 'Component defaults',\n\t\t\tdescription: 'Sizes, variants, surfaces, and action treatment.',\n\t\t},\n\t\ttoasts: {\n\t\t\ttitle: 'Toast defaults',\n\t\t\tdescription: 'Placement, duration, appearance, and capacity.',\n\t\t},\n\t},\n\tlabels: {\n\t\tlocale: 'Locale',\n\t\tdefaultCurrency: 'Default currency',\n\t\tdisplayCurrency: 'Display currency',\n\t\tmoneyFormat: 'Money format',\n\t\tfirstDay: 'First day of week',\n\t\tdateFormat: 'Date format',\n\t\ttextSize: 'Default text size',\n\t\tcommentComposer: 'Comment composer',\n\t\tdualPricing: 'Dual pricing',\n\t\tdualPricingMode: 'Dual-pricing mode',\n\t\tdualPricingLayout: 'Dual-pricing layout',\n\t\tcomponentScale: 'Component scale',\n\t\titemVariant: 'Item variant',\n\t\tbuttonTone: 'Button tone',\n\t\tbuttonStyle: 'Button style',\n\t\tbadgeTone: 'Badge tone',\n\t\tcardSurface: 'Card surface',\n\t\tspinner: 'Spinner',\n\t\tcardDivider: 'Card header divider',\n\t\tcardFooterDivider: 'Card footer divider',\n\t\ttoastPosition: 'Position',\n\t\ttoastTheme: 'Theme',\n\t\ttoastDuration: 'Duration (ms)',\n\t\tvisibleToasts: 'Visible toasts',\n\t\tcloseButton: 'Close button',\n\t\trichColors: 'Rich semantic colors',\n\t},\n\tdualPricingDescription: 'Show an optional display currency.',\n\tdisplayCurrencyPlaceholder: 'Optional',\n\toptions: {\n\t\tdefault: 'Default',\n\t\tdecimal: 'Decimal',\n\t\twith_code: 'With code',\n\t\twith_symbol: 'With symbol',\n\t\tlocale_aware: 'Locale aware',\n\t\tsunday: 'Sunday',\n\t\tmonday: 'Monday',\n\t\ttuesday: 'Tuesday',\n\t\twednesday: 'Wednesday',\n\t\tthursday: 'Thursday',\n\t\tfriday: 'Friday',\n\t\tsaturday: 'Saturday',\n\t\ttop: 'Top',\n\t\tbottom: 'Bottom',\n\t\tdefault_only: 'Default only',\n\t\tdual: 'Dual',\n\t\tdynamic: 'Dynamic',\n\t\tinline: 'Inline',\n\t\tlines: 'Lines',\n\t\toutline: 'Outline',\n\t\tmuted: 'Muted',\n\t\tprimary: 'Primary',\n\t\tsecondary: 'Secondary',\n\t\tdark: 'Dark',\n\t\twarning: 'Warning',\n\t\tsuccess: 'Success',\n\t\tlight: 'Light',\n\t\tsolid: 'Solid',\n\t\tghost: 'Ghost',\n\t\tinfo: 'Info',\n\t\tdestructive: 'Destructive',\n\t\txs: 'XS',\n\t\tsm: 'SM',\n\t\tmd: 'MD',\n\t\tcard: 'Card',\n\t\tflat: 'Flat',\n\t\tframed: 'Framed',\n\t\tshimmer: 'Shimmer',\n\t\tprogress: 'Progress',\n\t\tsystem: 'System',\n\t\t'top-right': 'Top right',\n\t\t'top-left': 'Top left',\n\t\t'top-center': 'Top center',\n\t\t'bottom-right': 'Bottom right',\n\t\t'bottom-left': 'Bottom left',\n\t\t'bottom-center': 'Bottom center',\n\t\txxs: 'XXS',\n\t\tpxs: 'PXS',\n\t\tbase: 'Base',\n\t\tlg: 'LG',\n\t\txl: 'XL',\n\t},\n};\n\nfunction selectOptions(values: readonly string[], strings: ThemeProviderSettingsStrings) {\n\treturn values.map((value) => ({\n\t\tvalue,\n\t\tlabel: strings.options[value] ?? value.replaceAll('_', ' ').replace(/\\b\\w/g, (character) => character.toUpperCase()),\n\t}));\n}\n\nexport function ThemeProviderSettings({ config, onChange, strings = defaultThemeProviderSettingsStrings }: ThemeProviderSettingsProps) {\n\tconst resolved = createSerializableUIConfig(config);\n\tconst scaleOptions = selectOptions(COMPONENT_SCALES, strings);\n\tconst weekdays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].map((day, value) => ({\n\t\tvalue: String(value),\n\t\tlabel: strings.options[day],\n\t}));\n\tconst update = (slice: keyof UIConfig, key: string, value: unknown) => {\n\t\tonChange({\n\t\t\t...resolved,\n\t\t\t[slice]: {\n\t\t\t\t...(resolved[slice] as object),\n\t\t\t\t[key]: value,\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t<Stack gap=\"lg\" className=\"theme-tweaker--provider-settings\">\n\t\t\t<Stack gap=\"normal\">\n\t\t\t\t<Text weight=\"semibold\">{strings.title}</Text>\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.description}\n\t\t\t\t</Text>\n\t\t\t</Stack>\n\t\t\t<Alert tone=\"info\" role=\"note\" className=\"theme-tweaker--provider-boundary\">\n\t\t\t\t<Info aria-hidden=\"true\" />\n\t\t\t\t<AlertTitle>{strings.boundaryTitle}</AlertTitle>\n\t\t\t\t<AlertDescription>{strings.boundaryDescription}</AlertDescription>\n\t\t\t\t<AlertMetadata>\n\t\t\t\t\t<AlertMetadataItem label={strings.summary.locale} value={resolved.formatting?.locale ?? strings.options.default} />\n\t\t\t\t\t<AlertMetadataItem label={strings.summary.currency} value={resolved.money?.defaultCurrency ?? strings.options.default} />\n\t\t\t\t\t<AlertMetadataItem\n\t\t\t\t\t\tlabel={strings.summary.controls}\n\t\t\t\t\t\tvalue={strings.options[resolved.density?.defaultScale ?? 'md'] ?? resolved.density?.defaultScale ?? strings.options.md}\n\t\t\t\t\t/>\n\t\t\t\t\t<AlertMetadataItem\n\t\t\t\t\t\tlabel={strings.summary.cards}\n\t\t\t\t\t\tvalue={strings.options[resolved.card?.defaultSurface ?? 'card'] ?? resolved.card?.defaultSurface ?? strings.options.default}\n\t\t\t\t\t/>\n\t\t\t\t</AlertMetadata>\n\t\t\t</Alert>\n\t\t\t<SmartAccordion\n\t\t\t\tmultiple\n\t\t\t\tdefaultValue={['regional']}\n\t\t\t\tvariant=\"bordered\"\n\t\t\t\ticonStyle=\"none\"\n\t\t\t\tcontentClassName=\"pb-surface\"\n\t\t\t\titems={[\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'regional',\n\t\t\t\t\t\ttitle: strings.sections.regional.title,\n\t\t\t\t\t\tdescription: strings.sections.regional.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.locale}>\n\t\t\t\t\t\t\t\t\t<Input value={resolved.formatting?.locale ?? ''} onChange={(event) => update('formatting', 'locale', event.target.value)} />\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.defaultCurrency}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.defaultCurrency ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('money', 'defaultCurrency', event.target.value.toUpperCase())}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.displayCurrency}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.displayCurrency ?? ''}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.displayCurrencyPlaceholder}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('money', 'displayCurrency', event.target.value.toUpperCase() || undefined)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.moneyFormat}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.formatMode}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['decimal', 'with_code', 'with_symbol', 'locale_aware'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'formatMode', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.firstDay}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={String(resolved.dates?.weekStartsOn ?? 1)}\n\t\t\t\t\t\t\t\t\t\toptions={weekdays}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('dates', 'weekStartsOn', Number(next))}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.dateFormat}>\n\t\t\t\t\t\t\t\t\t<Input value={resolved.dates?.format ?? ''} onChange={(event) => update('dates', 'format', event.target.value)} />\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'content',\n\t\t\t\t\t\ttitle: strings.sections.content.title,\n\t\t\t\t\t\tdescription: strings.sections.content.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.textSize}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.typography?.defaultTextSize}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['xxs', 'xs', 'pxs', 'sm', 'base', 'lg', 'xl'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('typography', 'defaultTextSize', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.commentComposer}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.comments?.composerPosition}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['top', 'bottom'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('comments', 'composerPosition', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.dualPricing}\n\t\t\t\t\t\t\t\t\tdescription={strings.dualPricingDescription}\n\t\t\t\t\t\t\t\t\tvalue={resolved.money?.dualPricingEnabled ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'dualPricingEnabled', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.dualPricingMode}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.displayMode}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['default_only', 'dual', 'dynamic'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'displayMode', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.dualPricingLayout}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.money?.dualPricingDisplay}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['inline', 'lines'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('money', 'dualPricingDisplay', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'components',\n\t\t\t\t\t\ttitle: strings.sections.components.title,\n\t\t\t\t\t\tdescription: strings.sections.components.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.componentScale}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.density?.defaultScale}\n\t\t\t\t\t\t\t\t\t\toptions={scaleOptions}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('density', 'defaultScale', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.itemVariant}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.item?.defaultVariant}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['default', 'outline', 'muted'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('item', 'defaultVariant', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.buttonTone}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.button?.defaultTone}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(SEMANTIC_TONES, strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('button', 'defaultTone', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.buttonStyle}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.button?.defaultButtonStyle}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['solid', 'outline', 'ghost'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('button', 'defaultButtonStyle', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.badgeTone}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.badge?.defaultTone}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(SEMANTIC_TONES, strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('badge', 'defaultTone', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.cardSurface}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.card?.defaultSurface}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['card', 'flat', 'framed'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('card', 'defaultSurface', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.spinner}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.spinner?.defaultVariant}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['default', 'shimmer', 'progress'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('spinner', 'defaultVariant', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.cardDivider}\n\t\t\t\t\t\t\t\t\tvalue={resolved.card?.defaultHeaderDivider ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('card', 'defaultHeaderDivider', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.cardFooterDivider ?? defaultThemeProviderSettingsStrings.labels.cardFooterDivider}\n\t\t\t\t\t\t\t\t\tvalue={resolved.card?.defaultFooterDivider ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('card', 'defaultFooterDivider', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'toasts',\n\t\t\t\t\t\ttitle: strings.sections.toasts.title,\n\t\t\t\t\t\tdescription: strings.sections.toasts.description,\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-1 gap-space-md @2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.toastPosition}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.position}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['top-right', 'top-left', 'top-center', 'bottom-right', 'bottom-left', 'bottom-center'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'position', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.toastTheme}>\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.theme}\n\t\t\t\t\t\t\t\t\t\toptions={selectOptions(['light', 'dark', 'system'], strings)}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'theme', next)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.toastDuration}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\tmin={1000}\n\t\t\t\t\t\t\t\t\t\tstep={500}\n\t\t\t\t\t\t\t\t\t\tvalue={String(resolved.toast?.duration ?? 5000)}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('toast', 'duration', Number(event.target.value))}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<FormField label={strings.labels.visibleToasts}>\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\tmin={1}\n\t\t\t\t\t\t\t\t\t\tmax={10}\n\t\t\t\t\t\t\t\t\t\tvalue={String(resolved.toast?.visibleToasts ?? 4)}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => update('toast', 'visibleToasts', Number(event.target.value))}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.closeButton}\n\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.closeButton ?? true}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'closeButton', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\t\t\tlabel={strings.labels.richColors}\n\t\t\t\t\t\t\t\t\tvalue={resolved.toast?.richColors ?? false}\n\t\t\t\t\t\t\t\t\tonValueChange={(next) => update('toast', 'richColors', next)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n","import { defaultThemeProviderSettingsStrings, type ThemeProviderSettingsStrings } from './theme-provider-settings';\n\nexport interface ThemeTweakerStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tsearchLabel: string;\n\tsearchPlaceholder: string;\n\tsearchHint: string;\n\tsearchResults: string;\n\tallGroups: string;\n\tgroupNavigationLabel: string;\n\tpreviousGroup: string;\n\tnextGroup: string;\n\tgroupNavigationTitle: string;\n\tgroupNavigationDescription: string;\n\tsharedScope: string;\n\tmixedScope: string;\n\tvariableCount: string;\n\tgroupSectionLabel: string;\n\tlightMode: string;\n\tdarkMode: string;\n\treset: string;\n\tcopy: string;\n\tcopyProvider: string;\n\tcopyOverrides: string;\n\texportProvider: string;\n\texportOptions: string;\n\texport: string;\n\texportPending: string;\n\texportDialogTitle: string;\n\texportDialogDescription: string;\n\tdownloadCss: string;\n\tdownloadProvider: string;\n\tclose: string;\n\tcopiedStatus: string;\n\texportedStatus: string;\n\tinvalidTheme: string;\n\temptySearch: string;\n\tinheritValue: string;\n\tresetVariable: string;\n\tchooseColor: string;\n\tadjustVariable: string;\n\tchangedCount: string;\n\tcssOutputLabel: string;\n\tcssOutputDescription: string;\n\toverrideOutputLabel: string;\n\toverrideOutputDescription: string;\n\tproviderOutputLabel: string;\n\tproviderOutputDescription: string;\n\tautoPalette: string;\n\tautoPaletteDescription: string;\n\ttypeRecipeTitle: string;\n\ttypeRecipeDescription: string;\n\tbaseTypeSize: string;\n\ttypeRatio: string;\n\televationRecipeTitle: string;\n\televationRecipeDescription: string;\n\televationIntensity: string;\n\tpreviewTitle: string;\n\tpreviewDescription: string;\n\tpreviewItemTitle: string;\n\tpreviewItemDescription: string;\n\tpreviewFieldLabel: string;\n\tpreviewFieldPlaceholder: string;\n\tpreviewAction: string;\n\tpreviewSuccess: string;\n\tpreviewWarning: string;\n\tpreviewContract: string;\n\tproviderSettings: ThemeProviderSettingsStrings;\n\tgroups: Record<'colors' | 'states' | 'typography' | 'shape' | 'structure' | 'defaults', string>;\n\tgroupDescriptions: Record<'colors' | 'states' | 'typography' | 'shape' | 'structure' | 'defaults', string>;\n\tsections: Record<\n\t\t| 'surfaces-content'\n\t\t| 'brand-actions'\n\t\t| 'charts'\n\t\t| 'sidebar'\n\t\t| 'semantic-feedback'\n\t\t| 'inverse-surfaces'\n\t\t| 'font-families'\n\t\t| 'type-scale'\n\t\t| 'radius'\n\t\t| 'elevation'\n\t\t| 'global-scales'\n\t\t| 'actions-controls'\n\t\t| 'rows-surfaces'\n\t\t| 'media'\n\t\t| 'application-shell'\n\t\t| 'content-widths'\n\t\t| 'adaptive-layout',\n\t\tstring\n\t>;\n}\n\nexport const defaultThemeTweakerStrings: ThemeTweakerStrings = {\n\ttitle: 'Theme tweaker',\n\tdescription: 'Edit the public theme contract, calculate coherent recipes, and export complete CSS plus root display defaults.',\n\tsearchLabel: 'Search variables',\n\tsearchPlaceholder: 'Search by token, label, or purpose…',\n\tsearchHint: 'Search spans every public theme group.',\n\tsearchResults: 'Results: {{count}}',\n\tallGroups: 'All groups',\n\tgroupNavigationLabel: 'Theme categories',\n\tpreviousGroup: 'Previous categories',\n\tnextGroup: 'Next categories',\n\tgroupNavigationTitle: 'Theme controls',\n\tgroupNavigationDescription: 'Choose one contract area to edit.',\n\tsharedScope: 'Shared',\n\tmixedScope: 'Mixed scope',\n\tvariableCount: 'Variables: {{count}}',\n\tgroupSectionLabel: '{{group}} · {{section}}',\n\tlightMode: 'Light',\n\tdarkMode: 'Dark',\n\treset: 'Reset overrides',\n\tcopy: 'Copy CSS',\n\tcopyProvider: 'Copy provider config',\n\tcopyOverrides: 'Copy override-only CSS',\n\texportProvider: 'Export provider config',\n\texportOptions: 'More export options',\n\texport: 'Export',\n\texportPending: 'Downloading…',\n\texportDialogTitle: 'Export theme',\n\texportDialogDescription: 'Review, copy, or download the complete CSS theme and its matching UIProvider configuration.',\n\tdownloadCss: 'Download CSS',\n\tdownloadProvider: 'Download provider config',\n\tclose: 'Close',\n\tcopiedStatus: 'Copied to the clipboard.',\n\texportedStatus: 'File downloaded.',\n\tinvalidTheme: 'Fix the invalid CSS override before copying or exporting.',\n\temptySearch: 'No public theme variables match this search.',\n\tinheritValue: 'Inherit package value',\n\tresetVariable: 'Reset variable',\n\tchooseColor: 'Choose {{label}}',\n\tadjustVariable: 'Adjust {{label}}',\n\tchangedCount: 'Overrides: {{count}}',\n\tcssOutputLabel: 'Complete theme CSS',\n\tcssOutputDescription: 'A standalone light, dark, typography, shape, and structure contract for every public variable.',\n\toverrideOutputLabel: 'Override-only CSS',\n\toverrideOutputDescription: 'The compact alternative containing only values changed in this session.',\n\tproviderOutputLabel: 'UIProvider config',\n\tproviderOutputDescription: 'Mount-once display defaults for the application root.',\n\tautoPalette: 'Derive supporting colors',\n\tautoPaletteDescription: 'Keep status pairs, muted surfaces, accents, borders, charts, links, and sidebar actions coherent with the primary color.',\n\ttypeRecipeTitle: 'Calculated type scale',\n\ttypeRecipeDescription: 'Generate every public font step and line height from one body anchor and modular ratio.',\n\tbaseTypeSize: 'Base size',\n\ttypeRatio: 'Heading ratio',\n\televationRecipeTitle: 'Calculated elevation',\n\televationRecipeDescription: 'Generate the complete shadow ladder from one restrained intensity.',\n\televationIntensity: 'Shadow intensity',\n\tpreviewTitle: 'Semantic preview',\n\tpreviewDescription: 'The same variables drive surfaces, typography, controls, rows, and states.',\n\tpreviewItemTitle: 'Customer workspace',\n\tpreviewItemDescription: 'Long descriptions and actions keep the package rhythm.',\n\tpreviewFieldLabel: 'Workspace name',\n\tpreviewFieldPlaceholder: 'Acme operations',\n\tpreviewAction: 'Save changes',\n\tpreviewSuccess: 'Healthy',\n\tpreviewWarning: 'Review',\n\tpreviewContract: 'CSS variables',\n\tproviderSettings: defaultThemeProviderSettingsStrings,\n\tgroups: {\n\t\tcolors: 'Colors',\n\t\tstates: 'States',\n\t\ttypography: 'Typography',\n\t\tshape: 'Shape & elevation',\n\t\tstructure: 'Structure',\n\t\tdefaults: 'Provider',\n\t},\n\tgroupDescriptions: {\n\t\tcolors: 'Application surfaces, brand actions, charts, and sidebar colors.',\n\t\tstates: 'Semantic feedback and inverse-surface color pairs.',\n\t\ttypography: 'Font families and the calculated public type scale.',\n\t\tshape: 'Corner radius and the complete elevation ladder.',\n\t\tstructure: 'Density, spacing, controls, rows, media, and shell geometry.',\n\t\tdefaults: 'Mount-once UIProvider formatting and component defaults.',\n\t},\n\tsections: {\n\t\t'surfaces-content': 'Surfaces & content',\n\t\t'brand-actions': 'Brand & actions',\n\t\tcharts: 'Charts',\n\t\tsidebar: 'Sidebar',\n\t\t'semantic-feedback': 'Semantic feedback',\n\t\t'inverse-surfaces': 'Inverse surfaces',\n\t\t'font-families': 'Font families',\n\t\t'type-scale': 'Type scale',\n\t\tradius: 'Radius',\n\t\televation: 'Elevation',\n\t\t'global-scales': 'Global scales',\n\t\t'actions-controls': 'Actions & controls',\n\t\t'rows-surfaces': 'Rows & surfaces',\n\t\tmedia: 'Media',\n\t\t'application-shell': 'Application shell',\n\t\t'content-widths': 'Content widths',\n\t\t'adaptive-layout': 'Adaptive layout',\n\t},\n};\n","import type {\n\tAdminUIThemeMode,\n\tAdminUIThemeOverrides,\n} from './theme-tweaker.types';\n\nexport interface AdminUIPaletteRecipe {\n\tprimary: string;\n\tmode?: AdminUIThemeMode;\n}\n\nexport interface AdminUITypeScaleRecipe {\n\t/** Body-size anchor in pixels. The package default is 16. */\n\tbaseSize: number;\n\t/** Modular ratio for headings and display sizes. Defaults to 1.2. */\n\tratio?: number;\n}\n\nexport interface AdminUIElevationRecipe {\n\t/** Bounded visual intensity from 0 (flat) to 1 (pronounced). */\n\tintensity: number;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n\treturn Math.min(max, Math.max(min, value));\n}\n\nfunction contrastForeground(color: string, mode: AdminUIThemeMode): string {\n\tconst digits = color.trim().match(/^#([\\da-f]{3}|[\\da-f]{6})$/i)?.[1];\n\tconst hex = digits?.length === 3 ? [...digits].map(value => value + value).join('') : digits;\n\tif (hex) {\n\t\tconst channels = [0, 2, 4].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16) / 255);\n\t\tconst luminance = channels\n\t\t\t.map((channel) => channel <= 0.03928 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4)\n\t\t\t.reduce((sum, channel, index) => sum + channel * [0.2126, 0.7152, 0.0722][index], 0);\n\t\treturn luminance > 0.28 ? 'oklch(0.18 0.01 260)' : 'oklch(0.985 0 0)';\n\t}\n\n\tconst match = color.match(/oklch\\(\\s*([\\d.]+)(%)?/i);\n\tconst lightness = Number.parseFloat(match?.[1] ?? 'NaN') / (match?.[2] ? 100 : 1);\n\tif (Number.isFinite(lightness)) {\n\t\treturn lightness > 0.67 ? 'oklch(0.18 0.01 260)' : 'oklch(0.985 0 0)';\n\t}\n\n\treturn mode === 'dark' ? 'oklch(0.18 0.01 260)' : 'oklch(0.985 0 0)';\n}\n\n/**\n * Builds a coherent brand recipe from one primary color. Derived values stay\n * expressed in CSS so they continue to follow consumer-edited background and\n * foreground tokens without introducing another runtime color system.\n */\nexport function deriveAdminUIPalette({\n\tprimary,\n\tmode = 'light',\n}: AdminUIPaletteRecipe): AdminUIThemeOverrides {\n\tconst dark = mode === 'dark';\n\t// A small brand influence ties the palette together without erasing status hues.\n\tconst harmonize = (light: string, night: string) => `color-mix(in oklab, ${dark ? night : light} 94%, var(--primary))`;\n\treturn {\n\t\t'--primary': primary,\n\t\t'--primary-accent': dark\n\t\t\t? 'oklch(from var(--primary) clamp(0.7, l, 0.85) min(c, 0.16) h)'\n\t\t\t: 'oklch(from var(--primary) clamp(0.35, l, 0.55) min(c, 0.16) h)',\n\t\t'--success': harmonize('oklch(0.48 0.11 155)', 'oklch(0.74 0.12 155)'),\n\t\t'--success-foreground': dark ? 'oklch(0.23 0.025 155)' : 'oklch(0.985 0 0)',\n\t\t'--info': harmonize('oklch(0.52 0.12 250)', 'oklch(0.75 0.1 250)'),\n\t\t'--info-foreground': dark ? 'oklch(0.23 0.025 250)' : 'oklch(0.985 0 0)',\n\t\t'--warning': harmonize('oklch(0.78 0.13 75)', 'oklch(0.81 0.12 75)'),\n\t\t'--warning-foreground': 'oklch(0.28 0.035 60)',\n\t\t'--warning-accent': harmonize('oklch(0.54 0.11 65)', 'oklch(0.81 0.12 75)'),\n\t\t'--destructive': harmonize('oklch(0.55 0.17 25)', 'oklch(0.74 0.14 25)'),\n\t\t'--destructive-foreground': dark ? 'oklch(0.23 0.035 25)' : 'oklch(0.985 0 0)',\n\t\t'--primary-foreground': contrastForeground(primary, mode),\n\t\t'--secondary': 'color-mix(in oklab, var(--primary) 10%, var(--background))',\n\t\t'--secondary-foreground': 'var(--foreground)',\n\t\t'--muted': 'color-mix(in oklab, var(--primary) 7%, var(--background))',\n\t\t'--muted-foreground': 'color-mix(in oklab, var(--foreground) 62%, var(--background))',\n\t\t'--accent': 'color-mix(in oklab, var(--primary) 14%, var(--background))',\n\t\t'--accent-foreground': 'var(--foreground)',\n\t\t'--border': 'color-mix(in oklab, var(--primary) 14%, var(--background))',\n\t\t'--input': 'color-mix(in oklab, var(--primary) 18%, var(--background))',\n\t\t'--ring': 'var(--primary)',\n\t\t'--link-color': 'var(--primary-accent)',\n\t\t'--chart-1': 'var(--primary)',\n\t\t'--chart-2': harmonize('oklch(0.56 0.11 230)', 'oklch(0.76 0.11 230)'),\n\t\t'--chart-3': harmonize('oklch(0.56 0.15 285)', 'oklch(0.76 0.15 285)'),\n\t\t'--chart-4': harmonize('oklch(0.58 0.14 330)', 'oklch(0.76 0.14 330)'),\n\t\t'--chart-5': harmonize('oklch(0.6 0.12 60)', 'oklch(0.76 0.12 60)'),\n\t\t'--sidebar-primary': 'var(--primary)',\n\t\t'--sidebar-primary-foreground': 'var(--primary-foreground)',\n\t\t'--sidebar-accent': 'var(--accent)',\n\t\t'--sidebar-accent-foreground': 'var(--accent-foreground)',\n\t\t'--sidebar-border': 'var(--border)',\n\t\t'--sidebar-ring': 'var(--ring)',\n\t};\n}\n\nconst BODY_STEPS = {\n\txxs: 0.75,\n\txs: 0.75,\n\tpxs: 0.8125,\n\tsm: 0.875,\n\tbase: 1,\n} as const;\n\nconst HEADING_STEPS = ['lg', 'xl', '2xl', '3xl', '4xl', '5xl', '6xl', '7xl', '8xl', '9xl'] as const;\n\n/** Generates the full public typography ladder from one base size. */\nexport function deriveAdminUITypeScale({\n\tbaseSize,\n\tratio = 1.2,\n}: AdminUITypeScaleRecipe): AdminUIThemeOverrides {\n\tconst boundedBase = clamp(baseSize, 14, 20);\n\tconst boundedRatio = clamp(ratio, 1.125, 1.333);\n\tconst overrides: AdminUIThemeOverrides = {};\n\n\tfor (const [step, factor] of Object.entries(BODY_STEPS)) {\n\t\tconst pixels = Math.max(12, boundedBase * factor);\n\t\toverrides[`--text-${step}`] = `${Number((pixels / 16).toFixed(4))}rem`;\n\t\toverrides[`--text-${step}--line-height`] = `${Number((Math.max(pixels + 6, pixels * 1.45) / pixels).toFixed(4))}`;\n\t}\n\n\tHEADING_STEPS.forEach((step, index) => {\n\t\tconst pixels = boundedBase * boundedRatio ** (index + 1);\n\t\toverrides[`--text-${step}`] = `${Number((pixels / 16).toFixed(4))}rem`;\n\t\toverrides[`--text-${step}--line-height`] = `${Number(clamp(1.55 - index * 0.065, 1, 1.5).toFixed(4))}`;\n\t});\n\n\treturn overrides;\n}\n\n/** Generates all public elevation steps from one bounded intensity. */\nexport function deriveAdminUIElevation({ intensity }: AdminUIElevationRecipe): AdminUIThemeOverrides {\n\tconst value = clamp(intensity, 0, 1);\n\tconst alpha = (factor: number) => Number((value * factor).toFixed(3));\n\treturn {\n\t\t'--shadow-2xs': `0 1px 2px 0 oklch(0 0 0 / ${alpha(0.06)})`,\n\t\t'--shadow-xs': `0 1px 3px 0 oklch(0 0 0 / ${alpha(0.07)})`,\n\t\t'--shadow-sm': `0 1px 2px 0 oklch(0 0 0 / ${alpha(0.10)}), 0 3px 8px -3px oklch(0 0 0 / ${alpha(0.13)})`,\n\t\t'--shadow': `0 1px 3px 0 oklch(0 0 0 / ${alpha(0.13)}), 0 4px 10px -3px oklch(0 0 0 / ${alpha(0.13)})`,\n\t\t'--shadow-md': `0 2px 4px -2px oklch(0 0 0 / ${alpha(0.13)}), 0 6px 16px -4px oklch(0 0 0 / ${alpha(0.17)})`,\n\t\t'--shadow-lg': `0 2px 6px -2px oklch(0 0 0 / ${alpha(0.13)}), 0 10px 24px -6px oklch(0 0 0 / ${alpha(0.20)})`,\n\t\t'--shadow-xl': `0 14px 28px -8px oklch(0 0 0 / ${alpha(0.22)}), 0 6px 12px -6px oklch(0 0 0 / ${alpha(0.12)})`,\n\t\t'--shadow-2xl': `0 24px 48px -14px oklch(0 0 0 / ${alpha(0.28)})`,\n\t};\n}\n","import { CheckCircle2, Copy, Download, LayoutGrid, Moon, Palette, RotateCcw, Search, Settings2, Shapes, ShieldCheck, Sun, Type, type LucideIcon } from 'lucide-react';\nimport { forwardRef, useEffect, useId, useImperativeHandle, useMemo, useRef, useState, type ReactNode } from 'react';\n\nimport { SmartAccordion } from '../../base/accordion';\nimport { Badge } from '../../base/badge';\nimport { Button } from '../../base/buttons';\nimport { Card } from '../../base/cards';\nimport { ActionDialog, useOverlayVisibility } from '../overlays';\nimport { ColorInput, SliderField } from '../../base/value-inputs';\nimport { FormField } from '../../base/forms';\nimport { Input, Textarea } from '../../base/text-inputs';\nimport { ToggleField } from '../../base/choice-inputs';\nimport { DecimalInput } from '../../base/forms-numeric';\nimport { Item } from '../../base/item';\nimport { Tabs, TabsList, TabsTrigger } from '../../base/navigation';\nimport { Grid, Stack } from '../../base/structure';\nimport { MonoValue } from '../../primitives';\nimport { Heading, Text } from '../../typography';\nimport { interpolateString, useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultThemeTweakerFields } from './theme-tweaker.fields';\nimport { defaultThemeTweakerStrings, type ThemeTweakerStrings } from './theme-tweaker.strings';\nimport { ThemeProviderSettings } from './theme-provider-settings';\nimport type {\n\tAdminUIThemeDefinition,\n\tAdminUIThemeMode,\n\tAdminUIThemeOverrides,\n\tThemeTweakerField,\n\tThemeTweakerGroup,\n\tThemeTweakerProps,\n\tThemeTweakerRangeControl,\n\tThemeTweakerSection,\n} from './theme-tweaker.types';\nimport {\n\tadminUIThemeToStyle,\n\tcountAdminUIThemeOverrides,\n\tcreateAdminUITheme,\n\tcreateSerializableUIConfig,\n\tcreateThemeTweakerExportArtifact,\n\tdownloadAdminUITheme,\n\tdownloadAdminUITextFile,\n} from './theme-tweaker.utils';\nimport { deriveAdminUIElevation, deriveAdminUIPalette, deriveAdminUITypeScale } from './theme-tweaker.recipes';\nimport { ThemeScope } from './theme-scope';\nimport { useAppliedTheme } from './use-applied-theme';\n\nconst GROUPS: readonly ThemeTweakerGroup[] = ['colors', 'states', 'typography', 'shape', 'structure', 'defaults'];\n\nconst GROUP_ICONS: Record<ThemeTweakerGroup, LucideIcon> = {\n\tcolors: Palette,\n\tstates: ShieldCheck,\n\ttypography: Type,\n\tshape: Shapes,\n\tstructure: LayoutGrid,\n\tdefaults: Settings2,\n};\n\ntype ActionStatus = 'idle' | 'copied' | 'exported';\n\ninterface ThemeExportArtifactProps {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tcode: string;\n\tcopyLabel: string;\n\tdownloadLabel: string;\n\t/** Fired when an entry is copied. */\n\tonCopy: () => void;\n\t/** Fired when an entry is downloaded. */\n\tonDownload: () => void;\n\tdownloading?: boolean;\n}\n\nfunction ThemeExportArtifact({\n\ttitle,\n\tdescription,\n\tcode,\n\tcopyLabel,\n\tdownloadLabel,\n\tonCopy,\n\tonDownload,\n\tdownloading = false,\n}: ThemeExportArtifactProps) {\n\tconst titleId = useId();\n\n\treturn (\n\t\t<Stack\n\t\t\trender={<section aria-labelledby={titleId} />}\n\t\t\tgap=\"md\"\n\t\t\tclassName=\"theme-tweaker--export-artifact min-w-0\"\n\t\t>\n\t\t\t<Stack\n\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\talign={{ base: 'stretch', sm: 'start' }}\n\t\t\t\tjustify={{ sm: 'between' }}\n\t\t\t\tgap=\"md\"\n\t\t\t\tclassName=\"theme-tweaker--export-artifact-header\"\n\t\t\t>\n\t\t\t\t<Stack gap=\"dense\" className=\"min-w-0\">\n\t\t\t\t\t<Heading id={titleId} tag=\"h3\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Text>\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap className=\"theme-tweaker--export-artifact-actions sm:shrink-0\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\ticon={Copy}\n\t\t\t\t\t\tonClick={onCopy}\n\t\t\t\t\t>\n\t\t\t\t\t\t{copyLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button tone=\"primary\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon={Download}\n\t\t\t\t\t\tloading={downloading}\n\t\t\t\t\t\tonClick={onDownload}\n\t\t\t\t\t>\n\t\t\t\t\t\t{downloadLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<pre\n\t\t\t\ttabIndex={0}\n\t\t\t\taria-label={title}\n\t\t\t\tclassName=\"theme-tweaker--export-code max-h-48 min-w-0 overflow-auto rounded-radius border border-border bg-muted/30 p-surface-xs font-mono text-xs leading-relaxed text-foreground focus-visible:outline-1 focus-visible:ring-[3px] focus-visible:ring-ring sm:max-h-72\"\n\t\t\t>\n\t\t\t\t<code>{code}</code>\n\t\t\t</pre>\n\t\t</Stack>\n\t);\n}\n\ninterface VisibleThemeSection {\n\tgroup: ThemeTweakerGroup;\n\tsection: ThemeTweakerSection;\n\tfields: ThemeTweakerField[];\n}\n\ninterface ThemeVariableFieldProps {\n\tfield: ThemeTweakerField;\n\tvalue: string;\n\teffectiveValue: string;\n\t/** Fired with the next value. */\n\tonChange: (value: string) => void;\n\tonReset: () => void;\n\t/** Overrides this surface's own copy. */\n\tstrings: ThemeTweakerStrings;\n}\n\nfunction parseRangeValue(value: string, control: ThemeTweakerRangeControl): number {\n\tconst parsed = Number.parseFloat(value);\n\tif (!Number.isFinite(parsed)) return control.min;\n\treturn Math.min(control.max, Math.max(control.min, parsed));\n}\n\nfunction serializeRangeValue(value: number, control: ThemeTweakerRangeControl): string {\n\tconst precision = control.decimalPlaces ?? 3;\n\tconst normalized = Number(value.toFixed(precision));\n\treturn `${normalized}${control.unit ?? ''}`;\n}\n\nfunction resolveInspectionTarget(target: ThemeTweakerProps['target'], self: HTMLDivElement | null): HTMLElement | null {\n\tif (target === 'document') return document.documentElement;\n\tif (target === 'self' || target === null) return self;\n\tif (typeof target === 'function') return target();\n\treturn target ?? self;\n}\n\nfunction captureResolvedTheme(theme: AdminUIThemeDefinition, fields: readonly ThemeTweakerField[]): AdminUIThemeDefinition {\n\tif (typeof document === 'undefined' || typeof window === 'undefined') return createAdminUITheme(theme);\n\tconst root = document.documentElement;\n\tconst names = [...new Set(fields.map((field) => field.name))];\n\tconst originalLight = root.classList.contains('light');\n\tconst originalDark = root.classList.contains('dark');\n\tconst originalStyles = new Map(\n\t\tnames.map((name) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\tvalue: root.style.getPropertyValue(name),\n\t\t\t\tpriority: root.style.getPropertyPriority(name),\n\t\t\t},\n\t\t]),\n\t);\n\n\tconst capture = (mode: AdminUIThemeMode) => {\n\t\tfor (const name of names) root.style.removeProperty(name);\n\t\troot.classList.toggle('light', mode === 'light');\n\t\troot.classList.toggle('dark', mode === 'dark');\n\t\tfor (const [name, value] of Object.entries(adminUIThemeToStyle(theme, mode))) {\n\t\t\tif (typeof value === 'string') root.style.setProperty(name, value);\n\t\t}\n\t\tconst computed = window.getComputedStyle(root);\n\t\treturn Object.fromEntries(names.map((name) => [name, computed.getPropertyValue(name).trim()] as const).filter((entry) => entry[1].length > 0));\n\t};\n\n\ttry {\n\t\tconst light = capture('light');\n\t\tconst dark = capture('dark');\n\t\tconst sharedNames = new Set(fields.filter((field) => field.scope === 'shared').map((field) => field.name));\n\t\treturn createAdminUITheme({\n\t\t\tmode: theme.mode,\n\t\t\tshared: Object.fromEntries(Object.entries(light).filter(([name]) => sharedNames.has(name as `--${string}`))),\n\t\t\tlight: Object.fromEntries(Object.entries(light).filter(([name]) => !sharedNames.has(name as `--${string}`))),\n\t\t\tdark: Object.fromEntries(Object.entries(dark).filter(([name]) => !sharedNames.has(name as `--${string}`))),\n\t\t});\n\t} finally {\n\t\tfor (const name of names) {\n\t\t\tconst original = originalStyles.get(name);\n\t\t\tif (original?.value) root.style.setProperty(name, original.value, original.priority);\n\t\t\telse root.style.removeProperty(name);\n\t\t}\n\t\troot.classList.toggle('light', originalLight);\n\t\troot.classList.toggle('dark', originalDark);\n\t}\n}\n\nfunction ThemeVariableField({ field, value, effectiveValue, onChange, onReset, strings }: ThemeVariableFieldProps) {\n\tconst id = `theme-variable-${useId().replace(/:/g, '')}`;\n\tconst resetAction = (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\ticonOnly\n\t\t\ttone=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\ticon={RotateCcw}\n\t\t\twithTooltip={strings.resetVariable}\n\t\t\taria-label={`${strings.resetVariable}: ${field.label}`}\n\t\t\tdisabled={!value}\n\t\t\tonClick={onReset}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t{strings.resetVariable}\n\t\t\t</Text>\n\t\t</Button>\n\t);\n\tconst placeholder = field.placeholder ?? effectiveValue ?? strings.inheritValue;\n\tlet control: ReactNode;\n\n\tif (field.kind === 'color') {\n\t\tcontrol = (\n\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap={false}>\n\t\t\t\t<ColorInput\n\t\t\t\t\tid={id}\n\t\t\t\t\taria-label={field.label}\n\t\t\t\t\taria-description={field.description}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tpreviewValue={value || effectiveValue || `var(${field.name})`}\n\t\t\t\t\tpickerAriaLabel={interpolateString(strings.chooseColor, {\n\t\t\t\t\t\tlabel: field.label,\n\t\t\t\t\t})}\n\t\t\t\t\tonValueChange={onChange}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"min-w-0 flex-1\"\n\t\t\t\t/>\n\t\t\t\t{resetAction}\n\t\t\t</Stack>\n\t\t);\n\t} else if (field.control?.type === 'range') {\n\t\tconst currentValue = parseRangeValue(value || effectiveValue, field.control);\n\t\tcontrol = (\n\t\t\t<Stack gap=\"sm\">\n\t\t\t\t<SliderField\n\t\t\t\t\tid={`${id}-slider`}\n\t\t\t\t\taria-label={interpolateString(strings.adjustVariable, {\n\t\t\t\t\t\tlabel: field.label,\n\t\t\t\t\t})}\n\t\t\t\t\tvalue={currentValue}\n\t\t\t\t\tmin={field.control.min}\n\t\t\t\t\tmax={field.control.max}\n\t\t\t\t\tstep={field.control.step}\n\t\t\t\t\tonValueChange={(next) => onChange(serializeRangeValue(next, field.control as ThemeTweakerRangeControl))}\n\t\t\t\t/>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap={false}>\n\t\t\t\t\t<Stack gap=\"none\" className=\"w-28 max-w-full shrink-0\">\n\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\taria-label={field.label}\n\t\t\t\t\t\t\taria-description={field.description}\n\t\t\t\t\t\t\tvalue={String(currentValue)}\n\t\t\t\t\t\t\tdecimalPlaces={field.control.decimalPlaces ?? 3}\n\t\t\t\t\t\t\tmin={field.control.min}\n\t\t\t\t\t\t\tmax={field.control.max}\n\t\t\t\t\t\t\tallowEmpty\n\t\t\t\t\t\t\tnormalizeOnBlur={false}\n\t\t\t\t\t\t\tendAddon={field.control.unit}\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\tconst next = event.target.value.trim();\n\t\t\t\t\t\t\t\tonChange(next ? `${next}${field.control?.unit ?? ''}` : '');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"font-mono tabular-nums\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t{resetAction}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t} else if (field.kind === 'font' || field.kind === 'shadow') {\n\t\tcontrol = (\n\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"start\" wrap={false}>\n\t\t\t\t<Stack className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Textarea\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\taria-label={field.label}\n\t\t\t\t\t\taria-description={field.description}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={(event) => onChange(event.target.value)}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t\tautoResize\n\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t\t{resetAction}\n\t\t\t</Stack>\n\t\t);\n\t} else {\n\t\tcontrol = (\n\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" wrap={false}>\n\t\t\t\t<Input\n\t\t\t\t\tid={id}\n\t\t\t\t\taria-label={field.label}\n\t\t\t\t\taria-description={field.description}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(event) => onChange(event.target.value)}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"min-w-0 flex-1 font-mono\"\n\t\t\t\t/>\n\t\t\t\t{resetAction}\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FormField\n\t\t\tlabel={\n\t\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"sm\" align=\"baseline\" justify=\"between\" wrap className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" className=\"min-w-0\">\n\t\t\t\t\t\t{field.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<MonoValue size=\"xs\" type=\"secondary\" weight=\"regular\" className=\"max-w-full break-all\">\n\t\t\t\t\t\t{field.name}\n\t\t\t\t\t</MonoValue>\n\t\t\t\t</Stack>\n\t\t\t}\n\t\t\thtmlFor={id}\n\t\t\tclassName=\"theme-tweaker--field min-w-0 border-t border-border/60 py-row-y first:border-t-0\"\n\t\t>\n\t\t\t{control}\n\t\t</FormField>\n\t);\n}\n\nfunction DefaultThemePreview({ strings }: { strings: ThemeTweakerStrings }) {\n\treturn (\n\t\t<Card title={strings.previewTitle} description={strings.previewDescription} className=\"theme-tweaker--preview-card\">\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" wrap>\n\t\t\t\t\t<Badge tone=\"success\">{strings.previewSuccess}</Badge>\n\t\t\t\t\t<Badge tone=\"warning\">{strings.previewWarning}</Badge>\n\t\t\t\t\t<Badge tone=\"secondary\">{strings.previewContract}</Badge>\n\t\t\t\t</Stack>\n\t\t\t\t<Item\n\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\tpadding=\"default\"\n\t\t\t\t\tmedia={<Palette />}\n\t\t\t\t\tmediaVariant=\"icon\"\n\t\t\t\t\ttitle={strings.previewItemTitle}\n\t\t\t\t\tdescription={strings.previewItemDescription}\n\t\t\t\t\ttrailing={<CheckCircle2 className=\"size-icon text-success\" />}\n\t\t\t\t/>\n\t\t\t\t<FormField label={strings.previewFieldLabel}>\n\t\t\t\t\t<Input placeholder={strings.previewFieldPlaceholder} />\n\t\t\t\t</FormField>\n\t\t\t\t<Button tone=\"primary\" type=\"button\">{strings.previewAction}</Button>\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nfunction updateThemeVariable(theme: AdminUIThemeDefinition, field: ThemeTweakerField, rawValue: string): AdminUIThemeDefinition {\n\tconst bucket = field.scope === 'shared' ? 'shared' : theme.mode;\n\tconst nextBucket = { ...theme[bucket] };\n\tif (rawValue.trim().length === 0) {\n\t\tdelete nextBucket[field.name];\n\t} else {\n\t\tnextBucket[field.name] = rawValue;\n\t}\n\treturn {\n\t\t...theme,\n\t\t[bucket]: nextBucket,\n\t};\n}\n\nexport const ThemeTweaker = forwardRef<HTMLDivElement, ThemeTweakerProps>(function ThemeTweaker(\n\t{\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\tonModeChange,\n\t\tfields = defaultThemeTweakerFields,\n\t\ttarget = 'self',\n\t\tapply = true,\n\t\tmanageModeClass = true,\n\t\tpreview,\n\t\tfileName = 'admin-ui-theme.css',\n\t\tconfig,\n\t\tdefaultConfig,\n\t\tonConfigChange,\n\t\tproviderFileName = 'admin-ui.config.ts',\n\t\tshowIntro = true,\n\t\tselectors,\n\t\tonExport,\n\t\tonCopy,\n\t\tonReset,\n\t\tonError,\n\t\tactionsSlot,\n\t\tstrings: stringsProp,\n\t\tclassName,\n\t\t...props\n\t},\n\tforwardedRef,\n) {\n\tconst strings = useStrings(defaultThemeTweakerStrings, stringsProp);\n\tconst [internalTheme, setInternalTheme] = useState(() => createAdminUITheme(defaultValue));\n\tconst theme = useMemo(() => (value ? createAdminUITheme(value) : internalTheme), [internalTheme, value]);\n\tconst [internalConfig, setInternalConfig] = useState(() => createSerializableUIConfig(defaultConfig));\n\tconst providerConfig = useMemo(() => createSerializableUIConfig(config ?? internalConfig), [config, internalConfig]);\n\tconst [group, setGroup] = useState<ThemeTweakerGroup>('colors');\n\tconst [search, setSearch] = useState('');\n\tconst [derivePalette, setDerivePalette] = useState(true);\n\tconst [baseTypeSize, setBaseTypeSize] = useState(16);\n\tconst [typeRatio, setTypeRatio] = useState(1.2);\n\tconst [elevationIntensity, setElevationIntensity] = useState(0.8);\n\tconst [actionStatus, setActionStatus] = useState<ActionStatus>('idle');\n\t// useOverlayVisibility rather than a bare useState: it is the package's own\n\t// overlay state hook, and `overlayProps` is exactly the open/onOpenChange\n\t// pair ActionDialog wants, so the wiring cannot drift out of step.\n\tconst exportDialog = useOverlayVisibility();\n\tconst [exporting, setExporting] = useState(false);\n\tconst selfRef = useRef<HTMLDivElement>(null);\n\tuseImperativeHandle(forwardedRef, () => selfRef.current as HTMLDivElement);\n\n\tuseAppliedTheme({\n\t\tapply,\n\t\tmanageModeClass,\n\t\tselfRef,\n\t\ttarget,\n\t\ttheme,\n\t});\n\tconst [resolvedTheme, setResolvedTheme] = useState<AdminUIThemeDefinition>(() => createAdminUITheme(theme));\n\tconst [effectiveValues, setEffectiveValues] = useState<Record<string, string>>({});\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\tconst timeout = window.setTimeout(() => {\n\t\t\tconst inspectionTarget = resolveInspectionTarget(target, selfRef.current);\n\t\t\tif (!inspectionTarget) return;\n\t\t\tconst computed = window.getComputedStyle(inspectionTarget);\n\t\t\tsetEffectiveValues(Object.fromEntries(fields.map((field) => [field.name, computed.getPropertyValue(field.name).trim()])));\n\t\t\tsetResolvedTheme(captureResolvedTheme(theme, fields));\n\t\t}, 0);\n\t\treturn () => window.clearTimeout(timeout);\n\t}, [apply, fields, target, theme]);\n\n\tconst serialization = useMemo(() => {\n\t\ttry {\n\t\t\tconst exportTheme = createAdminUITheme({\n\t\t\t\tmode: theme.mode,\n\t\t\t\tshared: { ...resolvedTheme.shared, ...theme.shared },\n\t\t\t\tlight: { ...resolvedTheme.light, ...theme.light },\n\t\t\t\tdark: { ...resolvedTheme.dark, ...theme.dark },\n\t\t\t});\n\t\t\tconst artifact = createThemeTweakerExportArtifact(\n\t\t\t\ttheme,\n\t\t\t\tfileName,\n\t\t\t\t{ selectors },\n\t\t\t\t{\n\t\t\t\t\tresolvedTheme: exportTheme,\n\t\t\t\t\tproviderConfig,\n\t\t\t\t\tproviderFileName,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tartifact,\n\t\t\t\terror: null,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tartifact: null,\n\t\t\t\terror,\n\t\t\t};\n\t\t}\n\t}, [fileName, providerConfig, providerFileName, resolvedTheme, selectors, theme]);\n\tconst { artifact, error: serializationError } = serialization;\n\tconst cssText = artifact?.cssText ?? `/* ${strings.invalidTheme} */\\n`;\n\tconst overrideCount = useMemo(() => countAdminUIThemeOverrides(theme), [theme]);\n\tconst normalizedSearch = search.trim().toLowerCase();\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tfields.filter((field) => {\n\t\t\t\tif (!normalizedSearch && field.group !== group) return false;\n\t\t\t\tif (!normalizedSearch) return true;\n\t\t\t\treturn [field.name, field.label, field.description].filter(Boolean).some((part) => part?.toLowerCase().includes(normalizedSearch));\n\t\t\t}),\n\t\t[fields, group, normalizedSearch],\n\t);\n\tconst visibleSections = useMemo(() => {\n\t\tconst sections = new Map<string, VisibleThemeSection>();\n\t\tfor (const field of visibleFields) {\n\t\t\tconst key = `${field.group}:${field.section}`;\n\t\t\tconst existing = sections.get(key);\n\t\t\tif (existing) {\n\t\t\t\texisting.fields.push(field);\n\t\t\t} else {\n\t\t\t\tsections.set(key, {\n\t\t\t\t\tgroup: field.group,\n\t\t\t\t\tsection: field.section,\n\t\t\t\t\tfields: [field],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Brand controls are the starting point; retain caller ordering within every section.\n\t\treturn [...sections.values()].sort((a, b) => Number(b.section === 'brand-actions') - Number(a.section === 'brand-actions'));\n\t}, [visibleFields]);\n\n\tconst commit = (next: AdminUIThemeDefinition) => {\n\t\tif (value === undefined) setInternalTheme(next);\n\t\tonValueChange?.(next);\n\t\tsetActionStatus('idle');\n\t};\n\n\tconst commitConfig = (next: ReturnType<typeof createSerializableUIConfig>) => {\n\t\tif (config === undefined) setInternalConfig(next);\n\t\tonConfigChange?.(next);\n\t\tsetActionStatus('idle');\n\t};\n\n\tconst applyModeRecipe = (overrides: AdminUIThemeOverrides) => {\n\t\tcommit({\n\t\t\t...theme,\n\t\t\t[theme.mode]: { ...theme[theme.mode], ...overrides },\n\t\t});\n\t};\n\n\tconst applySharedRecipe = (overrides: AdminUIThemeOverrides) => {\n\t\tcommit({\n\t\t\t...theme,\n\t\t\tshared: { ...theme.shared, ...overrides },\n\t\t});\n\t};\n\n\tconst setMode = (mode: AdminUIThemeMode) => {\n\t\tif (mode === theme.mode) return;\n\t\tcommit({ ...theme, mode });\n\t\tonModeChange?.(mode);\n\t};\n\n\tconst exportThemeArtifact = async () => {\n\t\ttry {\n\t\t\tif (serializationError) throw serializationError;\n\t\t\tsetExporting(true);\n\t\t\tif (!artifact) throw new Error(strings.invalidTheme);\n\t\t\tif (onExport) {\n\t\t\t\tawait onExport(artifact);\n\t\t\t} else {\n\t\t\t\tdownloadAdminUITheme(artifact);\n\t\t\t}\n\t\t\tsetActionStatus('exported');\n\t\t} catch (error) {\n\t\t\tonError?.(error);\n\t\t\tif (import.meta.env?.DEV) {\n\t\t\t\tconsole.warn('[ThemeTweaker] theme export failed.', error);\n\t\t\t}\n\t\t} finally {\n\t\t\tsetExporting(false);\n\t\t}\n\t};\n\n\tconst copyText = async (text: string) => {\n\t\ttry {\n\t\t\tif (onCopy) await onCopy(text);\n\t\t\telse if (typeof navigator !== 'undefined' && navigator.clipboard) await navigator.clipboard.writeText(text);\n\t\t\telse throw new Error('Clipboard access is unavailable. Provide onCopy for this environment.');\n\t\t\tsetActionStatus('copied');\n\t\t} catch (error) {\n\t\t\tonError?.(error);\n\t\t\tif (import.meta.env?.DEV) console.warn('[ThemeTweaker] copy failed.', error);\n\t\t}\n\t};\n\n\tconst exportProviderConfig = () => {\n\t\ttry {\n\t\t\tif (!artifact) throw serializationError ?? new Error(strings.invalidTheme);\n\t\t\tdownloadAdminUITextFile({\n\t\t\t\tfileName: artifact.providerFileName,\n\t\t\t\ttext: artifact.providerConfigText,\n\t\t\t\tmimeType: 'text/typescript;charset=utf-8',\n\t\t\t});\n\t\t\tsetActionStatus('exported');\n\t\t} catch (error) {\n\t\t\tonError?.(error);\n\t\t\tif (import.meta.env?.DEV) console.warn('[ThemeTweaker] provider export failed.', error);\n\t\t}\n\t};\n\n\tconst reset = () => {\n\t\tconst previous = theme;\n\t\tconst next = createAdminUITheme({ mode: theme.mode });\n\t\tcommit(next);\n\t\tonReset?.(previous);\n\t\tsetActionStatus('idle');\n\t};\n\tconst statusMessage = serializationError\n\t\t? strings.invalidTheme\n\t\t: actionStatus === 'copied'\n\t\t\t? strings.copiedStatus\n\t\t\t: actionStatus === 'exported'\n\t\t\t\t? strings.exportedStatus\n\t\t\t\t: null;\n\tconst recipeControls =\n\t\tgroup === 'colors' ? (\n\t\t\t<ToggleField className=\"theme-tweaker--recipe\" label={strings.autoPalette} description={strings.autoPaletteDescription} value={derivePalette} onValueChange={setDerivePalette} />\n\t\t) : group === 'typography' ? (\n\t\t\t<Card title={strings.typeRecipeTitle} description={strings.typeRecipeDescription} surface=\"flat\" padding=\"none\" className=\"theme-tweaker--recipe\">\n\t\t\t\t<Grid columns={1} gap=\"md\" className=\"@2xl/theme-tweaker-controls:grid-cols-2\">\n\t\t\t\t\t<FormField label={strings.baseTypeSize}>\n\t\t\t\t\t\t<SliderField\n\t\t\t\t\t\t\taria-label={strings.baseTypeSize}\n\t\t\t\t\t\t\tvalue={baseTypeSize}\n\t\t\t\t\t\t\tmin={14}\n\t\t\t\t\t\t\tmax={20}\n\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\t\tsetBaseTypeSize(next);\n\t\t\t\t\t\t\t\tapplySharedRecipe(\n\t\t\t\t\t\t\t\t\tderiveAdminUITypeScale({\n\t\t\t\t\t\t\t\t\t\tbaseSize: next,\n\t\t\t\t\t\t\t\t\t\tratio: typeRatio,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t\t<FormField label={strings.typeRatio}>\n\t\t\t\t\t\t<SliderField\n\t\t\t\t\t\t\taria-label={strings.typeRatio}\n\t\t\t\t\t\t\tvalue={typeRatio}\n\t\t\t\t\t\t\tmin={1.125}\n\t\t\t\t\t\t\tmax={1.333}\n\t\t\t\t\t\t\tstep={0.01}\n\t\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\t\tsetTypeRatio(next);\n\t\t\t\t\t\t\t\tapplySharedRecipe(\n\t\t\t\t\t\t\t\t\tderiveAdminUITypeScale({\n\t\t\t\t\t\t\t\t\t\tbaseSize: baseTypeSize,\n\t\t\t\t\t\t\t\t\t\tratio: next,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t</Grid>\n\t\t\t</Card>\n\t\t) : group === 'shape' ? (\n\t\t\t<Card title={strings.elevationRecipeTitle} description={strings.elevationRecipeDescription} surface=\"flat\" padding=\"none\" className=\"theme-tweaker--recipe\">\n\t\t\t\t<FormField label={strings.elevationIntensity}>\n\t\t\t\t\t<SliderField\n\t\t\t\t\t\taria-label={strings.elevationIntensity}\n\t\t\t\t\t\tvalue={elevationIntensity}\n\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\tmax={1}\n\t\t\t\t\t\tstep={0.05}\n\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\tsetElevationIntensity(next);\n\t\t\t\t\t\t\tapplyModeRecipe(deriveAdminUIElevation({ intensity: next }));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</FormField>\n\t\t\t</Card>\n\t\t) : null;\n\n\tconst content = (\n\t\t<div className={cn('grid min-w-0 grid-cols-1 gap-space-xl theme-tweaker--layout', preview !== false && '@3xl/theme-tweaker:grid-cols-2')}>\n\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--controls @container/theme-tweaker-controls min-w-0\">\n\t\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--header shrink-0\">\n\t\t\t\t\t{showIntro ? (\n\t\t\t\t\t\t<Stack gap=\"normal\" className=\"theme-tweaker--intro\">\n\t\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" wrap>\n\t\t\t\t\t\t\t\t<Heading tag=\"h2\" className=\"theme-tweaker--title\">\n\t\t\t\t\t\t\t\t\t{strings.title}\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t\t<Badge tone=\"secondary\">\n\t\t\t\t\t\t\t\t\t{interpolateString(strings.changedCount, {\n\t\t\t\t\t\t\t\t\t\tcount: overrideCount,\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"theme-tweaker--description\">\n\t\t\t\t\t\t\t\t{strings.description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : null}\n\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\tjustify=\"between\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\twrap\n\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\tclassName=\"theme-tweaker--toolbar\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" wrap>\n\t\t\t\t\t\t\t<Tabs value={theme.mode} onValueChange={(next) => setMode(next as AdminUIThemeMode)}>\n\t\t\t\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t\t\t\t<TabsTrigger value=\"light\">\n\t\t\t\t\t\t\t\t\t\t<Sun className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t{strings.lightMode}\n\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t\t<TabsTrigger value=\"dark\">\n\t\t\t\t\t\t\t\t\t\t<Moon className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t{strings.darkMode}\n\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t</TabsList>\n\t\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"xs\" align=\"center\" justify=\"end\" wrap={false} className=\"theme-tweaker--actions\">\n\t\t\t\t\t\t\t<Button tone=\"primary\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdisabled={Boolean(serializationError)}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetActionStatus('idle');\n\t\t\t\t\t\t\t\t\texportDialog.show();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings.export}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{actionsSlot}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t\t{strings.searchLabel}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName=\"theme-tweaker--search\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\tonChange={(event) => setSearch(event.target.value)}\n\t\t\t\t\t\t\tplaceholder={strings.searchPlaceholder}\n\t\t\t\t\t\t\tstartIcon={Search}\n\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\tonClear={() => setSearch('')}\n\t\t\t\t\t\t\taria-description={strings.searchHint}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t</Stack>\n\n\t\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--workspace min-h-0\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={strings.groupNavigationLabel}\n\t\t\t\t\t\tclassName=\"theme-tweaker--navigation min-w-0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tabs\n\t\t\t\t\t\t\tvalue={group}\n\t\t\t\t\t\t\tonValueChange={(nextGroup) => {\n\t\t\t\t\t\t\t\tsetSearch('');\n\t\t\t\t\t\t\t\tsetGroup(nextGroup as ThemeTweakerGroup);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TabsList scrollable scrollStrings={{ previous: strings.previousGroup, next: strings.nextGroup }} className=\"theme-tweaker--group-list\">\n\t\t\t\t\t\t\t\t\t{GROUPS.map((nextGroup) => {\n\t\t\t\t\t\t\t\t\t\tconst GroupIcon = GROUP_ICONS[nextGroup];\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\t\t\t\t\t\tkey={nextGroup}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={nextGroup}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => setSearch('')}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"theme-tweaker--group-trigger\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<GroupIcon aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-w-0 flex-1 truncate text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.groups[nextGroup]}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</TabsList>\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t</nav>\n\n\t\t\t\t\t<Stack gap=\"lg\" className=\"theme-tweaker--body theme-tweaker--editor min-h-0 min-w-0\">\n\t\t\t\t\t\t<Stack gap=\"normal\" className=\"theme-tweaker--editor-heading\">\n\t\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" wrap>\n\t\t\t\t\t\t\t\t<Heading tag=\"h3\">{normalizedSearch ? strings.allGroups : strings.groups[group]}</Heading>\n\t\t\t\t\t\t\t\t{!showIntro ? <Badge tone=\"secondary\">{interpolateString(strings.changedCount, { count: overrideCount })}</Badge> : null}\n\t\t\t\t\t\t\t\t{normalizedSearch ? (\n\t\t\t\t\t\t\t\t\t<Badge tone=\"secondary\" role=\"status\" aria-live=\"polite\">\n\t\t\t\t\t\t\t\t\t\t{interpolateString(strings.searchResults, { count: visibleFields.length })}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t{normalizedSearch ? strings.searchHint : strings.groupDescriptions[group]}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t{!normalizedSearch ? recipeControls : null}\n\t\t\t\t\t\t{group === 'defaults' && !normalizedSearch ? (\n\t\t\t\t\t\t\t<ThemeProviderSettings config={providerConfig} onChange={commitConfig} strings={strings.providerSettings} />\n\t\t\t\t\t\t) : visibleSections.length > 0 ? (\n\t\t\t\t\t\t\t<SmartAccordion\n\t\t\t\t\t\t\t\tkey={`${group}:${normalizedSearch}`}\n\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\tdefaultValue={[`${visibleSections[0].group}:${visibleSections[0].section}`]}\n\t\t\t\t\t\t\t\tvariant=\"bordered\"\n\t\t\t\t\t\t\t\ticonStyle=\"none\"\n\t\t\t\t\t\t\t\tclassName=\"theme-tweaker--sections shrink-0\"\n\t\t\t\t\t\t\t\titemClassName=\"theme-tweaker--section\"\n\t\t\t\t\t\t\t\titems={visibleSections.map((visibleSection) => {\n\t\t\t\t\t\t\t\t\tconst scopes = new Set(visibleSection.fields.map((field) => field.scope));\n\t\t\t\t\t\t\t\t\tconst scopeLabel =\n\t\t\t\t\t\t\t\t\t\tscopes.size > 1\n\t\t\t\t\t\t\t\t\t\t\t? strings.mixedScope\n\t\t\t\t\t\t\t\t\t\t\t: scopes.has('shared')\n\t\t\t\t\t\t\t\t\t\t\t\t? strings.sharedScope\n\t\t\t\t\t\t\t\t\t\t\t\t: theme.mode === 'light'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? strings.lightMode\n\t\t\t\t\t\t\t\t\t\t\t\t\t: strings.darkMode;\n\t\t\t\t\t\t\t\t\tconst sectionLabel = normalizedSearch\n\t\t\t\t\t\t\t\t\t\t? interpolateString(strings.groupSectionLabel, {\n\t\t\t\t\t\t\t\t\t\t\t\tgroup: strings.groups[visibleSection.group],\n\t\t\t\t\t\t\t\t\t\t\t\tsection: strings.sections[visibleSection.section],\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t: strings.sections[visibleSection.section];\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tvalue: `${visibleSection.group}:${visibleSection.section}`,\n\t\t\t\t\t\t\t\t\t\ttitle: sectionLabel,\n\t\t\t\t\t\t\t\t\t\tdescription: interpolateString(strings.variableCount, {\n\t\t\t\t\t\t\t\t\t\t\tcount: visibleSection.fields.length,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\tbadge: <Badge tone=\"secondary\">{scopeLabel}</Badge>,\n\t\t\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t\t\t<Stack gap=\"none\" className=\"theme-tweaker--fields\">\n\t\t\t\t\t\t\t\t\t\t\t\t{visibleSection.fields.map((field) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst bucket = field.scope === 'shared' ? 'shared' : theme.mode;\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst fieldValue = theme[bucket][field.name] ?? '';\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ThemeVariableField\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={field.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield={field}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={fieldValue}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\teffectiveValue={effectiveValues[field.name] ?? ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={(next) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (field.name === '--primary' && derivePalette && next.trim()) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tapplyModeRecipe(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tderiveAdminUIPalette({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprimary: next,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmode: theme.mode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcommit(updateThemeVariable(theme, field, next));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonReset={() => commit(updateThemeVariable(theme, field, ''))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"theme-tweaker--empty rounded-radius border border-dashed border-border p-surface\">\n\t\t\t\t\t\t\t\t{strings.emptySearch}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\n\t\t\t{preview !== false ? <Stack className=\"theme-tweaker--preview min-w-0 self-start\">{preview ?? <DefaultThemePreview strings={strings} />}</Stack> : null}\n\n\t\t\t{/*\n\t\t\t * Presented through ActionDialog rather than a raw Dialog:\n\t\t\t * features/overlays is the package's single overlay surface. The two\n\t\t\t * things this dialog needs beyond the defaults are seams on it —\n\t\t\t * `surfaceStyle` carries the edited theme's variables onto the surface\n\t\t\t * so the export previews in the theme being edited, and `footer`\n\t\t\t * replaces the default action pair with reset/close.\n\t\t\t */}\n\t\t\t<ActionDialog\n\t\t\t\t{...exportDialog.overlayProps}\n\t\t\t\ttitle={strings.exportDialogTitle}\n\t\t\t\tdescription={strings.exportDialogDescription}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tshowCancel={false}\n\t\t\t\tshowConfirm={false}\n\t\t\t\tsurfaceStyle={adminUIThemeToStyle(theme)}\n\t\t\t\tclassName={cn('theme-tweaker--export-dialog sm:max-w-4xl', theme.mode)}\n\t\t\t\tfooter={(\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tjustify=\"between\"\n\t\t\t\t\t\tclassName=\"theme-tweaker--export-footer w-full\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\ticon={RotateCcw}\n\t\t\t\t\t\t\tdisabled={overrideCount === 0}\n\t\t\t\t\t\t\tonClick={reset}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.reset}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button onClick={exportDialog.hide}>{strings.close}</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Stack gap=\"xl\" className=\"theme-tweaker--export-body\">\n\t\t\t\t\t<ThemeExportArtifact\n\t\t\t\t\t\ttitle={strings.cssOutputLabel}\n\t\t\t\t\t\tdescription={strings.cssOutputDescription}\n\t\t\t\t\t\tcode={cssText}\n\t\t\t\t\t\tcopyLabel={strings.copy}\n\t\t\t\t\t\tdownloadLabel={exporting ? strings.exportPending : strings.downloadCss}\n\t\t\t\t\t\tdownloading={exporting}\n\t\t\t\t\t\tonCopy={() => void copyText(cssText)}\n\t\t\t\t\t\tonDownload={() => void exportThemeArtifact()}\n\t\t\t\t\t/>\n\t\t\t\t\t<ThemeExportArtifact\n\t\t\t\t\t\ttitle={strings.providerOutputLabel}\n\t\t\t\t\t\tdescription={strings.providerOutputDescription}\n\t\t\t\t\t\tcode={artifact?.providerConfigText ?? ''}\n\t\t\t\t\t\tcopyLabel={strings.copyProvider}\n\t\t\t\t\t\tdownloadLabel={strings.downloadProvider}\n\t\t\t\t\t\tonCopy={() => void copyText(artifact?.providerConfigText ?? '')}\n\t\t\t\t\t\tonDownload={exportProviderConfig}\n\t\t\t\t\t/>\n\t\t\t\t\t{statusMessage ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype={serializationError ? 'error' : 'secondary'}\n\t\t\t\t\t\t\trole=\"status\"\n\t\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\t\tclassName=\"theme-tweaker--status\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{statusMessage}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : null}\n\t\t\t\t</Stack>\n\t\t\t</ActionDialog>\n\t\t</div>\n\t);\n\n\tif (target === 'self') {\n\t\treturn (\n\t\t\t<ThemeScope\n\t\t\t\t{...props}\n\t\t\t\tref={selfRef}\n\t\t\t\ttheme={apply ? theme : createAdminUITheme({ mode: theme.mode })}\n\t\t\t\tclassName={cn('theme-tweaker--component @container/theme-tweaker bg-background text-foreground', className)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</ThemeScope>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div {...props} ref={selfRef} className={cn('theme-tweaker--component @container/theme-tweaker', className)}>\n\t\t\t{content}\n\t\t</div>\n\t);\n});\n\nThemeTweaker.displayName = 'ThemeTweaker';\n"],"mappings":"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AezD,CAAI;GAEnC;GACA,AAAI8D,MACHL,EAAQ,UAAU,OAAO,SAASG,CAAa,GAC/CH,EAAQ,UAAU,OAAO,QAAQI,CAAY;EAE/C;CACD,GAAG;EAACL;EAAOM;EAAiBR;EAASD;EAAQpC;CAAK,CAAC;AACpD;;;AC/DA,IAAagD,KAAuBjB,EACnC,SAA8B,EAC7B,WACA,UACA,UAAO/B,EAAM,MACb,YAAS,YACT,qBAAkB,IAClB,cACA,aACA,GAAGiD,KACD,GAAc;CAChB,IAAMZ,IAAUa,GAAuB,IAAI;CAC3C,GAAoBC,SAAoBd,EAAQ,OAAyB;CACzE,IAAMe,IAAiBC,QAChB5E,EAAmB;EAAE,GAAGuB;EAAO;CAAK,CAAC,GAC3C,CAACY,GAAMZ,CAAK,CACb;CASA,OARAsC,GAAgB;EACf,OAAOF,MAAW;EAClB;EACA;EACA;EACA,OAAOgB;CACR,CAAC,GAGA,kBAAC9G,GAAD;EAAoB;EACnB,UAAA,kBAACwF,GAAD;GACC,GAAImB;GACJ,KAAKZ;GACL,OAAOe;GACD;GACN,WAAW5G,EACV,oEACAyF,CACD;GAEC;EACU,CAAA;CACD,CAAA;AAEd,CACD;AAEA,GAAqB,cAAc;;;AChDnC,IAAMqB,IAAe,mfAiCrB,GAEMC,KAAe;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,GAOMC,KAAiB,CACtB,oBACD,GAEMC,IAAiB;CACtB;CACA;CACA;CACA;AACD,GAoBMC,IAAuB;CAjB5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAG4B,CAAA,CAAW,SAAS,MAAS,CACzD,UAAUC,KACV,UAAUA,EAAK,cAChB,CAAC,GAEKC,KAAmB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,GAEMC,IAAuB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,GAEMC,IAAmB;CACxB;CACA;CACA;CACA;CACA;CACA;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"}