@wildo-ai/presets-components 1.1.1 → 1.1.3

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 (503) hide show
  1. package/dist/esm/.native.tsbuildinfo +1 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  4. package/dist/esm/components/actions/action-button.d.ts +1 -4
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +21 -5
  7. package/dist/esm/components/actions/action-button.js.map +1 -1
  8. package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
  9. package/dist/esm/components/actions/button-group.d.ts.map +1 -1
  10. package/dist/esm/components/actions/button.d.ts.map +1 -1
  11. package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
  12. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
  13. package/dist/esm/components/ai-elements/artifacts/artifact-browser.js +7 -3
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.js.map +1 -1
  15. package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
  16. package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
  17. package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
  18. package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  22. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  23. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  24. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  25. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  26. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  27. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  28. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  29. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/decision/approval.d.ts +18 -3
  36. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/decision/approval.js +5 -3
  38. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  39. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  45. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  46. package/dist/esm/components/ai-elements/execution/task.js +10 -2
  47. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  48. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  49. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  50. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  52. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  53. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  54. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  61. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  62. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  64. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  65. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  66. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  68. package/dist/esm/components/ai-elements/meta/agent.js +23 -3
  69. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  70. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  78. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  79. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  80. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  84. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  86. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  88. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  89. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  93. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  94. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  95. package/dist/esm/components/app/app-layout-main-container.labels.js +10 -2
  96. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  97. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  98. package/dist/esm/components/app/public-layout-main-container.js +52 -5
  99. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  100. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  101. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  102. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  103. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  104. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  105. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  106. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  107. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  108. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  109. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  110. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  111. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  112. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  113. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  114. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  115. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  116. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  117. package/dist/esm/components/data-display/description-list.js +10 -7
  118. package/dist/esm/components/data-display/description-list.js.map +1 -1
  119. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  120. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  121. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  122. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  123. package/dist/esm/components/data-display/formatters/display-field-boolean.js +20 -1
  124. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  125. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  126. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  127. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  128. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  129. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  130. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  131. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  132. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  133. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  134. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  135. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  136. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  137. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  138. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  139. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  140. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  141. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  142. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  143. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  144. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  145. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  146. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  147. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  148. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  149. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  150. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  151. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  152. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  153. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  154. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  155. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  156. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  157. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  158. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  159. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  160. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  161. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  162. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  163. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  164. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  165. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  166. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  167. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  168. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  169. package/dist/esm/components/data-display/formatters/display-field-string.js +3 -0
  170. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  171. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  172. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  173. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  174. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  175. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  176. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  177. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  178. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  179. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  180. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  181. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  182. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  183. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  184. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  185. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  186. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  187. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  188. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  189. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  190. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  191. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  192. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  193. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  194. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  195. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  196. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js +7 -0
  197. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  198. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  199. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  200. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  201. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  202. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  203. package/dist/esm/components/feedback/notification-center.d.ts +5 -3
  204. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  205. package/dist/esm/components/feedback/notification-center.js +7 -5
  206. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  207. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  208. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  209. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  210. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  211. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  212. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  213. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  214. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  215. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  216. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  217. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  218. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  219. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  220. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  221. package/dist/esm/components/form/chromes/form-primitive.labels.js +2 -2
  222. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  223. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  224. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  225. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  226. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  227. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  228. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  229. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  230. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  231. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  232. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  233. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  234. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  235. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  236. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  237. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  238. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  239. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  240. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  241. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  242. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  243. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  244. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  245. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  246. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  247. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  248. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  249. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  250. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  251. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  252. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  253. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  254. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  255. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  256. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  257. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  258. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  259. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  260. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  261. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  262. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  263. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  264. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  265. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  266. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  267. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  268. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  269. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  270. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  271. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  272. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  273. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  274. package/dist/esm/components/form/controls/string/color-picker-surface.js +1 -1
  275. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  276. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  277. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  278. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  279. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  280. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  281. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  282. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  283. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  284. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  285. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  286. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  287. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  288. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  289. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  290. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  291. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  292. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  293. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  294. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  295. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  296. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  297. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  298. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  299. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  300. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  301. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  302. package/dist/esm/components/navigation/app-level/menu-user-org.js +8 -2
  303. package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
  304. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  305. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  306. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  307. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  308. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  309. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  310. package/dist/esm/components/navigation/app-level/notification-center.js +22 -19
  311. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  312. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  313. package/dist/esm/components/navigation/app-level/notification-center.labels.js +11 -14
  314. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  315. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  316. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  317. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  318. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  319. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  320. package/dist/esm/components/navigation/app-level/sidebar.js +32 -15
  321. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  322. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  323. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  324. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  325. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  326. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  327. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  328. package/dist/esm/components/navigation/app-level/utility-panel.js +41 -8
  329. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  330. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  331. package/dist/esm/components/navigation/app-level/utility-panel.labels.js +1 -0
  332. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  333. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  334. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  335. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  336. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  337. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  338. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  339. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  340. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  341. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  342. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  343. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  344. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  345. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  346. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  347. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  348. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  349. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  350. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  351. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  352. package/dist/esm/components/overlays/containers/sheet.js +2 -2
  353. package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
  354. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  355. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  356. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  357. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  358. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  359. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  360. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  361. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  362. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  363. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  364. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  365. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  366. package/dist/esm/components/sections/accordion.js +43 -13
  367. package/dist/esm/components/sections/accordion.js.map +1 -1
  368. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  369. package/dist/esm/components/sections/card.d.ts.map +1 -1
  370. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  371. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  372. package/dist/esm/components/sections/collapsible.js +17 -3
  373. package/dist/esm/components/sections/collapsible.js.map +1 -1
  374. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  375. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  376. package/dist/esm/components/sections/content-section.js +11 -7
  377. package/dist/esm/components/sections/content-section.js.map +1 -1
  378. package/dist/esm/components/sections/disclosure-nesting.d.ts +20 -0
  379. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -0
  380. package/dist/esm/components/sections/disclosure-nesting.js +20 -0
  381. package/dist/esm/components/sections/disclosure-nesting.js.map +1 -0
  382. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  383. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  384. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  385. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  386. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  387. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  388. package/dist/esm/components/sections/table.d.ts.map +1 -1
  389. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  390. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  391. package/dist/esm/components/sections/tabs.js +141 -10
  392. package/dist/esm/components/sections/tabs.js.map +1 -1
  393. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  394. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  395. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  396. package/dist/esm/components/typography/label.d.ts.map +1 -1
  397. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  398. package/dist/esm/components/typography/link.d.ts.map +1 -1
  399. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  400. package/dist/esm/components/typography/text.d.ts.map +1 -1
  401. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  402. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  403. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  404. package/dist/esm/config/index.d.ts.map +1 -1
  405. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  406. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  407. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  408. package/dist/esm/config/preset-kits.js +0 -4
  409. package/dist/esm/config/preset-kits.js.map +1 -1
  410. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  411. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  412. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  413. package/dist/esm/config/preset-shell.js +0 -4
  414. package/dist/esm/config/preset-shell.js.map +1 -1
  415. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  416. package/dist/esm/config/presets.d.ts.map +1 -1
  417. package/dist/esm/config/presets.js +0 -1
  418. package/dist/esm/config/presets.js.map +1 -1
  419. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  420. package/dist/esm/config/resources/application.resource-presets.js +6 -6
  421. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  422. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  423. package/dist/esm/config/resources/billing.resource-presets.js +8 -8
  424. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  425. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  426. package/dist/esm/config/resources/guidance.resource-presets.js +7 -7
  427. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  428. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  429. package/dist/esm/config/resources/identity.resource-presets.js +13 -7
  430. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  431. package/dist/esm/config/resources/index.d.ts +23 -1
  432. package/dist/esm/config/resources/index.d.ts.map +1 -1
  433. package/dist/esm/config/resources/index.js +24 -3
  434. package/dist/esm/config/resources/index.js.map +1 -1
  435. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  436. package/dist/esm/config/resources/organizations.resource-presets.js +8 -8
  437. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  438. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  439. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  440. package/dist/esm/config/resources/security.resource-presets.js +104 -13
  441. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  442. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  443. package/dist/esm/index.d.ts +0 -3
  444. package/dist/esm/index.d.ts.map +1 -1
  445. package/dist/esm/index.js +0 -3
  446. package/dist/esm/index.js.map +1 -1
  447. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  448. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  449. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  450. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  451. package/dist/esm/registration/register-common-enums.js +20 -1
  452. package/dist/esm/registration/register-common-enums.js.map +1 -1
  453. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  454. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  455. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  456. package/dist/esm/registration/register-default-presets.js +0 -4
  457. package/dist/esm/registration/register-default-presets.js.map +1 -1
  458. package/dist/esm/shiki-subset.d.ts.map +1 -1
  459. package/dist/esm/theme-exports.d.ts.map +1 -1
  460. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  461. package/dist/esm/themes/cozy.theme.js +8 -3
  462. package/dist/esm/themes/cozy.theme.js.map +1 -1
  463. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  464. package/dist/esm/themes/dense.theme.js +8 -5
  465. package/dist/esm/themes/dense.theme.js.map +1 -1
  466. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  467. package/dist/esm/themes/editorial.theme.js +8 -3
  468. package/dist/esm/themes/editorial.theme.js.map +1 -1
  469. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  470. package/dist/esm/themes/glass.theme.js +10 -4
  471. package/dist/esm/themes/glass.theme.js.map +1 -1
  472. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  473. package/dist/esm/themes/neo-brutalist.theme.js +8 -3
  474. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  475. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  476. package/dist/esm/themes/terminal.theme.js +8 -3
  477. package/dist/esm/themes/terminal.theme.js.map +1 -1
  478. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  479. package/dist/esm/themes/trading.theme.js +8 -3
  480. package/dist/esm/themes/trading.theme.js.map +1 -1
  481. package/dist/tsconfig.build.tsbuildinfo +1 -1
  482. package/package.json +7 -7
  483. package/dist/esm/.builder.pid +0 -9
  484. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +0 -13
  485. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +0 -1
  486. package/dist/esm/components/billing/billing-plan-change-preview.js +0 -44
  487. package/dist/esm/components/billing/billing-plan-change-preview.js.map +0 -1
  488. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +0 -3
  489. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +0 -1
  490. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +0 -36
  491. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +0 -1
  492. package/dist/esm/components/billing/billing-promotion-code-input.d.ts +0 -10
  493. package/dist/esm/components/billing/billing-promotion-code-input.d.ts.map +0 -1
  494. package/dist/esm/components/billing/billing-promotion-code-input.js +0 -68
  495. package/dist/esm/components/billing/billing-promotion-code-input.js.map +0 -1
  496. package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts +0 -3
  497. package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts.map +0 -1
  498. package/dist/esm/components/billing/billing-promotion-code-input.labels.js +0 -14
  499. package/dist/esm/components/billing/billing-promotion-code-input.labels.js.map +0 -1
  500. package/dist/esm/config/resources/infrastructure.resource-presets.d.ts +0 -16
  501. package/dist/esm/config/resources/infrastructure.resource-presets.d.ts.map +0 -1
  502. package/dist/esm/config/resources/infrastructure.resource-presets.js +0 -110
  503. package/dist/esm/config/resources/infrastructure.resource-presets.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dense.theme.js","sourceRoot":"","sources":["../../../../src/themes/dense.theme.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,0EAA0E;AAC1E,8EAA8E;AAC9E,6DAA6D;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAE/D,SAAS,MAAM,CAAC,CAA+C;IAC7D,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;QACtB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,gEAAgE;AAChE,EAAE;AACF,iEAAiE;AACjE,6DAA6D;AAC7D,+CAA+C;AAC/C,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,wEAAwE;AACxE,4EAA4E;AAC5E,mEAAmE;AACnE,0EAA0E;AAC1E,gEAAgE;AAChE,kEAAkE;AAClE,oEAAoE;AACpE,wEAAwE;AACxE,mEAAmE;AACnE,sEAAsE;AACtE,gEAAgE;AAChE,EAAE;AACF,oEAAoE;AACpE,wEAAwE;AACxE,qEAAqE;AACrE,2CAA2C;AAC3C,+DAA+D;AAE/D,MAAM,MAAM,GAAG;IACb,yEAAyE;IACzE,WAAW,EAAE,gLAAgL;IAE7L,uEAAuE;IACvE,WAAW,EAAE,qJAAqJ;IAElK,0DAA0D;IAC1D,UAAU,EAAE,2JAA2J;IAEvK,qCAAqC;IACrC,eAAe,EAAE,8IAA8I;IAE/J,0DAA0D;IAC1D,aAAa,EAAE,mPAAmP;IAElQ,2CAA2C;IAC3C,YAAY,EAAE,+PAA+P;IAE7Q,oEAAoE;IACpE,gBAAgB,EAAE,+YAA+Y;IAEja;;;;;;;mEAO+D;IAC/D,aAAa,EAAE,sNAAsN;IACrO,YAAY,EAAE,+NAA+N;CAC9O,CAAC;AAEF,+DAA+D;AAC/D,wDAAwD;AACxD,+DAA+D;AAE/D,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,MAAM,gBAAgB,GAA2B;IAC/C,EAAE,EAAE,4EAA4E;IAChF,EAAE,EAAE,uEAAuE;IAC3E,EAAE,EAAE,+DAA+D;IACnE,EAAE,EAAE,6DAA6D;IACjE,IAAI,EAAE,wDAAwD;IAC9D,SAAS,EAAE,sDAAsD;CAClE,CAAC;AAEF,MAAM,mBAAmB,GAAW,yEAAyE,CAAC;AAC9G,MAAM,kBAAkB,GAAW,wGAAwG,CAAC;AAE5I,+DAA+D;AAC/D,gDAAgD;AAChD,uEAAuE;AACvE,8DAA8D;AAC9D,wEAAwE;AACxE,sEAAsE;AACtE,uEAAuE;AACvE,+DAA+D;AAC/D,uEAAuE;AACvE,MAAM,6BAA6B,GACjC,yIAAyI,CAAC;AAC5I,6EAA6E;AAC7E,MAAM,iBAAiB,GACrB,+GAA+G,CAAC;AAClH,sEAAsE;AACtE,MAAM,kBAAkB,GACtB,8CAA8C,CAAC;AAEjD,MAAM,WAAW,GAAiD;IAChE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QACnC,2EAA2E;QAC3E,oFAAoF;QACpF,gFAAgF;QAChF,kCAAkC;QAClC,IAAI,EAAE,qHAAqH;QAC3H,MAAM,EAAE;YACN,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,+DAA+D;YACvE,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QACvC,IAAI,EAAE,iHAAiH;QACvH,MAAM,EAAE;YACN,KAAK,EAAE,yBAAyB;YAChC,MAAM,EAAE,gDAAgD;YACxD,KAAK,EAAE,6BAA6B;YACpC,WAAW,EAAE,6EAA6E;YAC1F,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QACnC,IAAI,EAAE,iHAAiH;QACvH,MAAM,EAAE;YACN,KAAK,EAAE,gGAAgG;YACvG,MAAM,EAAE,8DAA8D;YACtE,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,kEAAkE;YAC5E,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QACrC,IAAI,EAAE,sFAAsF;QAC5F,MAAM,EAAE;YACN,KAAK,EAAE,uBAAuB;YAC9B,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACjC,IAAI,EAAE,+CAA+C;QACrD,MAAM,EAAE;YACN,KAAK,EAAE,sEAAsE;YAC7E,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,kEAAkE;YAC5E,WAAW,EAAE,8CAA8C;YAC3D,IAAI,EAAE,sEAAsE;YAC5E,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAChC,IAAI,EAAE,oEAAoE;QAC1E,MAAM,EAAE;YACN,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,wBAAwB;YAChC,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE;YACL,EAAE,EAAE,iDAAiD;YACrD,EAAE,EAAE,0CAA0C;YAC9C,EAAE,EAAE,uCAAuC;YAC3C,EAAE,EAAE,mCAAmC;YACvC,IAAI,EAAE,wDAAwD;YAC9D,SAAS,EAAE,sDAAsD;SAClE;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAClC,kDAAkD;QAClD,wEAAwE;QACxE,mEAAmE;QACnE,2BAA2B;QAC3B,IAAI,EAAE,wfAAwf;QAC9f,MAAM,EAAE;YACN,KAAK,EAAE,4EAA4E;YACnF,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,kBAAkB;SAC5B;QACD,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE;YACN,UAAU,EAAE,wIAAwI;SACrJ;KACF,CAAC;CACH,CAAC;AAEF,+DAA+D;AAC/D,gDAAgD;AAChD,0EAA0E;AAC1E,2EAA2E;AAC3E,mEAAmE;AACnE,+DAA+D;AAE/D,MAAM,OAAO,GAAmC;IAC9C,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC5B,8DAA8D;QAC9D,IAAI,EAAE,oEAAoE;KAC3E,CAAC;IAEF,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC5B,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,2DAA2D;QAC3D,IAAI,EAAE,oEAAoE;KAC3E,CAAC;IAEF,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAC9B,sEAAsE;QACtE,wEAAwE;QACxE,uEAAuE;QACvE,wCAAwC;QACxC,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,oDAAoD;QACpD,IAAI,EAAE,qGAAqG;QAC3G,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,gBAAgB;YAC9B,IAAI,EAAE,MAAM,CAAC,YAAY;SAC1B;KACF,CAAC;IAEF,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC/B,yEAAyE;QACzE,sEAAsE;QACtE,oEAAoE;QACpE,sEAAsE;QACtE,IAAI,EAAE,gFAAgF;QACtF,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,aAAa;YAC3B,IAAI,EAAE,MAAM,CAAC,YAAY;SAC1B;KACF,CAAC;IAEF,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAC7B,IAAI,EAAE,gDAAgD;KACvD,CAAC;IAEF,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAC9B,IAAI,EAAE,kDAAkD;KACzD,CAAC;IAEF,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QACjC,yEAAyE;QACzE,wDAAwD;QACxD,IAAI,EAAE,+DAA+D;KACtE,CAAC;IAEF,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAC7B,0EAA0E;QAC1E,4BAA4B;QAC5B,IAAI,EAAE,kDAAkD;KACzD,CAAC;IAEF,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QACjC,8EAA8E;QAC9E,IAAI,EAAE,gFAAgF;QACtF,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,gBAAgB;YAC9B,IAAI,EAAE,MAAM,CAAC,YAAY;SAC1B;KACF,CAAC;CACH,CAAC;AAEF,+DAA+D;AAC/D,oDAAoD;AACpD,+DAA+D;AAE/D,MAAM,WAAW,GAAiD;IAChE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QACnC,IAAI,EAAE,iMAAiM;QACvM,MAAM,EAAE;YACN,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,qGAAqG;YAC/G,OAAO,EAAE,wGAAwG;SAClH;QACD,KAAK,EAAE;YACL,EAAE,EAAE,yCAAyC;YAC7C,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,yCAAyC;SAC9C;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAClC,IAAI,EAAE,qFAAqF;QAC3F,MAAM,EAAE;YACN,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,qGAAqG;YAC/G,OAAO,EAAE,kEAAkE;SAC5E;QACD,KAAK,EAAE;YACL,EAAE,EAAE,yCAAyC;YAC7C,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,yCAAyC;SAC9C;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;KAC3C,CAAC;IAEF,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QACtC,IAAI,EAAE,oHAAoH;QAC1H,MAAM,EAAE;YACN,KAAK,EAAE,oDAAoD;YAC3D,QAAQ,EAAE,qGAAqG;YAC/G,OAAO,EAAE,iCAAiC;SAC3C;QACD,KAAK,EAAE;YACL,EAAE,EAAE,uCAAuC;YAC3C,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,wCAAwC;SAC7C;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,oIAAoI,EAAE;KAC7J,CAAC;IAEF,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QACpC,IAAI,EAAE,iDAAiD;QACvD,MAAM,EAAE;YACN,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,uJAAuJ;YACjK,QAAQ,EAAE,wEAAwE;YAClF,OAAO,EAAE,wGAAwG;SAClH;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,wIAAwI,EAAE;KACjK,CAAC;IAEF,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAClC,IAAI,EAAE,6GAA6G;QACnH,MAAM,EAAE;YACN,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,iCAAiC;YAC3C,QAAQ,EAAE,wEAAwE;YAClF,OAAO,EAAE,wGAAwG;SAClH;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,gKAAgK,EAAE;KACzL,CAAC;CACH,CAAC;AAEF,+DAA+D;AAC/D,6CAA6C;AAC7C,+DAA+D;AAE/D,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE;QACN,KAAK,EAAE,2CAA2C;QAClD,KAAK,EAAE,6BAA6B,kBAAkB,EAAE;QACxD,OAAO,EAAE,kBAAkB;KAC5B;IACD,iFAAiF;IACjF,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,0CAA0C,EAAE;CAClG,CAAC;AAEF,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,iFAAiF;AACjF,oFAAoF;AACpF,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,wDAAwD;AACxD,EAAE;AACF,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,4DAA4D;AAC5D,MAAM,SAAS,GAA+C;IAC5D,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjC,gFAAgF;QAChF,6EAA6E;QAC7E,4DAA4D;QAC5D,IAAI,EAAE,kHAAkH;QACxH,GAAG,eAAe;KACnB,CAAC;IACF,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC9B,IAAI,EAAE,6GAA6G;QACnH,GAAG,eAAe;KACnB,CAAC;IACF,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjC,IAAI,EAAE,sHAAsH;QAC5H,GAAG,eAAe;KACnB,CAAC;IACF,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjC,IAAI,EAAE,sHAAsH;QAC5H,GAAG,eAAe;KACnB,CAAC;IACF,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAC/B,IAAI,EAAE,kIAAkI;QACxI,GAAG,eAAe;KACnB,CAAC;CACH,CAAC;AAEF,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;AAE/D,MAAM,UAAU,GAAgD;IAC9D,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACjC,IAAI,EAAE,8DAA8D;QACpE,MAAM,EAAE;YACN,KAAK,EAAE,qEAAqE;YAC5E,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,uEAAuE;YAC/E,QAAQ,EAAE,8NAA8N;YACxO,QAAQ,EAAE,2JAA2J;SACtK;QACD,KAAK,EAAE;YACL,EAAE,EAAE,aAAa;YACjB,EAAE,EAAE,aAAa;YACjB,EAAE,EAAE,cAAc;SACnB;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;KAC1C,CAAC;IAEF,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QACpC,IAAI,EAAE,mEAAmE;QACzE,MAAM,EAAE;YACN,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,wEAAwE;YAClF,QAAQ,EAAE,yEAAyE;SACpF;QACD,KAAK,EAAE;YACL,EAAE,EAAE,kBAAkB;YACtB,EAAE,EAAE,kBAAkB;YACtB,EAAE,EAAE,mBAAmB;SACxB;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;KAC1C,CAAC;IAEF,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC/B,IAAI,EAAE,qCAAqC;QAC3C,MAAM,EAAE;YACN,KAAK,EAAE,8CAA8C;YACrD,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,4EAA4E;YACtF,QAAQ,EAAE,yEAAyE;SACpF;QACD,KAAK,EAAE;YACL,EAAE,EAAE,kBAAkB;YACtB,EAAE,EAAE,kBAAkB;YACtB,EAAE,EAAE,mBAAmB;SACxB;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;KAC1C,CAAC;IAEF,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QACpC,IAAI,EAAE,mCAAmC;QACzC,MAAM,EAAE;YACN,KAAK,EAAE,qEAAqE;YAC5E,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,iKAAiK;YAC3K,QAAQ,EAAE,yEAAyE;SACpF;QACD,KAAK,EAAE;YACL,EAAE,EAAE,aAAa;YACjB,EAAE,EAAE,aAAa;YACjB,EAAE,EAAE,cAAc;SACnB;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;KAC1C,CAAC;CACH,CAAC;AAEF,+DAA+D;AAC/D,qDAAqD;AACrD,+DAA+D;AAE/D,MAAM,eAAe,GAAqB,MAAM,CAAC;IAC/C,2EAA2E;IAC3E,0DAA0D;IAC1D,2DAA2D;IAC3D,IAAI,EAAE,2DAA2D;IACjE,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,IAAI,EAAE,MAAM,CAAC,YAAY;KAC1B;CACF,CAAC,CAAC;AAEH,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAE/D,MAAM,OAAO,GAAqB,MAAM,CAAC;IACvC,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAC;AAEH,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAE/D,MAAM,QAAQ,GAAqB,MAAM,CAAC;IACxC,IAAI,EAAE,+DAA+D;CACtE,CAAC,CAAC;AAEH,MAAM,cAAc,GAAqB,MAAM,CAAC;IAC9C,IAAI,EAAE,+DAA+D;CACtE,CAAC,CAAC;AAEH,MAAM,cAAc,GAAqB,MAAM,CAAC;IAC9C,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE;QACN,KAAK,EAAE,0HAA0H;QACjI,IAAI,EAAE,2HAA2H;KAClI;CACF,CAAC,CAAC;AAEH,+DAA+D;AAC/D,8BAA8B;AAC9B,+DAA+D;AAE/D,MAAM,UAAU,GAAgD;IAC9D,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAClC,IAAI,EAAE,2CAA2C;QACjD,oEAAoE;QACpE,iEAAiE;QACjE,iEAAiE;QACjE,4DAA4D;QAC5D,sEAAsE;QACtE,uEAAuE;QACvE,oDAAoD;QACpD,KAAK,EAAE;YACL,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;SACd;KACF,CAAC;IACF,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC/B,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE;KACzD,CAAC;IACF,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAChC,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE;KACzD,CAAC;IACF,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QACtC,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;KACxC,CAAC;IACF,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAC/B,IAAI,EAAE,gDAAgD;QACtD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE;KACzD,CAAC;CACH,CAAC;AAEF,+DAA+D;AAC/D,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,oEAAoE;AACpE,8EAA8E;AAC9E,qCAAqC;AACrC,+DAA+D;AAE/D,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,kRAAkR;IAE/R,OAAO,EAAE,kBAAkB;IAE3B,WAAW;IACX,OAAO;IACP,WAAW;IACX,SAAS;IACT,UAAU;IACV,eAAe;IACf,OAAO;IACP,QAAQ;IACR,cAAc;IACd,cAAc;IACd,UAAU;IACV,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,SAAS;IAC1B,UAAU,EAAE,0BAA0B;CACvC,CAAC","sourcesContent":["import type { ComponentStyleTheme } from '@wildo-ai/presets-components-models';\nimport {\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n// Dense derives from the known-good default theme (full recipe coverage +\n// correct types) and compacts it. The chart preset is shared with the default\n// theme — imported from the package rather than re-authored.\nimport { DEFAULT_CHART_STYLE_PRESET } from '@wildo-ai/saas-frontend-lib';\nimport { UI_SPACING_COMPACT } from '../config/preset-design-system';\n\n// ============================================================\n// Helper\n// ============================================================\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return {\n base: r.base,\n states: r.states ?? {},\n sizes: r.sizes,\n motion: r.motion ?? {},\n gesture: r.gesture,\n policy: r.policy,\n };\n}\n\n// ============================================================\n// Motion constants — reference Level 1 tokens via CSS variables\n//\n// Each behavior targets SPECIFIC properties (no transition-all).\n// Durations and easings come from Level 1 --motion-* tokens.\n// All include motion-reduce for accessibility.\n// ============================================================\n//\n// MOTION PERSONALITY — Default (shadcn / Material-inspired SaaS)\n// Hover/focus : FAST (150ms) + DEFAULT → Material Standard curve.\n// Bidirectional state changes,\n// subtle but present.\n// Overlay enter: NORMAL (250ms) + ENTER → fade + zoom-95 + 2px slide.\n// Pure decelerate.\n// Overlay exit : FAST (150ms) + EXIT → quicker than enter.\n// Backdrop : NORMAL/FAST + ENTER/EXIT → matches overlays.\n// Gestures : NONE — neutral SaaS baseline. CSS-only motion is the\n// contract; theme can be swapped without removing\n// motion.dev wrappers from app code (which any theme\n// may activate via the recipe `gesture` slot).\n//\n// This theme is the reference baseline for the framework. All other\n// themes deviate FROM it intentionally — Glass adds gestures, Editorial\n// stretches durations, Terminal/Trading collapse them, Neo-Brutalist\n// strips easing, Cozy adds gentle springs.\n// ============================================================\n\nconst MOTION = {\n /** Interactive elements: bg, color, border, shadow, transform changes */\n interactive: \"transition-[background-color,color,border-color,box-shadow,transform] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Form controls: border, shadow, color changes on focus/validation */\n formControl: \"transition-[color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Selectable items: bg, color, border on state change */\n selectable: \"transition-[background-color,color,border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Sidebar: width/height collapse */\n sidebarCollapse: \"transition-[width,height,padding] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Enter animation for overlays/surfaces (fade + zoom) */\n enterFadeZoom: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-normal)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none\",\n\n /** Exit animation for overlays/surfaces */\n exitFadeZoom: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-fast)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none\",\n\n /** Enter for directional popovers (fade + zoom + slide per side) */\n enterDirectional: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-normal)] data-[state=open]:ease-[var(--motion-easing-enter)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:data-[state=open]:animate-none\",\n\n /** Enter/exit for backdrop overlay (fade only).\n *\n * Uses explicit ENTER/EXIT easing tokens. Without\n * `ease-[...]`, browsers fall back to the CSS default `ease` curve,\n * silently inheriting a generic curve instead of the theme's ENTER\n * (decelerate) / EXIT (accelerate) personality. Backdrops fade only\n * so the perceptual difference is small, but consistency matters\n * for the \"every motion uses an explicit theme token\" rule. */\n backdropEnter: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-normal)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none\",\n backdropExit: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-fast)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none\",\n};\n\n// ============================================================\n// INTERACTIVE — Buttons, menu items, clickable surfaces\n// ============================================================\n\n// DENSE sizes — one step shorter than default (md h-8 / sm h-7 / lg h-9) with\n// trimmed inline padding, and one radius tier tighter (control `rounded-md`).\n// `pointer-coarse:` touch floors are preserved so dense stays tap-safe.\nconst interactiveSizes: Record<string, string> = {\n xs: \"h-6 px-2 text-xs gap-1 rounded-md has-[>svg]:px-1.5 pointer-coarse:min-h-9\",\n sm: \"h-7 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2 pointer-coarse:min-h-11\",\n md: \"h-8 px-3 has-[>svg]:px-2.5 rounded-md pointer-coarse:min-h-11\",\n lg: \"h-9 px-4 rounded-md has-[>svg]:px-3 pointer-coarse:min-h-11\",\n icon: \"size-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n \"icon-sm\": \"size-6 pointer-coarse:min-h-9 pointer-coarse:min-w-9\",\n};\n\nconst interactiveDisabled: string = \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\";\nconst interactiveInvalid: string = \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\";\n\n// ============================================================\n// Focus-ring constants — single source of truth\n// for the keyboard-focus indicators used by INTERACTIVE, FORM_CONTROL,\n// SELECTABLE, and INDICATOR recipes. Shape mirrors the global\n// `.focus-ring-offset` / `.focus-ring-inset` Tailwind utilities exposed\n// in `index.css`; the recipes use raw classes (rather than the @apply\n// utility) because some variants pair the ring with a coloured border.\n// ============================================================\n/** Standard 2px offset ring + matching border-ring (most controls). */\nconst FOCUS_RING_OFFSET_WITH_BORDER: string =\n \"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\";\n/** Standard 2px offset ring with NO border-ring change (filled / accent). */\nconst FOCUS_RING_OFFSET: string =\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\";\n/** Compact 2px ring used by indicator badges and selectable items. */\nconst FOCUS_RING_COMPACT: string =\n \"focus-visible:ring-2 focus-visible:ring-ring\";\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n [InteractiveVariant.PRIMARY]: recipe({\n // T2 tactile: a hairline edge (`border-primary/50`) + `shadow-sm` give the\n // button real elevation, and the press (`active:translate-y-px active:shadow-none`)\n // reads as a physical push. `MOTION.interactive` already transitions transform,\n // so the press animates for free.\n base: \"bg-primary text-primary-foreground rounded-md border border-primary/50 shadow-sm font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:bg-primary/90\",\n active: \"active:bg-primary/80 active:shadow-none active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: \"bg-destructive text-destructive-foreground rounded-md font-medium text-sm cursor-pointer dark:bg-destructive/60\",\n states: {\n hover: \"hover:bg-destructive/90\",\n active: \"active:bg-destructive/80 active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n highlighted: \"focus:bg-destructive/10 dark:focus:bg-destructive/20 focus:text-destructive\",\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.OUTLINE]: recipe({\n base: \"border bg-background shadow-xs rounded-md font-medium text-sm cursor-pointer dark:bg-input/30 dark:border-input\",\n states: {\n hover: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-input/50 dark:hover:text-foreground\",\n active: \"active:bg-accent/80 active:shadow-none active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.SECONDARY]: recipe({\n base: \"bg-secondary text-secondary-foreground rounded-md font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:bg-secondary/80\",\n active: \"active:bg-secondary/70 active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.GHOST]: recipe({\n base: \"rounded-md font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n active: \"active:bg-accent/80\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n highlighted: \"focus:bg-accent focus:text-accent-foreground\",\n open: \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.LINK]: recipe({\n base: \"text-primary underline-offset-4 font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:underline\",\n active: \"active:text-primary/80\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: {\n xs: \"h-7 px-2.5 text-xs gap-1 pointer-coarse:min-h-9\",\n sm: \"h-8 px-3 gap-1.5 pointer-coarse:min-h-11\",\n md: \"h-9 px-4 py-2 pointer-coarse:min-h-11\",\n lg: \"h-10 px-6 pointer-coarse:min-h-11\",\n icon: \"size-9 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n \"icon-sm\": \"size-7 pointer-coarse:min-h-9 pointer-coarse:min-w-9\",\n },\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.ACCENT]: recipe({\n // TT-1: Gradient stops resolved from theme tokens\n // (`--accent-gradient-{from,via,to}`) so tenants can rebrand the ACCENT\n // recipe without forking a theme. Defaults preserve the historical\n // violet/blue/pink visual.\n base: 'relative bg-primary text-primary-foreground font-semibold rounded-md shadow-xs before:absolute before:inset-0 before:rounded-[inherit] before:p-[1px] before:bg-[length:200%_200%] before:bg-gradient-to-r before:from-accent-gradient-from before:via-accent-gradient-via before:to-accent-gradient-to before:animate-[gradient-rotate_3s_ease_infinite] motion-reduce:before:animate-none before:-z-10 before:blur-[2px] shadow-[0_0_15px_color-mix(in_oklch,var(--primary)_20%,transparent)] text-sm cursor-pointer',\n states: {\n hover: 'hover:shadow-[0_0_25px_color-mix(in_oklch,var(--primary)_35%,transparent)]',\n active: 'active:scale-[0.98]',\n focus: FOCUS_RING_OFFSET,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition: 'transition-[shadow,transform] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE — Cards, dialogs, popovers, dropdowns\n// SURFACE PERSONALITY — clean SaaS material hierarchy: cards are bordered\n// elevated panels, tab panels are attached but quiet, shell is chromaless,\n// transient notifications reuse overlay chrome at a smaller scale.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n [SurfaceVariant.BASE]: recipe({\n // Card / panel — anchor of the surface scale at `rounded-lg`.\n base: \"bg-surface-raised text-surface-raised-foreground rounded-lg border\",\n }),\n\n [SurfaceVariant.CARD]: recipe({\n // Content card — the elevated `surface-raised` fill + border + soft shadow,\n // ALWAYS painted so an explicitly-authored CARD section reads as a card in\n // every context (including inside a dialog/page). Mirrors BASE, the anchor\n // card surface; the section preset adds container padding.\n base: \"bg-surface-raised text-surface-raised-foreground rounded-lg border\",\n }),\n\n [SurfaceVariant.RAISED]: recipe({\n // Popover / dropdown — floats above the page, gets a slightly tighter\n // radius than BASE to feel \"cut from\" the larger card surface (one tier\n // smaller, never two; previously `rounded-md` was visibly inconsistent\n // when popovers stacked next to cards).\n // `fill-surface-overlay` mirrors the background so SVG children that paint\n // via `fill` — notably the Tooltip's Radix arrow — inherit the body colour\n // (CSS `fill` inherits across Radix's arrow wrapper span; `background` does\n // not). Keep `fill-*` in lockstep with `bg-*` here.\n base: \"bg-surface-overlay fill-surface-overlay text-surface-overlay-foreground rounded-md border shadow-md\",\n motion: {\n enter: MOTION.enterDirectional,\n exit: MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.OVERLAY]: recipe({\n // Dialog / sheet — the heaviest, most modal surface; matches BASE radius\n // so a dialog reads as a \"card the user can act inside\" rather than a\n // smaller-cornered floating panel. Required to restore monotonicity\n // (BASE ≤ OVERLAY) — `rounded-md` here was visually demoting dialogs.\n base: \"bg-surface-overlay text-surface-overlay-foreground rounded-lg border shadow-lg\",\n motion: {\n enter: MOTION.enterFadeZoom,\n exit: MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.INSET]: recipe({\n base: \"bg-surface-inset text-surface-inset-foreground\",\n }),\n\n [SurfaceVariant.SUNKEN]: recipe({\n base: \"bg-surface-sunken text-surface-sunken-foreground\",\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // Tab panel joins to the tab strip: same visual language as BASE, but no\n // border/shadow so the surface policy can own the join.\n base: \"bg-surface-raised text-surface-raised-foreground rounded-b-lg\",\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // App/page shell: chromaless raised background. Landmark semantics remain\n // opt-in via policy config.\n base: \"bg-surface-raised text-surface-raised-foreground\",\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast/snackbar: compact floating card, visually between RAISED and OVERLAY.\n base: \"bg-surface-overlay text-surface-overlay-foreground rounded-md border shadow-md\",\n motion: {\n enter: MOTION.enterDirectional,\n exit: MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL — Inputs, textareas, select triggers\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n [FormControlVariant.DEFAULT]: recipe({\n base: \"border-border dark:bg-surface-inset/30 rounded-md border bg-transparent shadow-xs text-base md:text-sm placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground\",\n states: {\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n },\n sizes: {\n md: \"h-8 px-2.5 py-1 pointer-coarse:min-h-11\",\n sm: \"h-7 px-2 py-1 text-sm pointer-coarse:min-h-11\",\n lg: \"h-9 px-3 py-1.5 pointer-coarse:min-h-11\",\n },\n motion: { transition: MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: \"bg-muted rounded-md border-0 text-base md:text-sm placeholder:text-muted-foreground\",\n states: {\n focus: FOCUS_RING_OFFSET,\n disabled: \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 aria-invalid:border-destructive\",\n },\n sizes: {\n md: \"h-8 px-2.5 py-1 pointer-coarse:min-h-11\",\n sm: \"h-7 px-2 py-1 text-sm pointer-coarse:min-h-11\",\n lg: \"h-9 px-3 py-1.5 pointer-coarse:min-h-11\",\n },\n motion: { transition: MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n base: \"bg-transparent border-0 border-b border-border rounded-none text-base md:text-sm placeholder:text-muted-foreground\",\n states: {\n focus: \"focus-visible:border-ring focus-visible:border-b-2\",\n disabled: \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:border-destructive\",\n },\n sizes: {\n md: \"h-9 px-0 py-1 pointer-coarse:min-h-11\",\n sm: \"h-8 px-0 py-1 text-sm pointer-coarse:min-h-11\",\n lg: \"h-10 px-0 py-2 pointer-coarse:min-h-11\",\n },\n motion: { transition: \"transition-[border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n base: \"border-border dark:bg-input/30 border shadow-xs\",\n states: {\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary dark:data-[state=checked]:bg-primary\",\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n },\n motion: { transition: \"transition-[color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: \"data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 border border-transparent shadow-xs\",\n states: {\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=checked]:bg-primary\",\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n },\n motion: { transition: \"transition-[background-color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\" },\n }),\n};\n\n// ============================================================\n// INDICATOR — Badges, alerts, toast severity\n// ============================================================\n\nconst indicatorShared = {\n states: {\n hover: \"[a&]:hover:opacity-[var(--opacity-hover)]\",\n focus: `focus-visible:border-ring ${FOCUS_RING_COMPACT}`,\n invalid: interactiveInvalid,\n },\n // DENSE keeps the pulse subtle to match its compact chrome. Reduced-motion safe.\n motion: { transition: MOTION.interactive, attention: \"animate-pulse motion-reduce:animate-none\" },\n};\n\n// TONAL badges (T1 + T1b) — tinted background + AA-contrast text + hairline\n// border, in place of the previous solid full-saturation fills. Reads calmer\n// and modern (Linear/Stripe/shadcn) and lets many status chips coexist on one\n// row without the \"wall of solid colour\" effect.\n//\n// The tint (`bg-{status}-subtle`) and text (`text-{status}-subtle-foreground`)\n// come from dedicated SUBTLE STATUS TOKENS (T1b), not per-recipe `/10` mixes.\n// Those tokens are palette-adaptive `color-mix()` formulas emitted by the design\n// -token CSS generator (`design-tokens-css.shared.ts` → `buildSubtleStatusColors`),\n// tuned so 12px badge text clears WCAG-AA (≥4.5) against its tint in BOTH light\n// and dark — including the amber WARNING case that fails contrast with a naive\n// same-hue text. Because the tokens reference the base `--{status}` vars, a\n// palette retune (or a light/dark switch) retunes the chip automatically, and a\n// tenant can override any pair via `DesignSystemToken.*_SUBTLE(_FOREGROUND)`.\n// The border stays on the palette base (`border-{status}/25`, `/30` for warning\n// where the base is lighter) so it tracks the same hue.\n//\n// DENSE delta: badges keep the AA-safe subtle tokens (using the raw `text-{status}`\n// here would reintroduce the light-mode contrast failure T1b fixed) but tighten to\n// `px-1.5 py-0` for a compact chip. A further \"quiet tint + neutral text + colored\n// status dot\" pass needs a badge-component-level dot, so it is intentionally NOT a\n// recipe change — deferred as a component-layer refinement.\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({\n // Tonal like the other four — see default.theme.ts for the rationale. Fixes the\n // sub-AA washed-out grey chip that raw `text-muted-foreground` on `bg-muted`\n // produced for `default`/`secondary`/`outline` enum values.\n base: \"bg-neutral-subtle text-neutral-subtle-foreground border-border rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.INFO]: recipe({\n base: \"bg-info-subtle text-info-subtle-foreground border-info/25 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.SUCCESS]: recipe({\n base: \"bg-success-subtle text-success-subtle-foreground border-success/25 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.WARNING]: recipe({\n base: \"bg-warning-subtle text-warning-subtle-foreground border-warning/30 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.ERROR]: recipe({\n base: \"bg-destructive-subtle text-destructive-subtle-foreground border-destructive/25 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n};\n\n// ============================================================\n// SELECTABLE — Tabs, sidebar active items, toggles\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: \"rounded-md text-sm outline-hidden ring-surface-sunken-border\",\n states: {\n hover: \"hover:bg-surface-sunken-accent hover:text-surface-sunken-foreground\",\n focus: \"focus-visible:ring-2\",\n active: \"active:bg-surface-sunken-accent active:text-surface-sunken-foreground\",\n selected: \"data-[active=true]:bg-surface-sunken-accent data-[active=true]:font-medium data-[active=true]:text-surface-sunken-foreground data-[state=active]:bg-surface-sunken-accent data-[state=active]:text-surface-sunken-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)] aria-disabled:pointer-events-none aria-disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 text-xs\",\n md: \"h-8 text-sm\",\n lg: \"h-12 text-sm\",\n },\n motion: { transition: MOTION.selectable },\n }),\n\n [SelectableVariant.UNDERLINE]: recipe({\n base: \"rounded-none border-b-2 border-transparent text-sm outline-hidden\",\n states: {\n hover: \"hover:text-foreground\",\n focus: FOCUS_RING_COMPACT,\n selected: \"data-[state=active]:border-primary data-[state=active]:text-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 text-xs pb-1\",\n md: \"h-8 text-sm pb-2\",\n lg: \"h-10 text-sm pb-3\",\n },\n motion: { transition: MOTION.selectable },\n }),\n\n [SelectableVariant.PILL]: recipe({\n base: \"rounded-full text-sm outline-hidden\",\n states: {\n hover: \"hover:bg-accent hover:text-accent-foreground\",\n focus: FOCUS_RING_COMPACT,\n selected: \"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 px-3 text-xs\",\n md: \"h-8 px-4 text-sm\",\n lg: \"h-10 px-5 text-sm\",\n },\n motion: { transition: MOTION.selectable },\n }),\n\n [SelectableVariant.INDICATOR]: recipe({\n base: \"rounded-md text-sm outline-hidden\",\n states: {\n hover: \"hover:bg-surface-sunken-accent hover:text-surface-sunken-foreground\",\n focus: FOCUS_RING_COMPACT,\n selected: \"data-[active=true]:border-s-2 data-[active=true]:border-surface-sunken-primary data-[active=true]:font-medium data-[active=true]:text-surface-sunken-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 text-xs\",\n md: \"h-8 text-sm\",\n lg: \"h-12 text-sm\",\n },\n motion: { transition: MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY_BACKDROP — Dialog/Sheet background overlay\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n // Tailwind v4's `bg-color/[var()]` opacity modifier uses color-mix() which\n // doesn't resolve CSS custom property decimals correctly.\n // Use arbitrary bg value with rgb() alpha channel instead.\n base: \"bg-[rgb(0_0_0_/_var(--opacity-overlay))] backdrop-blur-sm\",\n motion: {\n enter: MOTION.backdropEnter,\n exit: MOTION.backdropExit,\n },\n});\n\n// ============================================================\n// DIVIDER — Separator\n// ============================================================\n\nconst divider: UIBehaviorRecipe = recipe({\n base: \"bg-border shrink-0\",\n});\n\n// ============================================================\n// SKELETON — Loading placeholders\n// ============================================================\n\nconst skeleton: UIBehaviorRecipe = recipe({\n base: \"bg-accent animate-pulse rounded-md motion-reduce:animate-none\",\n});\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: \"text-muted-foreground animate-spin motion-reduce:animate-none\",\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: \"bg-background/80\",\n motion: {\n enter: \"animate-in fade-in-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-enter)] motion-reduce:animate-none\",\n exit: \"animate-out fade-out-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-exit)] motion-reduce:animate-none\",\n },\n});\n\n// ============================================================\n// TYPOGRAPHY — Text hierarchy\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n base: \"font-semibold leading-none tracking-tight\",\n // Heading scale rebalance — gaps were 12/4/2px (h1→h2→h3→h4); h1 at\n // text-4xl (36px) jumped 1.5× to h2 (text-2xl, 24px), which felt\n // disproportionate for in-app SaaS UI (text-4xl is a hero size).\n // Compressing h1 to text-3xl yields a smooth 6/4/2px ladder\n // (1.25× → 1.2× → 1.11×, classic Major Third base). Pages that want a\n // hero h1 can opt in with `className=\"text-4xl sm:text-5xl\"` since the\n // size class is the LAST `text-*` to win in `cn()`.\n sizes: {\n h1: \"text-3xl\",\n h2: \"text-2xl\",\n h3: \"text-xl\",\n h4: \"text-lg\",\n md: \"text-lg\",\n },\n }),\n [TypographyVariant.BODY]: recipe({\n base: \"text-foreground text-sm\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n [TypographyVariant.LABEL]: recipe({\n base: \"font-medium text-sm leading-none\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n [TypographyVariant.DESCRIPTION]: recipe({\n base: \"text-muted-foreground text-sm\",\n sizes: { sm: \"text-xs\", md: \"text-sm\" },\n }),\n [TypographyVariant.CODE]: recipe({\n base: \"font-mono text-sm bg-muted rounded px-1 py-0.5\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n};\n\n// ============================================================\n// DENSE THEME — assembled (opt-in, Linear-grade)\n//\n// Derived from the default theme and compacted: shorter control/input sizes\n// (md h-8 · sm h-7 · lg h-9), one radius tier tighter (control `rounded-md`,\n// card `rounded-lg`), flat + hairline surfaces (no `shadow-sm` on cards).\n// Opt in per app: `theme: denseTheme` in `design-system.config.ts`.\n// Spacing uses the compact token set (`UI_SPACING_COMPACT`) so rows/gaps also\n// tighten, not just control heights.\n// ============================================================\n\nexport const denseTheme: ComponentStyleTheme = {\n id: 'dense',\n name: 'Dense',\n description: 'Compact, Linear-grade opt-in variant of the default theme. Shorter controls/inputs (md h-8 · sm h-7 · lg h-9), one radius tier tighter (control rounded-md · card rounded-lg), flat + hairline surfaces (no card shadow). Same tonal badges, focus rings, and motion as default.',\n\n spacing: UI_SPACING_COMPACT,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: undefined,\n backgroundLayer: undefined,\n chartStyle: DEFAULT_CHART_STYLE_PRESET,\n};\n"]}
1
+ {"version":3,"file":"dense.theme.js","sourceRoot":"","sources":["../../../../src/themes/dense.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme } from '@wildo-ai/presets-components-models';\nimport {\n DividerVariant,\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SKELETON_NEUTRAL_TINT,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n// Dense derives from the known-good default theme (full recipe coverage +\n// correct types) and compacts it. The chart preset is shared with the default\n// theme — imported from the package rather than re-authored.\nimport { DEFAULT_CHART_STYLE_PRESET } from '@wildo-ai/saas-frontend-lib';\nimport { UI_SPACING_COMPACT } from '../config/preset-design-system';\n\n// ============================================================\n// Helper\n// ============================================================\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return {\n base: r.base,\n states: r.states ?? {},\n sizes: r.sizes,\n motion: r.motion ?? {},\n gesture: r.gesture,\n policy: r.policy,\n };\n}\n\n// ============================================================\n// Motion constants — reference Level 1 tokens via CSS variables\n//\n// Each behavior targets SPECIFIC properties (no transition-all).\n// Durations and easings come from Level 1 --motion-* tokens.\n// All include motion-reduce for accessibility.\n// ============================================================\n//\n// MOTION PERSONALITY — Default (shadcn / Material-inspired SaaS)\n// Hover/focus : FAST (150ms) + DEFAULT → Material Standard curve.\n// Bidirectional state changes,\n// subtle but present.\n// Overlay enter: NORMAL (250ms) + ENTER → fade + zoom-95 + 2px slide.\n// Pure decelerate.\n// Overlay exit : FAST (150ms) + EXIT → quicker than enter.\n// Backdrop : NORMAL/FAST + ENTER/EXIT → matches overlays.\n// Gestures : NONE — neutral SaaS baseline. CSS-only motion is the\n// contract; theme can be swapped without removing\n// motion.dev wrappers from app code (which any theme\n// may activate via the recipe `gesture` slot).\n//\n// This theme is the reference baseline for the framework. All other\n// themes deviate FROM it intentionally — Glass adds gestures, Editorial\n// stretches durations, Terminal/Trading collapse them, Neo-Brutalist\n// strips easing, Cozy adds gentle springs.\n// ============================================================\n\nconst MOTION = {\n /** Interactive elements: bg, color, border, shadow, transform changes */\n interactive: \"transition-[background-color,color,border-color,box-shadow,transform] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Form controls: border, shadow, color changes on focus/validation */\n formControl: \"transition-[color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Selectable items: bg, color, border on state change */\n selectable: \"transition-[background-color,color,border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Sidebar: width/height collapse */\n sidebarCollapse: \"transition-[width,height,padding] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\",\n\n /** Enter animation for overlays/surfaces (fade + zoom) */\n enterFadeZoom: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-normal)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none\",\n\n /** Exit animation for overlays/surfaces */\n exitFadeZoom: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-fast)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none\",\n\n /** Enter for directional popovers (fade + zoom + slide per side) */\n enterDirectional: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-normal)] data-[state=open]:ease-[var(--motion-easing-enter)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:data-[state=open]:animate-none\",\n\n /** Enter/exit for backdrop overlay (fade only).\n *\n * Uses explicit ENTER/EXIT easing tokens. Without\n * `ease-[...]`, browsers fall back to the CSS default `ease` curve,\n * silently inheriting a generic curve instead of the theme's ENTER\n * (decelerate) / EXIT (accelerate) personality. Backdrops fade only\n * so the perceptual difference is small, but consistency matters\n * for the \"every motion uses an explicit theme token\" rule. */\n backdropEnter: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-normal)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none\",\n backdropExit: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-fast)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none\",\n};\n\n// ============================================================\n// INTERACTIVE — Buttons, menu items, clickable surfaces\n// ============================================================\n\n// DENSE sizes — one step shorter than default (md h-8 / sm h-7 / lg h-9) with\n// trimmed inline padding, and one radius tier tighter (control `rounded-md`).\n// `pointer-coarse:` touch floors are preserved so dense stays tap-safe.\nconst interactiveSizes: Record<string, string> = {\n xs: \"h-6 px-2 text-xs gap-1 rounded-md has-[>svg]:px-1.5 pointer-coarse:min-h-9\",\n sm: \"h-7 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2 pointer-coarse:min-h-11\",\n md: \"h-8 px-3 has-[>svg]:px-2.5 rounded-md pointer-coarse:min-h-11\",\n lg: \"h-9 px-4 rounded-md has-[>svg]:px-3 pointer-coarse:min-h-11\",\n icon: \"size-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n \"icon-sm\": \"size-6 pointer-coarse:min-h-9 pointer-coarse:min-w-9\",\n};\n\nconst interactiveDisabled: string = \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\";\nconst interactiveInvalid: string = \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\";\n\n// ============================================================\n// Focus-ring constants — single source of truth\n// for the keyboard-focus indicators used by INTERACTIVE, FORM_CONTROL,\n// SELECTABLE, and INDICATOR recipes. Shape mirrors the global\n// `.focus-ring-offset` / `.focus-ring-inset` Tailwind utilities exposed\n// in `index.css`; the recipes use raw classes (rather than the @apply\n// utility) because some variants pair the ring with a coloured border.\n// ============================================================\n/** Standard 2px offset ring + matching border-ring (most controls). */\nconst FOCUS_RING_OFFSET_WITH_BORDER: string =\n \"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\";\n/** Standard 2px offset ring with NO border-ring change (filled / accent). */\nconst FOCUS_RING_OFFSET: string =\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\";\n/** Compact 2px ring used by indicator badges and selectable items. */\nconst FOCUS_RING_COMPACT: string =\n \"focus-visible:ring-2 focus-visible:ring-ring\";\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n [InteractiveVariant.PRIMARY]: recipe({\n // T2 tactile: a hairline edge (`border-primary/50`) + `shadow-sm` give the\n // button real elevation, and the press (`active:translate-y-px active:shadow-none`)\n // reads as a physical push. `MOTION.interactive` already transitions transform,\n // so the press animates for free.\n base: \"bg-primary text-primary-foreground rounded-md border border-primary/50 shadow-sm font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:bg-primary/90\",\n active: \"active:bg-primary/80 active:shadow-none active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: \"bg-destructive text-destructive-foreground rounded-md font-medium text-sm cursor-pointer dark:bg-destructive/60\",\n states: {\n hover: \"hover:bg-destructive/90\",\n active: \"active:bg-destructive/80 active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n highlighted: \"focus:bg-destructive/10 dark:focus:bg-destructive/20 focus:text-destructive\",\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.OUTLINE]: recipe({\n base: \"border bg-background shadow-xs rounded-md font-medium text-sm cursor-pointer dark:bg-input/30 dark:border-input\",\n states: {\n hover: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-input/50 dark:hover:text-foreground\",\n active: \"active:bg-accent/80 active:shadow-none active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.SECONDARY]: recipe({\n base: \"bg-secondary text-secondary-foreground rounded-md font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:bg-secondary/80\",\n active: \"active:bg-secondary/70 active:translate-y-px\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.GHOST]: recipe({\n base: \"rounded-md font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n active: \"active:bg-accent/80\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n highlighted: \"focus:bg-accent focus:text-accent-foreground\",\n open: \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.LINK]: recipe({\n base: \"text-primary underline-offset-4 font-medium text-sm cursor-pointer\",\n states: {\n hover: \"hover:underline\",\n active: \"active:text-primary/80\",\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: {\n xs: \"h-7 px-2.5 text-xs gap-1 pointer-coarse:min-h-9\",\n sm: \"h-8 px-3 gap-1.5 pointer-coarse:min-h-11\",\n md: \"h-9 px-4 py-2 pointer-coarse:min-h-11\",\n lg: \"h-10 px-6 pointer-coarse:min-h-11\",\n icon: \"size-9 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n \"icon-sm\": \"size-7 pointer-coarse:min-h-9 pointer-coarse:min-w-9\",\n },\n motion: { transition: MOTION.interactive },\n }),\n\n [InteractiveVariant.ACCENT]: recipe({\n // TT-1: Gradient stops resolved from theme tokens\n // (`--accent-gradient-{from,via,to}`) so tenants can rebrand the ACCENT\n // recipe without forking a theme. Defaults preserve the historical\n // violet/blue/pink visual.\n base: 'relative bg-primary text-primary-foreground font-semibold rounded-md shadow-xs before:absolute before:inset-0 before:rounded-[inherit] before:p-[1px] before:bg-[length:200%_200%] before:bg-gradient-to-r before:from-accent-gradient-from before:via-accent-gradient-via before:to-accent-gradient-to before:animate-[gradient-rotate_3s_ease_infinite] motion-reduce:before:animate-none before:-z-10 before:blur-[2px] shadow-[0_0_15px_color-mix(in_oklch,var(--primary)_20%,transparent)] text-sm cursor-pointer',\n states: {\n hover: 'hover:shadow-[0_0_25px_color-mix(in_oklch,var(--primary)_35%,transparent)]',\n active: 'active:scale-[0.98]',\n focus: FOCUS_RING_OFFSET,\n disabled: interactiveDisabled,\n invalid: interactiveInvalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition: 'transition-[shadow,transform] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE — Cards, dialogs, popovers, dropdowns\n// SURFACE PERSONALITY — clean SaaS material hierarchy: cards are bordered\n// elevated panels, tab panels are attached but quiet, shell is chromaless,\n// transient notifications reuse overlay chrome at a smaller scale.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n [SurfaceVariant.BASE]: recipe({\n // Card / panel — anchor of the surface scale at `rounded-lg`.\n base: \"bg-surface-raised text-surface-raised-foreground rounded-lg border\",\n }),\n\n [SurfaceVariant.CARD]: recipe({\n // Content card — the elevated `surface-raised` fill + border + soft shadow,\n // ALWAYS painted so an explicitly-authored CARD section reads as a card in\n // every context (including inside a dialog/page). Mirrors BASE, the anchor\n // card surface; the section preset adds container padding.\n base: \"bg-surface-raised text-surface-raised-foreground rounded-lg border\",\n }),\n\n [SurfaceVariant.RAISED]: recipe({\n // Popover / dropdown — floats above the page, gets a slightly tighter\n // radius than BASE to feel \"cut from\" the larger card surface (one tier\n // smaller, never two; previously `rounded-md` was visibly inconsistent\n // when popovers stacked next to cards).\n // `fill-surface-overlay` mirrors the background so SVG children that paint\n // via `fill` — notably the Tooltip's Radix arrow — inherit the body colour\n // (CSS `fill` inherits across Radix's arrow wrapper span; `background` does\n // not). Keep `fill-*` in lockstep with `bg-*` here.\n base: \"bg-surface-overlay fill-surface-overlay text-surface-overlay-foreground rounded-md border shadow-md\",\n motion: {\n enter: MOTION.enterDirectional,\n exit: MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.OVERLAY]: recipe({\n // Dialog / sheet — the heaviest, most modal surface; matches BASE radius\n // so a dialog reads as a \"card the user can act inside\" rather than a\n // smaller-cornered floating panel. Required to restore monotonicity\n // (BASE ≤ OVERLAY) — `rounded-md` here was visually demoting dialogs.\n base: \"bg-surface-overlay text-surface-overlay-foreground rounded-lg border shadow-lg\",\n motion: {\n enter: MOTION.enterFadeZoom,\n exit: MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.INSET]: recipe({\n base: \"bg-surface-inset text-surface-inset-foreground\",\n }),\n\n [SurfaceVariant.SUNKEN]: recipe({\n base: \"bg-surface-sunken text-surface-sunken-foreground\",\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // Tab panel joins to the tab strip: same visual language as BASE, but no\n // border/shadow so the surface policy can own the join.\n base: \"bg-surface-raised text-surface-raised-foreground rounded-b-lg\",\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // App/page shell: chromaless raised background. Landmark semantics remain\n // opt-in via policy config.\n base: \"bg-surface-raised text-surface-raised-foreground\",\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast/snackbar: compact floating card, visually between RAISED and OVERLAY.\n base: \"bg-surface-overlay text-surface-overlay-foreground rounded-md border shadow-md\",\n motion: {\n enter: MOTION.enterDirectional,\n exit: MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL — Inputs, textareas, select triggers\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n [FormControlVariant.DEFAULT]: recipe({\n base: \"border-border dark:bg-surface-inset/30 rounded-md border bg-transparent shadow-xs text-base md:text-sm placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground\",\n states: {\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n disabled: \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n },\n sizes: {\n md: \"h-8 px-2.5 py-1 pointer-coarse:min-h-11\",\n sm: \"h-7 px-2 py-1 text-sm pointer-coarse:min-h-11\",\n lg: \"h-9 px-3 py-1.5 pointer-coarse:min-h-11\",\n },\n motion: { transition: MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: \"bg-muted rounded-md border-0 text-base md:text-sm placeholder:text-muted-foreground\",\n states: {\n focus: FOCUS_RING_OFFSET,\n disabled: \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 aria-invalid:border-destructive\",\n },\n sizes: {\n md: \"h-8 px-2.5 py-1 pointer-coarse:min-h-11\",\n sm: \"h-7 px-2 py-1 text-sm pointer-coarse:min-h-11\",\n lg: \"h-9 px-3 py-1.5 pointer-coarse:min-h-11\",\n },\n motion: { transition: MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n base: \"bg-transparent border-0 border-b border-border rounded-none text-base md:text-sm placeholder:text-muted-foreground\",\n states: {\n focus: \"focus-visible:border-ring focus-visible:border-b-2\",\n disabled: \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:border-destructive\",\n },\n sizes: {\n md: \"h-9 px-0 py-1 pointer-coarse:min-h-11\",\n sm: \"h-8 px-0 py-1 text-sm pointer-coarse:min-h-11\",\n lg: \"h-10 px-0 py-2 pointer-coarse:min-h-11\",\n },\n motion: { transition: \"transition-[border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n base: \"border-border dark:bg-input/30 border shadow-xs\",\n states: {\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary dark:data-[state=checked]:bg-primary\",\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n },\n motion: { transition: \"transition-[color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: \"data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 border border-transparent shadow-xs\",\n states: {\n focus: FOCUS_RING_OFFSET_WITH_BORDER,\n selected: \"data-[state=checked]:bg-primary\",\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n },\n motion: { transition: \"transition-[background-color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none\" },\n }),\n};\n\n// ============================================================\n// INDICATOR — Badges, alerts, toast severity\n// ============================================================\n\nconst indicatorShared = {\n states: {\n hover: \"[a&]:hover:opacity-[var(--opacity-hover)]\",\n focus: `focus-visible:border-ring ${FOCUS_RING_COMPACT}`,\n invalid: interactiveInvalid,\n },\n // DENSE keeps the pulse subtle to match its compact chrome. Reduced-motion safe.\n motion: { transition: MOTION.interactive, attention: \"animate-pulse motion-reduce:animate-none\" },\n};\n\n// TONAL badges (T1 + T1b) — tinted background + AA-contrast text + hairline\n// border, in place of the previous solid full-saturation fills. Reads calmer\n// and modern (Linear/Stripe/shadcn) and lets many status chips coexist on one\n// row without the \"wall of solid colour\" effect.\n//\n// The tint (`bg-{status}-subtle`) and text (`text-{status}-subtle-foreground`)\n// come from dedicated SUBTLE STATUS TOKENS (T1b), not per-recipe `/10` mixes.\n// Those tokens are palette-adaptive `color-mix()` formulas emitted by the design\n// -token CSS generator (`design-tokens-css.shared.ts` → `buildSubtleStatusColors`),\n// tuned so 12px badge text clears WCAG-AA (≥4.5) against its tint in BOTH light\n// and dark — including the amber WARNING case that fails contrast with a naive\n// same-hue text. Because the tokens reference the base `--{status}` vars, a\n// palette retune (or a light/dark switch) retunes the chip automatically, and a\n// tenant can override any pair via `DesignSystemToken.*_SUBTLE(_FOREGROUND)`.\n// The border stays on the palette base (`border-{status}/25`, `/30` for warning\n// where the base is lighter) so it tracks the same hue.\n//\n// DENSE delta: badges keep the AA-safe subtle tokens (using the raw `text-{status}`\n// here would reintroduce the light-mode contrast failure T1b fixed) but tighten to\n// `px-1.5 py-0` for a compact chip. A further \"quiet tint + neutral text + colored\n// status dot\" pass needs a badge-component-level dot, so it is intentionally NOT a\n// recipe change — deferred as a component-layer refinement.\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({\n // Tonal like the other four — see default.theme.ts for the rationale. Fixes the\n // sub-AA washed-out grey chip that raw `text-muted-foreground` on `bg-muted`\n // produced for `default`/`secondary`/`outline` enum values.\n base: \"bg-neutral-subtle text-neutral-subtle-foreground border-border rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.INFO]: recipe({\n base: \"bg-info-subtle text-info-subtle-foreground border-info/25 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.SUCCESS]: recipe({\n base: \"bg-success-subtle text-success-subtle-foreground border-success/25 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.WARNING]: recipe({\n base: \"bg-warning-subtle text-warning-subtle-foreground border-warning/30 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n [IndicatorVariant.ERROR]: recipe({\n base: \"bg-destructive-subtle text-destructive-subtle-foreground border-destructive/25 rounded-md border px-1.5 py-0 text-xs font-medium\",\n ...indicatorShared,\n }),\n};\n\n// ============================================================\n// SELECTABLE — Tabs, sidebar active items, toggles\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: \"rounded-md text-sm outline-hidden ring-surface-sunken-border\",\n states: {\n hover: \"hover:bg-surface-sunken-accent hover:text-surface-sunken-foreground\",\n focus: \"focus-visible:ring-2\",\n active: \"active:bg-surface-sunken-accent active:text-surface-sunken-foreground\",\n selected: \"data-[active=true]:bg-surface-sunken-accent data-[active=true]:font-medium data-[active=true]:text-surface-sunken-foreground data-[state=active]:bg-surface-sunken-accent data-[state=active]:text-surface-sunken-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)] aria-disabled:pointer-events-none aria-disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 text-xs\",\n md: \"h-8 text-sm\",\n lg: \"h-12 text-sm\",\n },\n motion: { transition: MOTION.selectable },\n }),\n\n [SelectableVariant.UNDERLINE]: recipe({\n base: \"rounded-none border-b-2 border-transparent text-sm outline-hidden\",\n states: {\n hover: \"hover:text-foreground\",\n focus: FOCUS_RING_COMPACT,\n selected: \"data-[state=active]:border-primary data-[state=active]:text-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 text-xs pb-1\",\n md: \"h-8 text-sm pb-2\",\n lg: \"h-10 text-sm pb-3\",\n },\n motion: { transition: MOTION.selectable },\n }),\n\n [SelectableVariant.PILL]: recipe({\n base: \"rounded-full text-sm outline-hidden\",\n states: {\n hover: \"hover:bg-accent hover:text-accent-foreground\",\n focus: FOCUS_RING_COMPACT,\n selected: \"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 px-3 text-xs\",\n md: \"h-8 px-4 text-sm\",\n lg: \"h-10 px-5 text-sm\",\n },\n motion: { transition: MOTION.selectable },\n }),\n\n [SelectableVariant.INDICATOR]: recipe({\n base: \"rounded-md text-sm outline-hidden\",\n states: {\n hover: \"hover:bg-surface-sunken-accent hover:text-surface-sunken-foreground\",\n focus: FOCUS_RING_COMPACT,\n selected: \"data-[active=true]:border-s-2 data-[active=true]:border-surface-sunken-primary data-[active=true]:font-medium data-[active=true]:text-surface-sunken-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: {\n sm: \"h-7 text-xs\",\n md: \"h-8 text-sm\",\n lg: \"h-12 text-sm\",\n },\n motion: { transition: MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY_BACKDROP — Dialog/Sheet background overlay\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n // Tailwind v4's `bg-color/[var()]` opacity modifier uses color-mix() which\n // doesn't resolve CSS custom property decimals correctly.\n // Use arbitrary bg value with rgb() alpha channel instead.\n base: \"bg-[rgb(0_0_0_/_var(--opacity-overlay))] backdrop-blur-sm\",\n motion: {\n enter: MOTION.backdropEnter,\n exit: MOTION.backdropExit,\n },\n});\n\n// ============================================================\n// DIVIDER — Separator\n// ============================================================\n\nconst divider: Record<DividerVariant, UIBehaviorRecipe> = {\n [DividerVariant.DEFAULT]: recipe({ base: 'bg-border shrink-0' }),\n // Nested-disclosure guide: the theme's own divider material, as a left edge.\n [DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s border-border' }),\n};\n\n// ============================================================\n// SKELETON — Loading placeholders\n// ============================================================\n\nconst skeleton: UIBehaviorRecipe = recipe({\n base: `${SKELETON_NEUTRAL_TINT} animate-pulse rounded-md motion-reduce:animate-none`,\n});\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: \"text-muted-foreground animate-spin motion-reduce:animate-none\",\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: \"bg-background/80\",\n motion: {\n enter: \"animate-in fade-in-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-enter)] motion-reduce:animate-none\",\n exit: \"animate-out fade-out-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-exit)] motion-reduce:animate-none\",\n },\n});\n\n// ============================================================\n// TYPOGRAPHY — Text hierarchy\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n base: \"font-semibold leading-none tracking-tight\",\n // Heading scale rebalance — gaps were 12/4/2px (h1→h2→h3→h4); h1 at\n // text-4xl (36px) jumped 1.5× to h2 (text-2xl, 24px), which felt\n // disproportionate for in-app SaaS UI (text-4xl is a hero size).\n // Compressing h1 to text-3xl yields a smooth 6/4/2px ladder\n // (1.25× → 1.2× → 1.11×, classic Major Third base). Pages that want a\n // hero h1 can opt in with `className=\"text-4xl sm:text-5xl\"` since the\n // size class is the LAST `text-*` to win in `cn()`.\n sizes: {\n h1: \"text-3xl\",\n h2: \"text-2xl\",\n h3: \"text-xl\",\n h4: \"text-lg\",\n h5: \"text-base\",\n md: \"text-lg\",\n },\n }),\n [TypographyVariant.BODY]: recipe({\n base: \"text-foreground text-sm\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n [TypographyVariant.LABEL]: recipe({\n base: \"font-medium text-sm leading-none\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n [TypographyVariant.DESCRIPTION]: recipe({\n base: \"text-muted-foreground text-sm\",\n sizes: { sm: \"text-xs\", md: \"text-sm\" },\n }),\n [TypographyVariant.CODE]: recipe({\n base: \"font-mono text-sm bg-muted rounded px-1 py-0.5\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n};\n\n// ============================================================\n// DENSE THEME — assembled (opt-in, Linear-grade)\n//\n// Derived from the default theme and compacted: shorter control/input sizes\n// (md h-8 · sm h-7 · lg h-9), one radius tier tighter (control `rounded-md`,\n// card `rounded-lg`), flat + hairline surfaces (no `shadow-sm` on cards).\n// Opt in per app: `theme: denseTheme` in `design-system.config.ts`.\n// Spacing uses the compact token set (`UI_SPACING_COMPACT`) so rows/gaps also\n// tighten, not just control heights.\n// ============================================================\n\nexport const denseTheme: ComponentStyleTheme = {\n id: 'dense',\n name: 'Dense',\n description: 'Compact, Linear-grade opt-in variant of the default theme. Shorter controls/inputs (md h-8 · sm h-7 · lg h-9), one radius tier tighter (control rounded-md · card rounded-lg), flat + hairline surfaces (no card shadow). Same tonal badges, focus rings, and motion as default.',\n\n spacing: UI_SPACING_COMPACT,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: undefined,\n backgroundLayer: undefined,\n chartStyle: DEFAULT_CHART_STYLE_PRESET,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"editorial.theme.d.ts","sourceRoot":"","sources":["../../../../src/themes/editorial.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qCAAqC,CAAC;AAoqBzG,eAAO,MAAM,cAAc,EAAE,mBAgE5B,CAAC"}
1
+ {"version":3,"file":"editorial.theme.d.ts","sourceRoot":"","sources":["../../../src/themes/editorial.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qCAAqC,CAAC;AA2qBzG,eAAO,MAAM,cAAc,EAAE,mBAgE5B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { InteractiveVariant, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, DesignTokenModeStrategy, DesignTokenValueType, } from '@wildo-ai/presets-components-models';
1
+ import { DividerVariant, InteractiveVariant, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, DesignTokenModeStrategy, DesignTokenValueType, SKELETON_NEUTRAL_TINT, } from '@wildo-ai/presets-components-models';
2
2
  function recipe(r) {
3
3
  return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };
4
4
  }
@@ -433,9 +433,13 @@ const overlayBackdrop = recipe({
433
433
  exit: ED_MOTION.backdropExit,
434
434
  },
435
435
  });
436
- const divider = recipe({ base: 'bg-foreground/12 shrink-0' });
436
+ const divider = {
437
+ [DividerVariant.DEFAULT]: recipe({ base: 'bg-foreground/12 shrink-0' }),
438
+ // Nested-disclosure guide: the theme's own divider material, as a left edge.
439
+ [DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s border-foreground/12' }),
440
+ };
437
441
  const skeleton = recipe({
438
- base: `bg-muted/60 animate-pulse ${ED.radius} motion-reduce:animate-none`,
442
+ base: `${SKELETON_NEUTRAL_TINT} animate-pulse ${ED.radius} motion-reduce:animate-none`,
439
443
  });
440
444
  const loadingSpinner = recipe({
441
445
  base: 'text-muted-foreground animate-spin motion-reduce:animate-none',
@@ -466,6 +470,7 @@ const typography = {
466
470
  h2: 'text-3xl',
467
471
  h3: 'text-2xl',
468
472
  h4: 'text-xl',
473
+ h5: 'text-lg',
469
474
  md: 'text-lg',
470
475
  },
471
476
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"editorial.theme.js","sourceRoot":"","sources":["../../../../src/themes/editorial.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme, DesignTokenConfiguration } from '@wildo-ai/presets-components-models';\nimport {\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SpacingSemantic,\n DesignTokenModeStrategy,\n DesignTokenValueType,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };\n}\n\n// ============================================================\n// Editorial theme\n//\n// Persona: long-form reading, knowledge bases, thought-leadership SaaS,\n// publication-grade dashboards.\n// References: NYTimes, Stripe Press, Substack, The Verge, Vercel Press.\n//\n// Design DNA:\n// - SERIF headings (Source Serif 4 / Crimson Pro / Tiempos / Georgia fallback)\n// — every other theme in the lineup is sans; serif is the immediate\n// visual signature of \"publication-grade\".\n// - Humanist-sans body (Source Sans 3 / Inter) with generous line-height\n// so paragraphs feel like article copy, not UI strings.\n// - Hairline borders only (`border-foreground/10`), almost no shadows —\n// editorial layouts trust whitespace and typography to do the heavy\n// lifting; box-shadows would feel \"gadget-y\".\n// - 2px radius — the page reads as paper, not as plastic chrome.\n// - GENEROUS spacing scale (largest in lineup) — column-grid breathing\n// room, like a printed magazine spread.\n// - Single-accent palette: warm off-white background, charcoal text,\n// deep ink-blue accent. The whole page is monochrome until you reach\n// a link, a tag, or a focus ring — then a single intentional color.\n// - Slow, elegant motion (normal duration, ease-out) — refined, not snappy.\n// - Underlined links by default (web-typographic convention), hover\n// thickens the underline rather than removing it.\n// ============================================================\n\n// -- Shared constants --\n\nconst ED = {\n /** Hairline rule: hugely subtle, lets typography lead. */\n hairline: 'border border-foreground/10',\n /** Slightly stronger hairline for surfaces that need a definitive edge. */\n edge: 'border border-foreground/15',\n radius: 'rounded-sm',\n focus:\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60 focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n invalid:\n 'aria-invalid:ring-destructive/30 dark:aria-invalid:ring-destructive/50 aria-invalid:border-destructive',\n};\n\n// ============================================================\n// MOTION PERSONALITY — Editorial\n// ============================================================\n// Hover/focus : NORMAL (250ms) + DEFAULT → bidirectional state-change\n// tempo. DEFAULT (Material\n// Standard) is correct here\n// over ENTER because hover\n// flips both ways and a\n// pure ease-out feels mushy\n// when reverting to rest.\n// Overlay enter: SLOW (350ms) + ENTER → \"page-turn\" pacing.\n// ENTER (pure decelerate)\n// for the slow settle that\n// defines publication UI.\n// Overlay exit : NORMAL (250ms) + EXIT → quicker than enter (rule\n// of thumb: exit < enter,\n// \"out faster than in\").\n// Backdrop : SLOW/NORMAL + ENTER/EXIT → matches overlays.\n// Gestures : NONE — print/serif aesthetics avoid bouncy\n// interactivity. The tempo IS the personality; springs\n// would feel like Material Design pasted into NYT.\n//\n// TR-14 motion-coherence: backdrop animations now carry explicit\n// ENTER/EXIT easing tokens (previously omitted, fell back to CSS `ease`).\n// ============================================================\nconst ED_MOTION = {\n interactive:\n 'transition-[background-color,color,border-color,box-shadow,text-decoration-thickness] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n formControl:\n 'transition-[color,border-color,box-shadow] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n selectable:\n 'transition-[background-color,color,border-color] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n enterFadeZoom:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-slow)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none',\n exitFadeZoom:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-normal)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none',\n enterDirectional:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-slow)] data-[state=open]:ease-[var(--motion-easing-enter)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:data-[state=open]:animate-none',\n backdropEnter:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-slow)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none',\n backdropExit:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-normal)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none',\n};\n\n// ============================================================\n// INTERACTIVE\n// Editorial buttons are restrained: no shadows, hairline borders, type\n// is the focal point. Press feedback is a subtle bg shift, not a scale.\n// ============================================================\n\nconst interactiveSizes: Record<string, string> = {\n xs: 'h-7 px-3 text-xs gap-1.5 pointer-coarse:min-h-9',\n sm: 'h-8 px-3.5 gap-2 pointer-coarse:min-h-11',\n md: 'h-10 px-5 py-2 pointer-coarse:min-h-11',\n lg: 'h-12 px-7 pointer-coarse:min-h-12',\n icon: 'size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n};\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n [InteractiveVariant.PRIMARY]: recipe({\n base: `bg-primary text-primary-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-primary/90',\n active: 'active:bg-primary/80',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.SECONDARY]: recipe({\n base: `bg-secondary text-secondary-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-secondary/80',\n active: 'active:bg-secondary/70',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.OUTLINE]: recipe({\n base: `bg-transparent text-foreground ${ED.edge} ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/25',\n active: 'active:bg-muted/80',\n focus: ED.focus,\n selected: 'data-[state=on]:bg-muted data-[state=on]:border-foreground/30',\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: `bg-destructive text-destructive-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-destructive/90',\n active: 'active:bg-destructive/80',\n focus: ED.focus,\n highlighted: 'focus:bg-destructive/10 focus:text-destructive',\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.GHOST]: recipe({\n base: `text-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-muted',\n active: 'active:bg-muted/80',\n focus: ED.focus,\n selected: 'data-[state=on]:bg-muted data-[state=on]:text-foreground',\n highlighted: 'focus:bg-muted',\n open: 'data-[state=open]:bg-muted',\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n // Editorial links: underlined by default, web-typographic convention.\n // Hover thickens the decoration rather than removing it (the underline IS\n // the affordance — never strip it on hover, that's an anti-pattern in\n // long-form copy).\n [InteractiveVariant.LINK]: recipe({\n base: 'text-primary underline underline-offset-[3px] decoration-primary/40 decoration-1 font-medium text-sm cursor-pointer',\n states: {\n hover: 'hover:decoration-primary hover:decoration-2',\n active: 'active:text-primary/80',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: {\n xs: 'h-7 px-2 text-xs gap-1 pointer-coarse:min-h-9',\n sm: 'h-8 px-2 gap-1.5 pointer-coarse:min-h-11',\n md: 'h-10 px-2 py-2 pointer-coarse:min-h-11',\n lg: 'h-12 px-2 pointer-coarse:min-h-12',\n icon: 'size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n },\n motion: { transition: ED_MOTION.interactive },\n }),\n\n // Editorial accent: a refined letterpress-feel button — primary fill,\n // restrained gradient sweep (no rainbow), small caps tracking.\n [InteractiveVariant.ACCENT]: recipe({\n base: `relative bg-primary text-primary-foreground font-semibold uppercase tracking-[0.08em] ${ED.radius} bg-[length:200%_100%] bg-gradient-to-r from-accent-gradient-from via-accent-gradient-via to-accent-gradient-to animate-[gradient-rotate_5s_ease_infinite] motion-reduce:animate-none text-xs cursor-pointer`,\n states: {\n hover: 'hover:brightness-105',\n active: 'active:brightness-95',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition:\n 'transition-[background-position,filter] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE\n// SURFACE PERSONALITY — paper, not chrome: hairlines over shadows, page shell\n// as paper stock, transient notices as restrained clipping cards.\n// Editorial surfaces are paper, not chrome. Hairline rules + warm bg.\n// No drop shadows on cards (a magazine doesn't levitate its articles).\n// Dialogs get one soft shadow because they ARE elevated above the page.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n [SurfaceVariant.BASE]: recipe({\n base: `bg-background text-foreground ${ED.hairline} ${ED.radius}`,\n }),\n\n [SurfaceVariant.CARD]: recipe({\n // Content card: distinct `surface-raised` fill + editorial edge + radius.\n // Restrained — no shadow on an inline card (editorial reserves shadows for\n // genuinely floating surfaces). Always painted.\n base: `bg-surface-raised text-surface-raised-foreground ${ED.edge} ${ED.radius}`,\n }),\n\n [SurfaceVariant.RAISED]: recipe({\n // Popover: a small shadow IS warranted (it's actually floating), but\n // restrained — no two-step \"md+xl\" stack like Material.\n // `fill-*` mirrors `bg-*` so the Tooltip's Radix arrow (an SVG painted via\n // `fill`, inherited across Radix's arrow-wrapper span) matches the body.\n base: `bg-background fill-background text-foreground ${ED.edge} ${ED.radius} shadow-[0_4px_12px_rgba(0,0,0,0.04)] dark:shadow-[0_4px_12px_rgba(0,0,0,0.4)]`,\n motion: {\n enter: ED_MOTION.enterDirectional,\n exit: ED_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.OVERLAY]: recipe({\n // Dialog: this is the only surface where editorial accepts a real\n // shadow — modals genuinely lift \"off the page\" and the eye needs\n // depth to lock onto them.\n base: `bg-background text-foreground ${ED.edge} ${ED.radius} shadow-[0_24px_64px_rgba(0,0,0,0.12)] dark:shadow-[0_24px_64px_rgba(0,0,0,0.6)]`,\n motion: {\n enter: ED_MOTION.enterFadeZoom,\n exit: ED_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.INSET]: recipe({\n base: `bg-muted/40 text-foreground ${ED.radius}`,\n }),\n\n [SurfaceVariant.SUNKEN]: recipe({\n base: 'bg-muted/30 text-foreground border-r border-foreground/10',\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // A paper continuation below the tab rule: no shadow, no top border.\n base: 'bg-background text-foreground border-x border-b border-foreground/12 rounded-b-sm',\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // Page shell is simply the paper stock.\n base: 'bg-background text-foreground',\n policy: {\n content: {\n wrapStrategy: 'pretty',\n },\n },\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast: newspaper notice card — hairline, restrained lift.\n base: `bg-background text-foreground ${ED.edge} ${ED.radius} shadow-[0_8px_24px_rgba(0,0,0,0.08)] dark:shadow-[0_8px_24px_rgba(0,0,0,0.5)]`,\n motion: {\n enter: ED_MOTION.enterDirectional,\n exit: ED_MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL\n// Inputs are quiet. Hairline border, no shadow. Focus ring becomes a\n// solid 2px ring (the only loud thing in the form).\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n [FormControlVariant.DEFAULT]: recipe({\n base: `bg-background ${ED.edge} ${ED.radius} text-base md:text-sm text-foreground placeholder:text-muted-foreground selection:bg-primary/20 selection:text-foreground`,\n states: {\n focus: ED.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n sizes: {\n md: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n sm: 'h-9 px-3 text-sm pointer-coarse:min-h-11',\n lg: 'h-12 px-4 py-2 pointer-coarse:min-h-12',\n },\n motion: { transition: ED_MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: `bg-muted/50 ${ED.radius} border-0 text-base md:text-sm text-foreground placeholder:text-muted-foreground`,\n states: {\n focus: ED.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n sizes: {\n md: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n sm: 'h-9 px-3 text-sm pointer-coarse:min-h-11',\n lg: 'h-12 px-4 py-2 pointer-coarse:min-h-12',\n },\n motion: { transition: ED_MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n // The most editorial-looking form variant: a single hairline rule\n // under the field — like filling in a paper form.\n base: 'bg-transparent border-0 border-b border-foreground/20 rounded-none text-base md:text-sm text-foreground placeholder:text-muted-foreground',\n states: {\n focus: 'focus-visible:outline-none focus-visible:border-primary focus-visible:border-b-2',\n disabled: 'disabled:opacity-[var(--opacity-disabled)]',\n invalid: 'aria-invalid:border-destructive',\n },\n sizes: {\n md: 'h-10 px-0 py-2 pointer-coarse:min-h-11',\n sm: 'h-9 px-0 text-sm pointer-coarse:min-h-11',\n lg: 'h-12 px-0 py-2 pointer-coarse:min-h-12',\n },\n motion: {\n transition:\n 'transition-[border-color] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n base: `${ED.edge} ${ED.radius}`,\n states: {\n focus: ED.focus,\n selected:\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n motion: {\n transition:\n 'transition-[color,box-shadow] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: 'data-[state=unchecked]:bg-muted border border-foreground/15',\n states: {\n focus: ED.focus,\n selected: 'data-[state=checked]:bg-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n motion: {\n transition:\n 'transition-all duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// INDICATOR\n// Editorial indicators are muted, restrained. No fill saturation —\n// indicator background is a tint, text carries the semantic color.\n// ============================================================\n\nconst edIndicatorShared = {\n states: { hover: '[a&]:hover:opacity-[var(--opacity-hover)]', focus: ED.focus, invalid: ED.invalid },\n motion: { transition: ED_MOTION.interactive },\n};\n\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({\n base: `bg-muted/60 text-muted-foreground ${ED.radius} ${ED.hairline} px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.INFO]: recipe({\n base: `bg-info/10 text-info ${ED.radius} border border-info/20 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.SUCCESS]: recipe({\n base: `bg-success/10 text-success ${ED.radius} border border-success/20 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.WARNING]: recipe({\n base: `bg-warning/10 text-warning ${ED.radius} border border-warning/20 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.ERROR]: recipe({\n base: `bg-destructive/10 text-destructive ${ED.radius} border border-destructive/25 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n};\n\n// ============================================================\n// SELECTABLE\n// The underline-active tab pattern is editorial-iconic (think TOC of a\n// magazine). Pill and indicator variants follow but the underline is the\n// theme's signature selectable.\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: `${ED.radius} text-sm outline-hidden`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-medium data-[state=active]:bg-muted data-[state=active]:text-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-7 text-xs', md: 'h-9 text-sm', lg: 'h-12 text-sm' },\n motion: { transition: ED_MOTION.selectable },\n }),\n [SelectableVariant.UNDERLINE]: recipe({\n // Editorial signature: 1px hairline becomes 2px solid on active —\n // the same visual language as section headers in print.\n base: 'rounded-none border-b border-transparent text-sm text-muted-foreground outline-hidden',\n states: {\n hover: 'hover:text-foreground',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[state=active]:border-b-2 data-[state=active]:border-primary data-[state=active]:text-foreground data-[state=active]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-8 text-xs pb-1', md: 'h-10 text-sm pb-2', lg: 'h-12 text-sm pb-3' },\n motion: { transition: ED_MOTION.selectable },\n }),\n [SelectableVariant.PILL]: recipe({\n base: `${ED.radius} text-sm outline-hidden ${ED.hairline} border-transparent`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/15',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[state=active]:bg-foreground data-[state=active]:text-background data-[state=active]:border-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-8 px-3 text-xs', md: 'h-9 px-4 text-sm', lg: 'h-11 px-5 text-sm' },\n motion: { transition: ED_MOTION.selectable },\n }),\n [SelectableVariant.INDICATOR]: recipe({\n base: `${ED.radius} text-sm outline-hidden border-s border-transparent`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[active=true]:border-s-2 data-[active=true]:border-primary data-[active=true]:text-foreground data-[active=true]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-8 text-xs', md: 'h-9 text-sm', lg: 'h-12 text-sm' },\n motion: { transition: ED_MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY, DIVIDER, SKELETON\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n // Editorial backdrop: warm sepia-tinted scrim, very subtle blur.\n base: 'bg-foreground/40 backdrop-blur-[2px]',\n motion: {\n enter: ED_MOTION.backdropEnter,\n exit: ED_MOTION.backdropExit,\n },\n});\n\nconst divider: UIBehaviorRecipe = recipe({ base: 'bg-foreground/12 shrink-0' });\n\nconst skeleton: UIBehaviorRecipe = recipe({\n base: `bg-muted/60 animate-pulse ${ED.radius} motion-reduce:animate-none`,\n});\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: 'text-muted-foreground animate-spin motion-reduce:animate-none',\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: 'bg-background/85',\n motion: {\n enter: 'animate-in fade-in-0 duration-[var(--motion-duration-slow)] ease-[var(--motion-easing-enter)] motion-reduce:animate-none',\n exit: 'animate-out fade-out-0 duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-exit)] motion-reduce:animate-none',\n },\n});\n\n// ============================================================\n// TYPOGRAPHY\n// The signature of the theme. Serif headings, generous body line-height,\n// classical scale. We keep the mid-tier sizes so existing layouts don't\n// shift — but h1 stays large because editorial is unapologetic about\n// hero typography (it's the article title).\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n // `font-heading` resolves to the serif stack (see requiredCustomTokens\n // below). Tracking-tight on serifs prevents the natural air between\n // wide letters from looking sloppy at large sizes.\n base: 'font-heading font-semibold leading-tight tracking-tight text-foreground',\n sizes: {\n display: 'text-6xl',\n h1: 'text-5xl',\n h2: 'text-3xl',\n h3: 'text-2xl',\n h4: 'text-xl',\n md: 'text-lg',\n },\n }),\n [TypographyVariant.BODY]: recipe({\n // `leading-relaxed` (1.625) on body is the most editorial-feeling\n // change in the whole theme — it turns UI strings into article copy.\n base: 'font-sans text-foreground text-base leading-relaxed',\n sizes: { sm: 'text-sm', md: 'text-base', lg: 'text-lg' },\n }),\n [TypographyVariant.LABEL]: recipe({\n // Small caps tracking on labels — print-typography idiom for \"section\n // marker\" / \"metadata\". Pairs with the indicator uppercase tracking.\n // `font-sans` (NOT `font-body`) — only `font-sans/serif/mono/heading/display`\n // are exposed as Tailwind utilities via @theme; `font-sans` resolves to\n // `var(--font-body)` which our requiredCustomTokens overrides to the\n // humanist-sans stack. Using `font-body` here would silently no-op.\n base: 'font-sans font-medium text-2xs leading-none uppercase tracking-[0.08em] text-muted-foreground',\n sizes: { sm: 'text-2xs', md: 'text-xs', lg: 'text-sm' },\n }),\n [TypographyVariant.DESCRIPTION]: recipe({\n base: 'font-sans text-muted-foreground text-base leading-relaxed italic',\n sizes: { sm: 'text-sm', md: 'text-base' },\n }),\n [TypographyVariant.CODE]: recipe({\n base: 'font-mono text-[0.9em] bg-muted/60 rounded-sm px-1.5 py-0.5 border border-foreground/10',\n sizes: { sm: 'text-xs', md: 'text-sm', lg: 'text-base' },\n }),\n};\n\n// ============================================================\n// SPACING\n// Editorial is the most spacious theme. We're not optimising for\n// information density — we're optimising for legibility, breathing\n// room, and the \"magazine spread\" feel. Card and container padding\n// are deliberately bigger than glass (the previous spaciousness\n// champion) to push the lineup further apart.\n// ============================================================\n\nconst spacing: ComponentStyleTheme['spacing'] = {\n [SpacingSemantic.ELEMENT]: '0.625rem',\n [SpacingSemantic.ITEM]: '0.5rem',\n [SpacingSemantic.GROUP]: '1.125rem',\n [SpacingSemantic.FIELD]: '1.5rem',\n [SpacingSemantic.SECTION]: '2.5rem',\n [SpacingSemantic.REGION]: '4rem',\n [SpacingSemantic.CARD]: '1.75rem',\n [SpacingSemantic.CONTAINER]: '2.5rem',\n};\n\n// ============================================================\n// REQUIRED CUSTOM TOKENS — palette + serif font stack\n//\n// Editorial is fully defined by its serif headings + warm-paper palette.\n// Without these overrides the theme would inherit the host's sans-serif\n// stack and read as \"default theme with bigger margins\". Same mechanism\n// as neo-brutalist: `requiredCustomTokens` is applied AFTER both\n// `applyDesignTokens` and `applyTypographyConfiguration` (TR-11), so\n// these wins over both host palette AND host font config.\n// ============================================================\n\nfunction colorOverride(lightOklch: string, darkOklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.LIGHT_DARK,\n lightValue: lightOklch,\n darkValue: darkOklch,\n };\n}\n\nfunction colorSingle(oklch: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.COLOR, modeStrategy: DesignTokenModeStrategy.SINGLE, value: oklch };\n}\n\nfunction stringSingle(value: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.STRING, modeStrategy: DesignTokenModeStrategy.SINGLE, value };\n}\n\nconst requiredCustomTokens: Record<string, DesignTokenConfiguration> = {\n // === Page palette: warm off-white \"newsprint\" in light, deep ink-grey\n // in dark. The slight warmth (0.005 chroma at hue 80) reads as paper,\n // not as cold UI white.\n background: colorOverride('0.985 0.005 80', '0.145 0.008 270'),\n foreground: colorOverride('0.18 0.008 270', '0.96 0.005 80'),\n\n // === Accent: deep ink-blue (the classic \"publication\" color). Light\n // mode at L=0.42 ensures black-on-blue would be too low contrast, so\n // primary-foreground stays white. Dark mode lifts to 0.68 so it pops\n // against the dark page without losing the ink quality.\n primary: colorOverride('0.42 0.13 255', '0.68 0.14 255'),\n 'primary-foreground': colorOverride('0.985 0.005 80', '0.10 0.01 270'),\n\n // === Secondary: very pale cream / very deep slate (almost-bg).\n secondary: colorOverride('0.95 0.008 80', '0.21 0.01 270'),\n 'secondary-foreground': colorOverride('0.20 0.008 270', '0.95 0.005 80'),\n\n // === Muted: even paler — for inset surfaces, code blocks, etc.\n muted: colorOverride('0.94 0.01 80', '0.22 0.01 270'),\n 'muted-foreground': colorOverride('0.45 0.015 270', '0.70 0.01 80'),\n\n // === Borders: hairline-grey, never approaches foreground darkness.\n border: colorOverride('0.88 0.005 80', '0.30 0.008 270'),\n ring: colorOverride('0.42 0.13 255', '0.68 0.14 255'),\n input: colorOverride('0.88 0.005 80', '0.30 0.008 270'),\n\n // === Destructive: a refined publishing red — warmer and more \"ink\"\n // than the default theme's cool red. Light L=0.50 is comfortable with\n // white text (~6:1).\n destructive: colorOverride('0.50 0.20 28', '0.62 0.22 28'),\n 'destructive-foreground': colorSingle('1 0 0'),\n\n // === Accent gradient: subdued ink-blue → muted gold → terracotta —\n // a \"library spine\" gradient, nothing neon. Dramatically less saturated\n // than default's violet/blue/pink.\n 'accent-gradient-from': colorOverride('0.42 0.13 255', '0.68 0.14 255'),\n 'accent-gradient-via': colorOverride('0.65 0.10 80', '0.72 0.10 80'),\n 'accent-gradient-to': colorOverride('0.55 0.13 30', '0.65 0.14 30'),\n\n // === Font stacks: the heart of the theme. Serif heading + humanist\n // sans body. Hosts that @font-face Source Serif 4 / Source Sans 3\n // get the canonical look; everyone else falls through to system serif\n // (Georgia/Iowan Old Style on macOS, Cambria on Windows) — still\n // distinctively serif vs the rest of the lineup.\n 'font-heading': stringSingle(\n \"'Source Serif 4', 'Source Serif Pro', 'Crimson Pro', 'Tiempos Text', 'Iowan Old Style', Georgia, 'Times New Roman', serif\"\n ),\n 'font-body': stringSingle(\n \"'Source Sans 3', 'Source Sans Pro', Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif\"\n ),\n};\n\n// ============================================================\n// ASSEMBLED THEME\n// ============================================================\n\nexport const editorialTheme: ComponentStyleTheme = {\n id: 'editorial',\n name: 'Editorial',\n description:\n 'Publication-grade theme for long-form reading and knowledge bases. Serif headings (Source Serif / Crimson Pro / Georgia fallback), humanist-sans body with relaxed line-height, hairline borders (no shadows on cards — only on dialogs), 2px radius, generous spacing scale (largest in lineup). Warm-paper palette with deep ink-blue accent and a subdued ink-gold-terracotta accent gradient. Slow ease-out motion, underlined links by default. Ships its own serif/sans font stacks via requiredCustomTokens — host fonts are overridden when this theme is active.',\n\n requiredCustomTokens,\n spacing,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: '2px',\n backgroundLayer: undefined,\n chartStyle: {\n // Editorial charts are restrained: thin lines, no fills, no tooltip\n // shadows, classical typography.\n colorShadeLight: 600,\n colorShadeDark: 400,\n gridPadding: { top: 30, right: 20, bottom: 30, left: 60 },\n axis: {\n showAxisLine: true,\n showTicks: true,\n splitLineType: 'dashed',\n hideOverlap: true,\n yAxisNameLocation: 'middle',\n yAxisNameGap: 50,\n },\n tooltip: {\n extraCss: 'border: 1px solid color-mix(in oklch, currentColor 15%, transparent); box-shadow: none;',\n borderWidth: 1,\n },\n animation: { enabled: true, durationMs: 500, easing: 'cubicOut' },\n series: { lineWidth: 1.5, pointSize: 4, areaOpacity: 0.08, barBorderRadius: 0, pieBorderWidth: 1 },\n typography: {\n titleFontSize: 17,\n titleFontWeight: 600,\n subtitleFontSize: 13,\n legendFontSize: 12,\n tooltipFontSize: 12,\n axisLabelFontSize: 11,\n axisNameFontSize: 12,\n },\n emphasis: { shadowBlur: 0, shadowColor: 'transparent', shadowOffsetX: 0 },\n responsive: {\n smallMaxWidth: 400,\n mediumMaxWidth: 799,\n smallGridPadding: { top: 20, right: 10, bottom: 20, left: 30 },\n mediumGridPadding: { left: 50, right: 20, bottom: 40 },\n hideLegendOnSmall: true,\n smallAxisLabelRotate: 45,\n smallFontSize: 10,\n mediumFontSize: 11,\n },\n multiSeriesLegendBottomPadding: 50,\n },\n};\n"]}
1
+ {"version":3,"file":"editorial.theme.js","sourceRoot":"","sources":["../../../../src/themes/editorial.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme, DesignTokenConfiguration } from '@wildo-ai/presets-components-models';\nimport {\n DividerVariant,\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SpacingSemantic,\n DesignTokenModeStrategy,\n DesignTokenValueType,\n SKELETON_NEUTRAL_TINT,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };\n}\n\n// ============================================================\n// Editorial theme\n//\n// Persona: long-form reading, knowledge bases, thought-leadership SaaS,\n// publication-grade dashboards.\n// References: NYTimes, Stripe Press, Substack, The Verge, Vercel Press.\n//\n// Design DNA:\n// - SERIF headings (Source Serif 4 / Crimson Pro / Tiempos / Georgia fallback)\n// — every other theme in the lineup is sans; serif is the immediate\n// visual signature of \"publication-grade\".\n// - Humanist-sans body (Source Sans 3 / Inter) with generous line-height\n// so paragraphs feel like article copy, not UI strings.\n// - Hairline borders only (`border-foreground/10`), almost no shadows —\n// editorial layouts trust whitespace and typography to do the heavy\n// lifting; box-shadows would feel \"gadget-y\".\n// - 2px radius — the page reads as paper, not as plastic chrome.\n// - GENEROUS spacing scale (largest in lineup) — column-grid breathing\n// room, like a printed magazine spread.\n// - Single-accent palette: warm off-white background, charcoal text,\n// deep ink-blue accent. The whole page is monochrome until you reach\n// a link, a tag, or a focus ring — then a single intentional color.\n// - Slow, elegant motion (normal duration, ease-out) — refined, not snappy.\n// - Underlined links by default (web-typographic convention), hover\n// thickens the underline rather than removing it.\n// ============================================================\n\n// -- Shared constants --\n\nconst ED = {\n /** Hairline rule: hugely subtle, lets typography lead. */\n hairline: 'border border-foreground/10',\n /** Slightly stronger hairline for surfaces that need a definitive edge. */\n edge: 'border border-foreground/15',\n radius: 'rounded-sm',\n focus:\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60 focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n invalid:\n 'aria-invalid:ring-destructive/30 dark:aria-invalid:ring-destructive/50 aria-invalid:border-destructive',\n};\n\n// ============================================================\n// MOTION PERSONALITY — Editorial\n// ============================================================\n// Hover/focus : NORMAL (250ms) + DEFAULT → bidirectional state-change\n// tempo. DEFAULT (Material\n// Standard) is correct here\n// over ENTER because hover\n// flips both ways and a\n// pure ease-out feels mushy\n// when reverting to rest.\n// Overlay enter: SLOW (350ms) + ENTER → \"page-turn\" pacing.\n// ENTER (pure decelerate)\n// for the slow settle that\n// defines publication UI.\n// Overlay exit : NORMAL (250ms) + EXIT → quicker than enter (rule\n// of thumb: exit < enter,\n// \"out faster than in\").\n// Backdrop : SLOW/NORMAL + ENTER/EXIT → matches overlays.\n// Gestures : NONE — print/serif aesthetics avoid bouncy\n// interactivity. The tempo IS the personality; springs\n// would feel like Material Design pasted into NYT.\n//\n// TR-14 motion-coherence: backdrop animations now carry explicit\n// ENTER/EXIT easing tokens (previously omitted, fell back to CSS `ease`).\n// ============================================================\nconst ED_MOTION = {\n interactive:\n 'transition-[background-color,color,border-color,box-shadow,text-decoration-thickness] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n formControl:\n 'transition-[color,border-color,box-shadow] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n selectable:\n 'transition-[background-color,color,border-color] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n enterFadeZoom:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-slow)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none',\n exitFadeZoom:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-normal)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none',\n enterDirectional:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-slow)] data-[state=open]:ease-[var(--motion-easing-enter)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:data-[state=open]:animate-none',\n backdropEnter:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-slow)] data-[state=open]:ease-[var(--motion-easing-enter)] motion-reduce:data-[state=open]:animate-none',\n backdropExit:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-normal)] data-[state=closed]:ease-[var(--motion-easing-exit)] motion-reduce:data-[state=closed]:animate-none',\n};\n\n// ============================================================\n// INTERACTIVE\n// Editorial buttons are restrained: no shadows, hairline borders, type\n// is the focal point. Press feedback is a subtle bg shift, not a scale.\n// ============================================================\n\nconst interactiveSizes: Record<string, string> = {\n xs: 'h-7 px-3 text-xs gap-1.5 pointer-coarse:min-h-9',\n sm: 'h-8 px-3.5 gap-2 pointer-coarse:min-h-11',\n md: 'h-10 px-5 py-2 pointer-coarse:min-h-11',\n lg: 'h-12 px-7 pointer-coarse:min-h-12',\n icon: 'size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n};\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n [InteractiveVariant.PRIMARY]: recipe({\n base: `bg-primary text-primary-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-primary/90',\n active: 'active:bg-primary/80',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.SECONDARY]: recipe({\n base: `bg-secondary text-secondary-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-secondary/80',\n active: 'active:bg-secondary/70',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.OUTLINE]: recipe({\n base: `bg-transparent text-foreground ${ED.edge} ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/25',\n active: 'active:bg-muted/80',\n focus: ED.focus,\n selected: 'data-[state=on]:bg-muted data-[state=on]:border-foreground/30',\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: `bg-destructive text-destructive-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-destructive/90',\n active: 'active:bg-destructive/80',\n focus: ED.focus,\n highlighted: 'focus:bg-destructive/10 focus:text-destructive',\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n [InteractiveVariant.GHOST]: recipe({\n base: `text-foreground ${ED.radius} font-medium text-sm tracking-tight cursor-pointer`,\n states: {\n hover: 'hover:bg-muted',\n active: 'active:bg-muted/80',\n focus: ED.focus,\n selected: 'data-[state=on]:bg-muted data-[state=on]:text-foreground',\n highlighted: 'focus:bg-muted',\n open: 'data-[state=open]:bg-muted',\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: ED_MOTION.interactive },\n }),\n\n // Editorial links: underlined by default, web-typographic convention.\n // Hover thickens the decoration rather than removing it (the underline IS\n // the affordance — never strip it on hover, that's an anti-pattern in\n // long-form copy).\n [InteractiveVariant.LINK]: recipe({\n base: 'text-primary underline underline-offset-[3px] decoration-primary/40 decoration-1 font-medium text-sm cursor-pointer',\n states: {\n hover: 'hover:decoration-primary hover:decoration-2',\n active: 'active:text-primary/80',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: {\n xs: 'h-7 px-2 text-xs gap-1 pointer-coarse:min-h-9',\n sm: 'h-8 px-2 gap-1.5 pointer-coarse:min-h-11',\n md: 'h-10 px-2 py-2 pointer-coarse:min-h-11',\n lg: 'h-12 px-2 pointer-coarse:min-h-12',\n icon: 'size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n },\n motion: { transition: ED_MOTION.interactive },\n }),\n\n // Editorial accent: a refined letterpress-feel button — primary fill,\n // restrained gradient sweep (no rainbow), small caps tracking.\n [InteractiveVariant.ACCENT]: recipe({\n base: `relative bg-primary text-primary-foreground font-semibold uppercase tracking-[0.08em] ${ED.radius} bg-[length:200%_100%] bg-gradient-to-r from-accent-gradient-from via-accent-gradient-via to-accent-gradient-to animate-[gradient-rotate_5s_ease_infinite] motion-reduce:animate-none text-xs cursor-pointer`,\n states: {\n hover: 'hover:brightness-105',\n active: 'active:brightness-95',\n focus: ED.focus,\n disabled: ED.disabled,\n invalid: ED.invalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition:\n 'transition-[background-position,filter] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE\n// SURFACE PERSONALITY — paper, not chrome: hairlines over shadows, page shell\n// as paper stock, transient notices as restrained clipping cards.\n// Editorial surfaces are paper, not chrome. Hairline rules + warm bg.\n// No drop shadows on cards (a magazine doesn't levitate its articles).\n// Dialogs get one soft shadow because they ARE elevated above the page.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n [SurfaceVariant.BASE]: recipe({\n base: `bg-background text-foreground ${ED.hairline} ${ED.radius}`,\n }),\n\n [SurfaceVariant.CARD]: recipe({\n // Content card: distinct `surface-raised` fill + editorial edge + radius.\n // Restrained — no shadow on an inline card (editorial reserves shadows for\n // genuinely floating surfaces). Always painted.\n base: `bg-surface-raised text-surface-raised-foreground ${ED.edge} ${ED.radius}`,\n }),\n\n [SurfaceVariant.RAISED]: recipe({\n // Popover: a small shadow IS warranted (it's actually floating), but\n // restrained — no two-step \"md+xl\" stack like Material.\n // `fill-*` mirrors `bg-*` so the Tooltip's Radix arrow (an SVG painted via\n // `fill`, inherited across Radix's arrow-wrapper span) matches the body.\n base: `bg-background fill-background text-foreground ${ED.edge} ${ED.radius} shadow-[0_4px_12px_rgba(0,0,0,0.04)] dark:shadow-[0_4px_12px_rgba(0,0,0,0.4)]`,\n motion: {\n enter: ED_MOTION.enterDirectional,\n exit: ED_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.OVERLAY]: recipe({\n // Dialog: this is the only surface where editorial accepts a real\n // shadow — modals genuinely lift \"off the page\" and the eye needs\n // depth to lock onto them.\n base: `bg-background text-foreground ${ED.edge} ${ED.radius} shadow-[0_24px_64px_rgba(0,0,0,0.12)] dark:shadow-[0_24px_64px_rgba(0,0,0,0.6)]`,\n motion: {\n enter: ED_MOTION.enterFadeZoom,\n exit: ED_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.INSET]: recipe({\n base: `bg-muted/40 text-foreground ${ED.radius}`,\n }),\n\n [SurfaceVariant.SUNKEN]: recipe({\n base: 'bg-muted/30 text-foreground border-r border-foreground/10',\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // A paper continuation below the tab rule: no shadow, no top border.\n base: 'bg-background text-foreground border-x border-b border-foreground/12 rounded-b-sm',\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // Page shell is simply the paper stock.\n base: 'bg-background text-foreground',\n policy: {\n content: {\n wrapStrategy: 'pretty',\n },\n },\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast: newspaper notice card — hairline, restrained lift.\n base: `bg-background text-foreground ${ED.edge} ${ED.radius} shadow-[0_8px_24px_rgba(0,0,0,0.08)] dark:shadow-[0_8px_24px_rgba(0,0,0,0.5)]`,\n motion: {\n enter: ED_MOTION.enterDirectional,\n exit: ED_MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL\n// Inputs are quiet. Hairline border, no shadow. Focus ring becomes a\n// solid 2px ring (the only loud thing in the form).\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n [FormControlVariant.DEFAULT]: recipe({\n base: `bg-background ${ED.edge} ${ED.radius} text-base md:text-sm text-foreground placeholder:text-muted-foreground selection:bg-primary/20 selection:text-foreground`,\n states: {\n focus: ED.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n sizes: {\n md: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n sm: 'h-9 px-3 text-sm pointer-coarse:min-h-11',\n lg: 'h-12 px-4 py-2 pointer-coarse:min-h-12',\n },\n motion: { transition: ED_MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: `bg-muted/50 ${ED.radius} border-0 text-base md:text-sm text-foreground placeholder:text-muted-foreground`,\n states: {\n focus: ED.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n sizes: {\n md: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n sm: 'h-9 px-3 text-sm pointer-coarse:min-h-11',\n lg: 'h-12 px-4 py-2 pointer-coarse:min-h-12',\n },\n motion: { transition: ED_MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n // The most editorial-looking form variant: a single hairline rule\n // under the field — like filling in a paper form.\n base: 'bg-transparent border-0 border-b border-foreground/20 rounded-none text-base md:text-sm text-foreground placeholder:text-muted-foreground',\n states: {\n focus: 'focus-visible:outline-none focus-visible:border-primary focus-visible:border-b-2',\n disabled: 'disabled:opacity-[var(--opacity-disabled)]',\n invalid: 'aria-invalid:border-destructive',\n },\n sizes: {\n md: 'h-10 px-0 py-2 pointer-coarse:min-h-11',\n sm: 'h-9 px-0 text-sm pointer-coarse:min-h-11',\n lg: 'h-12 px-0 py-2 pointer-coarse:min-h-12',\n },\n motion: {\n transition:\n 'transition-[border-color] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n base: `${ED.edge} ${ED.radius}`,\n states: {\n focus: ED.focus,\n selected:\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n motion: {\n transition:\n 'transition-[color,box-shadow] duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: 'data-[state=unchecked]:bg-muted border border-foreground/15',\n states: {\n focus: ED.focus,\n selected: 'data-[state=checked]:bg-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: ED.invalid,\n },\n motion: {\n transition:\n 'transition-all duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-default)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// INDICATOR\n// Editorial indicators are muted, restrained. No fill saturation —\n// indicator background is a tint, text carries the semantic color.\n// ============================================================\n\nconst edIndicatorShared = {\n states: { hover: '[a&]:hover:opacity-[var(--opacity-hover)]', focus: ED.focus, invalid: ED.invalid },\n motion: { transition: ED_MOTION.interactive },\n};\n\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({\n base: `bg-muted/60 text-muted-foreground ${ED.radius} ${ED.hairline} px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.INFO]: recipe({\n base: `bg-info/10 text-info ${ED.radius} border border-info/20 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.SUCCESS]: recipe({\n base: `bg-success/10 text-success ${ED.radius} border border-success/20 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.WARNING]: recipe({\n base: `bg-warning/10 text-warning ${ED.radius} border border-warning/20 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n [IndicatorVariant.ERROR]: recipe({\n base: `bg-destructive/10 text-destructive ${ED.radius} border border-destructive/25 px-2 py-0.5 text-xs font-medium uppercase tracking-wider`,\n ...edIndicatorShared,\n }),\n};\n\n// ============================================================\n// SELECTABLE\n// The underline-active tab pattern is editorial-iconic (think TOC of a\n// magazine). Pill and indicator variants follow but the underline is the\n// theme's signature selectable.\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: `${ED.radius} text-sm outline-hidden`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-medium data-[state=active]:bg-muted data-[state=active]:text-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-7 text-xs', md: 'h-9 text-sm', lg: 'h-12 text-sm' },\n motion: { transition: ED_MOTION.selectable },\n }),\n [SelectableVariant.UNDERLINE]: recipe({\n // Editorial signature: 1px hairline becomes 2px solid on active —\n // the same visual language as section headers in print.\n base: 'rounded-none border-b border-transparent text-sm text-muted-foreground outline-hidden',\n states: {\n hover: 'hover:text-foreground',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[state=active]:border-b-2 data-[state=active]:border-primary data-[state=active]:text-foreground data-[state=active]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-8 text-xs pb-1', md: 'h-10 text-sm pb-2', lg: 'h-12 text-sm pb-3' },\n motion: { transition: ED_MOTION.selectable },\n }),\n [SelectableVariant.PILL]: recipe({\n base: `${ED.radius} text-sm outline-hidden ${ED.hairline} border-transparent`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/15',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[state=active]:bg-foreground data-[state=active]:text-background data-[state=active]:border-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-8 px-3 text-xs', md: 'h-9 px-4 text-sm', lg: 'h-11 px-5 text-sm' },\n motion: { transition: ED_MOTION.selectable },\n }),\n [SelectableVariant.INDICATOR]: recipe({\n base: `${ED.radius} text-sm outline-hidden border-s border-transparent`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60',\n selected:\n 'data-[active=true]:border-s-2 data-[active=true]:border-primary data-[active=true]:text-foreground data-[active=true]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-8 text-xs', md: 'h-9 text-sm', lg: 'h-12 text-sm' },\n motion: { transition: ED_MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY, DIVIDER, SKELETON\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n // Editorial backdrop: warm sepia-tinted scrim, very subtle blur.\n base: 'bg-foreground/40 backdrop-blur-[2px]',\n motion: {\n enter: ED_MOTION.backdropEnter,\n exit: ED_MOTION.backdropExit,\n },\n});\n\nconst divider: Record<DividerVariant, UIBehaviorRecipe> = {\n [DividerVariant.DEFAULT]: recipe({ base: 'bg-foreground/12 shrink-0' }),\n // Nested-disclosure guide: the theme's own divider material, as a left edge.\n [DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s border-foreground/12' }),\n};\n\nconst skeleton: UIBehaviorRecipe = recipe({\n base: `${SKELETON_NEUTRAL_TINT} animate-pulse ${ED.radius} motion-reduce:animate-none`,\n});\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: 'text-muted-foreground animate-spin motion-reduce:animate-none',\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: 'bg-background/85',\n motion: {\n enter: 'animate-in fade-in-0 duration-[var(--motion-duration-slow)] ease-[var(--motion-easing-enter)] motion-reduce:animate-none',\n exit: 'animate-out fade-out-0 duration-[var(--motion-duration-normal)] ease-[var(--motion-easing-exit)] motion-reduce:animate-none',\n },\n});\n\n// ============================================================\n// TYPOGRAPHY\n// The signature of the theme. Serif headings, generous body line-height,\n// classical scale. We keep the mid-tier sizes so existing layouts don't\n// shift — but h1 stays large because editorial is unapologetic about\n// hero typography (it's the article title).\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n // `font-heading` resolves to the serif stack (see requiredCustomTokens\n // below). Tracking-tight on serifs prevents the natural air between\n // wide letters from looking sloppy at large sizes.\n base: 'font-heading font-semibold leading-tight tracking-tight text-foreground',\n sizes: {\n display: 'text-6xl',\n h1: 'text-5xl',\n h2: 'text-3xl',\n h3: 'text-2xl',\n h4: 'text-xl',\n h5: 'text-lg',\n md: 'text-lg',\n },\n }),\n [TypographyVariant.BODY]: recipe({\n // `leading-relaxed` (1.625) on body is the most editorial-feeling\n // change in the whole theme — it turns UI strings into article copy.\n base: 'font-sans text-foreground text-base leading-relaxed',\n sizes: { sm: 'text-sm', md: 'text-base', lg: 'text-lg' },\n }),\n [TypographyVariant.LABEL]: recipe({\n // Small caps tracking on labels — print-typography idiom for \"section\n // marker\" / \"metadata\". Pairs with the indicator uppercase tracking.\n // `font-sans` (NOT `font-body`) — only `font-sans/serif/mono/heading/display`\n // are exposed as Tailwind utilities via @theme; `font-sans` resolves to\n // `var(--font-body)` which our requiredCustomTokens overrides to the\n // humanist-sans stack. Using `font-body` here would silently no-op.\n base: 'font-sans font-medium text-2xs leading-none uppercase tracking-[0.08em] text-muted-foreground',\n sizes: { sm: 'text-2xs', md: 'text-xs', lg: 'text-sm' },\n }),\n [TypographyVariant.DESCRIPTION]: recipe({\n base: 'font-sans text-muted-foreground text-base leading-relaxed italic',\n sizes: { sm: 'text-sm', md: 'text-base' },\n }),\n [TypographyVariant.CODE]: recipe({\n base: 'font-mono text-[0.9em] bg-muted/60 rounded-sm px-1.5 py-0.5 border border-foreground/10',\n sizes: { sm: 'text-xs', md: 'text-sm', lg: 'text-base' },\n }),\n};\n\n// ============================================================\n// SPACING\n// Editorial is the most spacious theme. We're not optimising for\n// information density — we're optimising for legibility, breathing\n// room, and the \"magazine spread\" feel. Card and container padding\n// are deliberately bigger than glass (the previous spaciousness\n// champion) to push the lineup further apart.\n// ============================================================\n\nconst spacing: ComponentStyleTheme['spacing'] = {\n [SpacingSemantic.ELEMENT]: '0.625rem',\n [SpacingSemantic.ITEM]: '0.5rem',\n [SpacingSemantic.GROUP]: '1.125rem',\n [SpacingSemantic.FIELD]: '1.5rem',\n [SpacingSemantic.SECTION]: '2.5rem',\n [SpacingSemantic.REGION]: '4rem',\n [SpacingSemantic.CARD]: '1.75rem',\n [SpacingSemantic.CONTAINER]: '2.5rem',\n};\n\n// ============================================================\n// REQUIRED CUSTOM TOKENS — palette + serif font stack\n//\n// Editorial is fully defined by its serif headings + warm-paper palette.\n// Without these overrides the theme would inherit the host's sans-serif\n// stack and read as \"default theme with bigger margins\". Same mechanism\n// as neo-brutalist: `requiredCustomTokens` is applied AFTER both\n// `applyDesignTokens` and `applyTypographyConfiguration` (TR-11), so\n// these wins over both host palette AND host font config.\n// ============================================================\n\nfunction colorOverride(lightOklch: string, darkOklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.LIGHT_DARK,\n lightValue: lightOklch,\n darkValue: darkOklch,\n };\n}\n\nfunction colorSingle(oklch: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.COLOR, modeStrategy: DesignTokenModeStrategy.SINGLE, value: oklch };\n}\n\nfunction stringSingle(value: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.STRING, modeStrategy: DesignTokenModeStrategy.SINGLE, value };\n}\n\nconst requiredCustomTokens: Record<string, DesignTokenConfiguration> = {\n // === Page palette: warm off-white \"newsprint\" in light, deep ink-grey\n // in dark. The slight warmth (0.005 chroma at hue 80) reads as paper,\n // not as cold UI white.\n background: colorOverride('0.985 0.005 80', '0.145 0.008 270'),\n foreground: colorOverride('0.18 0.008 270', '0.96 0.005 80'),\n\n // === Accent: deep ink-blue (the classic \"publication\" color). Light\n // mode at L=0.42 ensures black-on-blue would be too low contrast, so\n // primary-foreground stays white. Dark mode lifts to 0.68 so it pops\n // against the dark page without losing the ink quality.\n primary: colorOverride('0.42 0.13 255', '0.68 0.14 255'),\n 'primary-foreground': colorOverride('0.985 0.005 80', '0.10 0.01 270'),\n\n // === Secondary: very pale cream / very deep slate (almost-bg).\n secondary: colorOverride('0.95 0.008 80', '0.21 0.01 270'),\n 'secondary-foreground': colorOverride('0.20 0.008 270', '0.95 0.005 80'),\n\n // === Muted: even paler — for inset surfaces, code blocks, etc.\n muted: colorOverride('0.94 0.01 80', '0.22 0.01 270'),\n 'muted-foreground': colorOverride('0.45 0.015 270', '0.70 0.01 80'),\n\n // === Borders: hairline-grey, never approaches foreground darkness.\n border: colorOverride('0.88 0.005 80', '0.30 0.008 270'),\n ring: colorOverride('0.42 0.13 255', '0.68 0.14 255'),\n input: colorOverride('0.88 0.005 80', '0.30 0.008 270'),\n\n // === Destructive: a refined publishing red — warmer and more \"ink\"\n // than the default theme's cool red. Light L=0.50 is comfortable with\n // white text (~6:1).\n destructive: colorOverride('0.50 0.20 28', '0.62 0.22 28'),\n 'destructive-foreground': colorSingle('1 0 0'),\n\n // === Accent gradient: subdued ink-blue → muted gold → terracotta —\n // a \"library spine\" gradient, nothing neon. Dramatically less saturated\n // than default's violet/blue/pink.\n 'accent-gradient-from': colorOverride('0.42 0.13 255', '0.68 0.14 255'),\n 'accent-gradient-via': colorOverride('0.65 0.10 80', '0.72 0.10 80'),\n 'accent-gradient-to': colorOverride('0.55 0.13 30', '0.65 0.14 30'),\n\n // === Font stacks: the heart of the theme. Serif heading + humanist\n // sans body. Hosts that @font-face Source Serif 4 / Source Sans 3\n // get the canonical look; everyone else falls through to system serif\n // (Georgia/Iowan Old Style on macOS, Cambria on Windows) — still\n // distinctively serif vs the rest of the lineup.\n 'font-heading': stringSingle(\n \"'Source Serif 4', 'Source Serif Pro', 'Crimson Pro', 'Tiempos Text', 'Iowan Old Style', Georgia, 'Times New Roman', serif\"\n ),\n 'font-body': stringSingle(\n \"'Source Sans 3', 'Source Sans Pro', Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif\"\n ),\n};\n\n// ============================================================\n// ASSEMBLED THEME\n// ============================================================\n\nexport const editorialTheme: ComponentStyleTheme = {\n id: 'editorial',\n name: 'Editorial',\n description:\n 'Publication-grade theme for long-form reading and knowledge bases. Serif headings (Source Serif / Crimson Pro / Georgia fallback), humanist-sans body with relaxed line-height, hairline borders (no shadows on cards — only on dialogs), 2px radius, generous spacing scale (largest in lineup). Warm-paper palette with deep ink-blue accent and a subdued ink-gold-terracotta accent gradient. Slow ease-out motion, underlined links by default. Ships its own serif/sans font stacks via requiredCustomTokens — host fonts are overridden when this theme is active.',\n\n requiredCustomTokens,\n spacing,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: '2px',\n backgroundLayer: undefined,\n chartStyle: {\n // Editorial charts are restrained: thin lines, no fills, no tooltip\n // shadows, classical typography.\n colorShadeLight: 600,\n colorShadeDark: 400,\n gridPadding: { top: 30, right: 20, bottom: 30, left: 60 },\n axis: {\n showAxisLine: true,\n showTicks: true,\n splitLineType: 'dashed',\n hideOverlap: true,\n yAxisNameLocation: 'middle',\n yAxisNameGap: 50,\n },\n tooltip: {\n extraCss: 'border: 1px solid color-mix(in oklch, currentColor 15%, transparent); box-shadow: none;',\n borderWidth: 1,\n },\n animation: { enabled: true, durationMs: 500, easing: 'cubicOut' },\n series: { lineWidth: 1.5, pointSize: 4, areaOpacity: 0.08, barBorderRadius: 0, pieBorderWidth: 1 },\n typography: {\n titleFontSize: 17,\n titleFontWeight: 600,\n subtitleFontSize: 13,\n legendFontSize: 12,\n tooltipFontSize: 12,\n axisLabelFontSize: 11,\n axisNameFontSize: 12,\n },\n emphasis: { shadowBlur: 0, shadowColor: 'transparent', shadowOffsetX: 0 },\n responsive: {\n smallMaxWidth: 400,\n mediumMaxWidth: 799,\n smallGridPadding: { top: 20, right: 10, bottom: 20, left: 30 },\n mediumGridPadding: { left: 50, right: 20, bottom: 40 },\n hideLegendOnSmall: true,\n smallAxisLabelRotate: 45,\n smallFontSize: 10,\n mediumFontSize: 11,\n },\n multiSeriesLegendBottomPadding: 50,\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"glass.theme.d.ts","sourceRoot":"","sources":["../../../../src/themes/glass.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAwB,MAAM,qCAAqC,CAAC;AA0tBrG,eAAO,MAAM,UAAU,EAAE,mBAkDxB,CAAC"}
1
+ {"version":3,"file":"glass.theme.d.ts","sourceRoot":"","sources":["../../../src/themes/glass.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAwB,MAAM,qCAAqC,CAAC;AAiuBrG,eAAO,MAAM,UAAU,EAAE,mBAkDxB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { GlassMaterialDepth, GlassMaterialNestedStrategy, GlassMaterialPriority, GlassMaterialPressFeedback, GlassMaterialVariant, GlassSurfaceShape, InteractiveVariant, MaterialCapabilityTier, MaterialKind, MaterialProfileRole, ShellAppearance, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, } from '@wildo-ai/presets-components-models';
1
+ import { DividerVariant, GlassMaterialDepth, GlassMaterialNestedStrategy, GlassMaterialPriority, GlassMaterialPressFeedback, GlassMaterialVariant, GlassSurfaceShape, InteractiveVariant, MaterialCapabilityTier, MaterialKind, MaterialProfileRole, ShellAppearance, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, } from '@wildo-ai/presets-components-models';
2
2
  function recipe(r) {
3
3
  return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, material: r.material, policy: r.policy };
4
4
  }
@@ -529,8 +529,14 @@ const overlayBackdrop = recipe({
529
529
  exit: GL_MOTION.backdropExit,
530
530
  },
531
531
  });
532
- const divider = recipe({ base: "bg-white/10 dark:bg-white/5 shrink-0" });
533
- const skeleton = recipe({ base: 'bg-white/8 dark:bg-white/5 animate-pulse rounded-xl motion-reduce:animate-none' });
532
+ const divider = {
533
+ [DividerVariant.DEFAULT]: recipe({ base: 'bg-white/10 dark:bg-white/5 shrink-0' }),
534
+ // Nested-disclosure guide: the theme's own divider material, as a left edge.
535
+ [DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s border-white/10 dark:border-white/5' }),
536
+ };
537
+ // Glass halves the shared alpha: its panels are already translucent, so a full-strength tint reads
538
+ // as a second pane rather than a ghost. Still the neutral token — never a palette entry.
539
+ const skeleton = recipe({ base: `bg-foreground/5 animate-pulse rounded-xl motion-reduce:animate-none` });
534
540
  const loadingSpinner = recipe({
535
541
  base: "text-muted-foreground animate-spin motion-reduce:animate-none",
536
542
  motion: { transition: "transition-opacity duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-default)] motion-reduce:transition-none" },
@@ -554,7 +560,7 @@ const typography = {
554
560
  // ladder makes sense on opaque cards; glass needs the extra tier of
555
561
  // visual weight. Intentional divergence — do NOT homogenise to default.
556
562
  base: "font-semibold leading-none tracking-tight text-foreground",
557
- sizes: { h1: "text-4xl", h2: "text-2xl", h3: "text-xl", h4: "text-lg", md: "text-lg" },
563
+ sizes: { h1: "text-4xl", h2: "text-2xl", h3: "text-xl", h4: "text-lg", h5: "text-base", md: "text-lg" },
558
564
  }),
559
565
  // Body / Label / Description: use semantic foreground tokens — `/90`, `/80`, `/50`
560
566
  // alpha-mixes blow out on translucent glass surfaces (compositing on top of