@viax.io/uxm 4.38.0 → 4.40.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 (1189) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +34 -44
  4. package/dist/hooks/index.cjs +49 -0
  5. package/dist/hooks/index.cjs.map +1 -0
  6. package/dist/hooks/index.d.ts +19 -0
  7. package/dist/hooks/index.d.ts.map +1 -0
  8. package/dist/hooks/index.js +18 -0
  9. package/dist/hooks/index.js.map +1 -0
  10. package/dist/hooks/use-toast-store.cjs.map +1 -1
  11. package/dist/hooks/use-toast-store.d.ts +5 -3
  12. package/dist/hooks/use-toast-store.d.ts.map +1 -1
  13. package/dist/hooks/use-toast-store.js.map +1 -1
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.ts +3 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/previews/composite/brand-settings-preview.d.ts +2 -2
  18. package/dist/previews/composite/brand-settings-preview.d.ts.map +1 -1
  19. package/dist/previews/composite/form-preview.d.ts +2 -2
  20. package/dist/previews/composite/form-preview.d.ts.map +1 -1
  21. package/dist/previews/composite/lifecycle-action-row-preview.d.ts +2 -2
  22. package/dist/previews/composite/lifecycle-action-row-preview.d.ts.map +1 -1
  23. package/dist/previews/composite/lifecycle-connector-knobs-preview.d.ts +2 -2
  24. package/dist/previews/composite/lifecycle-connector-knobs-preview.d.ts.map +1 -1
  25. package/dist/previews/composite/lifecycle-plus-button-preview.d.ts +2 -2
  26. package/dist/previews/composite/lifecycle-plus-button-preview.d.ts.map +1 -1
  27. package/dist/previews/composite/login-page-preview.d.ts +2 -2
  28. package/dist/previews/composite/login-page-preview.d.ts.map +1 -1
  29. package/dist/previews/composite/multirow-form-preview.d.ts +2 -2
  30. package/dist/previews/composite/multirow-form-preview.d.ts.map +1 -1
  31. package/dist/previews/demo-row-actions.d.ts +1 -1
  32. package/dist/previews/demo-row-actions.d.ts.map +1 -1
  33. package/dist/previews/index.cjs +7 -7
  34. package/dist/previews/index.cjs.map +1 -1
  35. package/dist/previews/index.d.ts +9 -9
  36. package/dist/previews/index.js +7 -7
  37. package/dist/previews/index.js.map +1 -1
  38. package/dist/studio/brand-font-styles.d.ts +1 -1
  39. package/dist/studio/brand-font-styles.d.ts.map +1 -1
  40. package/dist/studio/brand-token-styles.d.ts +1 -1
  41. package/dist/studio/brand-token-styles.d.ts.map +1 -1
  42. package/dist/studio/editors/code-editor.d.ts +1 -1
  43. package/dist/studio/editors/code-editor.d.ts.map +1 -1
  44. package/dist/studio/editors/color-picker.d.ts +1 -1
  45. package/dist/studio/editors/color-picker.d.ts.map +1 -1
  46. package/dist/studio/editors/number-input.d.ts +1 -1
  47. package/dist/studio/editors/number-input.d.ts.map +1 -1
  48. package/dist/studio/editors/select-input.d.ts +1 -1
  49. package/dist/studio/editors/select-input.d.ts.map +1 -1
  50. package/dist/studio/editors/slider-input.d.ts +1 -1
  51. package/dist/studio/editors/slider-input.d.ts.map +1 -1
  52. package/dist/studio/editors/text-input.d.ts +1 -1
  53. package/dist/studio/editors/text-input.d.ts.map +1 -1
  54. package/dist/studio/editors/toggle-input.d.ts +1 -1
  55. package/dist/studio/editors/toggle-input.d.ts.map +1 -1
  56. package/dist/studio/index.cjs.map +1 -1
  57. package/dist/studio/index.d.ts +2 -2
  58. package/dist/studio/index.js.map +1 -1
  59. package/dist/studio/lib/context.d.ts +1 -1
  60. package/dist/studio/lib/context.d.ts.map +1 -1
  61. package/dist/studio/lib/registry/buttons.cjs +4 -4
  62. package/dist/studio/lib/registry/buttons.cjs.map +1 -1
  63. package/dist/studio/lib/registry/buttons.js +4 -4
  64. package/dist/studio/lib/registry/buttons.js.map +1 -1
  65. package/dist/studio/lib/registry/composite/back-link.cjs +65 -0
  66. package/dist/studio/lib/registry/composite/back-link.cjs.map +1 -0
  67. package/dist/studio/lib/registry/composite/back-link.d.ts +3 -0
  68. package/dist/studio/lib/registry/composite/back-link.d.ts.map +1 -0
  69. package/dist/studio/lib/registry/composite/back-link.js +41 -0
  70. package/dist/studio/lib/registry/composite/back-link.js.map +1 -0
  71. package/dist/studio/lib/registry/composite/badge.cjs +102 -0
  72. package/dist/studio/lib/registry/composite/badge.cjs.map +1 -0
  73. package/dist/studio/lib/registry/composite/badge.d.ts +3 -0
  74. package/dist/studio/lib/registry/composite/badge.d.ts.map +1 -0
  75. package/dist/studio/lib/registry/composite/badge.js +78 -0
  76. package/dist/studio/lib/registry/composite/badge.js.map +1 -0
  77. package/dist/studio/lib/registry/composite/breadcrumb.cjs +83 -0
  78. package/dist/studio/lib/registry/composite/breadcrumb.cjs.map +1 -0
  79. package/dist/studio/lib/registry/composite/breadcrumb.d.ts +3 -0
  80. package/dist/studio/lib/registry/composite/breadcrumb.d.ts.map +1 -0
  81. package/dist/studio/lib/registry/composite/breadcrumb.js +59 -0
  82. package/dist/studio/lib/registry/composite/breadcrumb.js.map +1 -0
  83. package/dist/studio/lib/registry/composite/button-group.cjs +76 -0
  84. package/dist/studio/lib/registry/composite/button-group.cjs.map +1 -0
  85. package/dist/studio/lib/registry/composite/button-group.d.ts +3 -0
  86. package/dist/studio/lib/registry/composite/button-group.d.ts.map +1 -0
  87. package/dist/studio/lib/registry/composite/button-group.js +52 -0
  88. package/dist/studio/lib/registry/composite/button-group.js.map +1 -0
  89. package/dist/studio/lib/registry/composite/calendar.cjs +116 -0
  90. package/dist/studio/lib/registry/composite/calendar.cjs.map +1 -0
  91. package/dist/studio/lib/registry/composite/calendar.d.ts +3 -0
  92. package/dist/studio/lib/registry/composite/calendar.d.ts.map +1 -0
  93. package/dist/studio/lib/registry/composite/calendar.js +92 -0
  94. package/dist/studio/lib/registry/composite/calendar.js.map +1 -0
  95. package/dist/studio/lib/registry/composite/content-tooltip.cjs +44 -0
  96. package/dist/studio/lib/registry/composite/content-tooltip.cjs.map +1 -0
  97. package/dist/studio/lib/registry/composite/content-tooltip.d.ts +3 -0
  98. package/dist/studio/lib/registry/composite/content-tooltip.d.ts.map +1 -0
  99. package/dist/studio/lib/registry/composite/content-tooltip.js +20 -0
  100. package/dist/studio/lib/registry/composite/content-tooltip.js.map +1 -0
  101. package/dist/studio/lib/registry/composite/data-table.cjs +61 -0
  102. package/dist/studio/lib/registry/composite/data-table.cjs.map +1 -0
  103. package/dist/studio/lib/registry/composite/data-table.d.ts +3 -0
  104. package/dist/studio/lib/registry/composite/data-table.d.ts.map +1 -0
  105. package/dist/studio/lib/registry/composite/data-table.js +37 -0
  106. package/dist/studio/lib/registry/composite/data-table.js.map +1 -0
  107. package/dist/studio/lib/registry/composite/detail-section.cjs +47 -0
  108. package/dist/studio/lib/registry/composite/detail-section.cjs.map +1 -0
  109. package/dist/studio/lib/registry/composite/detail-section.d.ts +3 -0
  110. package/dist/studio/lib/registry/composite/detail-section.d.ts.map +1 -0
  111. package/dist/studio/lib/registry/composite/detail-section.js +23 -0
  112. package/dist/studio/lib/registry/composite/detail-section.js.map +1 -0
  113. package/dist/studio/lib/registry/composite/divider.cjs +43 -0
  114. package/dist/studio/lib/registry/composite/divider.cjs.map +1 -0
  115. package/dist/studio/lib/registry/composite/divider.d.ts +3 -0
  116. package/dist/studio/lib/registry/composite/divider.d.ts.map +1 -0
  117. package/dist/studio/lib/registry/composite/divider.js +19 -0
  118. package/dist/studio/lib/registry/composite/divider.js.map +1 -0
  119. package/dist/studio/lib/registry/composite/error-page.cjs +58 -0
  120. package/dist/studio/lib/registry/composite/error-page.cjs.map +1 -0
  121. package/dist/studio/lib/registry/composite/error-page.d.ts +3 -0
  122. package/dist/studio/lib/registry/composite/error-page.d.ts.map +1 -0
  123. package/dist/studio/lib/registry/composite/error-page.js +34 -0
  124. package/dist/studio/lib/registry/composite/error-page.js.map +1 -0
  125. package/dist/studio/lib/registry/composite/explorer-list-item.cjs +84 -0
  126. package/dist/studio/lib/registry/composite/explorer-list-item.cjs.map +1 -0
  127. package/dist/studio/lib/registry/composite/explorer-list-item.d.ts +3 -0
  128. package/dist/studio/lib/registry/composite/explorer-list-item.d.ts.map +1 -0
  129. package/dist/studio/lib/registry/composite/explorer-list-item.js +60 -0
  130. package/dist/studio/lib/registry/composite/explorer-list-item.js.map +1 -0
  131. package/dist/studio/lib/registry/composite/explorer-section.cjs +90 -0
  132. package/dist/studio/lib/registry/composite/explorer-section.cjs.map +1 -0
  133. package/dist/studio/lib/registry/composite/explorer-section.d.ts +3 -0
  134. package/dist/studio/lib/registry/composite/explorer-section.d.ts.map +1 -0
  135. package/dist/studio/lib/registry/composite/explorer-section.js +66 -0
  136. package/dist/studio/lib/registry/composite/explorer-section.js.map +1 -0
  137. package/dist/studio/lib/registry/composite/filter-tabs.cjs +77 -0
  138. package/dist/studio/lib/registry/composite/filter-tabs.cjs.map +1 -0
  139. package/dist/studio/lib/registry/composite/filter-tabs.d.ts +3 -0
  140. package/dist/studio/lib/registry/composite/filter-tabs.d.ts.map +1 -0
  141. package/dist/studio/lib/registry/composite/filter-tabs.js +53 -0
  142. package/dist/studio/lib/registry/composite/filter-tabs.js.map +1 -0
  143. package/dist/studio/lib/registry/composite/form-field.cjs +119 -0
  144. package/dist/studio/lib/registry/composite/form-field.cjs.map +1 -0
  145. package/dist/studio/lib/registry/composite/form-field.d.ts +3 -0
  146. package/dist/studio/lib/registry/composite/form-field.d.ts.map +1 -0
  147. package/dist/studio/lib/registry/composite/form-field.js +95 -0
  148. package/dist/studio/lib/registry/composite/form-field.js.map +1 -0
  149. package/dist/studio/lib/registry/composite/form-multirow.cjs +56 -0
  150. package/dist/studio/lib/registry/composite/form-multirow.cjs.map +1 -0
  151. package/dist/studio/lib/registry/composite/form-multirow.d.ts +3 -0
  152. package/dist/studio/lib/registry/composite/form-multirow.d.ts.map +1 -0
  153. package/dist/studio/lib/registry/composite/form-multirow.js +32 -0
  154. package/dist/studio/lib/registry/composite/form-multirow.js.map +1 -0
  155. package/dist/studio/lib/registry/composite/icon-tile.cjs +42 -0
  156. package/dist/studio/lib/registry/composite/icon-tile.cjs.map +1 -0
  157. package/dist/studio/lib/registry/composite/icon-tile.d.ts +3 -0
  158. package/dist/studio/lib/registry/composite/icon-tile.d.ts.map +1 -0
  159. package/dist/studio/lib/registry/composite/icon-tile.js +18 -0
  160. package/dist/studio/lib/registry/composite/icon-tile.js.map +1 -0
  161. package/dist/studio/lib/registry/composite/index.cjs +105 -0
  162. package/dist/studio/lib/registry/composite/index.cjs.map +1 -0
  163. package/dist/studio/lib/registry/composite/index.d.ts +3 -0
  164. package/dist/studio/lib/registry/composite/index.d.ts.map +1 -0
  165. package/dist/studio/lib/registry/composite/index.js +81 -0
  166. package/dist/studio/lib/registry/composite/index.js.map +1 -0
  167. package/dist/studio/lib/registry/composite/inline-action.cjs +66 -0
  168. package/dist/studio/lib/registry/composite/inline-action.cjs.map +1 -0
  169. package/dist/studio/lib/registry/composite/inline-action.d.ts +3 -0
  170. package/dist/studio/lib/registry/composite/inline-action.d.ts.map +1 -0
  171. package/dist/studio/lib/registry/composite/inline-action.js +42 -0
  172. package/dist/studio/lib/registry/composite/inline-action.js.map +1 -0
  173. package/dist/studio/lib/registry/composite/inline-filter.cjs +43 -0
  174. package/dist/studio/lib/registry/composite/inline-filter.cjs.map +1 -0
  175. package/dist/studio/lib/registry/composite/inline-filter.d.ts +3 -0
  176. package/dist/studio/lib/registry/composite/inline-filter.d.ts.map +1 -0
  177. package/dist/studio/lib/registry/composite/inline-filter.js +19 -0
  178. package/dist/studio/lib/registry/composite/inline-filter.js.map +1 -0
  179. package/dist/studio/lib/registry/composite/link.cjs +88 -0
  180. package/dist/studio/lib/registry/composite/link.cjs.map +1 -0
  181. package/dist/studio/lib/registry/composite/link.d.ts +3 -0
  182. package/dist/studio/lib/registry/composite/link.d.ts.map +1 -0
  183. package/dist/studio/lib/registry/composite/link.js +64 -0
  184. package/dist/studio/lib/registry/composite/link.js.map +1 -0
  185. package/dist/studio/lib/registry/composite/list-item.cjs +134 -0
  186. package/dist/studio/lib/registry/composite/list-item.cjs.map +1 -0
  187. package/dist/studio/lib/registry/composite/list-item.d.ts +3 -0
  188. package/dist/studio/lib/registry/composite/list-item.d.ts.map +1 -0
  189. package/dist/studio/lib/registry/composite/list-item.js +110 -0
  190. package/dist/studio/lib/registry/composite/list-item.js.map +1 -0
  191. package/dist/studio/lib/registry/composite/login-page.cjs +66 -0
  192. package/dist/studio/lib/registry/composite/login-page.cjs.map +1 -0
  193. package/dist/studio/lib/registry/composite/login-page.d.ts +3 -0
  194. package/dist/studio/lib/registry/composite/login-page.d.ts.map +1 -0
  195. package/dist/studio/lib/registry/composite/login-page.js +42 -0
  196. package/dist/studio/lib/registry/composite/login-page.js.map +1 -0
  197. package/dist/studio/lib/registry/composite/meta-row.cjs +42 -0
  198. package/dist/studio/lib/registry/composite/meta-row.cjs.map +1 -0
  199. package/dist/studio/lib/registry/composite/meta-row.d.ts +3 -0
  200. package/dist/studio/lib/registry/composite/meta-row.d.ts.map +1 -0
  201. package/dist/studio/lib/registry/composite/meta-row.js +18 -0
  202. package/dist/studio/lib/registry/composite/meta-row.js.map +1 -0
  203. package/dist/studio/lib/registry/composite/page-header.cjs +47 -0
  204. package/dist/studio/lib/registry/composite/page-header.cjs.map +1 -0
  205. package/dist/studio/lib/registry/composite/page-header.d.ts +3 -0
  206. package/dist/studio/lib/registry/composite/page-header.d.ts.map +1 -0
  207. package/dist/studio/lib/registry/composite/page-header.js +23 -0
  208. package/dist/studio/lib/registry/composite/page-header.js.map +1 -0
  209. package/dist/studio/lib/registry/composite/page-shell.cjs +49 -0
  210. package/dist/studio/lib/registry/composite/page-shell.cjs.map +1 -0
  211. package/dist/studio/lib/registry/composite/page-shell.d.ts +3 -0
  212. package/dist/studio/lib/registry/composite/page-shell.d.ts.map +1 -0
  213. package/dist/studio/lib/registry/composite/page-shell.js +25 -0
  214. package/dist/studio/lib/registry/composite/page-shell.js.map +1 -0
  215. package/dist/studio/lib/registry/composite/pill-select.cjs +120 -0
  216. package/dist/studio/lib/registry/composite/pill-select.cjs.map +1 -0
  217. package/dist/studio/lib/registry/composite/pill-select.d.ts +3 -0
  218. package/dist/studio/lib/registry/composite/pill-select.d.ts.map +1 -0
  219. package/dist/studio/lib/registry/composite/pill-select.js +96 -0
  220. package/dist/studio/lib/registry/composite/pill-select.js.map +1 -0
  221. package/dist/studio/lib/registry/composite/property-field.cjs +66 -0
  222. package/dist/studio/lib/registry/composite/property-field.cjs.map +1 -0
  223. package/dist/studio/lib/registry/composite/property-field.d.ts +3 -0
  224. package/dist/studio/lib/registry/composite/property-field.d.ts.map +1 -0
  225. package/dist/studio/lib/registry/composite/property-field.js +42 -0
  226. package/dist/studio/lib/registry/composite/property-field.js.map +1 -0
  227. package/dist/studio/lib/registry/composite/property-grid.cjs +39 -0
  228. package/dist/studio/lib/registry/composite/property-grid.cjs.map +1 -0
  229. package/dist/studio/lib/registry/composite/property-grid.d.ts +3 -0
  230. package/dist/studio/lib/registry/composite/property-grid.d.ts.map +1 -0
  231. package/dist/studio/lib/registry/composite/property-grid.js +15 -0
  232. package/dist/studio/lib/registry/composite/property-grid.js.map +1 -0
  233. package/dist/studio/lib/registry/composite/section-header.cjs +44 -0
  234. package/dist/studio/lib/registry/composite/section-header.cjs.map +1 -0
  235. package/dist/studio/lib/registry/composite/section-header.d.ts +3 -0
  236. package/dist/studio/lib/registry/composite/section-header.d.ts.map +1 -0
  237. package/dist/studio/lib/registry/composite/section-header.js +20 -0
  238. package/dist/studio/lib/registry/composite/section-header.js.map +1 -0
  239. package/dist/studio/lib/registry/composite/side-flexpane.cjs +51 -0
  240. package/dist/studio/lib/registry/composite/side-flexpane.cjs.map +1 -0
  241. package/dist/studio/lib/registry/composite/side-flexpane.d.ts +3 -0
  242. package/dist/studio/lib/registry/composite/side-flexpane.d.ts.map +1 -0
  243. package/dist/studio/lib/registry/composite/side-flexpane.js +27 -0
  244. package/dist/studio/lib/registry/composite/side-flexpane.js.map +1 -0
  245. package/dist/studio/lib/registry/composite/sidebar-nav-item.cjs +95 -0
  246. package/dist/studio/lib/registry/composite/sidebar-nav-item.cjs.map +1 -0
  247. package/dist/studio/lib/registry/composite/sidebar-nav-item.d.ts +3 -0
  248. package/dist/studio/lib/registry/composite/sidebar-nav-item.d.ts.map +1 -0
  249. package/dist/studio/lib/registry/composite/sidebar-nav-item.js +71 -0
  250. package/dist/studio/lib/registry/composite/sidebar-nav-item.js.map +1 -0
  251. package/dist/studio/lib/registry/composite/sidebar-nav-trigger.cjs +224 -0
  252. package/dist/studio/lib/registry/composite/sidebar-nav-trigger.cjs.map +1 -0
  253. package/dist/studio/lib/registry/composite/sidebar-nav-trigger.d.ts +3 -0
  254. package/dist/studio/lib/registry/composite/sidebar-nav-trigger.d.ts.map +1 -0
  255. package/dist/studio/lib/registry/composite/sidebar-nav-trigger.js +200 -0
  256. package/dist/studio/lib/registry/composite/sidebar-nav-trigger.js.map +1 -0
  257. package/dist/studio/lib/registry/composite/stat-card.cjs +45 -0
  258. package/dist/studio/lib/registry/composite/stat-card.cjs.map +1 -0
  259. package/dist/studio/lib/registry/composite/stat-card.d.ts +3 -0
  260. package/dist/studio/lib/registry/composite/stat-card.d.ts.map +1 -0
  261. package/dist/studio/lib/registry/composite/stat-card.js +21 -0
  262. package/dist/studio/lib/registry/composite/stat-card.js.map +1 -0
  263. package/dist/studio/lib/registry/composite/tabs-underline.cjs +82 -0
  264. package/dist/studio/lib/registry/composite/tabs-underline.cjs.map +1 -0
  265. package/dist/studio/lib/registry/composite/tabs-underline.d.ts +3 -0
  266. package/dist/studio/lib/registry/composite/tabs-underline.d.ts.map +1 -0
  267. package/dist/studio/lib/registry/composite/tabs-underline.js +58 -0
  268. package/dist/studio/lib/registry/composite/tabs-underline.js.map +1 -0
  269. package/dist/studio/lib/registry/composite/tabs.cjs +84 -0
  270. package/dist/studio/lib/registry/composite/tabs.cjs.map +1 -0
  271. package/dist/studio/lib/registry/composite/tabs.d.ts +3 -0
  272. package/dist/studio/lib/registry/composite/tabs.d.ts.map +1 -0
  273. package/dist/studio/lib/registry/composite/tabs.js +60 -0
  274. package/dist/studio/lib/registry/composite/tabs.js.map +1 -0
  275. package/dist/studio/lib/registry/composite/thumbnail.cjs +62 -0
  276. package/dist/studio/lib/registry/composite/thumbnail.cjs.map +1 -0
  277. package/dist/studio/lib/registry/composite/thumbnail.d.ts +3 -0
  278. package/dist/studio/lib/registry/composite/thumbnail.d.ts.map +1 -0
  279. package/dist/studio/lib/registry/composite/thumbnail.js +38 -0
  280. package/dist/studio/lib/registry/composite/thumbnail.js.map +1 -0
  281. package/dist/studio/lib/registry/composite/type-overview-card.cjs +51 -0
  282. package/dist/studio/lib/registry/composite/type-overview-card.cjs.map +1 -0
  283. package/dist/studio/lib/registry/composite/type-overview-card.d.ts +3 -0
  284. package/dist/studio/lib/registry/composite/type-overview-card.d.ts.map +1 -0
  285. package/dist/studio/lib/registry/composite/type-overview-card.js +27 -0
  286. package/dist/studio/lib/registry/composite/type-overview-card.js.map +1 -0
  287. package/dist/studio/lib/registry/composite/view-switcher.cjs +76 -0
  288. package/dist/studio/lib/registry/composite/view-switcher.cjs.map +1 -0
  289. package/dist/studio/lib/registry/composite/view-switcher.d.ts +3 -0
  290. package/dist/studio/lib/registry/composite/view-switcher.d.ts.map +1 -0
  291. package/dist/studio/lib/registry/composite/view-switcher.js +52 -0
  292. package/dist/studio/lib/registry/composite/view-switcher.js.map +1 -0
  293. package/dist/studio/lib/registry/diagram.cjs +1 -1
  294. package/dist/studio/lib/registry/diagram.cjs.map +1 -1
  295. package/dist/studio/lib/registry/diagram.js +1 -1
  296. package/dist/studio/lib/registry/diagram.js.map +1 -1
  297. package/dist/studio/lib/registry/display.cjs +2 -2
  298. package/dist/studio/lib/registry/display.cjs.map +1 -1
  299. package/dist/studio/lib/registry/display.js +2 -2
  300. package/dist/studio/lib/registry/display.js.map +1 -1
  301. package/dist/studio/lib/registry/feedback.cjs +3 -3
  302. package/dist/studio/lib/registry/feedback.cjs.map +1 -1
  303. package/dist/studio/lib/registry/feedback.js +3 -3
  304. package/dist/studio/lib/registry/feedback.js.map +1 -1
  305. package/dist/studio/lib/registry/icons.cjs +32 -11
  306. package/dist/studio/lib/registry/icons.cjs.map +1 -1
  307. package/dist/studio/lib/registry/icons.d.ts.map +1 -1
  308. package/dist/studio/lib/registry/icons.js +32 -11
  309. package/dist/studio/lib/registry/icons.js.map +1 -1
  310. package/dist/studio/lib/registry/index.cjs +2 -2
  311. package/dist/studio/lib/registry/index.js +2 -2
  312. package/dist/studio/lib/registry/inputs/checkbox.cjs +84 -0
  313. package/dist/studio/lib/registry/inputs/checkbox.cjs.map +1 -0
  314. package/dist/studio/lib/registry/inputs/checkbox.d.ts +3 -0
  315. package/dist/studio/lib/registry/inputs/checkbox.d.ts.map +1 -0
  316. package/dist/studio/lib/registry/inputs/checkbox.js +60 -0
  317. package/dist/studio/lib/registry/inputs/checkbox.js.map +1 -0
  318. package/dist/studio/lib/registry/inputs/code-editor.cjs +90 -0
  319. package/dist/studio/lib/registry/inputs/code-editor.cjs.map +1 -0
  320. package/dist/studio/lib/registry/inputs/code-editor.d.ts +3 -0
  321. package/dist/studio/lib/registry/inputs/code-editor.d.ts.map +1 -0
  322. package/dist/studio/lib/registry/inputs/code-editor.js +66 -0
  323. package/dist/studio/lib/registry/inputs/code-editor.js.map +1 -0
  324. package/dist/studio/lib/registry/inputs/color-input.cjs +107 -0
  325. package/dist/studio/lib/registry/inputs/color-input.cjs.map +1 -0
  326. package/dist/studio/lib/registry/inputs/color-input.d.ts +3 -0
  327. package/dist/studio/lib/registry/inputs/color-input.d.ts.map +1 -0
  328. package/dist/studio/lib/registry/inputs/color-input.js +83 -0
  329. package/dist/studio/lib/registry/inputs/color-input.js.map +1 -0
  330. package/dist/studio/lib/registry/inputs/currency-input.cjs +112 -0
  331. package/dist/studio/lib/registry/inputs/currency-input.cjs.map +1 -0
  332. package/dist/studio/lib/registry/inputs/currency-input.d.ts +3 -0
  333. package/dist/studio/lib/registry/inputs/currency-input.d.ts.map +1 -0
  334. package/dist/studio/lib/registry/inputs/currency-input.js +88 -0
  335. package/dist/studio/lib/registry/inputs/currency-input.js.map +1 -0
  336. package/dist/studio/lib/registry/inputs/date-input.cjs +105 -0
  337. package/dist/studio/lib/registry/inputs/date-input.cjs.map +1 -0
  338. package/dist/studio/lib/registry/inputs/date-input.d.ts +3 -0
  339. package/dist/studio/lib/registry/inputs/date-input.d.ts.map +1 -0
  340. package/dist/studio/lib/registry/inputs/date-input.js +81 -0
  341. package/dist/studio/lib/registry/inputs/date-input.js.map +1 -0
  342. package/dist/studio/lib/registry/inputs/editable-cell.cjs +206 -0
  343. package/dist/studio/lib/registry/inputs/editable-cell.cjs.map +1 -0
  344. package/dist/studio/lib/registry/inputs/editable-cell.d.ts +3 -0
  345. package/dist/studio/lib/registry/inputs/editable-cell.d.ts.map +1 -0
  346. package/dist/studio/lib/registry/inputs/editable-cell.js +182 -0
  347. package/dist/studio/lib/registry/inputs/editable-cell.js.map +1 -0
  348. package/dist/studio/lib/registry/inputs/file-upload.cjs +161 -0
  349. package/dist/studio/lib/registry/inputs/file-upload.cjs.map +1 -0
  350. package/dist/studio/lib/registry/inputs/file-upload.d.ts +3 -0
  351. package/dist/studio/lib/registry/inputs/file-upload.d.ts.map +1 -0
  352. package/dist/studio/lib/registry/inputs/file-upload.js +137 -0
  353. package/dist/studio/lib/registry/inputs/file-upload.js.map +1 -0
  354. package/dist/studio/lib/registry/inputs/index.cjs +75 -0
  355. package/dist/studio/lib/registry/inputs/index.cjs.map +1 -0
  356. package/dist/studio/lib/registry/inputs/index.d.ts +3 -0
  357. package/dist/studio/lib/registry/inputs/index.d.ts.map +1 -0
  358. package/dist/studio/lib/registry/inputs/index.js +51 -0
  359. package/dist/studio/lib/registry/inputs/index.js.map +1 -0
  360. package/dist/studio/lib/registry/inputs/input-text.cjs +101 -0
  361. package/dist/studio/lib/registry/inputs/input-text.cjs.map +1 -0
  362. package/dist/studio/lib/registry/inputs/input-text.d.ts +3 -0
  363. package/dist/studio/lib/registry/inputs/input-text.d.ts.map +1 -0
  364. package/dist/studio/lib/registry/inputs/input-text.js +77 -0
  365. package/dist/studio/lib/registry/inputs/input-text.js.map +1 -0
  366. package/dist/studio/lib/registry/inputs/input-with-icon.cjs +85 -0
  367. package/dist/studio/lib/registry/inputs/input-with-icon.cjs.map +1 -0
  368. package/dist/studio/lib/registry/inputs/input-with-icon.d.ts +3 -0
  369. package/dist/studio/lib/registry/inputs/input-with-icon.d.ts.map +1 -0
  370. package/dist/studio/lib/registry/inputs/input-with-icon.js +61 -0
  371. package/dist/studio/lib/registry/inputs/input-with-icon.js.map +1 -0
  372. package/dist/studio/lib/registry/inputs/listbox.cjs +221 -0
  373. package/dist/studio/lib/registry/inputs/listbox.cjs.map +1 -0
  374. package/dist/studio/lib/registry/inputs/listbox.d.ts +3 -0
  375. package/dist/studio/lib/registry/inputs/listbox.d.ts.map +1 -0
  376. package/dist/studio/lib/registry/inputs/listbox.js +197 -0
  377. package/dist/studio/lib/registry/inputs/listbox.js.map +1 -0
  378. package/dist/studio/lib/registry/inputs/menu.cjs +208 -0
  379. package/dist/studio/lib/registry/inputs/menu.cjs.map +1 -0
  380. package/dist/studio/lib/registry/inputs/menu.d.ts +3 -0
  381. package/dist/studio/lib/registry/inputs/menu.d.ts.map +1 -0
  382. package/dist/studio/lib/registry/inputs/menu.js +184 -0
  383. package/dist/studio/lib/registry/inputs/menu.js.map +1 -0
  384. package/dist/studio/lib/registry/inputs/number-input.cjs +105 -0
  385. package/dist/studio/lib/registry/inputs/number-input.cjs.map +1 -0
  386. package/dist/studio/lib/registry/inputs/number-input.d.ts +3 -0
  387. package/dist/studio/lib/registry/inputs/number-input.d.ts.map +1 -0
  388. package/dist/studio/lib/registry/inputs/number-input.js +81 -0
  389. package/dist/studio/lib/registry/inputs/number-input.js.map +1 -0
  390. package/dist/studio/lib/registry/inputs/number-stepper.cjs +99 -0
  391. package/dist/studio/lib/registry/inputs/number-stepper.cjs.map +1 -0
  392. package/dist/studio/lib/registry/inputs/number-stepper.d.ts +3 -0
  393. package/dist/studio/lib/registry/inputs/number-stepper.d.ts.map +1 -0
  394. package/dist/studio/lib/registry/inputs/number-stepper.js +75 -0
  395. package/dist/studio/lib/registry/inputs/number-stepper.js.map +1 -0
  396. package/dist/studio/lib/registry/inputs/password-input.cjs +107 -0
  397. package/dist/studio/lib/registry/inputs/password-input.cjs.map +1 -0
  398. package/dist/studio/lib/registry/inputs/password-input.d.ts +3 -0
  399. package/dist/studio/lib/registry/inputs/password-input.d.ts.map +1 -0
  400. package/dist/studio/lib/registry/inputs/password-input.js +83 -0
  401. package/dist/studio/lib/registry/inputs/password-input.js.map +1 -0
  402. package/dist/studio/lib/registry/inputs/phone-input.cjs +105 -0
  403. package/dist/studio/lib/registry/inputs/phone-input.cjs.map +1 -0
  404. package/dist/studio/lib/registry/inputs/phone-input.d.ts +3 -0
  405. package/dist/studio/lib/registry/inputs/phone-input.d.ts.map +1 -0
  406. package/dist/studio/lib/registry/inputs/phone-input.js +81 -0
  407. package/dist/studio/lib/registry/inputs/phone-input.js.map +1 -0
  408. package/dist/studio/lib/registry/inputs/radio-group.cjs +86 -0
  409. package/dist/studio/lib/registry/inputs/radio-group.cjs.map +1 -0
  410. package/dist/studio/lib/registry/inputs/radio-group.d.ts +3 -0
  411. package/dist/studio/lib/registry/inputs/radio-group.d.ts.map +1 -0
  412. package/dist/studio/lib/registry/inputs/radio-group.js +62 -0
  413. package/dist/studio/lib/registry/inputs/radio-group.js.map +1 -0
  414. package/dist/studio/lib/registry/inputs/search-dropdown.cjs +86 -0
  415. package/dist/studio/lib/registry/inputs/search-dropdown.cjs.map +1 -0
  416. package/dist/studio/lib/registry/inputs/search-dropdown.d.ts +3 -0
  417. package/dist/studio/lib/registry/inputs/search-dropdown.d.ts.map +1 -0
  418. package/dist/studio/lib/registry/inputs/search-dropdown.js +62 -0
  419. package/dist/studio/lib/registry/inputs/search-dropdown.js.map +1 -0
  420. package/dist/studio/lib/registry/inputs/select-dropdown.cjs +103 -0
  421. package/dist/studio/lib/registry/inputs/select-dropdown.cjs.map +1 -0
  422. package/dist/studio/lib/registry/inputs/select-dropdown.d.ts +3 -0
  423. package/dist/studio/lib/registry/inputs/select-dropdown.d.ts.map +1 -0
  424. package/dist/studio/lib/registry/inputs/select-dropdown.js +79 -0
  425. package/dist/studio/lib/registry/inputs/select-dropdown.js.map +1 -0
  426. package/dist/studio/lib/registry/inputs/slider.cjs +99 -0
  427. package/dist/studio/lib/registry/inputs/slider.cjs.map +1 -0
  428. package/dist/studio/lib/registry/inputs/slider.d.ts +3 -0
  429. package/dist/studio/lib/registry/inputs/slider.d.ts.map +1 -0
  430. package/dist/studio/lib/registry/inputs/slider.js +75 -0
  431. package/dist/studio/lib/registry/inputs/slider.js.map +1 -0
  432. package/dist/studio/lib/registry/inputs/textarea.cjs +84 -0
  433. package/dist/studio/lib/registry/inputs/textarea.cjs.map +1 -0
  434. package/dist/studio/lib/registry/inputs/textarea.d.ts +3 -0
  435. package/dist/studio/lib/registry/inputs/textarea.d.ts.map +1 -0
  436. package/dist/studio/lib/registry/inputs/textarea.js +60 -0
  437. package/dist/studio/lib/registry/inputs/textarea.js.map +1 -0
  438. package/dist/studio/lib/registry/inputs/time-input.cjs +131 -0
  439. package/dist/studio/lib/registry/inputs/time-input.cjs.map +1 -0
  440. package/dist/studio/lib/registry/inputs/time-input.d.ts +3 -0
  441. package/dist/studio/lib/registry/inputs/time-input.d.ts.map +1 -0
  442. package/dist/studio/lib/registry/inputs/time-input.js +107 -0
  443. package/dist/studio/lib/registry/inputs/time-input.js.map +1 -0
  444. package/dist/studio/lib/registry/inputs/toggle-switch.cjs +80 -0
  445. package/dist/studio/lib/registry/inputs/toggle-switch.cjs.map +1 -0
  446. package/dist/studio/lib/registry/inputs/toggle-switch.d.ts +3 -0
  447. package/dist/studio/lib/registry/inputs/toggle-switch.d.ts.map +1 -0
  448. package/dist/studio/lib/registry/inputs/toggle-switch.js +56 -0
  449. package/dist/studio/lib/registry/inputs/toggle-switch.js.map +1 -0
  450. package/dist/studio/lib/types.cjs.map +1 -1
  451. package/dist/studio/mobile-gallery.d.ts +1 -1
  452. package/dist/studio/mobile-gallery.d.ts.map +1 -1
  453. package/dist/studio/persistence/css-sanitizers.cjs +75 -0
  454. package/dist/studio/persistence/css-sanitizers.cjs.map +1 -0
  455. package/dist/studio/persistence/css-sanitizers.d.ts +16 -0
  456. package/dist/studio/persistence/css-sanitizers.d.ts.map +1 -0
  457. package/dist/studio/persistence/css-sanitizers.js +45 -0
  458. package/dist/studio/persistence/css-sanitizers.js.map +1 -0
  459. package/dist/studio/persistence/generate-css-mapping.cjs +837 -0
  460. package/dist/studio/persistence/generate-css-mapping.cjs.map +1 -0
  461. package/dist/studio/persistence/generate-css-mapping.d.ts +13 -0
  462. package/dist/studio/persistence/generate-css-mapping.d.ts.map +1 -0
  463. package/dist/studio/persistence/generate-css-mapping.js +812 -0
  464. package/dist/studio/persistence/generate-css-mapping.js.map +1 -0
  465. package/dist/studio/persistence/generate-css.cjs +26 -865
  466. package/dist/studio/persistence/generate-css.cjs.map +1 -1
  467. package/dist/studio/persistence/generate-css.d.ts +1 -6
  468. package/dist/studio/persistence/generate-css.d.ts.map +1 -1
  469. package/dist/studio/persistence/generate-css.js +9 -848
  470. package/dist/studio/persistence/generate-css.js.map +1 -1
  471. package/dist/studio/shell/canvas.d.ts +1 -1
  472. package/dist/studio/shell/canvas.d.ts.map +1 -1
  473. package/dist/studio/shell/preview-modal.d.ts +1 -1
  474. package/dist/studio/shell/preview-modal.d.ts.map +1 -1
  475. package/dist/studio/shell/properties-panel/dev-tab.cjs +244 -0
  476. package/dist/studio/shell/properties-panel/dev-tab.cjs.map +1 -0
  477. package/dist/studio/shell/properties-panel/dev-tab.d.ts +27 -0
  478. package/dist/studio/shell/properties-panel/dev-tab.d.ts.map +1 -0
  479. package/dist/studio/shell/properties-panel/dev-tab.js +220 -0
  480. package/dist/studio/shell/properties-panel/dev-tab.js.map +1 -0
  481. package/dist/studio/shell/properties-panel/index.cjs +398 -0
  482. package/dist/studio/shell/properties-panel/index.cjs.map +1 -0
  483. package/dist/studio/shell/{properties-panel.d.ts → properties-panel/index.d.ts} +2 -2
  484. package/dist/studio/shell/properties-panel/index.d.ts.map +1 -0
  485. package/dist/studio/shell/properties-panel/index.js +374 -0
  486. package/dist/studio/shell/properties-panel/index.js.map +1 -0
  487. package/dist/studio/shell/properties-panel/property-row.cjs +155 -0
  488. package/dist/studio/shell/properties-panel/property-row.cjs.map +1 -0
  489. package/dist/studio/shell/properties-panel/property-row.d.ts +20 -0
  490. package/dist/studio/shell/properties-panel/property-row.d.ts.map +1 -0
  491. package/dist/studio/shell/properties-panel/property-row.js +130 -0
  492. package/dist/studio/shell/properties-panel/property-row.js.map +1 -0
  493. package/dist/studio/shell/properties-panel/variant-matrix.cjs +177 -0
  494. package/dist/studio/shell/properties-panel/variant-matrix.cjs.map +1 -0
  495. package/dist/studio/shell/properties-panel/variant-matrix.d.ts +30 -0
  496. package/dist/studio/shell/properties-panel/variant-matrix.d.ts.map +1 -0
  497. package/dist/studio/shell/properties-panel/variant-matrix.js +153 -0
  498. package/dist/studio/shell/properties-panel/variant-matrix.js.map +1 -0
  499. package/dist/studio/shell/sidebar.d.ts +1 -1
  500. package/dist/studio/shell/sidebar.d.ts.map +1 -1
  501. package/dist/studio/shell/wcag-panel.d.ts +1 -1
  502. package/dist/studio/shell/wcag-panel.d.ts.map +1 -1
  503. package/dist/studio/studio.css +2 -2
  504. package/dist/studio/uxm-app.cjs +1 -1
  505. package/dist/studio/uxm-app.d.ts +1 -1
  506. package/dist/studio/uxm-app.d.ts.map +1 -1
  507. package/dist/studio/uxm-app.js +1 -1
  508. package/dist/ui/app-sidebar/app-sidebar-preview.cjs +2 -2
  509. package/dist/ui/app-sidebar/app-sidebar-preview.d.ts +1 -1
  510. package/dist/ui/app-sidebar/app-sidebar-preview.d.ts.map +1 -1
  511. package/dist/ui/app-sidebar/app-sidebar-preview.js +2 -2
  512. package/dist/ui/app-sidebar/app-sidebar.d.ts +1 -1
  513. package/dist/ui/app-sidebar/app-sidebar.d.ts.map +1 -1
  514. package/dist/ui/app-top-bar/app-top-bar-preview.cjs +5 -5
  515. package/dist/ui/app-top-bar/app-top-bar-preview.d.ts +1 -1
  516. package/dist/ui/app-top-bar/app-top-bar-preview.d.ts.map +1 -1
  517. package/dist/ui/app-top-bar/app-top-bar-preview.js +5 -5
  518. package/dist/ui/app-top-bar/app-top-bar.cjs +1 -1
  519. package/dist/ui/app-top-bar/app-top-bar.d.ts +1 -1
  520. package/dist/ui/app-top-bar/app-top-bar.d.ts.map +1 -1
  521. package/dist/ui/app-top-bar/app-top-bar.js +1 -1
  522. package/dist/ui/avatar/avatar-preview.cjs +1 -1
  523. package/dist/ui/avatar/avatar-preview.d.ts +1 -1
  524. package/dist/ui/avatar/avatar-preview.d.ts.map +1 -1
  525. package/dist/ui/avatar/avatar-preview.js +1 -1
  526. package/dist/ui/avatar/avatar.d.ts +1 -1
  527. package/dist/ui/avatar/avatar.d.ts.map +1 -1
  528. package/dist/ui/back-link/back-link-preview.cjs +1 -1
  529. package/dist/ui/back-link/back-link-preview.d.ts +1 -1
  530. package/dist/ui/back-link/back-link-preview.d.ts.map +1 -1
  531. package/dist/ui/back-link/back-link-preview.js +1 -1
  532. package/dist/ui/back-link/back-link.cjs +1 -1
  533. package/dist/ui/back-link/back-link.d.ts +1 -1
  534. package/dist/ui/back-link/back-link.d.ts.map +1 -1
  535. package/dist/ui/back-link/back-link.js +1 -1
  536. package/dist/ui/badge/badge-preview.cjs +1 -1
  537. package/dist/ui/badge/badge-preview.d.ts +1 -1
  538. package/dist/ui/badge/badge-preview.d.ts.map +1 -1
  539. package/dist/ui/badge/badge-preview.js +1 -1
  540. package/dist/ui/badge/badge.d.ts +1 -1
  541. package/dist/ui/badge/badge.d.ts.map +1 -1
  542. package/dist/ui/banner/banner-preview.cjs +1 -1
  543. package/dist/ui/banner/banner-preview.d.ts +1 -1
  544. package/dist/ui/banner/banner-preview.d.ts.map +1 -1
  545. package/dist/ui/banner/banner-preview.js +1 -1
  546. package/dist/ui/banner/banner.d.ts +1 -1
  547. package/dist/ui/banner/banner.d.ts.map +1 -1
  548. package/dist/ui/breadcrumb/breadcrumb-preview.cjs +3 -3
  549. package/dist/ui/breadcrumb/breadcrumb-preview.d.ts +1 -1
  550. package/dist/ui/breadcrumb/breadcrumb-preview.d.ts.map +1 -1
  551. package/dist/ui/breadcrumb/breadcrumb-preview.js +3 -3
  552. package/dist/ui/breadcrumb/breadcrumb.d.ts +1 -1
  553. package/dist/ui/breadcrumb/breadcrumb.d.ts.map +1 -1
  554. package/dist/ui/bulk-action-bar/bulk-action-bar-preview.d.ts +1 -1
  555. package/dist/ui/bulk-action-bar/bulk-action-bar-preview.d.ts.map +1 -1
  556. package/dist/ui/bulk-action-bar/bulk-action-bar.d.ts +1 -1
  557. package/dist/ui/bulk-action-bar/bulk-action-bar.d.ts.map +1 -1
  558. package/dist/ui/button/button-preview.cjs +4 -4
  559. package/dist/ui/button/button-preview.d.ts +1 -1
  560. package/dist/ui/button/button-preview.d.ts.map +1 -1
  561. package/dist/ui/button/button-preview.js +4 -4
  562. package/dist/ui/button/button.d.ts +5 -5
  563. package/dist/ui/button/button.d.ts.map +1 -1
  564. package/dist/ui/button-group/button-group-preview.cjs +1 -1
  565. package/dist/ui/button-group/button-group-preview.d.ts +1 -1
  566. package/dist/ui/button-group/button-group-preview.d.ts.map +1 -1
  567. package/dist/ui/button-group/button-group-preview.js +1 -1
  568. package/dist/ui/button-group/button-group.d.ts +1 -1
  569. package/dist/ui/button-group/button-group.d.ts.map +1 -1
  570. package/dist/ui/button-icon/button-icon.cjs.map +1 -1
  571. package/dist/ui/button-icon/button-icon.d.ts +11 -1
  572. package/dist/ui/button-icon/button-icon.d.ts.map +1 -1
  573. package/dist/ui/button-icon/button-icon.js.map +1 -1
  574. package/dist/ui/button-with-icon/button-with-icon-preview.cjs +2 -2
  575. package/dist/ui/button-with-icon/button-with-icon-preview.d.ts +1 -1
  576. package/dist/ui/button-with-icon/button-with-icon-preview.d.ts.map +1 -1
  577. package/dist/ui/button-with-icon/button-with-icon-preview.js +2 -2
  578. package/dist/ui/button-with-icon/button-with-icon.d.ts +1 -1
  579. package/dist/ui/button-with-icon/button-with-icon.d.ts.map +1 -1
  580. package/dist/ui/calendar/calendar-preview.cjs +1 -1
  581. package/dist/ui/calendar/calendar-preview.d.ts +1 -1
  582. package/dist/ui/calendar/calendar-preview.d.ts.map +1 -1
  583. package/dist/ui/calendar/calendar-preview.js +1 -1
  584. package/dist/ui/calendar/calendar.d.ts +1 -1
  585. package/dist/ui/calendar/calendar.d.ts.map +1 -1
  586. package/dist/ui/card/card-preview.cjs +1 -1
  587. package/dist/ui/card/card-preview.d.ts +1 -1
  588. package/dist/ui/card/card-preview.d.ts.map +1 -1
  589. package/dist/ui/card/card-preview.js +1 -1
  590. package/dist/ui/card/card.d.ts +1 -1
  591. package/dist/ui/card/card.d.ts.map +1 -1
  592. package/dist/ui/checkbox/checkbox-preview.cjs +2 -2
  593. package/dist/ui/checkbox/checkbox-preview.d.ts +1 -1
  594. package/dist/ui/checkbox/checkbox-preview.d.ts.map +1 -1
  595. package/dist/ui/checkbox/checkbox-preview.js +2 -2
  596. package/dist/ui/checkbox/checkbox.cjs +2 -2
  597. package/dist/ui/checkbox/checkbox.d.ts +1 -1
  598. package/dist/ui/checkbox/checkbox.d.ts.map +1 -1
  599. package/dist/ui/checkbox/checkbox.js +2 -2
  600. package/dist/ui/chip/chip-preview.cjs +2 -2
  601. package/dist/ui/chip/chip-preview.d.ts +1 -1
  602. package/dist/ui/chip/chip-preview.d.ts.map +1 -1
  603. package/dist/ui/chip/chip-preview.js +2 -2
  604. package/dist/ui/chip/chip.cjs +1 -1
  605. package/dist/ui/chip/chip.d.ts +1 -1
  606. package/dist/ui/chip/chip.d.ts.map +1 -1
  607. package/dist/ui/chip/chip.js +1 -1
  608. package/dist/ui/cluster/cluster-preview.cjs +1 -1
  609. package/dist/ui/cluster/cluster-preview.d.ts +1 -1
  610. package/dist/ui/cluster/cluster-preview.d.ts.map +1 -1
  611. package/dist/ui/cluster/cluster-preview.js +1 -1
  612. package/dist/ui/cluster/cluster.d.ts +1 -1
  613. package/dist/ui/cluster/cluster.d.ts.map +1 -1
  614. package/dist/ui/code-editor/code-editor-preview.cjs +1 -1
  615. package/dist/ui/code-editor/code-editor-preview.d.ts +1 -1
  616. package/dist/ui/code-editor/code-editor-preview.d.ts.map +1 -1
  617. package/dist/ui/code-editor/code-editor-preview.js +1 -1
  618. package/dist/ui/code-editor/code-editor.d.ts +2 -2
  619. package/dist/ui/code-editor/code-editor.d.ts.map +1 -1
  620. package/dist/ui/color-input/color-input-preview.cjs +1 -1
  621. package/dist/ui/color-input/color-input-preview.d.ts +1 -1
  622. package/dist/ui/color-input/color-input-preview.d.ts.map +1 -1
  623. package/dist/ui/color-input/color-input-preview.js +1 -1
  624. package/dist/ui/color-input/color-input.d.ts +2 -2
  625. package/dist/ui/color-input/color-input.d.ts.map +1 -1
  626. package/dist/ui/component-row/component-row-preview.cjs +1 -1
  627. package/dist/ui/component-row/component-row-preview.d.ts +1 -1
  628. package/dist/ui/component-row/component-row-preview.d.ts.map +1 -1
  629. package/dist/ui/component-row/component-row-preview.js +1 -1
  630. package/dist/ui/component-row/component-row.cjs +1 -1
  631. package/dist/ui/component-row/component-row.d.ts +1 -1
  632. package/dist/ui/component-row/component-row.d.ts.map +1 -1
  633. package/dist/ui/component-row/component-row.js +1 -1
  634. package/dist/ui/config-component-row/config-component-row-preview.cjs +3 -3
  635. package/dist/ui/config-component-row/config-component-row-preview.d.ts +1 -1
  636. package/dist/ui/config-component-row/config-component-row-preview.d.ts.map +1 -1
  637. package/dist/ui/config-component-row/config-component-row-preview.js +3 -3
  638. package/dist/ui/config-component-row/config-component-row.cjs +1 -1
  639. package/dist/ui/config-component-row/config-component-row.d.ts +1 -1
  640. package/dist/ui/config-component-row/config-component-row.d.ts.map +1 -1
  641. package/dist/ui/config-component-row/config-component-row.js +1 -1
  642. package/dist/ui/config-segment-item/config-segment-item-preview.cjs +1 -1
  643. package/dist/ui/config-segment-item/config-segment-item-preview.d.ts +1 -1
  644. package/dist/ui/config-segment-item/config-segment-item-preview.d.ts.map +1 -1
  645. package/dist/ui/config-segment-item/config-segment-item-preview.js +1 -1
  646. package/dist/ui/config-segment-item/config-segment-item.d.ts +1 -1
  647. package/dist/ui/config-segment-item/config-segment-item.d.ts.map +1 -1
  648. package/dist/ui/currency-input/currency-input-preview.cjs +1 -1
  649. package/dist/ui/currency-input/currency-input-preview.d.ts +1 -1
  650. package/dist/ui/currency-input/currency-input-preview.d.ts.map +1 -1
  651. package/dist/ui/currency-input/currency-input-preview.js +1 -1
  652. package/dist/ui/currency-input/currency-input.d.ts +1 -1
  653. package/dist/ui/currency-input/currency-input.d.ts.map +1 -1
  654. package/dist/ui/data-table/data-table-preview.cjs +1 -1
  655. package/dist/ui/data-table/data-table-preview.d.ts +1 -1
  656. package/dist/ui/data-table/data-table-preview.d.ts.map +1 -1
  657. package/dist/ui/data-table/data-table-preview.js +1 -1
  658. package/dist/ui/data-table/data-table.d.ts +1 -1
  659. package/dist/ui/data-table/data-table.d.ts.map +1 -1
  660. package/dist/ui/date-input/date-input-preview.cjs +1 -1
  661. package/dist/ui/date-input/date-input-preview.d.ts +1 -1
  662. package/dist/ui/date-input/date-input-preview.d.ts.map +1 -1
  663. package/dist/ui/date-input/date-input-preview.js +1 -1
  664. package/dist/ui/date-input/date-input.d.ts +1 -1
  665. package/dist/ui/date-input/date-input.d.ts.map +1 -1
  666. package/dist/ui/detail-section/detail-section-preview.cjs +2 -2
  667. package/dist/ui/detail-section/detail-section-preview.d.ts +1 -1
  668. package/dist/ui/detail-section/detail-section-preview.d.ts.map +1 -1
  669. package/dist/ui/detail-section/detail-section-preview.js +2 -2
  670. package/dist/ui/detail-section/detail-section.d.ts +1 -1
  671. package/dist/ui/detail-section/detail-section.d.ts.map +1 -1
  672. package/dist/ui/disclosure/disclosure-preview.cjs +3 -3
  673. package/dist/ui/disclosure/disclosure-preview.d.ts +1 -1
  674. package/dist/ui/disclosure/disclosure-preview.d.ts.map +1 -1
  675. package/dist/ui/disclosure/disclosure-preview.js +3 -3
  676. package/dist/ui/disclosure/disclosure.d.ts +1 -1
  677. package/dist/ui/disclosure/disclosure.d.ts.map +1 -1
  678. package/dist/ui/divider/divider-preview.d.ts +1 -1
  679. package/dist/ui/divider/divider-preview.d.ts.map +1 -1
  680. package/dist/ui/divider/divider.d.ts +1 -1
  681. package/dist/ui/divider/divider.d.ts.map +1 -1
  682. package/dist/ui/editable-cell/editable-cell-date.cjs +226 -0
  683. package/dist/ui/editable-cell/editable-cell-date.cjs.map +1 -0
  684. package/dist/ui/editable-cell/editable-cell-date.d.ts +4 -0
  685. package/dist/ui/editable-cell/editable-cell-date.d.ts.map +1 -0
  686. package/dist/ui/editable-cell/editable-cell-date.js +202 -0
  687. package/dist/ui/editable-cell/editable-cell-date.js.map +1 -0
  688. package/dist/ui/editable-cell/editable-cell-preview.cjs +1 -1
  689. package/dist/ui/editable-cell/editable-cell-preview.d.ts +1 -1
  690. package/dist/ui/editable-cell/editable-cell-preview.d.ts.map +1 -1
  691. package/dist/ui/editable-cell/editable-cell-preview.js +1 -1
  692. package/dist/ui/editable-cell/editable-cell-select.cjs +297 -0
  693. package/dist/ui/editable-cell/editable-cell-select.cjs.map +1 -0
  694. package/dist/ui/editable-cell/editable-cell-select.d.ts +4 -0
  695. package/dist/ui/editable-cell/editable-cell-select.d.ts.map +1 -0
  696. package/dist/ui/editable-cell/editable-cell-select.js +273 -0
  697. package/dist/ui/editable-cell/editable-cell-select.js.map +1 -0
  698. package/dist/ui/editable-cell/editable-cell-text.cjs +175 -0
  699. package/dist/ui/editable-cell/editable-cell-text.cjs.map +1 -0
  700. package/dist/ui/editable-cell/editable-cell-text.d.ts +4 -0
  701. package/dist/ui/editable-cell/editable-cell-text.d.ts.map +1 -0
  702. package/dist/ui/editable-cell/editable-cell-text.js +151 -0
  703. package/dist/ui/editable-cell/editable-cell-text.js.map +1 -0
  704. package/dist/ui/editable-cell/editable-cell-utils.cjs +56 -0
  705. package/dist/ui/editable-cell/editable-cell-utils.cjs.map +1 -0
  706. package/dist/ui/editable-cell/editable-cell-utils.d.ts +20 -0
  707. package/dist/ui/editable-cell/editable-cell-utils.d.ts.map +1 -0
  708. package/dist/ui/editable-cell/editable-cell-utils.js +29 -0
  709. package/dist/ui/editable-cell/editable-cell-utils.js.map +1 -0
  710. package/dist/ui/editable-cell/editable-cell.cjs +27 -725
  711. package/dist/ui/editable-cell/editable-cell.cjs.map +1 -1
  712. package/dist/ui/editable-cell/editable-cell.d.ts +3 -145
  713. package/dist/ui/editable-cell/editable-cell.d.ts.map +1 -1
  714. package/dist/ui/editable-cell/editable-cell.js +28 -738
  715. package/dist/ui/editable-cell/editable-cell.js.map +1 -1
  716. package/dist/ui/editable-cell/editable-cell.types.cjs +17 -0
  717. package/dist/ui/editable-cell/editable-cell.types.cjs.map +1 -0
  718. package/dist/ui/editable-cell/editable-cell.types.d.ts +156 -0
  719. package/dist/ui/editable-cell/editable-cell.types.d.ts.map +1 -0
  720. package/dist/ui/editable-cell/editable-cell.types.js +1 -0
  721. package/dist/ui/editable-cell/editable-cell.types.js.map +1 -0
  722. package/dist/ui/editable-cell/use-editable-cell.cjs +284 -0
  723. package/dist/ui/editable-cell/use-editable-cell.cjs.map +1 -0
  724. package/dist/ui/editable-cell/use-editable-cell.d.ts +51 -0
  725. package/dist/ui/editable-cell/use-editable-cell.d.ts.map +1 -0
  726. package/dist/ui/editable-cell/use-editable-cell.js +260 -0
  727. package/dist/ui/editable-cell/use-editable-cell.js.map +1 -0
  728. package/dist/ui/empty-state/empty-state-preview.cjs +3 -3
  729. package/dist/ui/empty-state/empty-state-preview.d.ts +1 -1
  730. package/dist/ui/empty-state/empty-state-preview.d.ts.map +1 -1
  731. package/dist/ui/empty-state/empty-state-preview.js +3 -3
  732. package/dist/ui/empty-state/empty-state.d.ts +1 -1
  733. package/dist/ui/empty-state/empty-state.d.ts.map +1 -1
  734. package/dist/ui/error-page/error-page-preview.cjs +2 -2
  735. package/dist/ui/error-page/error-page-preview.d.ts +1 -1
  736. package/dist/ui/error-page/error-page-preview.d.ts.map +1 -1
  737. package/dist/ui/error-page/error-page-preview.js +2 -2
  738. package/dist/ui/error-page/error-page.d.ts +1 -1
  739. package/dist/ui/error-page/error-page.d.ts.map +1 -1
  740. package/dist/ui/explorer-list-item/explorer-list-item-preview.cjs +1 -1
  741. package/dist/ui/explorer-list-item/explorer-list-item-preview.d.ts +1 -1
  742. package/dist/ui/explorer-list-item/explorer-list-item-preview.d.ts.map +1 -1
  743. package/dist/ui/explorer-list-item/explorer-list-item-preview.js +1 -1
  744. package/dist/ui/explorer-list-item/explorer-list-item.d.ts +1 -1
  745. package/dist/ui/explorer-list-item/explorer-list-item.d.ts.map +1 -1
  746. package/dist/ui/explorer-section/explorer-section-preview.cjs +2 -2
  747. package/dist/ui/explorer-section/explorer-section-preview.d.ts +1 -1
  748. package/dist/ui/explorer-section/explorer-section-preview.d.ts.map +1 -1
  749. package/dist/ui/explorer-section/explorer-section-preview.js +2 -2
  750. package/dist/ui/explorer-section/explorer-section.d.ts +1 -1
  751. package/dist/ui/explorer-section/explorer-section.d.ts.map +1 -1
  752. package/dist/ui/field-error/field-error.d.ts +1 -1
  753. package/dist/ui/field-error/field-error.d.ts.map +1 -1
  754. package/dist/ui/file-upload/file-upload-preview.cjs +1 -1
  755. package/dist/ui/file-upload/file-upload-preview.d.ts +1 -1
  756. package/dist/ui/file-upload/file-upload-preview.d.ts.map +1 -1
  757. package/dist/ui/file-upload/file-upload-preview.js +1 -1
  758. package/dist/ui/file-upload/file-upload.d.ts +1 -1
  759. package/dist/ui/file-upload/file-upload.d.ts.map +1 -1
  760. package/dist/ui/filter-tabs/filter-tabs-preview.cjs +1 -1
  761. package/dist/ui/filter-tabs/filter-tabs-preview.d.ts +1 -1
  762. package/dist/ui/filter-tabs/filter-tabs-preview.d.ts.map +1 -1
  763. package/dist/ui/filter-tabs/filter-tabs-preview.js +1 -1
  764. package/dist/ui/filter-tabs/filter-tabs.d.ts +1 -1
  765. package/dist/ui/filter-tabs/filter-tabs.d.ts.map +1 -1
  766. package/dist/ui/form-field/form-field-preview.cjs +2 -2
  767. package/dist/ui/form-field/form-field-preview.d.ts +1 -1
  768. package/dist/ui/form-field/form-field-preview.d.ts.map +1 -1
  769. package/dist/ui/form-field/form-field-preview.js +2 -2
  770. package/dist/ui/form-field/form-field.d.ts +1 -1
  771. package/dist/ui/form-field/form-field.d.ts.map +1 -1
  772. package/dist/ui/hover-tooltip/hover-tooltip.d.ts +1 -1
  773. package/dist/ui/hover-tooltip/hover-tooltip.d.ts.map +1 -1
  774. package/dist/ui/icon/icon-preview.cjs +1 -1
  775. package/dist/ui/icon/icon-preview.d.ts +1 -1
  776. package/dist/ui/icon/icon-preview.d.ts.map +1 -1
  777. package/dist/ui/icon/icon-preview.js +1 -1
  778. package/dist/ui/icon/icon.d.ts +1 -1
  779. package/dist/ui/icon/icon.d.ts.map +1 -1
  780. package/dist/ui/icon-button/icon-button-preview.cjs +20 -7
  781. package/dist/ui/icon-button/icon-button-preview.cjs.map +1 -1
  782. package/dist/ui/icon-button/icon-button-preview.d.ts +1 -1
  783. package/dist/ui/icon-button/icon-button-preview.d.ts.map +1 -1
  784. package/dist/ui/icon-button/icon-button-preview.js +20 -7
  785. package/dist/ui/icon-button/icon-button-preview.js.map +1 -1
  786. package/dist/ui/icon-button/icon-button.cjs +16 -2
  787. package/dist/ui/icon-button/icon-button.cjs.map +1 -1
  788. package/dist/ui/icon-button/icon-button.css +26 -0
  789. package/dist/ui/icon-button/icon-button.d.ts +9 -1
  790. package/dist/ui/icon-button/icon-button.d.ts.map +1 -1
  791. package/dist/ui/icon-button/icon-button.js +16 -2
  792. package/dist/ui/icon-button/icon-button.js.map +1 -1
  793. package/dist/ui/icon-tile/icon-tile-preview.cjs +2 -2
  794. package/dist/ui/icon-tile/icon-tile-preview.d.ts +1 -1
  795. package/dist/ui/icon-tile/icon-tile-preview.d.ts.map +1 -1
  796. package/dist/ui/icon-tile/icon-tile-preview.js +2 -2
  797. package/dist/ui/icon-tile/icon-tile.d.ts +1 -1
  798. package/dist/ui/icon-tile/icon-tile.d.ts.map +1 -1
  799. package/dist/ui/index.cjs.map +1 -1
  800. package/dist/ui/index.d.ts +2 -2
  801. package/dist/ui/index.d.ts.map +1 -1
  802. package/dist/ui/index.js.map +1 -1
  803. package/dist/ui/inline-action/inline-action-preview.cjs +2 -2
  804. package/dist/ui/inline-action/inline-action-preview.d.ts +1 -1
  805. package/dist/ui/inline-action/inline-action-preview.d.ts.map +1 -1
  806. package/dist/ui/inline-action/inline-action-preview.js +2 -2
  807. package/dist/ui/inline-action/inline-action.d.ts +1 -1
  808. package/dist/ui/inline-action/inline-action.d.ts.map +1 -1
  809. package/dist/ui/inline-filter/inline-filter-preview.cjs +4 -4
  810. package/dist/ui/inline-filter/inline-filter-preview.d.ts +1 -1
  811. package/dist/ui/inline-filter/inline-filter-preview.d.ts.map +1 -1
  812. package/dist/ui/inline-filter/inline-filter-preview.js +4 -4
  813. package/dist/ui/inline-filter/inline-filter.d.ts +1 -1
  814. package/dist/ui/inline-filter/inline-filter.d.ts.map +1 -1
  815. package/dist/ui/input/input-preview.cjs +1 -1
  816. package/dist/ui/input/input-preview.d.ts +1 -1
  817. package/dist/ui/input/input-preview.d.ts.map +1 -1
  818. package/dist/ui/input/input-preview.js +1 -1
  819. package/dist/ui/input/input.d.ts +3 -3
  820. package/dist/ui/input/input.d.ts.map +1 -1
  821. package/dist/ui/input/select-preview.cjs +1 -1
  822. package/dist/ui/input/select-preview.d.ts +1 -1
  823. package/dist/ui/input/select-preview.d.ts.map +1 -1
  824. package/dist/ui/input/select-preview.js +1 -1
  825. package/dist/ui/input/textarea-preview.cjs +1 -1
  826. package/dist/ui/input/textarea-preview.d.ts +1 -1
  827. package/dist/ui/input/textarea-preview.d.ts.map +1 -1
  828. package/dist/ui/input/textarea-preview.js +1 -1
  829. package/dist/ui/input-with-icon/input-with-icon-preview.cjs +2 -2
  830. package/dist/ui/input-with-icon/input-with-icon-preview.d.ts +1 -1
  831. package/dist/ui/input-with-icon/input-with-icon-preview.d.ts.map +1 -1
  832. package/dist/ui/input-with-icon/input-with-icon-preview.js +2 -2
  833. package/dist/ui/input-with-icon/input-with-icon.cjs +3 -3
  834. package/dist/ui/input-with-icon/input-with-icon.d.ts +1 -1
  835. package/dist/ui/input-with-icon/input-with-icon.d.ts.map +1 -1
  836. package/dist/ui/input-with-icon/input-with-icon.js +3 -3
  837. package/dist/ui/language-switcher/language-switcher-preview.cjs +1 -1
  838. package/dist/ui/language-switcher/language-switcher-preview.d.ts +1 -1
  839. package/dist/ui/language-switcher/language-switcher-preview.d.ts.map +1 -1
  840. package/dist/ui/language-switcher/language-switcher-preview.js +1 -1
  841. package/dist/ui/language-switcher/language-switcher.d.ts +1 -1
  842. package/dist/ui/language-switcher/language-switcher.d.ts.map +1 -1
  843. package/dist/ui/lifecycle-connector/lifecycle-connector-preview.cjs +1 -1
  844. package/dist/ui/lifecycle-connector/lifecycle-connector-preview.d.ts +1 -1
  845. package/dist/ui/lifecycle-connector/lifecycle-connector-preview.d.ts.map +1 -1
  846. package/dist/ui/lifecycle-connector/lifecycle-connector-preview.js +1 -1
  847. package/dist/ui/lifecycle-connector/lifecycle-connector.d.ts +1 -1
  848. package/dist/ui/lifecycle-connector/lifecycle-connector.d.ts.map +1 -1
  849. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot-preview.cjs +1 -1
  850. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot-preview.d.ts +1 -1
  851. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot-preview.d.ts.map +1 -1
  852. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot-preview.js +1 -1
  853. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot.cjs +1 -1
  854. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot.d.ts +1 -1
  855. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot.d.ts.map +1 -1
  856. package/dist/ui/lifecycle-drop-slot/lifecycle-drop-slot.js +1 -1
  857. package/dist/ui/lifecycle-edge-label/lifecycle-edge-label-preview.cjs +1 -1
  858. package/dist/ui/lifecycle-edge-label/lifecycle-edge-label-preview.d.ts +1 -1
  859. package/dist/ui/lifecycle-edge-label/lifecycle-edge-label-preview.d.ts.map +1 -1
  860. package/dist/ui/lifecycle-edge-label/lifecycle-edge-label-preview.js +1 -1
  861. package/dist/ui/lifecycle-edge-label/lifecycle-edge-label.d.ts +1 -1
  862. package/dist/ui/lifecycle-edge-label/lifecycle-edge-label.d.ts.map +1 -1
  863. package/dist/ui/lifecycle-group-box/lifecycle-group-box-preview.cjs +1 -1
  864. package/dist/ui/lifecycle-group-box/lifecycle-group-box-preview.d.ts +1 -1
  865. package/dist/ui/lifecycle-group-box/lifecycle-group-box-preview.d.ts.map +1 -1
  866. package/dist/ui/lifecycle-group-box/lifecycle-group-box-preview.js +1 -1
  867. package/dist/ui/lifecycle-group-box/lifecycle-group-box.d.ts +1 -1
  868. package/dist/ui/lifecycle-group-box/lifecycle-group-box.d.ts.map +1 -1
  869. package/dist/ui/lifecycle-minimap/lifecycle-minimap-preview.cjs +1 -1
  870. package/dist/ui/lifecycle-minimap/lifecycle-minimap-preview.d.ts +1 -1
  871. package/dist/ui/lifecycle-minimap/lifecycle-minimap-preview.d.ts.map +1 -1
  872. package/dist/ui/lifecycle-minimap/lifecycle-minimap-preview.js +1 -1
  873. package/dist/ui/lifecycle-minimap/lifecycle-minimap.d.ts +1 -1
  874. package/dist/ui/lifecycle-minimap/lifecycle-minimap.d.ts.map +1 -1
  875. package/dist/ui/lifecycle-node-card/lifecycle-node-card-preview.cjs +1 -1
  876. package/dist/ui/lifecycle-node-card/lifecycle-node-card-preview.d.ts +1 -1
  877. package/dist/ui/lifecycle-node-card/lifecycle-node-card-preview.d.ts.map +1 -1
  878. package/dist/ui/lifecycle-node-card/lifecycle-node-card-preview.js +1 -1
  879. package/dist/ui/lifecycle-node-card/lifecycle-node-card.cjs +2 -2
  880. package/dist/ui/lifecycle-node-card/lifecycle-node-card.d.ts +1 -1
  881. package/dist/ui/lifecycle-node-card/lifecycle-node-card.d.ts.map +1 -1
  882. package/dist/ui/lifecycle-node-card/lifecycle-node-card.js +2 -2
  883. package/dist/ui/lifecycle-terminal/lifecycle-terminal-preview.cjs +1 -1
  884. package/dist/ui/lifecycle-terminal/lifecycle-terminal-preview.d.ts +1 -1
  885. package/dist/ui/lifecycle-terminal/lifecycle-terminal-preview.d.ts.map +1 -1
  886. package/dist/ui/lifecycle-terminal/lifecycle-terminal-preview.js +1 -1
  887. package/dist/ui/lifecycle-terminal/lifecycle-terminal.d.ts +1 -1
  888. package/dist/ui/lifecycle-terminal/lifecycle-terminal.d.ts.map +1 -1
  889. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control-preview.cjs +1 -1
  890. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control-preview.d.ts +1 -1
  891. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control-preview.d.ts.map +1 -1
  892. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control-preview.js +1 -1
  893. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control.cjs +1 -1
  894. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control.d.ts +1 -1
  895. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control.d.ts.map +1 -1
  896. package/dist/ui/lifecycle-zoom-control/lifecycle-zoom-control.js +1 -1
  897. package/dist/ui/link/link-preview.cjs +1 -1
  898. package/dist/ui/link/link-preview.d.ts +1 -1
  899. package/dist/ui/link/link-preview.d.ts.map +1 -1
  900. package/dist/ui/link/link-preview.js +1 -1
  901. package/dist/ui/link/link.d.ts +1 -1
  902. package/dist/ui/link/link.d.ts.map +1 -1
  903. package/dist/ui/list/list-item-preview.cjs +3 -3
  904. package/dist/ui/list/list-item-preview.d.ts +1 -1
  905. package/dist/ui/list/list-item-preview.d.ts.map +1 -1
  906. package/dist/ui/list/list-item-preview.js +3 -3
  907. package/dist/ui/list/list.d.ts +2 -2
  908. package/dist/ui/list/list.d.ts.map +1 -1
  909. package/dist/ui/listbox/listbox-preview.cjs +1 -1
  910. package/dist/ui/listbox/listbox-preview.d.ts +1 -1
  911. package/dist/ui/listbox/listbox-preview.d.ts.map +1 -1
  912. package/dist/ui/listbox/listbox-preview.js +1 -1
  913. package/dist/ui/listbox/listbox.d.ts +2 -2
  914. package/dist/ui/listbox/listbox.d.ts.map +1 -1
  915. package/dist/ui/loader/loader-preview.d.ts +1 -1
  916. package/dist/ui/loader/loader-preview.d.ts.map +1 -1
  917. package/dist/ui/loader/loader.d.ts +1 -1
  918. package/dist/ui/loader/loader.d.ts.map +1 -1
  919. package/dist/ui/locale/locale.d.ts +1 -1
  920. package/dist/ui/locale/locale.d.ts.map +1 -1
  921. package/dist/ui/menu/menu-preview.cjs +1 -1
  922. package/dist/ui/menu/menu-preview.d.ts +1 -1
  923. package/dist/ui/menu/menu-preview.d.ts.map +1 -1
  924. package/dist/ui/menu/menu-preview.js +1 -1
  925. package/dist/ui/menu/menu.d.ts +1 -1
  926. package/dist/ui/menu/menu.d.ts.map +1 -1
  927. package/dist/ui/meta-row/meta-row-preview.cjs +1 -1
  928. package/dist/ui/meta-row/meta-row-preview.d.ts +1 -1
  929. package/dist/ui/meta-row/meta-row-preview.d.ts.map +1 -1
  930. package/dist/ui/meta-row/meta-row-preview.js +1 -1
  931. package/dist/ui/meta-row/meta-row.d.ts +1 -1
  932. package/dist/ui/meta-row/meta-row.d.ts.map +1 -1
  933. package/dist/ui/modal/modal-preview.cjs +1 -1
  934. package/dist/ui/modal/modal-preview.d.ts +1 -1
  935. package/dist/ui/modal/modal-preview.d.ts.map +1 -1
  936. package/dist/ui/modal/modal-preview.js +1 -1
  937. package/dist/ui/modal/modal.cjs +13 -15
  938. package/dist/ui/modal/modal.cjs.map +1 -1
  939. package/dist/ui/modal/modal.d.ts +23 -5
  940. package/dist/ui/modal/modal.d.ts.map +1 -1
  941. package/dist/ui/modal/modal.js +13 -16
  942. package/dist/ui/modal/modal.js.map +1 -1
  943. package/dist/ui/number-input/number-input-preview.cjs +1 -1
  944. package/dist/ui/number-input/number-input-preview.d.ts +1 -1
  945. package/dist/ui/number-input/number-input-preview.d.ts.map +1 -1
  946. package/dist/ui/number-input/number-input-preview.js +1 -1
  947. package/dist/ui/number-input/number-input.cjs +3 -3
  948. package/dist/ui/number-input/number-input.d.ts +1 -1
  949. package/dist/ui/number-input/number-input.d.ts.map +1 -1
  950. package/dist/ui/number-input/number-input.js +3 -3
  951. package/dist/ui/number-stepper/number-stepper-preview.cjs +1 -1
  952. package/dist/ui/number-stepper/number-stepper-preview.d.ts +1 -1
  953. package/dist/ui/number-stepper/number-stepper-preview.d.ts.map +1 -1
  954. package/dist/ui/number-stepper/number-stepper-preview.js +1 -1
  955. package/dist/ui/number-stepper/number-stepper.d.ts +1 -1
  956. package/dist/ui/number-stepper/number-stepper.d.ts.map +1 -1
  957. package/dist/ui/option-list/option-list-preview.cjs +1 -1
  958. package/dist/ui/option-list/option-list-preview.d.ts +1 -1
  959. package/dist/ui/option-list/option-list-preview.d.ts.map +1 -1
  960. package/dist/ui/option-list/option-list-preview.js +1 -1
  961. package/dist/ui/option-list/option-list.cjs +1 -1
  962. package/dist/ui/option-list/option-list.d.ts +1 -1
  963. package/dist/ui/option-list/option-list.d.ts.map +1 -1
  964. package/dist/ui/option-list/option-list.js +1 -1
  965. package/dist/ui/page-header/page-header-preview.cjs +3 -3
  966. package/dist/ui/page-header/page-header-preview.d.ts +1 -1
  967. package/dist/ui/page-header/page-header-preview.d.ts.map +1 -1
  968. package/dist/ui/page-header/page-header-preview.js +3 -3
  969. package/dist/ui/page-header/page-header.d.ts +1 -1
  970. package/dist/ui/page-header/page-header.d.ts.map +1 -1
  971. package/dist/ui/page-shell/page-shell-preview.cjs +7 -7
  972. package/dist/ui/page-shell/page-shell-preview.d.ts +1 -1
  973. package/dist/ui/page-shell/page-shell-preview.d.ts.map +1 -1
  974. package/dist/ui/page-shell/page-shell-preview.js +7 -7
  975. package/dist/ui/page-shell/page-shell.cjs.map +1 -1
  976. package/dist/ui/page-shell/page-shell.d.ts +2 -2
  977. package/dist/ui/page-shell/page-shell.d.ts.map +1 -1
  978. package/dist/ui/page-shell/page-shell.js.map +1 -1
  979. package/dist/ui/password-input/password-input-preview.cjs +1 -1
  980. package/dist/ui/password-input/password-input-preview.d.ts +1 -1
  981. package/dist/ui/password-input/password-input-preview.d.ts.map +1 -1
  982. package/dist/ui/password-input/password-input-preview.js +1 -1
  983. package/dist/ui/password-input/password-input.d.ts +1 -1
  984. package/dist/ui/password-input/password-input.d.ts.map +1 -1
  985. package/dist/ui/phone-input/phone-input-preview.cjs +1 -1
  986. package/dist/ui/phone-input/phone-input-preview.d.ts +1 -1
  987. package/dist/ui/phone-input/phone-input-preview.d.ts.map +1 -1
  988. package/dist/ui/phone-input/phone-input-preview.js +1 -1
  989. package/dist/ui/phone-input/phone-input.d.ts +1 -1
  990. package/dist/ui/phone-input/phone-input.d.ts.map +1 -1
  991. package/dist/ui/pill-select/pill-select-preview.cjs +1 -1
  992. package/dist/ui/pill-select/pill-select-preview.d.ts +1 -1
  993. package/dist/ui/pill-select/pill-select-preview.d.ts.map +1 -1
  994. package/dist/ui/pill-select/pill-select-preview.js +1 -1
  995. package/dist/ui/pill-select/pill-select.d.ts +1 -1
  996. package/dist/ui/pill-select/pill-select.d.ts.map +1 -1
  997. package/dist/ui/popover/popover.d.ts +1 -1
  998. package/dist/ui/popover/popover.d.ts.map +1 -1
  999. package/dist/ui/progress-bar/progress-bar-preview.cjs +1 -1
  1000. package/dist/ui/progress-bar/progress-bar-preview.d.ts +1 -1
  1001. package/dist/ui/progress-bar/progress-bar-preview.d.ts.map +1 -1
  1002. package/dist/ui/progress-bar/progress-bar-preview.js +1 -1
  1003. package/dist/ui/progress-bar/progress-bar.d.ts +1 -1
  1004. package/dist/ui/progress-bar/progress-bar.d.ts.map +1 -1
  1005. package/dist/ui/property-field/property-field-preview.cjs +1 -1
  1006. package/dist/ui/property-field/property-field-preview.d.ts +1 -1
  1007. package/dist/ui/property-field/property-field-preview.d.ts.map +1 -1
  1008. package/dist/ui/property-field/property-field-preview.js +1 -1
  1009. package/dist/ui/property-field/property-field.d.ts +2 -2
  1010. package/dist/ui/property-field/property-field.d.ts.map +1 -1
  1011. package/dist/ui/property-field/property-grid-preview.cjs +1 -1
  1012. package/dist/ui/property-field/property-grid-preview.d.ts +1 -1
  1013. package/dist/ui/property-field/property-grid-preview.d.ts.map +1 -1
  1014. package/dist/ui/property-field/property-grid-preview.js +1 -1
  1015. package/dist/ui/radio-group/radio-group-preview.cjs +1 -1
  1016. package/dist/ui/radio-group/radio-group-preview.d.ts +1 -1
  1017. package/dist/ui/radio-group/radio-group-preview.d.ts.map +1 -1
  1018. package/dist/ui/radio-group/radio-group-preview.js +1 -1
  1019. package/dist/ui/radio-group/radio-group.cjs +1 -1
  1020. package/dist/ui/radio-group/radio-group.d.ts +2 -2
  1021. package/dist/ui/radio-group/radio-group.d.ts.map +1 -1
  1022. package/dist/ui/radio-group/radio-group.js +1 -1
  1023. package/dist/ui/range-slider/range-slider.d.ts +1 -1
  1024. package/dist/ui/range-slider/range-slider.d.ts.map +1 -1
  1025. package/dist/ui/responsive-grid/responsive-grid-preview.cjs +1 -1
  1026. package/dist/ui/responsive-grid/responsive-grid-preview.d.ts +1 -1
  1027. package/dist/ui/responsive-grid/responsive-grid-preview.d.ts.map +1 -1
  1028. package/dist/ui/responsive-grid/responsive-grid-preview.js +1 -1
  1029. package/dist/ui/responsive-grid/responsive-grid.d.ts +1 -1
  1030. package/dist/ui/responsive-grid/responsive-grid.d.ts.map +1 -1
  1031. package/dist/ui/search-dropdown/search-dropdown-preview.cjs +3 -3
  1032. package/dist/ui/search-dropdown/search-dropdown-preview.d.ts +1 -1
  1033. package/dist/ui/search-dropdown/search-dropdown-preview.d.ts.map +1 -1
  1034. package/dist/ui/search-dropdown/search-dropdown-preview.js +3 -3
  1035. package/dist/ui/search-dropdown/search-dropdown.d.ts +1 -1
  1036. package/dist/ui/search-dropdown/search-dropdown.d.ts.map +1 -1
  1037. package/dist/ui/section-header/section-header-preview.cjs +3 -3
  1038. package/dist/ui/section-header/section-header-preview.d.ts +1 -1
  1039. package/dist/ui/section-header/section-header-preview.d.ts.map +1 -1
  1040. package/dist/ui/section-header/section-header-preview.js +3 -3
  1041. package/dist/ui/section-header/section-header.d.ts +1 -1
  1042. package/dist/ui/section-header/section-header.d.ts.map +1 -1
  1043. package/dist/ui/segment-card/segment-card-preview.cjs +1 -1
  1044. package/dist/ui/segment-card/segment-card-preview.d.ts +1 -1
  1045. package/dist/ui/segment-card/segment-card-preview.d.ts.map +1 -1
  1046. package/dist/ui/segment-card/segment-card-preview.js +1 -1
  1047. package/dist/ui/segment-card/segment-card.d.ts +1 -1
  1048. package/dist/ui/segment-card/segment-card.d.ts.map +1 -1
  1049. package/dist/ui/segment-row/segment-row-preview.cjs +1 -1
  1050. package/dist/ui/segment-row/segment-row-preview.d.ts +1 -1
  1051. package/dist/ui/segment-row/segment-row-preview.d.ts.map +1 -1
  1052. package/dist/ui/segment-row/segment-row-preview.js +1 -1
  1053. package/dist/ui/segment-row/segment-row.cjs +1 -1
  1054. package/dist/ui/segment-row/segment-row.d.ts +1 -1
  1055. package/dist/ui/segment-row/segment-row.d.ts.map +1 -1
  1056. package/dist/ui/segment-row/segment-row.js +1 -1
  1057. package/dist/ui/side-flexpane/side-flexpane-preview.cjs +1 -1
  1058. package/dist/ui/side-flexpane/side-flexpane-preview.d.ts +1 -1
  1059. package/dist/ui/side-flexpane/side-flexpane-preview.d.ts.map +1 -1
  1060. package/dist/ui/side-flexpane/side-flexpane-preview.js +1 -1
  1061. package/dist/ui/side-flexpane/side-flexpane.d.ts +1 -1
  1062. package/dist/ui/side-flexpane/side-flexpane.d.ts.map +1 -1
  1063. package/dist/ui/sidebar-nav-item/sidebar-nav-item-preview.cjs +2 -2
  1064. package/dist/ui/sidebar-nav-item/sidebar-nav-item-preview.d.ts +1 -1
  1065. package/dist/ui/sidebar-nav-item/sidebar-nav-item-preview.d.ts.map +1 -1
  1066. package/dist/ui/sidebar-nav-item/sidebar-nav-item-preview.js +2 -2
  1067. package/dist/ui/sidebar-nav-item/sidebar-nav-item.d.ts +1 -1
  1068. package/dist/ui/sidebar-nav-item/sidebar-nav-item.d.ts.map +1 -1
  1069. package/dist/ui/sidebar-nav-trigger/sidebar-nav-trigger-preview.cjs +1 -1
  1070. package/dist/ui/sidebar-nav-trigger/sidebar-nav-trigger-preview.d.ts +1 -1
  1071. package/dist/ui/sidebar-nav-trigger/sidebar-nav-trigger-preview.d.ts.map +1 -1
  1072. package/dist/ui/sidebar-nav-trigger/sidebar-nav-trigger-preview.js +1 -1
  1073. package/dist/ui/sidebar-nav-trigger/sidebar-nav-trigger.d.ts +1 -1
  1074. package/dist/ui/sidebar-nav-trigger/sidebar-nav-trigger.d.ts.map +1 -1
  1075. package/dist/ui/slider/slider-preview.cjs +2 -2
  1076. package/dist/ui/slider/slider-preview.d.ts +1 -1
  1077. package/dist/ui/slider/slider-preview.d.ts.map +1 -1
  1078. package/dist/ui/slider/slider-preview.js +2 -2
  1079. package/dist/ui/slider/slider.d.ts +1 -1
  1080. package/dist/ui/slider/slider.d.ts.map +1 -1
  1081. package/dist/ui/stack/stack-preview.cjs +1 -1
  1082. package/dist/ui/stack/stack-preview.d.ts +1 -1
  1083. package/dist/ui/stack/stack-preview.d.ts.map +1 -1
  1084. package/dist/ui/stack/stack-preview.js +1 -1
  1085. package/dist/ui/stack/stack.d.ts +1 -1
  1086. package/dist/ui/stack/stack.d.ts.map +1 -1
  1087. package/dist/ui/stat-card/stat-card-preview.cjs +1 -1
  1088. package/dist/ui/stat-card/stat-card-preview.d.ts +1 -1
  1089. package/dist/ui/stat-card/stat-card-preview.d.ts.map +1 -1
  1090. package/dist/ui/stat-card/stat-card-preview.js +1 -1
  1091. package/dist/ui/stat-card/stat-card.cjs +1 -1
  1092. package/dist/ui/stat-card/stat-card.d.ts +1 -1
  1093. package/dist/ui/stat-card/stat-card.d.ts.map +1 -1
  1094. package/dist/ui/stat-card/stat-card.js +1 -1
  1095. package/dist/ui/styles.css +1 -1
  1096. package/dist/ui/tabs/tabs-preview.cjs +2 -2
  1097. package/dist/ui/tabs/tabs-preview.d.ts +1 -1
  1098. package/dist/ui/tabs/tabs-preview.d.ts.map +1 -1
  1099. package/dist/ui/tabs/tabs-preview.js +2 -2
  1100. package/dist/ui/tabs/tabs.d.ts +1 -1
  1101. package/dist/ui/tabs/tabs.d.ts.map +1 -1
  1102. package/dist/ui/tabs-underline/tabs-underline-preview.cjs +2 -2
  1103. package/dist/ui/tabs-underline/tabs-underline-preview.d.ts +1 -1
  1104. package/dist/ui/tabs-underline/tabs-underline-preview.d.ts.map +1 -1
  1105. package/dist/ui/tabs-underline/tabs-underline-preview.js +2 -2
  1106. package/dist/ui/tabs-underline/tabs-underline.d.ts +1 -1
  1107. package/dist/ui/tabs-underline/tabs-underline.d.ts.map +1 -1
  1108. package/dist/ui/tag/tag-preview.cjs +2 -2
  1109. package/dist/ui/tag/tag-preview.d.ts +1 -1
  1110. package/dist/ui/tag/tag-preview.d.ts.map +1 -1
  1111. package/dist/ui/tag/tag-preview.js +2 -2
  1112. package/dist/ui/tag/tag.d.ts +1 -1
  1113. package/dist/ui/tag/tag.d.ts.map +1 -1
  1114. package/dist/ui/thumbnail/thumbnail-preview.cjs +1 -1
  1115. package/dist/ui/thumbnail/thumbnail-preview.d.ts +1 -1
  1116. package/dist/ui/thumbnail/thumbnail-preview.d.ts.map +1 -1
  1117. package/dist/ui/thumbnail/thumbnail-preview.js +1 -1
  1118. package/dist/ui/thumbnail/thumbnail.cjs +1 -1
  1119. package/dist/ui/thumbnail/thumbnail.d.ts +1 -1
  1120. package/dist/ui/thumbnail/thumbnail.d.ts.map +1 -1
  1121. package/dist/ui/thumbnail/thumbnail.js +1 -1
  1122. package/dist/ui/time-input/time-input-preview.cjs +1 -1
  1123. package/dist/ui/time-input/time-input-preview.d.ts +1 -1
  1124. package/dist/ui/time-input/time-input-preview.d.ts.map +1 -1
  1125. package/dist/ui/time-input/time-input-preview.js +1 -1
  1126. package/dist/ui/time-input/time-input.d.ts +1 -1
  1127. package/dist/ui/time-input/time-input.d.ts.map +1 -1
  1128. package/dist/ui/timeline-entry/timeline-entry-preview.cjs +2 -2
  1129. package/dist/ui/timeline-entry/timeline-entry-preview.d.ts +1 -1
  1130. package/dist/ui/timeline-entry/timeline-entry-preview.d.ts.map +1 -1
  1131. package/dist/ui/timeline-entry/timeline-entry-preview.js +2 -2
  1132. package/dist/ui/timeline-entry/timeline-entry.d.ts +1 -1
  1133. package/dist/ui/timeline-entry/timeline-entry.d.ts.map +1 -1
  1134. package/dist/ui/toast/toast-preview.cjs +1 -1
  1135. package/dist/ui/toast/toast-preview.d.ts +1 -1
  1136. package/dist/ui/toast/toast-preview.d.ts.map +1 -1
  1137. package/dist/ui/toast/toast-preview.js +1 -1
  1138. package/dist/ui/toast/toast.cjs.map +1 -1
  1139. package/dist/ui/toast/toast.d.ts +3 -3
  1140. package/dist/ui/toast/toast.d.ts.map +1 -1
  1141. package/dist/ui/toast/toast.js.map +1 -1
  1142. package/dist/ui/toggle-switch/toggle-preview.cjs +1 -1
  1143. package/dist/ui/toggle-switch/toggle-preview.d.ts +1 -1
  1144. package/dist/ui/toggle-switch/toggle-preview.d.ts.map +1 -1
  1145. package/dist/ui/toggle-switch/toggle-preview.js +1 -1
  1146. package/dist/ui/toggle-switch/toggle-switch.cjs +1 -1
  1147. package/dist/ui/toggle-switch/toggle-switch.d.ts +1 -1
  1148. package/dist/ui/toggle-switch/toggle-switch.d.ts.map +1 -1
  1149. package/dist/ui/toggle-switch/toggle-switch.js +1 -1
  1150. package/dist/ui/tooltip/content-tooltip-preview.cjs +1 -1
  1151. package/dist/ui/tooltip/content-tooltip-preview.d.ts +1 -1
  1152. package/dist/ui/tooltip/content-tooltip-preview.d.ts.map +1 -1
  1153. package/dist/ui/tooltip/content-tooltip-preview.js +1 -1
  1154. package/dist/ui/tooltip/tooltip-preview.d.ts +1 -1
  1155. package/dist/ui/tooltip/tooltip-preview.d.ts.map +1 -1
  1156. package/dist/ui/tooltip/tooltip.d.ts +2 -2
  1157. package/dist/ui/tooltip/tooltip.d.ts.map +1 -1
  1158. package/dist/ui/type-overview-card/type-overview-card-preview.cjs +2 -2
  1159. package/dist/ui/type-overview-card/type-overview-card-preview.d.ts +1 -1
  1160. package/dist/ui/type-overview-card/type-overview-card-preview.d.ts.map +1 -1
  1161. package/dist/ui/type-overview-card/type-overview-card-preview.js +2 -2
  1162. package/dist/ui/type-overview-card/type-overview-card.cjs +2 -2
  1163. package/dist/ui/type-overview-card/type-overview-card.d.ts +1 -1
  1164. package/dist/ui/type-overview-card/type-overview-card.d.ts.map +1 -1
  1165. package/dist/ui/type-overview-card/type-overview-card.js +2 -2
  1166. package/dist/ui/view-switcher/view-switcher-preview.cjs +2 -2
  1167. package/dist/ui/view-switcher/view-switcher-preview.d.ts +1 -1
  1168. package/dist/ui/view-switcher/view-switcher-preview.d.ts.map +1 -1
  1169. package/dist/ui/view-switcher/view-switcher-preview.js +2 -2
  1170. package/dist/ui/view-switcher/view-switcher.d.ts +1 -1
  1171. package/dist/ui/view-switcher/view-switcher.d.ts.map +1 -1
  1172. package/package.json +23 -8
  1173. package/dist/studio/lib/registry/composite.cjs +0 -1732
  1174. package/dist/studio/lib/registry/composite.cjs.map +0 -1
  1175. package/dist/studio/lib/registry/composite.d.ts +0 -3
  1176. package/dist/studio/lib/registry/composite.d.ts.map +0 -1
  1177. package/dist/studio/lib/registry/composite.js +0 -1708
  1178. package/dist/studio/lib/registry/composite.js.map +0 -1
  1179. package/dist/studio/lib/registry/inputs.cjs +0 -1980
  1180. package/dist/studio/lib/registry/inputs.cjs.map +0 -1
  1181. package/dist/studio/lib/registry/inputs.d.ts +0 -3
  1182. package/dist/studio/lib/registry/inputs.d.ts.map +0 -1
  1183. package/dist/studio/lib/registry/inputs.js +0 -1956
  1184. package/dist/studio/lib/registry/inputs.js.map +0 -1
  1185. package/dist/studio/shell/properties-panel.cjs +0 -873
  1186. package/dist/studio/shell/properties-panel.cjs.map +0 -1
  1187. package/dist/studio/shell/properties-panel.d.ts.map +0 -1
  1188. package/dist/studio/shell/properties-panel.js +0 -849
  1189. package/dist/studio/shell/properties-panel.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/studio/persistence/generate-css.ts"],"sourcesContent":["import type { AllOverrides } from './types';\nimport type { BrandConfig } from '../lib/types';\n\n/**\n * Pure CSS generator for UXM Studio overrides.\n *\n * Single source of truth (R5): the modo Hono `/api/uxm/save` route imports\n * `generateOverridesCss` from here instead of keeping its own copy. No Node\n * APIs — runs in browser (client export) and server alike.\n *\n * Emits a stylesheet from per-component style overrides plus brand config\n * (font, logo/icon URLs, brand token blocks). All attacker-controlled brand\n * values are sanitised before interpolation because the output is served to\n * every browser session.\n */\n\nconst BRAND_FONT_WEIGHTS = 'wght@400;500;600;700';\n\nexport function fontFileUrl(fontFamily: string): string {\n const encoded = fontFamily.trim().replace(/\\s+/g, '+');\n return `https://fonts.googleapis.com/css2?family=${encoded}:${BRAND_FONT_WEIGHTS}&display=swap`;\n}\n\nconst REAL_CSS_PROPS = new Set([\n 'background', 'backgroundColor',\n 'color',\n 'border', 'borderColor', 'borderRadius', 'borderWidth', 'borderStyle',\n 'padding', 'paddingX', 'paddingY', 'margin',\n 'gap', 'rowGap', 'columnGap',\n 'width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight',\n 'fontSize', 'fontWeight', 'fontFamily', 'lineHeight',\n 'opacity',\n 'cursor', 'display', 'position', 'overflow', 'direction',\n]);\n\n// Per-component selector overrides for the emitted rule. Defaults to\n// `.uxm-{id}`. Override when the atom renders the styled element via a PORTAL\n// (Listbox / Popover panel mounts to document.body): CSS custom properties\n// cascade DOWN from the declaring element, so vars on the in-page wrapper\n// never reach a portaled descendant. Emit on BOTH wrapper and panel selector.\nconst PER_COMPONENT_SELECTOR: Record<string, string> = {\n listbox: '.uxm-listbox, .uxm-listbox__panel',\n // Menu mirrors Listbox: the `.uxm-menu` wrapper lives in-page around the\n // trigger, but the `.uxm-menu__panel` portals to document.body, so vars on\n // the wrapper never reach it. Emit on both so the panel carries them.\n menu: '.uxm-menu, .uxm-menu__panel',\n // PhoneInput no longer needs a panel-scoped selector: its country picker\n // now delegates to the shared `Listbox`, whose portaled panel already gets\n // its vars via the `listbox` entry above. All `--uxm-phone-input-*` knobs\n // target the in-page field, so the default `.uxm-phone-input` selector is\n // correct.\n};\n\n// One knob → one variable. A multi-target (string[]) form was briefly added so\n// Card's Row Gap could write both the Stack and Cluster gap vars; that was the\n// only use, and it was the wrong shape (see the `card` entry below), so the\n// mapping stays single-target on purpose — a knob that themes a SIBLING atom's\n// var cannot win against that atom's own knob.\nconst PER_COMPONENT_MAPPING: Record<string, Record<string, string>> = {\n 'input-with-icon': {\n backgroundColor: '--uxm-input-with-icon-bg',\n borderColor: '--uxm-input-with-icon-border-color',\n borderRadius: '--uxm-input-with-icon-radius',\n paddingX: '--uxm-input-with-icon-padding-x',\n paddingY: '--uxm-input-with-icon-padding-y',\n fontSize: '--uxm-input-with-icon-font-size',\n color: '--uxm-input-with-icon-color',\n },\n 'input-text': {\n backgroundColor: '--uxm-input-text-bg',\n borderColor: '--uxm-input-text-border-color',\n color: '--uxm-input-text-color',\n borderRadius: '--uxm-input-text-border-radius',\n paddingX: '--uxm-input-text-padding-x',\n paddingY: '--uxm-input-text-padding-y',\n fontSize: '--uxm-input-text-font-size',\n },\n 'number-input': {\n backgroundColor: '--uxm-number-input-bg',\n borderColor: '--uxm-number-input-border-color',\n color: '--uxm-number-input-color',\n borderRadius: '--uxm-number-input-border-radius',\n paddingX: '--uxm-number-input-padding-x',\n paddingY: '--uxm-number-input-padding-y',\n fontSize: '--uxm-number-input-font-size',\n },\n // Every key below collides with REAL_CSS_PROPS. The atom passes its class to\n // `Listbox`, so the emitted rule lands on that in-page ROOT while the styled\n // element is the `__trigger` child, which declares its own `color`,\n // `border-color`, `font-size` and `gap` from `--uxm-language-switcher-*` and\n // therefore beats anything inherited — every one of these would be a silent\n // no-op. Padding is worse: `padding-inline` on the root pads OUTSIDE the\n // button while the trigger keeps its default 10px/7px.\n 'language-switcher': {\n color: '--uxm-language-switcher-color',\n borderColor: '--uxm-language-switcher-border-color',\n fontSize: '--uxm-language-switcher-font-size',\n gap: '--uxm-language-switcher-gap',\n paddingX: '--uxm-language-switcher-padding-x',\n paddingY: '--uxm-language-switcher-padding-y',\n },\n // Without this entry `fontSize` falls through REAL_CSS_PROPS and emits a\n // literal `font-size` on `.uxm-color-input`, which the atom's own children\n // (`__value-field`, `__format`) always beat — so the knob did nothing at all.\n 'color-input': {\n fontSize: '--uxm-color-input-font-size',\n },\n // Every key here collides with REAL_CSS_PROPS, where the generic fallback\n // emits a REAL property on `.uxm-code-editor` instead of a var. That root is\n // pure chrome — the text lives in `__input` / `__gutter-lines`, which declare\n // their own `color` / `font-size` / `line-height` and always beat inherited\n // values, so Text / Font Size / Line Height would be silent no-ops. Padding is\n // worse than a no-op: `padding-inline` on the root pads OUTSIDE the code while\n // `--uxm-code-editor-padding-x` stays unset, so the gutter's absolutely\n // positioned `left` keeps its 14px default and the numbers leave their column.\n // Same defect as the `color-input` entry above.\n 'code-editor': {\n backgroundColor: '--uxm-code-editor-bg',\n borderColor: '--uxm-code-editor-border-color',\n color: '--uxm-code-editor-color',\n borderRadius: '--uxm-code-editor-border-radius',\n paddingX: '--uxm-code-editor-padding-x',\n paddingY: '--uxm-code-editor-padding-y',\n fontSize: '--uxm-code-editor-font-size',\n lineHeight: '--uxm-code-editor-line-height',\n minHeight: '--uxm-code-editor-min-height',\n },\n 'currency-input': {\n backgroundColor: '--uxm-currency-input-background-color',\n borderColor: '--uxm-currency-input-border-color',\n borderRadius: '--uxm-currency-input-border-radius',\n paddingX: '--uxm-currency-input-padding-x',\n paddingY: '--uxm-currency-input-padding-y',\n fontSize: '--uxm-currency-input-font-size',\n color: '--uxm-currency-input-color',\n },\n textarea: {\n backgroundColor: '--uxm-textarea-bg',\n borderColor: '--uxm-textarea-border-color',\n color: '--uxm-textarea-color',\n minHeight: '--uxm-textarea-min-height',\n borderRadius: '--uxm-textarea-border-radius',\n paddingX: '--uxm-textarea-padding-x',\n paddingY: '--uxm-textarea-padding-y',\n fontSize: '--uxm-textarea-font-size',\n },\n 'file-upload': {\n backgroundColor: '--uxm-file-upload-bg',\n borderColor: '--uxm-file-upload-border-color',\n color: '--uxm-file-upload-color',\n borderRadius: '--uxm-file-upload-border-radius',\n borderStyle: '--uxm-file-upload-border-style',\n borderWidth: '--uxm-file-upload-border-width',\n paddingX: '--uxm-file-upload-padding-x',\n paddingY: '--uxm-file-upload-padding-y',\n minHeight: '--uxm-file-upload-min-height',\n gap: '--uxm-file-upload-gap',\n rowGap: '--uxm-file-upload-row-gap',\n },\n 'select-dropdown': {\n backgroundColor: '--uxm-select-dropdown-bg',\n borderColor: '--uxm-select-dropdown-border-color',\n color: '--uxm-select-dropdown-color',\n borderRadius: '--uxm-select-dropdown-border-radius',\n paddingX: '--uxm-select-dropdown-padding-x',\n paddingY: '--uxm-select-dropdown-padding-y',\n fontSize: '--uxm-select-dropdown-font-size',\n },\n 'date-input': {\n backgroundColor: '--uxm-date-input-background-color',\n borderColor: '--uxm-date-input-border-color',\n borderRadius: '--uxm-date-input-border-radius',\n paddingX: '--uxm-date-input-padding-x',\n paddingY: '--uxm-date-input-padding-y',\n fontSize: '--uxm-date-input-font-size',\n color: '--uxm-date-input-color',\n },\n 'password-input': {\n backgroundColor: '--uxm-password-input-background-color',\n borderColor: '--uxm-password-input-border-color',\n borderRadius: '--uxm-password-input-border-radius',\n paddingX: '--uxm-password-input-padding-x',\n paddingY: '--uxm-password-input-padding-y',\n fontSize: '--uxm-password-input-font-size',\n color: '--uxm-password-input-color',\n },\n 'time-input': {\n backgroundColor: '--uxm-time-input-background-color',\n borderColor: '--uxm-time-input-border-color',\n borderRadius: '--uxm-time-input-border-radius',\n paddingX: '--uxm-time-input-padding-x',\n paddingY: '--uxm-time-input-padding-y',\n fontSize: '--uxm-time-input-font-size',\n color: '--uxm-time-input-color',\n },\n 'phone-input': {\n backgroundColor: '--uxm-phone-input-background-color',\n borderColor: '--uxm-phone-input-border-color',\n borderRadius: '--uxm-phone-input-border-radius',\n paddingX: '--uxm-phone-input-padding-x',\n paddingY: '--uxm-phone-input-padding-y',\n fontSize: '--uxm-phone-input-font-size',\n color: '--uxm-phone-input-color',\n },\n calendar: {\n backgroundColor: '--uxm-calendar-background-color',\n borderColor: '--uxm-calendar-border-color',\n borderRadius: '--uxm-calendar-border-radius',\n padding: '--uxm-calendar-padding',\n },\n tabs: {\n gap: '--uxm-tabs-gap',\n paddingX: '--uxm-tabs-padding-x',\n paddingY: '--uxm-tabs-padding-y',\n fontSize: '--uxm-tabs-font-size',\n fontWeight: '--uxm-tabs-font-weight',\n },\n 'tabs-underline': {\n gap: '--uxm-tabs-underline-gap',\n paddingX: '--uxm-tabs-underline-padding-x',\n paddingY: '--uxm-tabs-underline-padding-y',\n fontSize: '--uxm-tabs-underline-font-size',\n fontWeight: '--uxm-tabs-underline-font-weight',\n },\n 'filter-tabs': {\n gap: '--uxm-filter-tabs-gap',\n paddingX: '--uxm-filter-tabs-padding-x',\n paddingY: '--uxm-filter-tabs-padding-y',\n fontSize: '--uxm-filter-tabs-font-size',\n fontWeight: '--uxm-filter-tabs-font-weight',\n },\n 'view-switcher': {\n gap: '--uxm-view-switcher-gap',\n },\n 'button-group': {\n borderColor: '--uxm-button-group-border-color',\n borderRadius: '--uxm-button-group-border-radius',\n paddingX: '--uxm-button-group-padding-x',\n paddingY: '--uxm-button-group-padding-y',\n fontSize: '--uxm-button-group-font-size',\n },\n checkbox: {\n borderRadius: '--uxm-checkbox-border-radius',\n gap: '--uxm-checkbox-gap',\n },\n card: {\n backgroundColor: '--uxm-card-bg',\n borderColor: '--uxm-card-border-color',\n borderRadius: '--uxm-card-radius',\n padding: '--uxm-card-padding',\n // `gap` (\"Header Gap\") collides with REAL_CSS_PROPS — the generic fallback\n // would emit a literal `gap` property that `.uxm-card` never activates (the\n // card is only a flex column via the `--gap` modifier). Route it to the var\n // the modifier actually reads.\n //\n // There is deliberately NO Card knob for the CONTENT's row gap. It looks\n // like it belongs here, but the row gap is owned by the nested Stack /\n // Cluster, which already have their own Gap knobs — and those emit\n // `--uxm-stack-gap` DIRECTLY on `.uxm-stack`, where a directly-set custom\n // property always beats one inherited from `.uxm-card`. A Card-side knob\n // would therefore lose the moment anyone themed Stack, while also leaking\n // to every Stack/Cluster at any depth inside any card (custom properties\n // inherit). One owner per visual property; Card owns only its own gap.\n gap: '--uxm-card-gap',\n },\n 'toggle-switch': {\n width: '--uxm-toggle-switch-width',\n height: '--uxm-toggle-switch-height',\n },\n 'radio-group': {\n gap: '--uxm-radio-group-gap',\n },\n loader: {\n color: '--uxm-loader-color',\n gap: '--uxm-loader-gap',\n },\n 'data-table': {\n borderColor: '--uxm-data-table-border-color',\n fontSize: '--uxm-data-table-font-size',\n borderRadius: '--uxm-data-table-border-radius',\n },\n 'app-sidebar': {\n borderColor: '--uxm-app-sidebar-border-color',\n backgroundColor: '--uxm-app-sidebar-background-color',\n },\n // Every key here collides with REAL_CSS_PROPS, where the generic fallback\n // emits the LITERAL css property on the root selector instead of the var.\n //\n // For `fontSize` / `fontWeight` that is a silent no-op rather than a mere\n // detour: the atom reads those vars on `.uxm-sidebar-nav-trigger__value`, and\n // a `font-size` landing on the root is beaten by the child's own declaration.\n // The live workbench hides it — that path projects custom properties through\n // the preview's `buildVars`, so the knob only dies once a brand is SAVED.\n //\n // The rest (padding, gap, radius) do sit on the root and would survive the\n // literal route on source order alone, but they are mapped too: the sibling\n // `sidebar-nav-item` maps all six, and leaving half of them to cascade luck\n // invites exactly the question of which half.\n 'sidebar-nav-trigger': {\n paddingX: '--uxm-sidebar-nav-trigger-padding-x',\n paddingY: '--uxm-sidebar-nav-trigger-padding-y',\n fontSize: '--uxm-sidebar-nav-trigger-font-size',\n fontWeight: '--uxm-sidebar-nav-trigger-font-weight',\n gap: '--uxm-sidebar-nav-trigger-gap',\n borderRadius: '--uxm-sidebar-nav-trigger-border-radius',\n },\n 'sidebar-nav-item': {\n paddingX: '--uxm-sidebar-nav-item-padding-x',\n paddingY: '--uxm-sidebar-nav-item-padding-y',\n fontSize: '--uxm-sidebar-nav-item-font-size',\n fontWeight: '--uxm-sidebar-nav-item-font-weight',\n gap: '--uxm-sidebar-nav-item-gap',\n borderRadius: '--uxm-sidebar-nav-item-border-radius',\n },\n 'explorer-list-item': {\n paddingX: '--uxm-explorer-list-item-padding-x',\n paddingY: '--uxm-explorer-list-item-padding-y',\n fontSize: '--uxm-explorer-list-item-font-size',\n fontWeight: '--uxm-explorer-list-item-font-weight',\n gap: '--uxm-explorer-list-item-gap',\n borderRadius: '--uxm-explorer-list-item-border-radius',\n },\n 'app-top-bar': {\n borderColor: '--uxm-app-top-bar-border-color',\n backgroundColor: '--uxm-app-top-bar-background-color',\n height: '--uxm-app-top-bar-height',\n paddingX: '--uxm-app-top-bar-padding-x',\n gap: '--uxm-app-top-bar-gap',\n },\n 'explorer-section': {\n paddingX: '--uxm-explorer-section-padding-x',\n paddingY: '--uxm-explorer-section-padding-y',\n borderRadius: '--uxm-explorer-section-border-radius',\n gap: '--uxm-explorer-section-gap',\n fontSize: '--uxm-explorer-section-font-size',\n fontWeight: '--uxm-explorer-section-font-weight',\n },\n 'number-field': {\n backgroundColor: '--uxm-number-field-input-bg',\n borderColor: '--uxm-number-field-input-border',\n color: '--uxm-number-field-input-color',\n borderRadius: '--uxm-number-field-input-radius',\n paddingX: '--uxm-number-field-input-padding-x',\n paddingY: '--uxm-number-field-input-padding-y',\n fontSize: '--uxm-number-field-font-size',\n gap: '--uxm-number-field-gap',\n },\n 'icon-button': {\n color: '--uxm-icon-button-color',\n backgroundColor: '--uxm-icon-button-bg',\n hoverBackgroundColor: '--uxm-icon-button-hover-bg',\n activeBackgroundColor: '--uxm-icon-button-active-bg',\n borderRadius: '--uxm-icon-button-radius',\n },\n 'button-primary': {\n backgroundColor: '--uxm-button-primary-background-color',\n color: '--uxm-button-primary-color',\n borderRadius: '--uxm-button-primary-border-radius',\n fontSize: '--uxm-button-primary-font-size',\n fontWeight: '--uxm-button-primary-font-weight',\n paddingX: '--uxm-button-primary-padding-x',\n paddingY: '--uxm-button-primary-padding-y',\n },\n 'button-secondary': {\n backgroundColor: '--uxm-button-secondary-background-color',\n color: '--uxm-button-secondary-color',\n borderColor: '--uxm-button-secondary-border-color',\n borderRadius: '--uxm-button-secondary-border-radius',\n fontSize: '--uxm-button-secondary-font-size',\n fontWeight: '--uxm-button-secondary-font-weight',\n paddingX: '--uxm-button-secondary-padding-x',\n paddingY: '--uxm-button-secondary-padding-y',\n },\n 'button-tertiary': {\n backgroundColor: '--uxm-button-tertiary-background-color',\n color: '--uxm-button-tertiary-color',\n borderColor: '--uxm-button-tertiary-border-color',\n borderRadius: '--uxm-button-tertiary-border-radius',\n fontSize: '--uxm-button-tertiary-font-size',\n fontWeight: '--uxm-button-tertiary-font-weight',\n paddingX: '--uxm-button-tertiary-padding-x',\n paddingY: '--uxm-button-tertiary-padding-y',\n },\n 'button-ghost': {\n backgroundColor: '--uxm-button-ghost-background-color',\n color: '--uxm-button-ghost-color',\n borderRadius: '--uxm-button-ghost-border-radius',\n fontSize: '--uxm-button-ghost-font-size',\n fontWeight: '--uxm-button-ghost-font-weight',\n paddingX: '--uxm-button-ghost-padding-x',\n paddingY: '--uxm-button-ghost-padding-y',\n },\n 'button-danger': {\n backgroundColor: '--uxm-button-danger-background-color',\n color: '--uxm-button-danger-color',\n borderColor: '--uxm-button-danger-border-color',\n borderRadius: '--uxm-button-danger-border-radius',\n fontSize: '--uxm-button-danger-font-size',\n fontWeight: '--uxm-button-danger-font-weight',\n paddingX: '--uxm-button-danger-padding-x',\n paddingY: '--uxm-button-danger-padding-y',\n },\n 'button-with-icon': {\n backgroundColor: '--uxm-button-with-icon-background-color',\n color: '--uxm-button-with-icon-color',\n borderColor: '--uxm-button-with-icon-border-color',\n borderRadius: '--uxm-button-with-icon-border-radius',\n fontSize: '--uxm-button-with-icon-font-size',\n fontWeight: '--uxm-button-with-icon-font-weight',\n paddingX: '--uxm-button-with-icon-padding-x',\n paddingY: '--uxm-button-with-icon-padding-y',\n },\n 'button-icon': {\n backgroundColor: '--uxm-button-icon-background-color',\n color: '--uxm-button-icon-color',\n borderRadius: '--uxm-button-icon-border-radius',\n },\n 'back-link': {\n color: '--uxm-back-link-color',\n fontSize: '--uxm-back-link-font-size',\n fontWeight: '--uxm-back-link-font-weight',\n gap: '--uxm-back-link-gap',\n },\n breadcrumb: {\n fontSize: '--uxm-breadcrumb-font-size',\n gap: '--uxm-breadcrumb-gap',\n },\n disclosure: {\n paddingX: '--uxm-disclosure-padding-x',\n paddingY: '--uxm-disclosure-padding-y',\n fontSize: '--uxm-disclosure-font-size',\n gap: '--uxm-disclosure-gap',\n borderRadius: '--uxm-disclosure-border-radius',\n },\n 'side-flexpane': {\n paddingX: '--uxm-side-flexpane-padding-x',\n paddingY: '--uxm-side-flexpane-padding-y',\n backgroundColor: '--uxm-side-flexpane-background-color',\n borderColor: '--uxm-side-flexpane-border-color',\n borderRadius: '--uxm-side-flexpane-border-radius',\n width: '--uxm-side-flexpane-width',\n },\n 'list-item': {\n paddingX: '--uxm-list-item-padding-x',\n paddingY: '--uxm-list-item-padding-y',\n fontSize: '--uxm-list-item-font-size',\n gap: '--uxm-list-item-gap',\n borderRadius: '--uxm-list-item-border-radius',\n borderColor: '--uxm-list-item-border-color',\n },\n 'pill-select': {\n backgroundColor: '--uxm-pill-select-bg',\n borderColor: '--uxm-pill-select-border-color',\n paddingX: '--uxm-pill-select-padding-x',\n paddingY: '--uxm-pill-select-padding-y',\n },\n modal: {\n backgroundColor: '--uxm-modal-background-color',\n borderColor: '--uxm-modal-border-color',\n borderRadius: '--uxm-modal-border-radius',\n paddingX: '--uxm-modal-padding-x',\n paddingY: '--uxm-modal-padding-y',\n },\n toast: {\n backgroundColor: '--uxm-toast-background-color',\n color: '--uxm-toast-color',\n borderColor: '--uxm-toast-border-color',\n borderRadius: '--uxm-toast-border-radius',\n paddingX: '--uxm-toast-padding-x',\n paddingY: '--uxm-toast-padding-y',\n fontSize: '--uxm-toast-font-size',\n },\n avatar: {\n backgroundColor: '--uxm-avatar-background-color',\n borderColor: '--uxm-avatar-border-color',\n borderRadius: '--uxm-avatar-border-radius',\n borderWidth: '--uxm-avatar-border-width',\n color: '--uxm-avatar-color',\n fontSize: '--uxm-avatar-font-size',\n fontWeight: '--uxm-avatar-font-weight',\n },\n banner: {\n borderRadius: '--uxm-banner-border-radius',\n paddingX: '--uxm-banner-padding-x',\n paddingY: '--uxm-banner-padding-y',\n fontSize: '--uxm-banner-font-size',\n },\n 'bulk-action-bar': {\n backgroundColor: '--uxm-bulk-action-bar-background-color',\n color: '--uxm-bulk-action-bar-color',\n borderColor: '--uxm-bulk-action-bar-border-color',\n borderRadius: '--uxm-bulk-action-bar-border-radius',\n paddingX: '--uxm-bulk-action-bar-padding-x',\n paddingY: '--uxm-bulk-action-bar-padding-y',\n gap: '--uxm-bulk-action-bar-gap',\n fontSize: '--uxm-bulk-action-bar-font-size',\n },\n cluster: {\n gap: '--uxm-cluster-gap',\n },\n 'config-component-row': {\n padding: '--uxm-config-component-row-padding',\n borderRadius: '--uxm-config-component-row-radius',\n },\n 'config-segment-item': {\n paddingX: '--uxm-config-segment-item-padding-x',\n paddingY: '--uxm-config-segment-item-padding-y',\n borderRadius: '--uxm-config-segment-item-radius',\n },\n 'detail-section': {\n backgroundColor: '--uxm-detail-section-bg',\n borderColor: '--uxm-detail-section-border-color',\n borderRadius: '--uxm-detail-section-radius',\n padding: '--uxm-detail-section-padding',\n },\n divider: {\n color: '--uxm-divider-color',\n gap: '--uxm-divider-gap',\n },\n 'editable-cell': {\n // Dimensions are per-size keys (smallPaddingX, mediumMaxWidth, …) that\n // resolve via the generic `--uxm-editable-cell-{kebab(key)}` fallback in\n // toCSS; only the value colour needs an explicit entry (`color` is in\n // REAL_CSS_PROPS, so the fallback would emit a real CSS property that\n // outranks the component layer).\n color: '--uxm-editable-cell-color',\n // RETIRED knobs, kept mapped on purpose. The per-size split replaced these\n // four, but `generateOverridesCss` emits whatever keys are PERSISTED — not\n // what the registry currently declares — so a config saved before the split\n // still carries them. Without an entry here they'd fall through to\n // REAL_CSS_PROPS / the paddingX-paddingY special case in toCSS and emit\n // REAL `min-height` / `padding-inline` / `padding-block` declarations on\n // `.uxm-editable-cell`, which land in a sheet loaded after the library CSS\n // and would hard-override BOTH size presets (killing `medium`) and\n // resurrect the min-height the size work deliberately removed. Mapped to\n // their old, now-unread custom properties they are true no-ops instead.\n // Safe to delete once persisted overrides are pruned against the registry.\n minHeight: '--uxm-editable-cell-min-height',\n paddingX: '--uxm-editable-cell-padding-x',\n paddingY: '--uxm-editable-cell-padding-y',\n // `maxWidth` joined them when the cap went per-size: it is in\n // REAL_CSS_PROPS, so without this it would emit a real `max-width` that\n // pins BOTH presets (and would silently re-cap `medium`, whose whole point\n // is filling its container).\n maxWidth: '--uxm-editable-cell-max-width',\n },\n 'empty-state': {\n padding: '--uxm-empty-state-padding',\n },\n 'form-field': {\n gap: '--uxm-form-field-gap',\n // Per-tint label colours — the component reads `--uxm-form-field-label-\n // tint-*` (see form-field.scss tone classes); the generic kebab fallback\n // would emit `--uxm-form-field-tint-strong-color` etc., which nothing\n // reads, so the saved colour would silently not apply.\n tintStrongColor: '--uxm-form-field-label-tint-strong',\n tintDefaultColor: '--uxm-form-field-label-tint-default',\n tintMutedColor: '--uxm-form-field-label-tint-muted',\n // MIGRATION — `labelColor` was the single label-colour knob the tints\n // replaced. It is gone from the registry, but `generateOverridesCss` emits\n // whatever is PERSISTED, and its generic fallback lands on\n // `--uxm-form-field-label-color` — the very var the tint classes assign,\n // at equal specificity from a later sheet. Left alone it would beat ALL\n // THREE tints and silently disable them, with no knob left in the panel to\n // notice or clear it. Routed to the STRONG tint instead: strong was the\n // old (only) label colour and is still the default tone, so a pre-split\n // theme keeps the exact look it saved. A newly-saved `tintStrongColor`\n // still wins — overrides are appended, so it emits after this one.\n labelColor: '--uxm-form-field-label-tint-strong',\n },\n 'icon-tile': {\n borderRadius: '--uxm-icon-tile-radius',\n iconBg: '--uxm-icon-tile-bg',\n iconColor: '--uxm-icon-tile-color',\n },\n icon: {\n color: '--uxm-icon-color',\n },\n 'inline-action': {\n color: '--uxm-inline-action-color',\n fontSize: '--uxm-inline-action-font-size',\n fontWeight: '--uxm-inline-action-font-weight',\n gap: '--uxm-inline-action-gap',\n },\n 'inline-filter': {\n gap: '--uxm-inline-filter-gap',\n },\n 'lifecycle-edge-label': {\n paddingX: '--uxm-lifecycle-edge-label-padding-x',\n paddingY: '--uxm-lifecycle-edge-label-padding-y',\n borderRadius: '--uxm-lifecycle-edge-label-radius',\n borderWidth: '--uxm-lifecycle-edge-label-border-width',\n fontSize: '--uxm-lifecycle-edge-label-font-size',\n fontWeight: '--uxm-lifecycle-edge-label-font-weight',\n },\n // Same rule as lifecycle-group-box below — only the REAL_CSS_PROPS collisions\n // need an entry. `color` is the one that matters: a real `color` declaration\n // on `.uxm-lifecycle-drop-slot` from a later sheet would paint the text but\n // leave the dashes on the token, splitting a pair the atom deliberately drives\n // from one variable. The shape-scoped knobs (`cardRadius`, `pillFontSize`, …)\n // and `bg` need nothing: the generic `--uxm-{id}-{kebab}` rule already lands\n // on the names the stylesheet reads.\n 'lifecycle-drop-slot': {\n borderColor: '--uxm-lifecycle-drop-slot-border-color',\n borderStyle: '--uxm-lifecycle-drop-slot-border-style',\n borderWidth: '--uxm-lifecycle-drop-slot-border-width',\n color: '--uxm-lifecycle-drop-slot-color',\n },\n // Only the knobs whose keys collide with REAL_CSS_PROPS need an entry: left\n // to the generic path they'd emit a real `background-color` / `border-width` /\n // `padding` on `.uxm-lifecycle-group-box` from a later sheet, hard-overriding\n // the rule's own `var(--uxm-… , token)` chain — and `padding` is read BY THE\n // CONSUMER off the custom property to inset the group's members, so a real\n // declaration would leave that value unreadable.\n //\n // `blur` and the three `target*` knobs are absent on purpose: the generic\n // `--uxm-{id}-{kebab}` rule already lands on the names the stylesheet reads.\n 'lifecycle-group-box': {\n backgroundColor: '--uxm-lifecycle-group-box-bg',\n borderColor: '--uxm-lifecycle-group-box-border-color',\n borderWidth: '--uxm-lifecycle-group-box-border-width',\n borderRadius: '--uxm-lifecycle-group-box-radius',\n padding: '--uxm-lifecycle-group-box-padding',\n },\n 'lifecycle-minimap': {\n backgroundColor: '--uxm-lifecycle-minimap-bg',\n borderColor: '--uxm-lifecycle-minimap-border-color',\n borderRadius: '--uxm-lifecycle-minimap-radius',\n width: '--uxm-lifecycle-minimap-width',\n height: '--uxm-lifecycle-minimap-height',\n },\n 'lifecycle-node-card': {\n backgroundColor: '--uxm-lifecycle-node-card-bg',\n borderColor: '--uxm-lifecycle-node-card-border-color',\n borderRadius: '--uxm-lifecycle-node-card-radius',\n paddingX: '--uxm-lifecycle-node-card-padding-x',\n paddingY: '--uxm-lifecycle-node-card-padding-y',\n width: '--uxm-lifecycle-node-card-width',\n minHeight: '--uxm-lifecycle-node-card-min-height',\n },\n 'lifecycle-terminal': {\n backgroundColor: '--uxm-lifecycle-terminal-bg',\n borderColor: '--uxm-lifecycle-terminal-border-color',\n color: '--uxm-lifecycle-terminal-color',\n borderRadius: '--uxm-lifecycle-terminal-radius',\n width: '--uxm-lifecycle-terminal-width',\n height: '--uxm-lifecycle-terminal-height',\n fontSize: '--uxm-lifecycle-terminal-font-size',\n fontWeight: '--uxm-lifecycle-terminal-font-weight',\n },\n 'lifecycle-zoom-control': {\n backgroundColor: '--uxm-lifecycle-zoom-bg',\n borderColor: '--uxm-lifecycle-zoom-border-color',\n borderRadius: '--uxm-lifecycle-zoom-radius',\n fontSize: '--uxm-lifecycle-zoom-font-size',\n color: '--uxm-lifecycle-zoom-color',\n buttonSize: '--uxm-lifecycle-zoom-button-size',\n iconColor: '--uxm-lifecycle-zoom-icon-color',\n },\n link: {\n fontSize: '--uxm-link-font-size',\n fontWeight: '--uxm-link-font-weight',\n },\n 'meta-row': {\n fontSize: '--uxm-meta-row-font-size',\n color: '--uxm-meta-row-color',\n gap: '--uxm-meta-row-gap',\n },\n 'number-stepper': {\n backgroundColor: '--uxm-number-stepper-input-bg',\n borderColor: '--uxm-number-stepper-input-border',\n color: '--uxm-number-stepper-input-color',\n borderRadius: '--uxm-number-stepper-input-radius',\n paddingX: '--uxm-number-stepper-input-padding-x',\n paddingY: '--uxm-number-stepper-input-padding-y',\n fontSize: '--uxm-number-stepper-font-size',\n gap: '--uxm-number-stepper-gap',\n },\n 'page-header': {\n gap: '--uxm-page-header-gap',\n paddingX: '--uxm-page-header-padding-x',\n paddingY: '--uxm-page-header-padding-y',\n },\n 'page-shell': {\n backgroundColor: '--uxm-page-shell-bg',\n },\n 'property-field': {\n gap: '--uxm-property-field-gap',\n },\n 'property-grid': {\n rowGap: '--uxm-property-grid-row-gap',\n columnGap: '--uxm-property-grid-column-gap',\n },\n 'responsive-grid': {\n gap: '--uxm-responsive-grid-gap',\n },\n 'section-header': {\n gap: '--uxm-section-header-gap',\n },\n stack: {\n gap: '--uxm-stack-gap',\n },\n 'stat-card': {\n backgroundColor: '--uxm-stat-card-background-color',\n borderColor: '--uxm-stat-card-border-color',\n borderRadius: '--uxm-stat-card-border-radius',\n padding: '--uxm-stat-card-padding',\n },\n tag: {\n borderRadius: '--uxm-tag-border-radius',\n fontWeight: '--uxm-tag-font-weight',\n },\n thumbnail: {\n borderRadius: '--uxm-thumbnail-border-radius',\n backgroundColor: '--uxm-thumbnail-background-color',\n borderColor: '--uxm-thumbnail-border-color',\n borderWidth: '--uxm-thumbnail-border-width',\n },\n 'timeline-entry': {\n gap: '--uxm-timeline-entry-gap',\n },\n 'segment-row': {\n paddingX: '--uxm-segment-row-padding-x',\n paddingY: '--uxm-segment-row-padding-y',\n gap: '--uxm-segment-row-gap',\n dragColor: '--uxm-segment-row-drag-color',\n dragHoverColor: '--uxm-segment-row-drag-hover-color',\n chevronColor: '--uxm-segment-row-chevron-color',\n chevronSize: '--uxm-segment-row-chevron-size',\n accentColor: '--uxm-segment-row-accent-color',\n accentWidth: '--uxm-segment-row-accent-width',\n accentRadius: '--uxm-segment-row-accent-radius',\n titleColor: '--uxm-segment-row-title-color',\n titleSize: '--uxm-segment-row-title-size',\n titleWeight: '--uxm-segment-row-title-weight',\n countBg: '--uxm-segment-row-count-bg',\n countColor: '--uxm-segment-row-count-color',\n countSize: '--uxm-segment-row-count-size',\n countPaddingX: '--uxm-segment-row-count-padding-x',\n countPaddingY: '--uxm-segment-row-count-padding-y',\n countRadius: '--uxm-segment-row-count-radius',\n rowHoverBg: '--uxm-segment-row-row-hover-bg',\n rowHoverRadius: '--uxm-segment-row-row-hover-radius',\n },\n 'segment-card': {\n borderColor: '--uxm-segment-card-border-color',\n borderWidth: '--uxm-segment-card-border-width',\n borderRadius: '--uxm-segment-card-border-radius',\n backgroundColor: '--uxm-segment-card-background',\n paddingX: '--uxm-segment-card-padding-x',\n paddingY: '--uxm-segment-card-padding-y',\n childrenInsetX: '--uxm-segment-card-children-inset-x',\n childrenInsetY: '--uxm-segment-card-children-inset-y',\n childrenGap: '--uxm-segment-card-children-gap',\n dividerColor: '--uxm-segment-card-divider-color',\n dividerWidth: '--uxm-segment-card-divider-width',\n },\n 'component-row': {\n paddingX: '--uxm-component-row-padding-x',\n paddingY: '--uxm-component-row-padding-y',\n gap: '--uxm-component-row-gap',\n backgroundColor: '--uxm-component-row-background',\n dragColor: '--uxm-component-row-drag-color',\n dragHoverColor: '--uxm-component-row-drag-hover-color',\n iconBadgeSize: '--uxm-component-row-icon-badge-size',\n iconBadgeRadius: '--uxm-component-row-icon-badge-radius',\n iconBadgePadding: '--uxm-component-row-icon-badge-padding',\n nameColor: '--uxm-component-row-name-color',\n nameSize: '--uxm-component-row-name-size',\n nameWeight: '--uxm-component-row-name-weight',\n typeLabelColor: '--uxm-component-row-type-label-color',\n typeLabelSize: '--uxm-component-row-type-label-size',\n typeLabelWeight: '--uxm-component-row-type-label-weight',\n chevronColor: '--uxm-component-row-chevron-color',\n chevronSize: '--uxm-component-row-chevron-size',\n rowHoverBg: '--uxm-component-row-row-hover-bg',\n rowHoverRadius: '--uxm-component-row-row-hover-radius',\n },\n 'option-list': {\n indent: '--uxm-option-list-indent',\n backgroundColor: '--uxm-option-list-background',\n borderColor: '--uxm-option-list-border-color',\n borderWidth: '--uxm-option-list-border-width',\n borderRadius: '--uxm-option-list-border-radius',\n paddingX: '--uxm-option-list-padding-x',\n paddingY: '--uxm-option-list-padding-y',\n gap: '--uxm-option-list-gap',\n rowPaddingX: '--uxm-option-list-row-padding-x',\n rowPaddingY: '--uxm-option-list-row-padding-y',\n dragColor: '--uxm-option-list-drag-color',\n dragHoverColor: '--uxm-option-list-drag-hover-color',\n bulletSize: '--uxm-option-list-bullet-size',\n bulletGap: '--uxm-option-list-bullet-gap',\n nameColor: '--uxm-option-list-name-color',\n nameSize: '--uxm-option-list-name-size',\n nameWeight: '--uxm-option-list-name-weight',\n rowHoverBg: '--uxm-option-list-row-hover-bg',\n rowHoverRadius: '--uxm-option-list-row-hover-radius',\n },\n tooltip: {\n backgroundColor: '--uxm-tooltip-background-color',\n color: '--uxm-tooltip-color',\n borderRadius: '--uxm-tooltip-border-radius',\n paddingX: '--uxm-tooltip-padding-x',\n paddingY: '--uxm-tooltip-padding-y',\n fontSize: '--uxm-tooltip-font-size',\n },\n 'content-tooltip': {\n backgroundColor: '--uxm-content-tooltip-background-color',\n borderColor: '--uxm-content-tooltip-border-color',\n borderRadius: '--uxm-content-tooltip-border-radius',\n padding: '--uxm-content-tooltip-padding',\n maxWidth: '--uxm-content-tooltip-max-width',\n },\n 'type-overview-card': {\n backgroundColor: '--uxm-typeoverview-bg',\n borderColor: '--uxm-typeoverview-border-color',\n borderRadius: '--uxm-typeoverview-radius',\n padding: '--uxm-typeoverview-padding',\n accentColor: '--uxm-typeoverview-accent-color',\n accentWidth: '--uxm-typeoverview-accent-width',\n iconBg: '--uxm-typeoverview-icon-bg',\n iconColor: '--uxm-typeoverview-icon-color',\n iconBoxSize: '--uxm-typeoverview-icon-tile-size',\n iconRadius: '--uxm-typeoverview-icon-tile-radius',\n labelSize: '--uxm-typeoverview-label-size',\n labelColor: '--uxm-typeoverview-label-color',\n valueSize: '--uxm-typeoverview-value-size',\n valueColor: '--uxm-typeoverview-value-color',\n },\n // Without an entry here every knob would fall through to the generic\n // `--uxm-{id}-{kebab}` rule and double the segment — `connectorIdleColor`\n // under id `lifecycle-connector` becomes\n // `--uxm-lifecycle-connector-connector-idle-color`. The stylesheet reads the\n // canonical single-`connector` names (and still accepts the doubled ones as\n // a fallback alias), so map the knobs explicitly.\n //\n // `connectorArrowSize` sizes an SVG polygon rather than setting any CSS\n // property, so no rule can consume it — `useThemedArrowSize` in\n // lifecycle-connector.tsx reads `--uxm-lifecycle-connector-arrow-size` back\n // off the element instead. It is published here for that reason, not for\n // naming tidiness: drop this line and a saved Arrow Size stops applying.\n 'lifecycle-connector': {\n connectorIdleColor: '--uxm-lifecycle-connector-idle-color',\n connectorActiveColor: '--uxm-lifecycle-connector-active-color',\n connectorIdleStrokeWidth: '--uxm-lifecycle-connector-idle-stroke-width',\n connectorActiveStrokeWidth: '--uxm-lifecycle-connector-active-stroke-width',\n connectorDashedColor: '--uxm-lifecycle-connector-dashed-color',\n connectorDashedStrokeWidth: '--uxm-lifecycle-connector-dashed-stroke-width',\n connectorDashPattern: '--uxm-lifecycle-connector-dash-pattern',\n connectorArrowSize: '--uxm-lifecycle-connector-arrow-size',\n },\n};\n\nfunction toCSS(key: string, componentId: string): string {\n const componentMapping = PER_COMPONENT_MAPPING[componentId];\n if (componentMapping?.[key]) return componentMapping[key];\n\n const mapping: Record<string, string> = {\n paddingX: 'padding-inline',\n paddingY: 'padding-block',\n };\n if (mapping[key]) return mapping[key];\n\n const kebab = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n if (REAL_CSS_PROPS.has(key)) return kebab;\n return `--uxm-${componentId}-${kebab}`;\n}\n\nfunction formatValue(value: string | number | boolean, key: string): string {\n if (typeof value === 'boolean') return value ? '1' : '0';\n if (typeof value === 'number') {\n // `lineHeight` is a ratio, not a length — without it here a knob saved as\n // 1.5 emits `line-height: 1.5px`, which collapses every line box.\n const unitless = ['fontWeight', 'titleWeight', 'nameWeight', 'typeLabelWeight', 'lineHeight', 'shadow', 'disabledOpacity'];\n // `opacity` is always unitless — match every *Opacity knob (e.g. the\n // per-element `itemDisabledOpacity` / `optionDisabledOpacity` variants)\n // so a saved value never gets a spurious `px` suffix.\n if (unitless.includes(key) || key.endsWith('Opacity')) return String(value);\n return `${value}px`;\n }\n // String style-override values are user/attacker-controlled and persisted\n // to a stylesheet served to every browser session — sanitise the same way\n // as brand token values so one can't break out of the declaration (e.g.\n // `red; } body{display:none}/*`). An unsafe value is dropped to '' rather\n // than throwing, so a single bad override can't blank the whole rule.\n return safeTokenValue(value) ?? '';\n}\n\n// CSS sanitizers — applied to every brand value before interpolation. The\n// output is persisted and served to all browser sessions, so attacker-\n// controlled values must not break out of the declaration they belong to.\nfunction safeUrl(v: unknown): string | undefined {\n if (typeof v !== 'string') return undefined;\n const trimmed = v.trim();\n if (!/^(https?:\\/\\/|\\/)/.test(trimmed)) return undefined;\n if (/[\")\\n\\r]/.test(trimmed)) return undefined;\n return trimmed;\n}\nexport function safeFontFamily(v: unknown): string | undefined {\n if (typeof v !== 'string') return undefined;\n const trimmed = v.trim();\n return /^[A-Za-z0-9 _-]+$/.test(trimmed) ? trimmed : undefined;\n}\n// Heading weight is a closed set (the editor offers exactly these three), so a\n// strict whitelist is both the sanitizer and the contract. Numbers are accepted\n// defensively — a persisted config may carry the JSON number rather than the\n// string the <select> yields.\nexport function safeFontWeight(v: unknown): string | undefined {\n const s = typeof v === 'number' ? String(v) : typeof v === 'string' ? v.trim() : undefined;\n return s !== undefined && /^(500|600|700)$/.test(s) ? s : undefined;\n}\n// Scales multiply a length inside calc(), which makes a bad value far worse\n// than a dropped declaration: `abc` or `1.2px` (length × length) is invalid at\n// computed-value time, so `font-size` resolves to `unset` and INHERITS — one\n// poisoned value on :root collapses the whole app to the parent's size. A\n// plain-number whitelist plus a sane range is the only safe gate; note\n// `safeTokenValue` is NOT sufficient (it passes `abc`, `-1` and unbalanced\n// parens). Range mirrors the editor's slider bounds.\nexport function safeTypeScale(v: unknown): string | undefined {\n const s = typeof v === 'number' ? String(v) : typeof v === 'string' ? v.trim() : undefined;\n if (s === undefined || !/^(?:0|[1-9]\\d?)(?:\\.\\d{1,3})?$/.test(s)) return undefined;\n const n = Number(s);\n return n >= 0.5 && n <= 2 ? s : undefined;\n}\n// Line height is a unitless ratio; same invalid-at-computed-value-time risk as\n// the scales, but it only affects the declarations that read it.\nexport function safeLineHeight(v: unknown): string | undefined {\n const s = typeof v === 'number' ? String(v) : typeof v === 'string' ? v.trim() : undefined;\n if (s === undefined || !/^[1-9](?:\\.\\d{1,2})?$/.test(s)) return undefined;\n const n = Number(s);\n return n >= 1 && n <= 2.5 ? s : undefined;\n}\nexport function safeTokenKey(v: string): boolean {\n return /^--[A-Za-z0-9-]+$/.test(v);\n}\nexport function safeTokenValue(v: unknown): string | undefined {\n if (typeof v !== 'string') return undefined;\n return /[{};\\n\\r]/.test(v) ? undefined : v;\n}\n\n// The three heading roles, in one place. Both the publish path below and the\n// live mirror (`brand-font-styles.tsx`) derive their emitted var names from\n// `role` by interpolation, so a rename here reaches both — keeping these in two\n// hand-maintained lists is how `--type-${role}-font` silently drifts away from\n// the names the stylesheets actually read.\nexport const TYPE_ROLES = [\n { role: 'display', family: 'displayFontFamily', weight: 'displayFontWeight', scale: 'displayScale' },\n { role: 'page-title', family: 'pageTitleFontFamily', weight: 'pageTitleFontWeight', scale: 'pageTitleScale' },\n { role: 'section-title', family: 'sectionTitleFontFamily', weight: 'sectionTitleFontWeight', scale: 'sectionTitleScale' },\n] as const satisfies ReadonlyArray<{\n role: string;\n family: keyof BrandConfig;\n weight: keyof BrandConfig;\n scale: keyof BrandConfig;\n}>;\n\n/** Sanitised per-role typography, shared by the generator and the live mirror. */\nexport function resolveTypeRoles(brand: BrandConfig) {\n return TYPE_ROLES.map((r) => ({\n role: r.role,\n family: safeFontFamily(brand[r.family]),\n weight: safeFontWeight(brand[r.weight]),\n scale: safeTypeScale(brand[r.scale]),\n }));\n}\n\n/** Generate the overrides stylesheet from style overrides + brand config. */\nexport function generateOverridesCss(allOverrides: AllOverrides, brand: BrandConfig): string {\n const lines: string[] = ['/* Auto-generated by UXM — do not edit manually */', ''];\n\n const fontFamily = safeFontFamily(brand.fontFamily);\n const headingFontFamily = safeFontFamily(brand.headingFontFamily);\n const headingFontWeight = safeFontWeight(brand.headingFontWeight);\n // Per-role refinements, layered under the umbrella heading vars above.\n const roles = resolveTypeRoles(brand);\n const typeScale = safeTypeScale(brand.typeScale);\n const bodyLineHeight = safeLineHeight(brand.bodyLineHeight);\n const logoUrl = safeUrl(brand.logoUrl);\n const iconUrl = safeUrl(brand.iconUrl);\n const logoUrlDark = safeUrl(brand.logoUrlDark);\n const iconUrlDark = safeUrl(brand.iconUrlDark);\n\n if (fontFamily) {\n lines.push(`@import url(\"${fontFileUrl(fontFamily)}\");`);\n lines.push('');\n }\n // Second font file only when the heading face is actually a different family\n // — picking the same one for both is a no-op, not a reason to fetch twice.\n if (headingFontFamily && headingFontFamily !== fontFamily) {\n lines.push(`@import url(\"${fontFileUrl(headingFontFamily)}\");`);\n lines.push('');\n }\n // A role may pick a face neither the body nor the umbrella uses — fetch each\n // distinct one exactly once (@import must stay above the rules below).\n const imported = new Set([fontFamily, headingFontFamily].filter(Boolean));\n for (const { family } of roles) {\n if (family && !imported.has(family)) {\n imported.add(family);\n lines.push(`@import url(\"${fontFileUrl(family)}\");`);\n lines.push('');\n }\n }\n\n const brandRules: string[] = [];\n if (fontFamily) {\n brandRules.push(` --brand-font: \"${fontFamily}\", var(--font-inter), system-ui, sans-serif;`);\n }\n // Heading vars are consumed by the components' own two-layer fallbacks (see\n // e.g. page-header.scss), so there is no `body` rule and no `!important`:\n // an unset var simply lets each component's own default paint.\n if (headingFontFamily) {\n brandRules.push(` --brand-heading-font: \"${headingFontFamily}\", var(--font-inter), system-ui, sans-serif;`);\n }\n if (headingFontWeight) {\n brandRules.push(` --brand-heading-weight: ${headingFontWeight};`);\n }\n // Role vars sit between the component var and the umbrella in each atom's\n // chain, so an unset role simply falls through to the umbrella.\n for (const { role, family, weight, scale } of roles) {\n if (family) {\n brandRules.push(` --type-${role}-font: \"${family}\", var(--font-inter), system-ui, sans-serif;`);\n }\n if (weight) brandRules.push(` --type-${role}-weight: ${weight};`);\n if (scale) brandRules.push(` --type-${role}-scale: ${scale};`);\n }\n if (typeScale) brandRules.push(` --type-scale: ${typeScale};`);\n if (bodyLineHeight) brandRules.push(` --type-body-line-height: ${bodyLineHeight};`);\n if (logoUrl) brandRules.push(` --brand-logo-url: url(\"${logoUrl}\");`);\n if (iconUrl) brandRules.push(` --brand-icon-url: url(\"${iconUrl}\");`);\n\n if (brandRules.length > 0) {\n lines.push(':root {');\n lines.push(...brandRules);\n lines.push('}');\n lines.push('');\n if (fontFamily) {\n lines.push('body { font-family: var(--brand-font) !important; }');\n lines.push('');\n }\n // Emitted ONLY when set. The library ships no element-level rules at all,\n // so an unconditional `body { line-height }` would reflow the host's own\n // content — same reasoning as the font-family rule above.\n if (bodyLineHeight) {\n // Explicit fallback: if the var is later cancelled (the studio mirror\n // re-declares it as `initial` on revert) a bare `var()` would be invalid\n // at computed-value time and `line-height` — being inherited — would\n // resolve to the parent's value, silently replacing whatever the host\n // had set on `body`. `normal` makes the wind-down state deliberate.\n lines.push(`body { line-height: var(--type-body-line-height, normal); }`);\n lines.push('');\n }\n }\n\n const darkBrandRules: string[] = [];\n if (logoUrlDark) darkBrandRules.push(` --brand-logo-url: url(\"${logoUrlDark}\");`);\n if (iconUrlDark) darkBrandRules.push(` --brand-icon-url: url(\"${iconUrlDark}\");`);\n if (darkBrandRules.length > 0) {\n lines.push('[data-theme=\"dark\"] {');\n lines.push(...darkBrandRules);\n lines.push('}');\n lines.push('');\n }\n\n const emitTokens = (selector: string, overrides: Record<string, string> | undefined) => {\n if (!overrides) return;\n const safeEntries = Object.entries(overrides).flatMap(([k, v]) => {\n if (!safeTokenKey(k)) return [];\n const safeValue = safeTokenValue(v);\n return safeValue === undefined ? [] : [[k, safeValue] as const];\n });\n if (safeEntries.length === 0) return;\n lines.push(`${selector} {`);\n for (const [cssVar, value] of safeEntries) {\n lines.push(` ${cssVar}: ${value};`);\n }\n lines.push('}');\n lines.push('');\n };\n // Scope customized light-mode color tokens to non-dark. `:root` and\n // `[data-theme=\"dark\"]` carry equal specificity, so an unconditional\n // `:root` block would win over this stylesheet's own dark block for any\n // token NOT also customized for dark (equal specificity, later source\n // order) — pinning that token to its light value in dark mode too. Scoping\n // lets an unset dark token fall through the cascade to tokens/index.css's\n // own `[data-theme=\"dark\"]` default instead.\n emitTokens(':root:not([data-theme=\"dark\"])', brand.tokens?.light);\n emitTokens('[data-theme=\"dark\"]', brand.tokens?.dark);\n\n const componentIds = Object.keys(allOverrides).sort();\n\n for (const id of componentIds) {\n const overrides = allOverrides[id];\n const entries = Object.entries(overrides);\n if (entries.length === 0) continue;\n\n const selector = PER_COMPONENT_SELECTOR[id] ?? `.uxm-${id}`;\n lines.push(`${selector} {`);\n for (const [key, value] of entries) {\n const cssProp = toCSS(key, id);\n const cssValue = formatValue(value, key);\n lines.push(` ${cssProp}: ${cssValue};`);\n }\n lines.push('}');\n lines.push('');\n }\n\n return lines.join('\\n');\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/studio/persistence/generate-css.ts"],"sourcesContent":["import { safeFontFamily, safeFontWeight, safeLineHeight, safeTokenKey, safeTokenValue, safeTypeScale, safeUrl } from './css-sanitizers';\nimport { PER_COMPONENT_MAPPING, PER_COMPONENT_SELECTOR } from './generate-css-mapping';\n\nimport type { AllOverrides } from './types';\nimport type { BrandConfig } from '../lib/types';\n\n/**\n * Pure CSS generator for UXM Studio overrides.\n *\n * Single source of truth (R5): the modo Hono `/api/uxm/save` route imports\n * `generateOverridesCss` from here instead of keeping its own copy. No Node\n * APIs — runs in browser (client export) and server alike.\n *\n * Emits a stylesheet from per-component style overrides plus brand config\n * (font, logo/icon URLs, brand token blocks). All attacker-controlled brand\n * values are sanitised before interpolation because the output is served to\n * every browser session.\n */\n\nconst BRAND_FONT_WEIGHTS = 'wght@400;500;600;700';\n\nexport function fontFileUrl(fontFamily: string): string {\n const encoded = fontFamily.trim().replace(/\\s+/g, '+');\n return `https://fonts.googleapis.com/css2?family=${encoded}:${BRAND_FONT_WEIGHTS}&display=swap`;\n}\n\nconst REAL_CSS_PROPS = new Set([\n 'background', 'backgroundColor',\n 'color',\n 'border', 'borderColor', 'borderRadius', 'borderWidth', 'borderStyle',\n 'padding', 'paddingX', 'paddingY', 'margin',\n 'gap', 'rowGap', 'columnGap',\n 'width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight',\n 'fontSize', 'fontWeight', 'fontFamily', 'lineHeight',\n 'opacity',\n 'cursor', 'display', 'position', 'overflow', 'direction',\n]);\n\nfunction toCSS(key: string, componentId: string): string {\n const componentMapping = PER_COMPONENT_MAPPING[componentId];\n if (componentMapping?.[key]) return componentMapping[key];\n\n const mapping: Record<string, string> = {\n paddingX: 'padding-inline',\n paddingY: 'padding-block',\n };\n if (mapping[key]) return mapping[key];\n\n const kebab = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n if (REAL_CSS_PROPS.has(key)) return kebab;\n return `--uxm-${componentId}-${kebab}`;\n}\n\nfunction formatValue(value: string | number | boolean, key: string): string {\n if (typeof value === 'boolean') return value ? '1' : '0';\n if (typeof value === 'number') {\n // `lineHeight` is a ratio, not a length — without it here a knob saved as\n // 1.5 emits `line-height: 1.5px`, which collapses every line box.\n const unitless = ['fontWeight', 'titleWeight', 'nameWeight', 'typeLabelWeight', 'lineHeight', 'shadow', 'disabledOpacity'];\n // `opacity` is always unitless — match every *Opacity knob (e.g. the\n // per-element `itemDisabledOpacity` / `optionDisabledOpacity` variants)\n // so a saved value never gets a spurious `px` suffix.\n if (unitless.includes(key) || key.endsWith('Opacity')) return String(value);\n return `${value}px`;\n }\n // String style-override values are user/attacker-controlled and persisted\n // to a stylesheet served to every browser session — sanitise the same way\n // as brand token values so one can't break out of the declaration (e.g.\n // `red; } body{display:none}/*`). An unsafe value is dropped to '' rather\n // than throwing, so a single bad override can't blank the whole rule.\n return safeTokenValue(value) ?? '';\n}\n\n// The sanitizers moved to ./css-sanitizers.ts; they stay part of this module's\n// public surface (`@viax.io/uxm/studio/generate-css`, brand-*-styles.tsx).\nexport { safeFontFamily, safeFontWeight, safeLineHeight, safeTokenKey, safeTokenValue, safeTypeScale } from './css-sanitizers';\n\n// The three heading roles, in one place. Both the publish path below and the\n// live mirror (`brand-font-styles.tsx`) derive their emitted var names from\n// `role` by interpolation, so a rename here reaches both — keeping these in two\n// hand-maintained lists is how `--type-${role}-font` silently drifts away from\n// the names the stylesheets actually read.\nexport const TYPE_ROLES = [\n { role: 'display', family: 'displayFontFamily', weight: 'displayFontWeight', scale: 'displayScale' },\n { role: 'page-title', family: 'pageTitleFontFamily', weight: 'pageTitleFontWeight', scale: 'pageTitleScale' },\n { role: 'section-title', family: 'sectionTitleFontFamily', weight: 'sectionTitleFontWeight', scale: 'sectionTitleScale' },\n] as const satisfies ReadonlyArray<{\n role: string;\n family: keyof BrandConfig;\n weight: keyof BrandConfig;\n scale: keyof BrandConfig;\n}>;\n\n/** Sanitised per-role typography, shared by the generator and the live mirror. */\nexport function resolveTypeRoles(brand: BrandConfig) {\n return TYPE_ROLES.map((r) => ({\n role: r.role,\n family: safeFontFamily(brand[r.family]),\n weight: safeFontWeight(brand[r.weight]),\n scale: safeTypeScale(brand[r.scale]),\n }));\n}\n\n/** Generate the overrides stylesheet from style overrides + brand config. */\nexport function generateOverridesCss(allOverrides: AllOverrides, brand: BrandConfig): string {\n const lines: string[] = ['/* Auto-generated by UXM — do not edit manually */', ''];\n\n const fontFamily = safeFontFamily(brand.fontFamily);\n const headingFontFamily = safeFontFamily(brand.headingFontFamily);\n const headingFontWeight = safeFontWeight(brand.headingFontWeight);\n // Per-role refinements, layered under the umbrella heading vars above.\n const roles = resolveTypeRoles(brand);\n const typeScale = safeTypeScale(brand.typeScale);\n const bodyLineHeight = safeLineHeight(brand.bodyLineHeight);\n const logoUrl = safeUrl(brand.logoUrl);\n const iconUrl = safeUrl(brand.iconUrl);\n const logoUrlDark = safeUrl(brand.logoUrlDark);\n const iconUrlDark = safeUrl(brand.iconUrlDark);\n\n if (fontFamily) {\n lines.push(`@import url(\"${fontFileUrl(fontFamily)}\");`);\n lines.push('');\n }\n // Second font file only when the heading face is actually a different family\n // — picking the same one for both is a no-op, not a reason to fetch twice.\n if (headingFontFamily && headingFontFamily !== fontFamily) {\n lines.push(`@import url(\"${fontFileUrl(headingFontFamily)}\");`);\n lines.push('');\n }\n // A role may pick a face neither the body nor the umbrella uses — fetch each\n // distinct one exactly once (@import must stay above the rules below).\n const imported = new Set([fontFamily, headingFontFamily].filter(Boolean));\n for (const { family } of roles) {\n if (family && !imported.has(family)) {\n imported.add(family);\n lines.push(`@import url(\"${fontFileUrl(family)}\");`);\n lines.push('');\n }\n }\n\n const brandRules: string[] = [];\n if (fontFamily) {\n brandRules.push(` --brand-font: \"${fontFamily}\", var(--font-inter), system-ui, sans-serif;`);\n }\n // Heading vars are consumed by the components' own two-layer fallbacks (see\n // e.g. page-header.scss), so there is no `body` rule and no `!important`:\n // an unset var simply lets each component's own default paint.\n if (headingFontFamily) {\n brandRules.push(` --brand-heading-font: \"${headingFontFamily}\", var(--font-inter), system-ui, sans-serif;`);\n }\n if (headingFontWeight) {\n brandRules.push(` --brand-heading-weight: ${headingFontWeight};`);\n }\n // Role vars sit between the component var and the umbrella in each atom's\n // chain, so an unset role simply falls through to the umbrella.\n for (const { role, family, weight, scale } of roles) {\n if (family) {\n brandRules.push(` --type-${role}-font: \"${family}\", var(--font-inter), system-ui, sans-serif;`);\n }\n if (weight) brandRules.push(` --type-${role}-weight: ${weight};`);\n if (scale) brandRules.push(` --type-${role}-scale: ${scale};`);\n }\n if (typeScale) brandRules.push(` --type-scale: ${typeScale};`);\n if (bodyLineHeight) brandRules.push(` --type-body-line-height: ${bodyLineHeight};`);\n if (logoUrl) brandRules.push(` --brand-logo-url: url(\"${logoUrl}\");`);\n if (iconUrl) brandRules.push(` --brand-icon-url: url(\"${iconUrl}\");`);\n\n if (brandRules.length > 0) {\n lines.push(':root {');\n lines.push(...brandRules);\n lines.push('}');\n lines.push('');\n if (fontFamily) {\n lines.push('body { font-family: var(--brand-font) !important; }');\n lines.push('');\n }\n // Emitted ONLY when set. The library ships no element-level rules at all,\n // so an unconditional `body { line-height }` would reflow the host's own\n // content — same reasoning as the font-family rule above.\n if (bodyLineHeight) {\n // Explicit fallback: if the var is later cancelled (the studio mirror\n // re-declares it as `initial` on revert) a bare `var()` would be invalid\n // at computed-value time and `line-height` — being inherited — would\n // resolve to the parent's value, silently replacing whatever the host\n // had set on `body`. `normal` makes the wind-down state deliberate.\n lines.push(`body { line-height: var(--type-body-line-height, normal); }`);\n lines.push('');\n }\n }\n\n const darkBrandRules: string[] = [];\n if (logoUrlDark) darkBrandRules.push(` --brand-logo-url: url(\"${logoUrlDark}\");`);\n if (iconUrlDark) darkBrandRules.push(` --brand-icon-url: url(\"${iconUrlDark}\");`);\n if (darkBrandRules.length > 0) {\n lines.push('[data-theme=\"dark\"] {');\n lines.push(...darkBrandRules);\n lines.push('}');\n lines.push('');\n }\n\n const emitTokens = (selector: string, overrides: Record<string, string> | undefined) => {\n if (!overrides) return;\n const safeEntries = Object.entries(overrides).flatMap(([k, v]) => {\n if (!safeTokenKey(k)) return [];\n const safeValue = safeTokenValue(v);\n return safeValue === undefined ? [] : [[k, safeValue] as const];\n });\n if (safeEntries.length === 0) return;\n lines.push(`${selector} {`);\n for (const [cssVar, value] of safeEntries) {\n lines.push(` ${cssVar}: ${value};`);\n }\n lines.push('}');\n lines.push('');\n };\n // Scope customized light-mode color tokens to non-dark. `:root` and\n // `[data-theme=\"dark\"]` carry equal specificity, so an unconditional\n // `:root` block would win over this stylesheet's own dark block for any\n // token NOT also customized for dark (equal specificity, later source\n // order) — pinning that token to its light value in dark mode too. Scoping\n // lets an unset dark token fall through the cascade to tokens/index.css's\n // own `[data-theme=\"dark\"]` default instead.\n emitTokens(':root:not([data-theme=\"dark\"])', brand.tokens?.light);\n emitTokens('[data-theme=\"dark\"]', brand.tokens?.dark);\n\n const componentIds = Object.keys(allOverrides).sort();\n\n for (const id of componentIds) {\n const overrides = allOverrides[id];\n const entries = Object.entries(overrides);\n if (entries.length === 0) continue;\n\n const selector = PER_COMPONENT_SELECTOR[id] ?? `.uxm-${id}`;\n lines.push(`${selector} {`);\n for (const [key, value] of entries) {\n const cssProp = toCSS(key, id);\n const cssValue = formatValue(value, key);\n lines.push(` ${cssProp}: ${cssValue};`);\n }\n lines.push('}');\n lines.push('');\n }\n\n return lines.join('\\n');\n}\n"],"mappings":"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","names":["safeFontFamily","safeFontWeight","safeLineHeight","safeTokenKey","safeTokenValue","safeTypeScale"]}
@@ -7,6 +7,6 @@ export declare function Canvas({ embed, headerActions, }: {
7
7
  /** Optional host-provided actions rendered at the end of the top-bar
8
8
  cluster, right after the Preview & Publish button (e.g. a user avatar). */
9
9
  headerActions?: ReactNode;
10
- }): import("react/jsx-runtime").JSX.Element | null;
10
+ }): import("react").JSX.Element | null;
11
11
  export {};
12
12
  //# sourceMappingURL=canvas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/studio/shell/canvas.tsx"],"names":[],"mappings":"AAoHA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,KAAK,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAiC1D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA6GvD,CAAC;AAEF,wBAAgB,MAAM,CAAC,EACrB,KAAa,EACb,aAAa,GACd,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,kDAkNA"}
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/studio/shell/canvas.tsx"],"names":[],"mappings":"AAoHA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,KAAK,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAiC1D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA6GvD,CAAC;AAEF,wBAAgB,MAAM,CAAC,EACrB,KAAa,EACb,aAAa,GACd,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,sCAkNA"}
@@ -1,4 +1,4 @@
1
1
  export declare function PreviewModal({ onClose }: {
2
2
  onClose: () => void;
3
- }): import("react/jsx-runtime").JSX.Element;
3
+ }): import("react").JSX.Element;
4
4
  //# sourceMappingURL=preview-modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview-modal.d.ts","sourceRoot":"","sources":["../../../src/studio/shell/preview-modal.tsx"],"names":[],"mappings":"AA4kBA,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,2CAqQhE"}
1
+ {"version":3,"file":"preview-modal.d.ts","sourceRoot":"","sources":["../../../src/studio/shell/preview-modal.tsx"],"names":[],"mappings":"AA4kBA,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,+BAqQhE"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var dev_tab_exports = {};
20
+ __export(dev_tab_exports, {
21
+ DevTab: () => DevTab
22
+ });
23
+ module.exports = __toCommonJS(dev_tab_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_ui = require("../../../ui/index.cjs");
26
+ var import_ui2 = require("../../../ui/index.cjs");
27
+ var import_ui3 = require("../../../ui/index.cjs");
28
+ var import_ui4 = require("../../../ui/index.cjs");
29
+ var import_variant_matrix = require("./variant-matrix.cjs");
30
+ function DevTab({
31
+ def,
32
+ api,
33
+ events,
34
+ eventLog,
35
+ onClearLog,
36
+ orientation,
37
+ currentVariants,
38
+ overrides
39
+ }) {
40
+ const resolvedStyles = {};
41
+ for (const prop of def.styleProperties) {
42
+ resolvedStyles[prop.key] = overrides[prop.key] ?? prop.defaultValue;
43
+ }
44
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1 overflow-y-auto px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
45
+ "div",
46
+ {
47
+ className: orientation === "vertical" ? "grid items-start gap-x-6 gap-y-4 [grid-template-columns:repeat(auto-fit,minmax(220px,1fr))]" : "",
48
+ children: [
49
+ api && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: orientation === "vertical" ? "min-w-0" : "mb-6", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ApiSection, { api, currentVariants }) }),
50
+ def.layoutVariants.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: orientation === "vertical" ? "min-w-0" : "mb-6", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_variant_matrix.VariantMatrix, { def, styles: resolvedStyles, currentVariants }) }),
51
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: orientation === "vertical" ? "min-w-0" : "mb-6", children: [
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui4.SectionHeader, { children: "Emits" }),
53
+ events && events.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2 text-[12px]", children: events.map((ev) => (
54
+ // Card atom (uxm-card surface) instead of a hand-rolled div
55
+ // so the spec rows pick up the design system's bg/border/
56
+ // radius tokens and flow through Card's registry knobs.
57
+ // Padding + radius are tightened inline to keep the dense
58
+ // panel-row feel — Card's 24px default is meant for full
59
+ // page cards, not list rows.
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
61
+ import_ui.Card,
62
+ {
63
+ style: { padding: "8px 12px", borderRadius: 6 },
64
+ children: [
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-baseline gap-2", children: [
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "text-[12px] font-semibold text-accent-bold", children: ev.name }),
67
+ ev.payload && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("code", { className: "text-[11px] text-text-muted", children: [
68
+ "(",
69
+ ev.payload,
70
+ ")"
71
+ ] })
72
+ ] }),
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-1 text-[11px] text-text-muted leading-relaxed", children: ev.description })
74
+ ]
75
+ },
76
+ ev.name
77
+ )
78
+ )) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-[12px] text-text-muted leading-relaxed", children: "No event spec yet for this component. Interact with the canvas to see the live activity log below." })
79
+ ] }),
80
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: orientation === "vertical" ? "min-w-0" : "", children: [
81
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
82
+ import_ui4.SectionHeader,
83
+ {
84
+ trailing: eventLog.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
85
+ import_ui3.InlineAction,
86
+ {
87
+ onClick: onClearLog,
88
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui2.Icon, { glyph: "refresh", strokeWidth: 2.25, "aria-hidden": true }),
89
+ children: "Clear"
90
+ }
91
+ ) : void 0,
92
+ children: "Live Log"
93
+ }
94
+ ),
95
+ eventLog.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-[12px] text-text-muted leading-relaxed", children: "Interact with the preview to see events appear here." }) : (
96
+ // Dark-theme log surface — same hardcoded palette the CSS
97
+ // editor uses (#1e1e1e bg / #2a2a2a border / #d4d4d8 text).
98
+ // Intentionally bypasses design tokens for the same reason
99
+ // the code editor does: a developer-output surface should
100
+ // read as a developer-output surface regardless of the
101
+ // product's light/dark theme.
102
+ //
103
+ // Row layout: header row (time + name + target) plus an
104
+ // optional payload row indented to align under the event name
105
+ // (58px time column + 8px gap = 66px). `tabular-nums` keeps
106
+ // the timestamp column steady as digits change; `break-all`
107
+ // lets long payloads wrap rather than overflow. Single
108
+ // consumer for now — if a second log surface lands, extract
109
+ // `LogRow` then.
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
111
+ "div",
112
+ {
113
+ style: {
114
+ backgroundColor: "#1e1e1e",
115
+ border: "1px solid #2a2a2a",
116
+ borderRadius: 8,
117
+ padding: "6px 10px"
118
+ },
119
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", { className: "font-mono text-[11px]", style: { color: "#d4d4d8" }, children: eventLog.map((entry, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
120
+ "li",
121
+ {
122
+ className: "py-1.5",
123
+ style: {
124
+ // Thin divider in the dark palette — only between
125
+ // entries, not above the first one.
126
+ borderTop: i === 0 ? void 0 : "1px solid #2a2a2a"
127
+ },
128
+ children: [
129
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-baseline gap-2", children: [
130
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
131
+ "span",
132
+ {
133
+ className: "tabular-nums text-[10px] w-[58px] shrink-0",
134
+ style: { color: "#71717a" },
135
+ children: new Date(entry.ts).toLocaleTimeString(void 0, {
136
+ hour12: false,
137
+ hour: "2-digit",
138
+ minute: "2-digit",
139
+ second: "2-digit"
140
+ })
141
+ }
142
+ ),
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-semibold", style: { color: "#a5e8c2" }, children: entry.name }),
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
145
+ "span",
146
+ {
147
+ className: "ml-auto text-[10px] shrink-0",
148
+ style: { color: "#71717a" },
149
+ children: [
150
+ "<",
151
+ entry.target,
152
+ ">"
153
+ ]
154
+ }
155
+ )
156
+ ] }),
157
+ entry.payload && entry.payload !== "{}" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
158
+ "div",
159
+ {
160
+ className: "pl-[66px] mt-0.5 break-all",
161
+ style: { color: "#d4d4d8" },
162
+ children: entry.payload
163
+ }
164
+ )
165
+ ]
166
+ },
167
+ entry.id
168
+ )) })
169
+ }
170
+ )
171
+ )
172
+ ] })
173
+ ]
174
+ }
175
+ ) });
176
+ }
177
+ function ApiSection({
178
+ api,
179
+ currentVariants
180
+ }) {
181
+ const importLine = formatImport(api);
182
+ const usageSnippet = formatUsage(api, currentVariants);
183
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
184
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui4.SectionHeader, { children: "API" }),
185
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CodeBlock, { label: "Import", code: importLine }),
186
+ api.props.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-4", children: [
187
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-text-subtle", children: "Props" }),
188
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2", children: api.props.map((p) => (
189
+ // Card atom for each prop row — same treatment as the
190
+ // Emits cards so the two sections read as one family.
191
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.Card, { style: { padding: "8px 12px", borderRadius: 6 }, children: [
192
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-baseline gap-2 flex-wrap", children: [
193
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "text-[12px] font-semibold text-accent-bold", children: p.name }),
194
+ p.required && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-[9px] font-semibold uppercase tracking-wider text-warm", children: "required" }),
195
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "text-[11px] text-text-muted break-all", children: p.type })
196
+ ] }),
197
+ p.defaultValue !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-0.5 text-[11px]", children: [
198
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-text-subtle", children: "default: " }),
199
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "text-text", children: p.defaultValue })
200
+ ] }),
201
+ p.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-1 text-[11px] text-text-muted leading-relaxed", children: p.description })
202
+ ] }, p.name)
203
+ )) })
204
+ ] }),
205
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CodeBlock, { label: "Usage", code: usageSnippet }) })
206
+ ] });
207
+ }
208
+ function CodeBlock({ label, code }) {
209
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
210
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-text-subtle", children: label }),
211
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
212
+ "pre",
213
+ {
214
+ className: "font-mono text-[11px] whitespace-pre-wrap break-all",
215
+ style: {
216
+ backgroundColor: "#1e1e1e",
217
+ border: "1px solid #2a2a2a",
218
+ borderRadius: 8,
219
+ padding: "8px 10px",
220
+ color: "#d4d4d8",
221
+ margin: 0
222
+ },
223
+ children: code
224
+ }
225
+ )
226
+ ] });
227
+ }
228
+ function formatImport(api) {
229
+ const names = Array.isArray(api.importNames) ? api.importNames.join(", ") : api.importNames;
230
+ return `import { ${names} } from "${api.importPath}";`;
231
+ }
232
+ function formatUsage(api, variants) {
233
+ const name = Array.isArray(api.importNames) ? api.importNames[0] : api.importNames;
234
+ const variantProps = Object.entries(variants).filter(([k, v]) => k !== "state" && v !== "default").map(([k, v]) => typeof v === "string" ? `${k}="${v}"` : `${k}={${v}}`);
235
+ const attrs = variantProps.length > 0 ? " " + variantProps.join(" ") : "";
236
+ return `<${name}${attrs}>
237
+ \u2026
238
+ </${name}>`;
239
+ }
240
+ // Annotate the CommonJS export names for ESM import in node:
241
+ 0 && (module.exports = {
242
+ DevTab
243
+ });
244
+ //# sourceMappingURL=dev-tab.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/studio/shell/properties-panel/dev-tab.tsx"],"sourcesContent":["import { Card } from '@/ui';\nimport { Icon } from '@/ui';\nimport { InlineAction } from '@/ui';\nimport { SectionHeader } from '@/ui';\n\nimport { VariantMatrix } from './variant-matrix';\n\nimport type { LoggedEvent } from '../../lib/context';\nimport type { ComponentDef, StyleOverrides } from '../../lib/types';\n\n/**\n * Events tab — Storybook-style API + activity panel. Two sections:\n *\n * 1. EMITS — the static event spec from the registry. Reads like\n * a method-signature table: each row is one event name, its\n * payload, and a short description of when it fires.\n * 2. LIVE LOG — runtime capture from the canvas. Updated whenever\n * the user interacts with the rendered atom. Capped at 200\n * entries (see EVENT_LOG_LIMIT). Latest at top.\n *\n * The capture itself lives in canvas.tsx — we just render what's in\n * the context-managed `eventLog` here. That separation keeps the\n * Properties pane independent of the rendered atom's DOM tree.\n */\nexport function DevTab({\n def,\n api,\n events,\n eventLog,\n onClearLog,\n orientation,\n currentVariants,\n overrides,\n}: {\n def: ComponentDef;\n api: ComponentDef['api'];\n events: ComponentDef['events'];\n eventLog: LoggedEvent[];\n onClearLog: () => void;\n orientation: 'horizontal' | 'vertical';\n currentVariants: Record<string, string | number | boolean>;\n overrides: StyleOverrides;\n}) {\n // Resolved styles for the variant matrix — overrides win over\n // defaults, same logic the canvas applies. Reused by every cell so\n // they all reflect the user's current theming, just with different\n // variant values locked in.\n const resolvedStyles: Record<string, string | number | boolean> = {};\n for (const prop of def.styleProperties) {\n resolvedStyles[prop.key] = overrides[prop.key] ?? prop.defaultValue;\n }\n return (\n <div className=\"flex-1 overflow-y-auto px-5 py-4\">\n {/* Bottom-dock (`orientation === \"vertical\"`) gives the pane the\n full canvas width. Match the Visual tab's auto-fit grid so\n API / Emits / Live Log sit side-by-side instead of stacking.\n Same `mb-6` ↔ `min-w-0` swap as the Visual tab: grid `gap-y-4`\n handles spacing in grid mode, so the section's own bottom\n margin would double-space wrapped rows. */}\n <div\n className={\n orientation === 'vertical'\n ? 'grid items-start gap-x-6 gap-y-4 [grid-template-columns:repeat(auto-fit,minmax(220px,1fr))]'\n : ''\n }\n >\n {/* API section — renders when the registry entry carries an\n `api` slot. Built first because it's the developer's \"how do\n I use this?\" entry point; Emits + Live Log are the runtime\n observation layer below. */}\n {api && (\n <div className={orientation === 'vertical' ? 'min-w-0' : 'mb-6'}>\n <ApiSection api={api} currentVariants={currentVariants} />\n </div>\n )}\n\n {/* Variant Matrix — renders only when the atom has variants\n (atoms without any layoutVariants would just show a single\n duplicate of the canvas preview, which is noise). */}\n {def.layoutVariants.length > 0 && (\n <div className={orientation === 'vertical' ? 'min-w-0' : 'mb-6'}>\n <VariantMatrix def={def} styles={resolvedStyles} currentVariants={currentVariants} />\n </div>\n )}\n\n <div className={orientation === 'vertical' ? 'min-w-0' : 'mb-6'}>\n <SectionHeader>Emits</SectionHeader>\n {events && events.length > 0 ? (\n <div className=\"space-y-2 text-[12px]\">\n {events.map((ev) => (\n // Card atom (uxm-card surface) instead of a hand-rolled div\n // so the spec rows pick up the design system's bg/border/\n // radius tokens and flow through Card's registry knobs.\n // Padding + radius are tightened inline to keep the dense\n // panel-row feel — Card's 24px default is meant for full\n // page cards, not list rows.\n <Card\n key={ev.name}\n style={{ padding: '8px 12px', borderRadius: 6 }}\n >\n <div className=\"flex items-baseline gap-2\">\n <code className=\"text-[12px] font-semibold text-accent-bold\">\n {ev.name}\n </code>\n {ev.payload && (\n <code className=\"text-[11px] text-text-muted\">\n ({ev.payload})\n </code>\n )}\n </div>\n <p className=\"mt-1 text-[11px] text-text-muted leading-relaxed\">\n {ev.description}\n </p>\n </Card>\n ))}\n </div>\n ) : (\n <p className=\"text-[12px] text-text-muted leading-relaxed\">\n No event spec yet for this component. Interact with the canvas\n to see the live activity log below.\n </p>\n )}\n </div>\n\n <div className={orientation === 'vertical' ? 'min-w-0' : ''}>\n <SectionHeader\n trailing={\n eventLog.length > 0 ? (\n <InlineAction\n onClick={onClearLog}\n icon={<Icon glyph=\"refresh\" strokeWidth={2.25} aria-hidden />}\n >\n Clear\n </InlineAction>\n ) : undefined\n }\n >\n Live Log\n </SectionHeader>\n {eventLog.length === 0 ? (\n <p className=\"text-[12px] text-text-muted leading-relaxed\">\n Interact with the preview to see events appear here.\n </p>\n ) : (\n // Dark-theme log surface — same hardcoded palette the CSS\n // editor uses (#1e1e1e bg / #2a2a2a border / #d4d4d8 text).\n // Intentionally bypasses design tokens for the same reason\n // the code editor does: a developer-output surface should\n // read as a developer-output surface regardless of the\n // product's light/dark theme.\n //\n // Row layout: header row (time + name + target) plus an\n // optional payload row indented to align under the event name\n // (58px time column + 8px gap = 66px). `tabular-nums` keeps\n // the timestamp column steady as digits change; `break-all`\n // lets long payloads wrap rather than overflow. Single\n // consumer for now — if a second log surface lands, extract\n // `LogRow` then.\n <div\n style={{\n backgroundColor: '#1e1e1e',\n border: '1px solid #2a2a2a',\n borderRadius: 8,\n padding: '6px 10px',\n }}\n >\n <ol className=\"font-mono text-[11px]\" style={{ color: '#d4d4d8' }}>\n {eventLog.map((entry, i) => (\n <li\n key={entry.id}\n className=\"py-1.5\"\n style={{\n // Thin divider in the dark palette — only between\n // entries, not above the first one.\n borderTop: i === 0 ? undefined : '1px solid #2a2a2a',\n }}\n >\n <div className=\"flex items-baseline gap-2\">\n <span\n className=\"tabular-nums text-[10px] w-[58px] shrink-0\"\n style={{ color: '#71717a' }}\n >\n {new Date(entry.ts).toLocaleTimeString(undefined, {\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })}\n </span>\n <span className=\"font-semibold\" style={{ color: '#a5e8c2' }}>\n {entry.name}\n </span>\n <span\n className=\"ml-auto text-[10px] shrink-0\"\n style={{ color: '#71717a' }}\n >\n &lt;{entry.target}&gt;\n </span>\n </div>\n {entry.payload && entry.payload !== '{}' && (\n <div\n className=\"pl-[66px] mt-0.5 break-all\"\n style={{ color: '#d4d4d8' }}\n >\n {entry.payload}\n </div>\n )}\n </li>\n ))}\n </ol>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Dev tab — API section. Shows the developer-facing component API:\n *\n * 1. **Import** — copy-button block with the exact `import { ... }` line.\n * 2. **Props** — table of props with type / required / default / desc.\n * 3. **Usage** — JSX snippet seeded from the current variant selection\n * (so what's shown matches what's previewed).\n *\n * Authored alongside the atom in the registry (`api` slot on\n * `ComponentDef`). A future build-time extractor could populate the\n * same slot from TypeScript interface declarations — the consumer\n * shape stays the same.\n *\n * Uses the same dark surface as the CSS editor for the code blocks\n * (#1e1e1e / #2a2a2a / #d4d4d8). Reads as \"developer output\" rather\n * than \"themable card content\" — matches what the user expects from\n * Storybook's Docs addon.\n */\nfunction ApiSection({\n api,\n currentVariants,\n}: {\n api: NonNullable<ComponentDef['api']>;\n currentVariants: Record<string, string | number | boolean>;\n}) {\n const importLine = formatImport(api);\n const usageSnippet = formatUsage(api, currentVariants);\n return (\n <div>\n <SectionHeader>API</SectionHeader>\n <CodeBlock label=\"Import\" code={importLine} />\n {api.props.length > 0 && (\n <div className=\"mt-4\">\n <div className=\"mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-text-subtle\">\n Props\n </div>\n <div className=\"space-y-2\">\n {api.props.map((p) => (\n // Card atom for each prop row — same treatment as the\n // Emits cards so the two sections read as one family.\n <Card key={p.name} style={{ padding: '8px 12px', borderRadius: 6 }}>\n <div className=\"flex items-baseline gap-2 flex-wrap\">\n <code className=\"text-[12px] font-semibold text-accent-bold\">\n {p.name}\n </code>\n {p.required && (\n <span className=\"text-[9px] font-semibold uppercase tracking-wider text-warm\">\n required\n </span>\n )}\n <code className=\"text-[11px] text-text-muted break-all\">\n {p.type}\n </code>\n </div>\n {p.defaultValue !== undefined && (\n <div className=\"mt-0.5 text-[11px]\">\n <span className=\"text-text-subtle\">default: </span>\n <code className=\"text-text\">{p.defaultValue}</code>\n </div>\n )}\n {p.description && (\n <p className=\"mt-1 text-[11px] text-text-muted leading-relaxed\">\n {p.description}\n </p>\n )}\n </Card>\n ))}\n </div>\n </div>\n )}\n <div className=\"mt-4\">\n <CodeBlock label=\"Usage\" code={usageSnippet} />\n </div>\n </div>\n );\n}\n\n/**\n * Compact dark-surface code-block for the API section — used for both\n * the import line and the usage snippet. Same hardcoded VS Code-ish\n * palette as the Live Log: a developer-output surface should read\n * the same regardless of the product's light/dark theme.\n */\nfunction CodeBlock({ label, code }: { label: string; code: string }) {\n return (\n <div>\n <div className=\"mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-text-subtle\">\n {label}\n </div>\n <pre\n className=\"font-mono text-[11px] whitespace-pre-wrap break-all\"\n style={{\n backgroundColor: '#1e1e1e',\n border: '1px solid #2a2a2a',\n borderRadius: 8,\n padding: '8px 10px',\n color: '#d4d4d8',\n margin: 0,\n }}\n >\n {code}\n </pre>\n </div>\n );\n}\n\n/** Build the `import { X } from \"path\"` line from the api slot. */\nfunction formatImport(api: NonNullable<ComponentDef['api']>): string {\n const names = Array.isArray(api.importNames)\n ? api.importNames.join(', ')\n : api.importNames;\n return `import { ${names} } from \"${api.importPath}\";`;\n}\n\n/**\n * Build a JSX usage snippet from the api slot + the user's current\n * variant selection in the editor. Variants flow in as props, which\n * matches how the atoms actually consume them (Chip's `mode`, Slider's\n * `mode`, button family's nothing — variants are visual previews).\n *\n * Variants whose value equals the canonical default (\"default\" state,\n * etc.) are omitted to keep the snippet readable. The user can always\n * see them in the Props table.\n */\nfunction formatUsage(\n api: NonNullable<ComponentDef['api']>,\n variants: Record<string, string | number | boolean>,\n): string {\n const name = Array.isArray(api.importNames) ? api.importNames[0] : api.importNames;\n const variantProps = Object.entries(variants)\n // Skip the boilerplate-y \"state\" variant — it's a visual preview\n // selector in the editor, not a real prop on most atoms.\n .filter(([k, v]) => k !== 'state' && v !== 'default')\n .map(([k, v]) => (typeof v === 'string' ? `${k}=\"${v}\"` : `${k}={${v}}`));\n const attrs = variantProps.length > 0 ? ' ' + variantProps.join(' ') : '';\n return `<${name}${attrs}>\\n …\\n</${name}>`;\n}\n"],"mappings":"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","names":["import_ui"]}
@@ -0,0 +1,27 @@
1
+ import type { LoggedEvent } from '../../lib/context.js';
2
+ import type { ComponentDef, StyleOverrides } from '../../lib/types.js';
3
+ /**
4
+ * Events tab — Storybook-style API + activity panel. Two sections:
5
+ *
6
+ * 1. EMITS — the static event spec from the registry. Reads like
7
+ * a method-signature table: each row is one event name, its
8
+ * payload, and a short description of when it fires.
9
+ * 2. LIVE LOG — runtime capture from the canvas. Updated whenever
10
+ * the user interacts with the rendered atom. Capped at 200
11
+ * entries (see EVENT_LOG_LIMIT). Latest at top.
12
+ *
13
+ * The capture itself lives in canvas.tsx — we just render what's in
14
+ * the context-managed `eventLog` here. That separation keeps the
15
+ * Properties pane independent of the rendered atom's DOM tree.
16
+ */
17
+ export declare function DevTab({ def, api, events, eventLog, onClearLog, orientation, currentVariants, overrides, }: {
18
+ def: ComponentDef;
19
+ api: ComponentDef['api'];
20
+ events: ComponentDef['events'];
21
+ eventLog: LoggedEvent[];
22
+ onClearLog: () => void;
23
+ orientation: 'horizontal' | 'vertical';
24
+ currentVariants: Record<string, string | number | boolean>;
25
+ overrides: StyleOverrides;
26
+ }): import("react").JSX.Element;
27
+ //# sourceMappingURL=dev-tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-tab.d.ts","sourceRoot":"","sources":["../../../../src/studio/shell/properties-panel/dev-tab.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,GAAG,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,GACV,EAAE;IACD,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAC3D,SAAS,EAAE,cAAc,CAAC;CAC3B,+BA8KA"}