@k8ordo/ui 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/README.md +197 -187
  2. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  3. package/dist/components/_internal/focus-ring.css +37 -0
  4. package/dist/components/_internal/focus-ring.module.mjs +9 -0
  5. package/dist/components/_internal/form-value.d.mts +33 -0
  6. package/dist/components/_internal/form-value.mjs +91 -0
  7. package/dist/components/_internal/high-contrast.css +18 -0
  8. package/dist/components/_internal/high-contrast.module.mjs +5 -0
  9. package/dist/components/_internal/ignore-changes.d.mts +20 -0
  10. package/dist/components/_internal/ignore-changes.mjs +37 -0
  11. package/dist/components/_internal/nav-link.css +78 -0
  12. package/dist/components/_internal/nav-link.d.mts +5 -0
  13. package/dist/components/_internal/nav-link.mjs +8 -0
  14. package/dist/components/_internal/nav-link.module.mjs +14 -0
  15. package/dist/components/_internal/sr-only.css +17 -0
  16. package/dist/components/_internal/sr-only.module.mjs +5 -0
  17. package/dist/components/_internal/status-tone.css +37 -0
  18. package/dist/components/_internal/status-tone.d.mts +20 -0
  19. package/dist/components/_internal/status-tone.mjs +22 -0
  20. package/dist/components/_internal/status-tone.module.mjs +14 -0
  21. package/dist/components/ai/_internal/attachment-preview.css +75 -0
  22. package/dist/components/ai/_internal/attachment-preview.d.mts +14 -0
  23. package/dist/components/ai/_internal/attachment-preview.mjs +50 -0
  24. package/dist/components/ai/_internal/attachment-preview.module.mjs +14 -0
  25. package/dist/components/ai/_internal/collapsible.css +62 -0
  26. package/dist/components/ai/_internal/collapsible.d.mts +4 -3
  27. package/dist/components/ai/_internal/collapsible.mjs +42 -33
  28. package/dist/components/ai/_internal/collapsible.module.mjs +12 -0
  29. package/dist/components/ai/_internal/icons.d.mts +7 -0
  30. package/dist/components/ai/_internal/icons.mjs +14 -0
  31. package/dist/components/ai/_internal/streaming-cursor.css +28 -0
  32. package/dist/components/ai/_internal/streaming-cursor.d.mts +2 -3
  33. package/dist/components/ai/_internal/streaming-cursor.mjs +2 -1
  34. package/dist/components/ai/_internal/streaming-cursor.module.mjs +8 -0
  35. package/dist/components/ai/attachment/attachment.css +17 -0
  36. package/dist/components/ai/attachment/attachment.d.mts +14 -0
  37. package/dist/components/ai/attachment/attachment.mjs +25 -0
  38. package/dist/components/ai/attachment/attachment.module.mjs +8 -0
  39. package/dist/components/ai/attachment/index.d.mts +13 -0
  40. package/dist/components/ai/attachment/index.mjs +8 -0
  41. package/dist/components/ai/conversation/conversation.css +71 -0
  42. package/dist/components/ai/conversation/conversation.d.mts +4 -5
  43. package/dist/components/ai/conversation/conversation.mjs +38 -34
  44. package/dist/components/ai/conversation/conversation.module.mjs +11 -0
  45. package/dist/components/ai/conversation/index.d.mts +2 -3
  46. package/dist/components/ai/index.d.mts +4 -2
  47. package/dist/components/ai/index.mjs +3 -1
  48. package/dist/components/ai/message/index.d.mts +29 -3
  49. package/dist/components/ai/message/index.mjs +7 -2
  50. package/dist/components/ai/message/message.css +71 -0
  51. package/dist/components/ai/message/message.d.mts +34 -4
  52. package/dist/components/ai/message/message.mjs +99 -9
  53. package/dist/components/ai/message/message.module.mjs +18 -0
  54. package/dist/components/ai/prompt-input/index.d.mts +11 -4
  55. package/dist/components/ai/prompt-input/index.mjs +3 -1
  56. package/dist/components/ai/prompt-input/prompt-input.css +101 -0
  57. package/dist/components/ai/prompt-input/prompt-input.d.mts +15 -6
  58. package/dist/components/ai/prompt-input/prompt-input.mjs +152 -37
  59. package/dist/components/ai/prompt-input/prompt-input.module.mjs +15 -0
  60. package/dist/components/ai/reasoning/reasoning.css +16 -0
  61. package/dist/components/ai/reasoning/reasoning.d.mts +2 -3
  62. package/dist/components/ai/reasoning/reasoning.mjs +5 -5
  63. package/dist/components/ai/reasoning/reasoning.module.mjs +8 -0
  64. package/dist/components/ai/response/response.css +453 -0
  65. package/dist/components/ai/response/response.d.mts +4 -6
  66. package/dist/components/ai/response/response.mjs +20 -15
  67. package/dist/components/ai/response/response.module.mjs +8 -0
  68. package/dist/components/ai/source/index.d.mts +12 -0
  69. package/dist/components/ai/source/index.mjs +8 -0
  70. package/dist/components/ai/source/source.css +54 -0
  71. package/dist/components/ai/source/source.d.mts +13 -0
  72. package/dist/components/ai/source/source.mjs +51 -0
  73. package/dist/components/ai/source/source.module.mjs +12 -0
  74. package/dist/components/ai/suggestion/index.d.mts +2 -3
  75. package/dist/components/ai/suggestion/suggestion.css +32 -0
  76. package/dist/components/ai/suggestion/suggestion.d.mts +3 -4
  77. package/dist/components/ai/suggestion/suggestion.mjs +7 -6
  78. package/dist/components/ai/suggestion/suggestion.module.mjs +8 -0
  79. package/dist/components/ai/tool-invocation/approval-bar.css +26 -0
  80. package/dist/components/ai/tool-invocation/approval-bar.d.mts +11 -0
  81. package/dist/components/ai/tool-invocation/approval-bar.mjs +59 -0
  82. package/dist/components/ai/tool-invocation/approval-bar.module.mjs +9 -0
  83. package/dist/components/ai/tool-invocation/tool-invocation.css +55 -0
  84. package/dist/components/ai/tool-invocation/tool-invocation.d.mts +5 -5
  85. package/dist/components/ai/tool-invocation/tool-invocation.mjs +39 -18
  86. package/dist/components/ai/tool-invocation/tool-invocation.module.mjs +15 -0
  87. package/dist/components/ai/types.d.mts +21 -4
  88. package/dist/components/buttons/button/button.css +158 -0
  89. package/dist/components/buttons/button/button.d.mts +32 -9
  90. package/dist/components/buttons/button/button.mjs +46 -36
  91. package/dist/components/buttons/button/button.module.mjs +23 -0
  92. package/dist/components/buttons/button/index.d.mts +2 -2
  93. package/dist/components/buttons/copy-button/copy-button.css +15 -0
  94. package/dist/components/buttons/copy-button/copy-button.d.mts +10 -0
  95. package/dist/components/buttons/copy-button/copy-button.mjs +70 -0
  96. package/dist/components/buttons/copy-button/copy-button.module.mjs +8 -0
  97. package/dist/components/buttons/copy-button/index.d.mts +2 -0
  98. package/dist/components/buttons/copy-button/index.mjs +2 -0
  99. package/dist/components/buttons/icon-button/icon-button.css +81 -0
  100. package/dist/components/buttons/icon-button/icon-button.d.mts +39 -12
  101. package/dist/components/buttons/icon-button/icon-button.mjs +70 -57
  102. package/dist/components/buttons/icon-button/icon-button.module.mjs +15 -0
  103. package/dist/components/buttons/icon-button/index.d.mts +2 -2
  104. package/dist/components/buttons/toolbar/index.d.mts +14 -0
  105. package/dist/components/buttons/toolbar/index.mjs +9 -0
  106. package/dist/components/buttons/toolbar/toolbar.css +30 -0
  107. package/dist/components/buttons/toolbar/toolbar.d.mts +18 -0
  108. package/dist/components/buttons/toolbar/toolbar.mjs +111 -0
  109. package/dist/components/buttons/toolbar/toolbar.module.mjs +9 -0
  110. package/dist/components/data-display/accordion/accordion-button.css +48 -0
  111. package/dist/components/data-display/accordion/accordion-button.d.mts +2 -3
  112. package/dist/components/data-display/accordion/accordion-button.mjs +5 -4
  113. package/dist/components/data-display/accordion/accordion-button.module.mjs +9 -0
  114. package/dist/components/data-display/accordion/accordion-item.css +11 -0
  115. package/dist/components/data-display/accordion/accordion-item.d.mts +2 -3
  116. package/dist/components/data-display/accordion/accordion-item.mjs +2 -1
  117. package/dist/components/data-display/accordion/accordion-item.module.mjs +5 -0
  118. package/dist/components/data-display/accordion/accordion-panel.css +9 -0
  119. package/dist/components/data-display/accordion/accordion-panel.d.mts +2 -3
  120. package/dist/components/data-display/accordion/accordion-panel.mjs +2 -2
  121. package/dist/components/data-display/accordion/accordion-panel.module.mjs +5 -0
  122. package/dist/components/data-display/accordion/accordion.css +19 -0
  123. package/dist/components/data-display/accordion/accordion.d.mts +2 -3
  124. package/dist/components/data-display/accordion/accordion.mjs +2 -1
  125. package/dist/components/data-display/accordion/accordion.module.mjs +5 -0
  126. package/dist/components/data-display/accordion/context.d.mts +3 -3
  127. package/dist/components/data-display/accordion/index.d.mts +2 -3
  128. package/dist/components/data-display/avatar/avatar.css +95 -0
  129. package/dist/components/data-display/avatar/avatar.d.mts +2 -3
  130. package/dist/components/data-display/avatar/avatar.mjs +22 -6
  131. package/dist/components/data-display/avatar/avatar.module.mjs +18 -0
  132. package/dist/components/data-display/badge/badge.css +160 -0
  133. package/dist/components/data-display/badge/badge.d.mts +2 -3
  134. package/dist/components/data-display/badge/badge.mjs +30 -5
  135. package/dist/components/data-display/badge/badge.module.mjs +21 -0
  136. package/dist/components/data-display/card/card.css +44 -0
  137. package/dist/components/data-display/card/card.d.mts +2 -3
  138. package/dist/components/data-display/card/card.mjs +12 -2
  139. package/dist/components/data-display/card/card.module.mjs +12 -0
  140. package/dist/components/data-display/carousel/carousel.css +83 -0
  141. package/dist/components/data-display/carousel/carousel.d.mts +11 -0
  142. package/dist/components/data-display/carousel/carousel.mjs +186 -0
  143. package/dist/components/data-display/carousel/carousel.module.mjs +18 -0
  144. package/dist/components/data-display/carousel/index.d.mts +11 -0
  145. package/dist/components/data-display/carousel/index.mjs +8 -0
  146. package/dist/components/data-display/code/code.css +37 -0
  147. package/dist/components/data-display/code/code.d.mts +2 -3
  148. package/dist/components/data-display/code/code.mjs +7 -6
  149. package/dist/components/data-display/code/code.module.mjs +9 -0
  150. package/dist/components/data-display/code/find-all-colors.d.mts +2 -3
  151. package/dist/components/data-display/code/find-all-colors.mjs +0 -161
  152. package/dist/components/data-display/code-block/code-block.css +161 -0
  153. package/dist/components/data-display/code-block/code-block.d.mts +12 -0
  154. package/dist/components/data-display/code-block/code-block.mjs +44 -0
  155. package/dist/components/data-display/code-block/code-block.module.mjs +11 -0
  156. package/dist/components/data-display/code-block/highlight.d.mts +9 -0
  157. package/dist/components/data-display/code-block/highlight.mjs +54 -0
  158. package/dist/components/data-display/code-block/index.d.mts +2 -0
  159. package/dist/components/data-display/code-block/index.mjs +2 -0
  160. package/dist/components/data-display/data-table/data-table.css +74 -0
  161. package/dist/components/data-display/data-table/data-table.d.mts +31 -0
  162. package/dist/components/data-display/data-table/data-table.mjs +155 -0
  163. package/dist/components/data-display/data-table/data-table.module.mjs +14 -0
  164. package/dist/components/data-display/data-table/index.d.mts +2 -0
  165. package/dist/components/data-display/data-table/index.mjs +2 -0
  166. package/dist/components/data-display/heading/heading.css +99 -0
  167. package/dist/components/data-display/heading/heading.d.mts +2 -3
  168. package/dist/components/data-display/heading/heading.mjs +15 -14
  169. package/dist/components/data-display/heading/heading.module.mjs +20 -0
  170. package/dist/components/data-display/kbd/index.d.mts +2 -0
  171. package/dist/components/data-display/kbd/index.mjs +2 -0
  172. package/dist/components/data-display/kbd/kbd.css +21 -0
  173. package/dist/components/data-display/kbd/kbd.d.mts +8 -0
  174. package/dist/components/data-display/kbd/kbd.mjs +17 -0
  175. package/dist/components/data-display/kbd/kbd.module.mjs +5 -0
  176. package/dist/components/data-display/prose/index.d.mts +2 -0
  177. package/dist/components/data-display/prose/index.mjs +2 -0
  178. package/dist/components/data-display/prose/prose.css +253 -0
  179. package/dist/components/data-display/prose/prose.d.mts +5 -0
  180. package/dist/components/data-display/prose/prose.mjs +10 -0
  181. package/dist/components/data-display/prose/prose.module.mjs +5 -0
  182. package/dist/components/data-display/table/table.css +107 -0
  183. package/dist/components/data-display/table/table.d.mts +10 -9
  184. package/dist/components/data-display/table/table.mjs +26 -15
  185. package/dist/components/data-display/table/table.module.mjs +22 -0
  186. package/dist/components/data-display/tree/index.d.mts +2 -0
  187. package/dist/components/data-display/tree/index.mjs +2 -0
  188. package/dist/components/data-display/tree/tree.css +84 -0
  189. package/dist/components/data-display/tree/tree.d.mts +20 -0
  190. package/dist/components/data-display/tree/tree.mjs +151 -0
  191. package/dist/components/data-display/tree/tree.module.mjs +15 -0
  192. package/dist/components/feedback/alert/alert.css +42 -0
  193. package/dist/components/feedback/alert/alert.d.mts +3 -4
  194. package/dist/components/feedback/alert/alert.mjs +20 -23
  195. package/dist/components/feedback/alert/alert.module.mjs +14 -0
  196. package/dist/components/feedback/callout/callout.css +38 -0
  197. package/dist/components/feedback/callout/callout.d.mts +10 -0
  198. package/dist/components/feedback/callout/callout.mjs +38 -0
  199. package/dist/components/feedback/callout/callout.module.mjs +11 -0
  200. package/dist/components/feedback/callout/index.d.mts +2 -0
  201. package/dist/components/feedback/callout/index.mjs +2 -0
  202. package/dist/components/feedback/empty-state/empty-state.css +36 -0
  203. package/dist/components/feedback/empty-state/empty-state.d.mts +10 -0
  204. package/dist/components/feedback/empty-state/empty-state.mjs +27 -0
  205. package/dist/components/feedback/empty-state/empty-state.module.mjs +11 -0
  206. package/dist/components/feedback/empty-state/index.d.mts +2 -0
  207. package/dist/components/feedback/empty-state/index.mjs +2 -0
  208. package/dist/components/feedback/progress/progress.css +78 -0
  209. package/dist/components/feedback/progress/progress.d.mts +5 -5
  210. package/dist/components/feedback/progress/progress.mjs +17 -3
  211. package/dist/components/feedback/progress/progress.module.mjs +12 -0
  212. package/dist/components/feedback/skeleton/skeleton.css +64 -0
  213. package/dist/components/feedback/skeleton/skeleton.d.mts +2 -3
  214. package/dist/components/feedback/skeleton/skeleton.mjs +19 -2
  215. package/dist/components/feedback/skeleton/skeleton.module.mjs +17 -0
  216. package/dist/components/feedback/spinner/spinner.css +40 -0
  217. package/dist/components/feedback/spinner/spinner.d.mts +2 -3
  218. package/dist/components/feedback/spinner/spinner.mjs +13 -7
  219. package/dist/components/feedback/spinner/spinner.module.mjs +12 -0
  220. package/dist/components/feedback/toast/context.d.mts +8 -9
  221. package/dist/components/feedback/toast/provider.css +69 -0
  222. package/dist/components/feedback/toast/provider.d.mts +2 -3
  223. package/dist/components/feedback/toast/provider.mjs +17 -13
  224. package/dist/components/feedback/toast/provider.module.mjs +12 -0
  225. package/dist/components/feedback/toast/toast.d.mts +2 -3
  226. package/dist/components/form/autocomplete/autocomplete.css +154 -0
  227. package/dist/components/form/autocomplete/autocomplete.d.mts +2 -3
  228. package/dist/components/form/autocomplete/autocomplete.mjs +70 -46
  229. package/dist/components/form/autocomplete/autocomplete.module.mjs +21 -0
  230. package/dist/components/form/calendar/calendar.css +98 -0
  231. package/dist/components/form/calendar/calendar.d.mts +14 -0
  232. package/dist/components/form/calendar/calendar.mjs +182 -0
  233. package/dist/components/form/calendar/calendar.module.mjs +18 -0
  234. package/dist/components/form/calendar/index.d.mts +2 -0
  235. package/dist/components/form/calendar/index.mjs +2 -0
  236. package/dist/components/form/checkbox/checkbox.css +90 -0
  237. package/dist/components/form/checkbox/checkbox.d.mts +4 -3
  238. package/dist/components/form/checkbox/checkbox.mjs +29 -27
  239. package/dist/components/form/checkbox/checkbox.module.mjs +13 -0
  240. package/dist/components/form/checkbox-card/checkbox-card.css +138 -0
  241. package/dist/components/form/checkbox-card/checkbox-card.d.mts +3 -4
  242. package/dist/components/form/checkbox-card/checkbox-card.mjs +17 -23
  243. package/dist/components/form/checkbox-card/checkbox-card.module.mjs +17 -0
  244. package/dist/components/form/checkbox-group/checkbox-group.css +15 -0
  245. package/dist/components/form/checkbox-group/checkbox-group.d.mts +7 -5
  246. package/dist/components/form/checkbox-group/checkbox-group.mjs +12 -16
  247. package/dist/components/form/checkbox-group/checkbox-group.module.mjs +8 -0
  248. package/dist/components/form/checkbox-group/index.d.mts +4 -3
  249. package/dist/components/form/color-picker/color-picker.css +172 -0
  250. package/dist/components/form/color-picker/color-picker.d.mts +28 -0
  251. package/dist/components/form/color-picker/color-picker.mjs +239 -0
  252. package/dist/components/form/color-picker/color-picker.module.mjs +20 -0
  253. package/dist/components/form/color-picker/index.d.mts +2 -0
  254. package/dist/components/form/color-picker/index.mjs +2 -0
  255. package/dist/components/form/combobox/combobox.css +143 -0
  256. package/dist/components/form/combobox/combobox.d.mts +32 -0
  257. package/dist/components/form/combobox/combobox.mjs +278 -0
  258. package/dist/components/form/combobox/combobox.module.mjs +19 -0
  259. package/dist/components/form/combobox/index.d.mts +2 -0
  260. package/dist/components/form/combobox/index.mjs +2 -0
  261. package/dist/components/form/date-field/date-field.css +31 -0
  262. package/dist/components/form/date-field/date-field.d.mts +8 -0
  263. package/dist/components/form/date-field/date-field.mjs +20 -0
  264. package/dist/components/form/date-field/date-field.module.mjs +5 -0
  265. package/dist/components/form/date-field/index.d.mts +2 -0
  266. package/dist/components/form/date-field/index.mjs +2 -0
  267. package/dist/components/form/date-picker/date-picker.css +90 -0
  268. package/dist/components/form/date-picker/date-picker.d.mts +12 -0
  269. package/dist/components/form/date-picker/date-picker.mjs +77 -0
  270. package/dist/components/form/date-picker/date-picker.module.mjs +14 -0
  271. package/dist/components/form/date-picker/index.d.mts +2 -0
  272. package/dist/components/form/date-picker/index.mjs +2 -0
  273. package/dist/components/form/file-field/file-field.css +88 -0
  274. package/dist/components/form/file-field/file-field.d.mts +9 -7
  275. package/dist/components/form/file-field/file-field.mjs +130 -37
  276. package/dist/components/form/file-field/file-field.module.mjs +17 -0
  277. package/dist/components/form/file-field/index.d.mts +5 -3
  278. package/dist/components/form/file-field/index.mjs +2 -1
  279. package/dist/components/form/form/form.css +11 -0
  280. package/dist/components/form/form/form.d.mts +4 -4
  281. package/dist/components/form/form/form.mjs +2 -1
  282. package/dist/components/form/form/form.module.mjs +5 -0
  283. package/dist/components/form/form-control/form-control.css +43 -0
  284. package/dist/components/form/form-control/form-control.d.mts +2 -3
  285. package/dist/components/form/form-control/form-control.mjs +11 -10
  286. package/dist/components/form/form-control/form-control.module.mjs +12 -0
  287. package/dist/components/form/number-field/cast.d.mts +2 -3
  288. package/dist/components/form/number-field/cast.mjs +3 -22
  289. package/dist/components/form/number-field/number-field.css +122 -0
  290. package/dist/components/form/number-field/number-field.d.mts +10 -10
  291. package/dist/components/form/number-field/number-field.mjs +126 -54
  292. package/dist/components/form/number-field/number-field.module.mjs +10 -0
  293. package/dist/components/form/password-input/password-input.css +88 -0
  294. package/dist/components/form/password-input/password-input.d.mts +2 -3
  295. package/dist/components/form/password-input/password-input.mjs +15 -12
  296. package/dist/components/form/password-input/password-input.module.mjs +12 -0
  297. package/dist/components/form/radio/radio.css +89 -0
  298. package/dist/components/form/radio/radio.d.mts +3 -3
  299. package/dist/components/form/radio/radio.mjs +15 -19
  300. package/dist/components/form/radio/radio.module.mjs +16 -0
  301. package/dist/components/form/radio-card/radio-card.css +147 -0
  302. package/dist/components/form/radio-card/radio-card.d.mts +4 -4
  303. package/dist/components/form/radio-card/radio-card.mjs +17 -23
  304. package/dist/components/form/radio-card/radio-card.module.mjs +19 -0
  305. package/dist/components/form/range-slider/index.d.mts +2 -0
  306. package/dist/components/form/range-slider/index.mjs +2 -0
  307. package/dist/components/form/range-slider/range-slider.css +67 -0
  308. package/dist/components/form/range-slider/range-slider.d.mts +30 -0
  309. package/dist/components/form/range-slider/range-slider.mjs +135 -0
  310. package/dist/components/form/range-slider/range-slider.module.mjs +14 -0
  311. package/dist/components/form/select/select.css +74 -0
  312. package/dist/components/form/select/select.d.mts +2 -3
  313. package/dist/components/form/select/select.mjs +25 -8
  314. package/dist/components/form/select/select.module.mjs +12 -0
  315. package/dist/components/form/slider/range-input-class.css +97 -0
  316. package/dist/components/form/slider/range-input-class.d.mts +7 -0
  317. package/dist/components/form/slider/range-input-class.mjs +10 -0
  318. package/dist/components/form/slider/range-input-class.module.mjs +8 -0
  319. package/dist/components/form/slider/slider.css +55 -0
  320. package/dist/components/form/slider/slider.d.mts +6 -7
  321. package/dist/components/form/slider/slider.mjs +44 -11
  322. package/dist/components/form/slider/slider.module.mjs +12 -0
  323. package/dist/components/form/switch/switch.css +103 -0
  324. package/dist/components/form/switch/switch.d.mts +2 -3
  325. package/dist/components/form/switch/switch.mjs +14 -17
  326. package/dist/components/form/switch/switch.module.mjs +16 -0
  327. package/dist/components/form/text-field/text-field.css +41 -0
  328. package/dist/components/form/text-field/text-field.d.mts +4 -5
  329. package/dist/components/form/text-field/text-field.mjs +2 -3
  330. package/dist/components/form/text-field/text-field.module.mjs +5 -0
  331. package/dist/components/form/textarea/textarea.css +50 -0
  332. package/dist/components/form/textarea/textarea.d.mts +3 -3
  333. package/dist/components/form/textarea/textarea.mjs +6 -20
  334. package/dist/components/form/textarea/textarea.module.mjs +9 -0
  335. package/dist/components/icons/base.css +40 -0
  336. package/dist/components/icons/base.d.mts +4 -5
  337. package/dist/components/icons/base.mjs +10 -10
  338. package/dist/components/icons/base.module.mjs +13 -0
  339. package/dist/components/icons/browsers.d.mts +5 -6
  340. package/dist/components/icons/color-scale.d.mts +2 -3
  341. package/dist/components/icons/github-mark.d.mts +2 -3
  342. package/dist/components/icons/logo.css +17 -0
  343. package/dist/components/icons/logo.d.mts +3 -4
  344. package/dist/components/icons/logo.mjs +4 -3
  345. package/dist/components/icons/logo.module.mjs +9 -0
  346. package/dist/components/icons/lucide-deep.d.mts +3 -1
  347. package/dist/components/icons/lucide-imports.d.mts +3 -1
  348. package/dist/components/icons/lucide-imports.mjs +3 -1
  349. package/dist/components/icons/lucide.d.mts +60 -61
  350. package/dist/components/icons/qiita.d.mts +2 -3
  351. package/dist/components/icons/twitter.css +9 -0
  352. package/dist/components/icons/twitter.d.mts +2 -3
  353. package/dist/components/icons/twitter.mjs +2 -1
  354. package/dist/components/icons/twitter.module.mjs +5 -0
  355. package/dist/components/icons/vertical-writing.d.mts +2 -3
  356. package/dist/components/index.d.mts +48 -9
  357. package/dist/components/index.mjs +32 -10
  358. package/dist/components/layout/_shared/gap.css +25 -0
  359. package/dist/components/layout/_shared/gap.d.mts +8 -9
  360. package/dist/components/layout/_shared/gap.mjs +6 -5
  361. package/dist/components/layout/_shared/gap.module.mjs +11 -0
  362. package/dist/components/layout/_shared/padding.css +25 -0
  363. package/dist/components/layout/_shared/padding.d.mts +8 -9
  364. package/dist/components/layout/_shared/padding.mjs +6 -5
  365. package/dist/components/layout/_shared/padding.module.mjs +11 -0
  366. package/dist/components/layout/grid/grid.css +93 -0
  367. package/dist/components/layout/grid/grid.d.mts +5 -6
  368. package/dist/components/layout/grid/grid.mjs +21 -20
  369. package/dist/components/layout/grid/grid.module.mjs +25 -0
  370. package/dist/components/layout/resizable-panels/index.d.mts +18 -0
  371. package/dist/components/layout/resizable-panels/index.mjs +9 -0
  372. package/dist/components/layout/resizable-panels/resizable-panels.css +77 -0
  373. package/dist/components/layout/resizable-panels/resizable-panels.d.mts +21 -0
  374. package/dist/components/layout/resizable-panels/resizable-panels.mjs +164 -0
  375. package/dist/components/layout/resizable-panels/resizable-panels.module.mjs +16 -0
  376. package/dist/components/layout/separator/separator.css +37 -0
  377. package/dist/components/layout/separator/separator.d.mts +2 -3
  378. package/dist/components/layout/separator/separator.mjs +12 -9
  379. package/dist/components/layout/separator/separator.module.mjs +12 -0
  380. package/dist/components/layout/stack/stack.css +49 -0
  381. package/dist/components/layout/stack/stack.d.mts +3 -4
  382. package/dist/components/layout/stack/stack.mjs +11 -10
  383. package/dist/components/layout/stack/stack.module.mjs +17 -0
  384. package/dist/components/navigation/anchor/anchor.css +29 -0
  385. package/dist/components/navigation/anchor/anchor.d.mts +2 -3
  386. package/dist/components/navigation/anchor/anchor.mjs +5 -2
  387. package/dist/components/navigation/anchor/anchor.module.mjs +8 -0
  388. package/dist/components/navigation/breadcrumb/breadcrumb.css +72 -0
  389. package/dist/components/navigation/breadcrumb/breadcrumb.d.mts +5 -6
  390. package/dist/components/navigation/breadcrumb/breadcrumb.mjs +15 -9
  391. package/dist/components/navigation/breadcrumb/breadcrumb.module.mjs +14 -0
  392. package/dist/components/navigation/breadcrumb/index.d.mts +2 -3
  393. package/dist/components/navigation/pagination/pagination.css +36 -0
  394. package/dist/components/navigation/pagination/pagination.d.mts +2 -3
  395. package/dist/components/navigation/pagination/pagination.mjs +9 -8
  396. package/dist/components/navigation/pagination/pagination.module.mjs +11 -0
  397. package/dist/components/navigation/side-nav/index.d.mts +16 -0
  398. package/dist/components/navigation/side-nav/index.mjs +10 -0
  399. package/dist/components/navigation/side-nav/side-nav.css +73 -0
  400. package/dist/components/navigation/side-nav/side-nav.d.mts +31 -0
  401. package/dist/components/navigation/side-nav/side-nav.mjs +62 -0
  402. package/dist/components/navigation/side-nav/side-nav.module.mjs +11 -0
  403. package/dist/components/navigation/stepper/index.d.mts +2 -0
  404. package/dist/components/navigation/stepper/index.mjs +2 -0
  405. package/dist/components/navigation/stepper/stepper.css +151 -0
  406. package/dist/components/navigation/stepper/stepper.d.mts +19 -0
  407. package/dist/components/navigation/stepper/stepper.mjs +87 -0
  408. package/dist/components/navigation/stepper/stepper.module.mjs +29 -0
  409. package/dist/components/navigation/table-of-contents/index.d.mts +2 -0
  410. package/dist/components/navigation/table-of-contents/index.mjs +2 -0
  411. package/dist/components/navigation/table-of-contents/table-of-contents.css +17 -0
  412. package/dist/components/navigation/table-of-contents/table-of-contents.d.mts +12 -0
  413. package/dist/components/navigation/table-of-contents/table-of-contents.mjs +94 -0
  414. package/dist/components/navigation/table-of-contents/table-of-contents.module.mjs +8 -0
  415. package/dist/components/navigation/tabs/index.d.mts +2 -3
  416. package/dist/components/navigation/tabs/tabs.css +70 -0
  417. package/dist/components/navigation/tabs/tabs.d.mts +5 -6
  418. package/dist/components/navigation/tabs/tabs.mjs +51 -42
  419. package/dist/components/navigation/tabs/tabs.module.mjs +12 -0
  420. package/dist/components/observers/fragment-instance.d.mts +1 -0
  421. package/dist/components/observers/in-view/in-view.d.mts +11 -0
  422. package/dist/components/observers/in-view/in-view.mjs +60 -0
  423. package/dist/components/observers/in-view/index.d.mts +2 -0
  424. package/dist/components/observers/in-view/index.mjs +2 -0
  425. package/dist/components/observers/resize/index.d.mts +2 -0
  426. package/dist/components/observers/resize/index.mjs +2 -0
  427. package/dist/components/observers/resize/resize.d.mts +7 -0
  428. package/dist/components/observers/resize/resize.mjs +25 -0
  429. package/dist/components/overlays/_internal/modal-dialog-context.d.mts +4 -5
  430. package/dist/components/overlays/_internal/use-can-hover.d.mts +2 -3
  431. package/dist/components/overlays/_internal/use-hover-intent.d.mts +3 -4
  432. package/dist/components/overlays/_internal/use-list-navigation.d.mts +17 -11
  433. package/dist/components/overlays/_internal/use-list-navigation.mjs +42 -26
  434. package/dist/components/overlays/command-palette/command-palette.css +91 -0
  435. package/dist/components/overlays/command-palette/command-palette.d.mts +24 -0
  436. package/dist/components/overlays/command-palette/command-palette.mjs +139 -0
  437. package/dist/components/overlays/command-palette/command-palette.module.mjs +14 -0
  438. package/dist/components/overlays/command-palette/index.d.mts +2 -0
  439. package/dist/components/overlays/command-palette/index.mjs +2 -0
  440. package/dist/components/overlays/context-menu/context-menu.d.mts +13 -0
  441. package/dist/components/overlays/context-menu/context-menu.mjs +79 -0
  442. package/dist/components/overlays/context-menu/index.d.mts +21 -0
  443. package/dist/components/overlays/context-menu/index.mjs +13 -0
  444. package/dist/components/overlays/dialog/dialog.css +31 -0
  445. package/dist/components/overlays/dialog/dialog.d.mts +4 -5
  446. package/dist/components/overlays/dialog/dialog.mjs +10 -7
  447. package/dist/components/overlays/dialog/dialog.module.mjs +10 -0
  448. package/dist/components/overlays/dialog/index.d.mts +2 -3
  449. package/dist/components/overlays/drawer/drawer.css +48 -0
  450. package/dist/components/overlays/drawer/drawer.d.mts +2 -3
  451. package/dist/components/overlays/drawer/drawer.mjs +11 -10
  452. package/dist/components/overlays/drawer/drawer.module.mjs +13 -0
  453. package/dist/components/overlays/dropdown-menu/dropdown-menu.d.mts +7 -10
  454. package/dist/components/overlays/dropdown-menu/dropdown-menu.mjs +10 -9
  455. package/dist/components/overlays/dropdown-menu/hooks.d.mts +7 -7
  456. package/dist/components/overlays/dropdown-menu/hooks.mjs +3 -3
  457. package/dist/components/overlays/dropdown-menu/index.d.mts +8 -10
  458. package/dist/components/overlays/dropdown-menu/shared.css +51 -0
  459. package/dist/components/overlays/dropdown-menu/shared.d.mts +3 -6
  460. package/dist/components/overlays/dropdown-menu/shared.mjs +4 -6
  461. package/dist/components/overlays/dropdown-menu/shared.module.mjs +8 -0
  462. package/dist/components/overlays/dropdown-menu/sub-menu.css +28 -0
  463. package/dist/components/overlays/dropdown-menu/sub-menu.d.mts +3 -6
  464. package/dist/components/overlays/dropdown-menu/sub-menu.mjs +15 -15
  465. package/dist/components/overlays/dropdown-menu/sub-menu.module.mjs +9 -0
  466. package/dist/components/overlays/dropdown-menu/use-safe-triangle.d.mts +2 -3
  467. package/dist/components/overlays/list-box/hooks.d.mts +6 -5
  468. package/dist/components/overlays/list-box/hooks.mjs +5 -4
  469. package/dist/components/overlays/list-box/index.d.mts +2 -3
  470. package/dist/components/overlays/list-box/list-box.css +74 -0
  471. package/dist/components/overlays/list-box/list-box.d.mts +5 -6
  472. package/dist/components/overlays/list-box/list-box.mjs +15 -13
  473. package/dist/components/overlays/list-box/list-box.module.mjs +10 -0
  474. package/dist/components/overlays/modal/modal.css +119 -0
  475. package/dist/components/overlays/modal/modal.d.mts +2 -3
  476. package/dist/components/overlays/modal/modal.mjs +14 -11
  477. package/dist/components/overlays/modal/modal.module.mjs +11 -0
  478. package/dist/components/overlays/popover/anchor-positioning.d.mts +4 -5
  479. package/dist/components/overlays/popover/escape-stack.d.mts +2 -3
  480. package/dist/components/overlays/popover/hooks.d.mts +7 -8
  481. package/dist/components/overlays/popover/index.d.mts +2 -2
  482. package/dist/components/overlays/popover/popover.css +51 -0
  483. package/dist/components/overlays/popover/popover.d.mts +4 -4
  484. package/dist/components/overlays/popover/popover.mjs +11 -5
  485. package/dist/components/overlays/popover/popover.module.mjs +11 -0
  486. package/dist/components/overlays/tooltip/bridge.css +68 -0
  487. package/dist/components/overlays/tooltip/bridge.d.mts +2 -3
  488. package/dist/components/overlays/tooltip/bridge.mjs +7 -21
  489. package/dist/components/overlays/tooltip/bridge.module.mjs +11 -0
  490. package/dist/components/overlays/tooltip/index.d.mts +2 -2
  491. package/dist/components/overlays/tooltip/tooltip.css +15 -0
  492. package/dist/components/overlays/tooltip/tooltip.d.mts +5 -6
  493. package/dist/components/overlays/tooltip/tooltip.mjs +3 -2
  494. package/dist/components/overlays/tooltip/tooltip.module.mjs +5 -0
  495. package/dist/components/providers/index.d.mts +1 -2
  496. package/dist/components/providers/portal-root.d.mts +9 -7
  497. package/dist/components/providers/portal-root.mjs +7 -7
  498. package/dist/components/providers/ui-provider.d.mts +2 -6
  499. package/dist/components/providers/ui-provider.mjs +1 -5
  500. package/dist/helpers/chain.d.mts +2 -3
  501. package/dist/helpers/chain.mjs +0 -23
  502. package/dist/helpers/create-safe-context.d.mts +2 -3
  503. package/dist/helpers/create-safe-context.mjs +0 -17
  504. package/dist/helpers/index.d.mts +1 -2
  505. package/dist/helpers/index.mjs +2 -3
  506. package/dist/helpers/merge-props.d.mts +2 -3
  507. package/dist/helpers/merge-props.mjs +2 -37
  508. package/dist/helpers/merge-refs.d.mts +2 -3
  509. package/dist/helpers/merge-refs.mjs +0 -32
  510. package/dist/hooks/click-away/index.d.mts +2 -3
  511. package/dist/hooks/controllable-state/index.d.mts +2 -3
  512. package/dist/hooks/controllable-state/index.mjs +9 -11
  513. package/dist/hooks/index.d.mts +2 -20
  514. package/dist/hooks/index.mjs +2 -19
  515. package/dist/hooks/writing-mode/index.d.mts +15 -5
  516. package/dist/hooks/writing-mode/index.mjs +21 -14
  517. package/dist/i18n/current.d.mts +23 -0
  518. package/dist/i18n/current.mjs +43 -0
  519. package/dist/i18n/en.d.mts +2 -3
  520. package/dist/i18n/en.mjs +46 -0
  521. package/dist/i18n/index.d.mts +3 -2
  522. package/dist/i18n/index.mjs +4 -3
  523. package/dist/i18n/ja.d.mts +2 -3
  524. package/dist/i18n/ja.mjs +46 -0
  525. package/dist/i18n/messages.d.mts +81 -3
  526. package/dist/i18n/usage.d.mts +8 -0
  527. package/dist/i18n/usage.mjs +131 -0
  528. package/dist/index.d.mts +29 -34
  529. package/dist/index.mjs +32 -35
  530. package/dist/integrations/_shared/openui-defs.d.mts +3 -4
  531. package/dist/integrations/_shared/openui-defs.mjs +123 -54
  532. package/dist/integrations/_shared/renderers.css +50 -0
  533. package/dist/integrations/_shared/renderers.d.mts +71 -52
  534. package/dist/integrations/_shared/renderers.mjs +288 -30
  535. package/dist/integrations/_shared/renderers.module.mjs +14 -0
  536. package/dist/integrations/_shared/schemas.d.mts +387 -103
  537. package/dist/integrations/_shared/schemas.mjs +165 -27
  538. package/dist/integrations/ai-sdk/index.d.mts +2 -2
  539. package/dist/integrations/ai-sdk/map-parts.d.mts +25 -7
  540. package/dist/integrations/ai-sdk/map-parts.mjs +28 -3
  541. package/dist/integrations/json-render/catalog.d.mts +336 -18
  542. package/dist/integrations/json-render/catalog.mjs +120 -57
  543. package/dist/integrations/json-render/registry.d.mts +3 -4
  544. package/dist/integrations/json-render/registry.mjs +38 -4
  545. package/dist/integrations/openui/form-views.d.mts +23 -18
  546. package/dist/integrations/openui/form-views.mjs +27 -3
  547. package/dist/integrations/openui/library.d.mts +59 -7
  548. package/dist/integrations/openui/library.mjs +18 -3
  549. package/dist/integrations/openui/prompt.d.mts +2 -3
  550. package/dist/internal/accepts-file.d.mts +8 -0
  551. package/dist/internal/accepts-file.mjs +19 -0
  552. package/dist/internal/carries-files.d.mts +3 -0
  553. package/dist/internal/carries-files.mjs +4 -0
  554. package/dist/internal/clamp.d.mts +2 -3
  555. package/dist/internal/clamp.mjs +0 -11
  556. package/dist/internal/commit-input-value.d.mts +10 -0
  557. package/dist/internal/commit-input-value.mjs +15 -0
  558. package/dist/internal/dropped-files.d.mts +3 -0
  559. package/dist/internal/dropped-files.mjs +8 -0
  560. package/dist/internal/focus-trap.d.mts +5 -6
  561. package/dist/internal/focus-trap.mjs +4 -4
  562. package/dist/internal/hex-color.d.mts +22 -0
  563. package/dist/internal/hex-color.mjs +53 -0
  564. package/dist/internal/iso-date.d.mts +39 -0
  565. package/dist/internal/iso-date.mjs +98 -0
  566. package/dist/internal/to-precision.d.mts +2 -3
  567. package/dist/internal/to-precision.mjs +0 -8
  568. package/dist/styles/index.css +513 -2526
  569. package/dist/styles/tailwind.css +217 -17
  570. package/dist/styles/tokens.d.mts +1 -2
  571. package/dist/styles/tokens.mjs +1 -2
  572. package/dist/types/variables.d.mts +7 -9
  573. package/docs/GUIDE.md +239 -72
  574. package/docs/llms.txt +11 -7
  575. package/docs/props.generated.json +2156 -309
  576. package/docs/references/ai-chat.md +345 -62
  577. package/docs/references/color.md +222 -78
  578. package/docs/references/components.md +1664 -242
  579. package/docs/references/generative-ui.md +125 -17
  580. package/docs/references/interaction-design.md +65 -35
  581. package/docs/references/spatial-design.md +83 -63
  582. package/docs/references/types.md +101 -0
  583. package/docs/references/typography.md +159 -51
  584. package/package.json +64 -62
  585. package/dist/components/_internal/focus-ring.d.mts +0 -8
  586. package/dist/components/_internal/focus-ring.mjs +0 -8
  587. package/dist/components/layout/scroll-linked/index.d.mts +0 -2
  588. package/dist/components/layout/scroll-linked/index.mjs +0 -2
  589. package/dist/components/layout/scroll-linked/scroll-linked.d.mts +0 -14
  590. package/dist/components/layout/scroll-linked/scroll-linked.mjs +0 -59
  591. package/dist/helpers/cn.d.mts +0 -5
  592. package/dist/helpers/cn.mjs +0 -27
  593. package/dist/hooks/breakpoint/index.d.mts +0 -5
  594. package/dist/hooks/breakpoint/index.mjs +0 -24
  595. package/dist/hooks/client/index.d.mts +0 -4
  596. package/dist/hooks/client/index.mjs +0 -6
  597. package/dist/hooks/clipboard/index.d.mts +0 -7
  598. package/dist/hooks/clipboard/index.mjs +0 -15
  599. package/dist/hooks/debounced-transition/index.d.mts +0 -5
  600. package/dist/hooks/debounced-transition/index.mjs +0 -49
  601. package/dist/hooks/deferred-debounce/index.d.mts +0 -4
  602. package/dist/hooks/deferred-debounce/index.mjs +0 -9
  603. package/dist/hooks/disclosure/index.d.mts +0 -10
  604. package/dist/hooks/disclosure/index.mjs +0 -20
  605. package/dist/hooks/hover/index.d.mts +0 -12
  606. package/dist/hooks/hover/index.mjs +0 -19
  607. package/dist/hooks/intersection-observer/index.d.mts +0 -3
  608. package/dist/hooks/intersection-observer/index.mjs +0 -3
  609. package/dist/hooks/intersection-observer/use-in-view.d.mts +0 -11
  610. package/dist/hooks/intersection-observer/use-in-view.mjs +0 -18
  611. package/dist/hooks/intersection-observer/use-intersection-observer.d.mts +0 -11
  612. package/dist/hooks/intersection-observer/use-intersection-observer.mjs +0 -33
  613. package/dist/hooks/interval/index.d.mts +0 -4
  614. package/dist/hooks/interval/index.mjs +0 -19
  615. package/dist/hooks/resize/index.d.mts +0 -8
  616. package/dist/hooks/resize/index.mjs +0 -24
  617. package/dist/hooks/scroll-direction/index.d.mts +0 -13
  618. package/dist/hooks/scroll-direction/index.mjs +0 -67
  619. package/dist/hooks/scroll-lock/index.d.mts +0 -9
  620. package/dist/hooks/scroll-lock/index.mjs +0 -59
  621. package/dist/hooks/step/index.d.mts +0 -15
  622. package/dist/hooks/step/index.mjs +0 -39
  623. package/dist/hooks/timeout/index.d.mts +0 -4
  624. package/dist/hooks/timeout/index.mjs +0 -19
  625. package/dist/hooks/window-resize/index.d.mts +0 -11
  626. package/dist/hooks/window-resize/index.mjs +0 -21
  627. package/dist/hooks/window-size/index.d.mts +0 -8
  628. package/dist/hooks/window-size/index.mjs +0 -31
  629. package/dist/i18n/context.d.mts +0 -9
  630. package/dist/i18n/context.mjs +0 -19
  631. package/dist/styles/base.css +0 -315
  632. package/dist/styles/tokens.css +0 -380
  633. package/dist/styles/tokens.generated.d.mts +0 -840
  634. package/dist/styles/tokens.generated.mjs +0 -813
  635. package/dist/styles/utilities.css +0 -62
  636. package/docs/references/helpers.md +0 -223
  637. package/docs/references/hooks.md +0 -301
@@ -5,118 +5,262 @@ in a calm tone.
5
5
 
6
6
  ## Design intent
7
7
 
8
- - **An OKLCH palette**: every color is defined in OKLCH. Lightness (L) is shared across hues, so the same step number gives matching contrast whatever the hue
8
+ - **An OKLCH palette**: every color is defined in OKLCH. The chromatic hues share one lightness (L) scale, so a step number gives close to the same contrast whatever the hue; gray has a scale of its own
9
9
  - **A vivid palette, calm tokens**: the palette itself stays vivid; the semantic tokens map it down to a restrained tone
10
- - **WCAG AAA**: fg/bg pairs hold a contrast ratio of 7:1 or better
10
+ - **Contrast**: text tokens hold WCAG AAA (7:1 or better) on the page and card grounds; `fg-subtle` and brand text on `*-bg` / `*-bg-mute` / `*-bg-emphasize` stop short of it but hold AA for normal text, in light and in dark — see [Contrast](#contrast)
11
11
  - **The 60-30-10 rule**: 60% neutral (greys), 30% supporting (`bg-subtle`, …), 10% accent (primary)
12
12
  - Primary is teal (H:180), secondary is cyan (H:210)
13
13
  - Dark mode is designed as its own tone, not as an inversion of light mode
14
14
 
15
15
  ## OKLCH palette design
16
16
 
17
- The lightness scale (shared by every hue):
17
+ The lightness scale. Every chromatic hue uses the first L column, except that
18
+ teal and cyan put 100 at 0.955; gray uses the second:
18
19
 
19
- | Step | L | Use |
20
- | ---- | ----- | ----------------------- |
21
- | 50 | 0.975 | The lightest background |
22
- | 100 | 0.945 | A light background |
23
- | 200 | 0.900 | A restrained background |
24
- | 300 | 0.840 | Supporting color |
25
- | 400 | 0.750 | Mid tone |
26
- | 500 | 0.660 | The core color |
27
- | 600 | 0.575 | Slightly dark |
28
- | 700 | 0.490 | Dark tone |
29
- | 800 | 0.410 | For text (AAA on white) |
30
- | 900 | 0.370 | The darkest |
20
+ | Step | L (chromatic) | L (gray) | Use |
21
+ | ---- | ------------- | -------- | ----------------------- |
22
+ | 50 | 0.975 | 0.975 | The lightest background |
23
+ | 100 | 0.945 | 0.955 | A light background |
24
+ | 200 | 0.900 | 0.925 | A restrained background |
25
+ | 300 | 0.840 | 0.840 | Supporting color |
26
+ | 400 | 0.750 | 0.750 | Mid tone |
27
+ | 500 | 0.660 | 0.660 | The core color |
28
+ | 600 | 0.575 | 0.520 | Slightly dark |
29
+ | 700 | 0.490 | 0.420 | Dark tone |
30
+ | 800 | 0.410 | 0.300 | For text (AAA on white) |
31
+ | 900 | 0.370 | 0.250 | Very dark |
32
+ | 950 | 0.180 | 0.180 | The darkest |
31
33
 
32
- Chroma is optimized per hue (maximized within gamut).
34
+ Chroma is set per hue and per step. Many steps lie outside the sRGB gamut, so
35
+ the browser maps them to what the display can show.
33
36
 
34
37
  ## Semantic colors (foreground)
35
38
 
36
- | Tailwind class | Light | Dark | Use |
37
- | ----------------- | ---------- | ---------- | --------------- |
38
- | `text-fg-base` | gray-900 | gray-50 | Body text |
39
- | `text-fg-subtle` | gray-400 | gray-500 | Placeholders |
40
- | `text-fg-mute` | gray-700 | gray-300 | Supporting text |
41
- | `text-fg-inverse` | gray-50 | gray-900 | Inverted text |
42
- | `text-fg-info` | blue-800 | blue-200 | Information |
43
- | `text-fg-success` | green-800 | green-200 | Success |
44
- | `text-fg-warning` | yellow-800 | yellow-200 | Warning |
45
- | `text-fg-error` | red-800 | red-200 | Error |
39
+ | Token | Light | Dark | Use |
40
+ | -------------------- | ---------- | ---------- | --------------- |
41
+ | `--color-fg-base` | gray-900 | gray-50 | Body text |
42
+ | `--color-fg-subtle` | gray-600 | gray-400 | Placeholders |
43
+ | `--color-fg-mute` | gray-700 | gray-300 | Supporting text |
44
+ | `--color-fg-inverse` | gray-50 | gray-900 | Inverted text |
45
+ | `--color-fg-info` | blue-800 | blue-200 | Information |
46
+ | `--color-fg-success` | green-800 | green-200 | Success |
47
+ | `--color-fg-warning` | yellow-800 | yellow-200 | Warning |
48
+ | `--color-fg-error` | red-800 | red-200 | Error |
46
49
 
47
50
  ## Semantic colors (background)
48
51
 
49
- | Tailwind class | Light | Dark | Use |
50
- | ----------------- | ---------- | ---------- | -------------------- |
51
- | `bg-bg-base` | white | gray-900 | Card background |
52
- | `bg-bg-subtle` | gray-100 | gray-800 | Page background |
53
- | `bg-bg-mute` | gray-200 | gray-700 | For the hover state |
54
- | `bg-bg-emphasize` | gray-300 | gray-600 | For the active state |
55
- | `bg-bg-inverse` | gray-900 | white | Inverted background |
56
- | `bg-bg-info` | blue-100 | blue-900 | Information ground |
57
- | `bg-bg-success` | green-100 | green-900 | Success ground |
58
- | `bg-bg-warning` | yellow-100 | yellow-900 | Warning ground |
59
- | `bg-bg-error` | red-100 | red-900 | Error ground |
52
+ | Token | Light | Dark | Use |
53
+ | ---------------------- | ---------- | ---------- | --------------------------------------------------------------------------- |
54
+ | `--color-bg-base` | white | gray-800 | Card background |
55
+ | `--color-bg-raised` | white | gray-800 | Overlays (Modal, Dialog, DropdownMenu, ListBox, Autocomplete's option list) |
56
+ | `--color-bg-surface` | gray-50 | gray-950 | Outermost ground: lighter than `bg-subtle` in light, darker in dark |
57
+ | `--color-bg-subtle` | gray-100 | gray-900 | Page background |
58
+ | `--color-bg-mute` | gray-200 | gray-700 | For the hover state |
59
+ | `--color-bg-emphasize` | gray-300 | gray-600 | For the active state |
60
+ | `--color-bg-inverse` | gray-900 | white | Inverted background |
61
+ | `--color-bg-info` | blue-100 | blue-900 | Information ground |
62
+ | `--color-bg-success` | green-100 | green-900 | Success ground |
63
+ | `--color-bg-warning` | yellow-100 | yellow-900 | Warning ground |
64
+ | `--color-bg-error` | red-100 | red-900 | Error ground |
60
65
 
61
66
  ## Semantic colors (border)
62
67
 
63
- | Tailwind class | Light | Dark | Use |
64
- | ------------------------- | ---------- | ---------- | ------------------ |
65
- | `border-border-base` | gray-400 | gray-600 | Standard border |
66
- | `border-border-subtle` | gray-100 | gray-900 | Light border |
67
- | `border-border-mute` | gray-200 | gray-800 | Restrained border |
68
- | `border-border-emphasize` | gray-500 | gray-500 | Emphasized border |
69
- | `border-border-inverse` | gray-700 | gray-300 | Inverted border |
70
- | `border-border-info` | blue-500 | blue-500 | Information border |
71
- | `border-border-success` | green-500 | green-500 | Success border |
72
- | `border-border-warning` | yellow-500 | yellow-500 | Warning border |
73
- | `border-border-error` | red-500 | red-500 | Error border |
68
+ | Token | Light | Dark | Use |
69
+ | -------------------------- | ---------- | ---------- | ------------------ |
70
+ | `--color-border-base` | gray-400 | gray-600 | Standard border |
71
+ | `--color-border-subtle` | gray-100 | gray-700 | Light border |
72
+ | `--color-border-mute` | gray-200 | gray-600 | Restrained border |
73
+ | `--color-border-emphasize` | gray-500 | gray-500 | Emphasized border |
74
+ | `--color-border-inverse` | gray-700 | gray-300 | Inverted border |
75
+ | `--color-border-info` | blue-500 | blue-400 | Information border |
76
+ | `--color-border-success` | green-500 | green-400 | Success border |
77
+ | `--color-border-warning` | yellow-500 | yellow-400 | Warning border |
78
+ | `--color-border-error` | red-500 | red-400 | Error border |
74
79
 
75
80
  ## Brand color (primary: teal H:180)
76
81
 
77
- | Tailwind class | Light | Dark | Use |
78
- | ------------------------- | -------- | -------- | ------------------------- |
79
- | `text-primary-fg` | teal-800 | teal-100 | Primary text |
80
- | `bg-primary-bg` | teal-200 | teal-800 | Primary background |
81
- | `bg-primary-bg-subtle` | teal-50 | teal-900 | Light primary background |
82
- | `bg-primary-bg-mute` | teal-100 | teal-800 | Restrained primary ground |
83
- | `bg-primary-bg-emphasize` | teal-200 | teal-700 | Emphasized primary ground |
84
- | `border-primary-border` | teal-500 | teal-500 | Primary border |
82
+ | Token | Light | Dark | Use |
83
+ | ------------------------------ | -------- | -------- | ------------------------- |
84
+ | `--color-primary-fg` | teal-800 | teal-300 | Primary text |
85
+ | `--color-primary-bg` | teal-200 | teal-900 | Primary background |
86
+ | `--color-primary-bg-subtle` | teal-50 | teal-950 | Light primary background |
87
+ | `--color-primary-bg-mute` | teal-100 | teal-900 | Restrained primary ground |
88
+ | `--color-primary-bg-emphasize` | teal-300 | teal-800 | Emphasized primary ground |
89
+ | `--color-primary-border` | teal-500 | teal-500 | Primary border |
85
90
 
86
91
  ## Brand color (secondary: cyan H:210)
87
92
 
88
- | Tailwind class | Light | Dark | Use |
89
- | ------------------------- | -------- | -------- | -------------------------- |
90
- | `text-secondary-fg` | cyan-700 | cyan-300 | Secondary text |
91
- | `bg-secondary-bg` | cyan-300 | cyan-700 | Secondary background |
92
- | `bg-secondary-bg-subtle` | cyan-100 | cyan-900 | Light secondary background |
93
- | `border-secondary-border` | cyan-600 | cyan-600 | Secondary border |
93
+ | Token | Light | Dark | Use |
94
+ | -------------------------------- | -------- | -------- | --------------------------- |
95
+ | `--color-secondary-fg` | cyan-800 | cyan-300 | Secondary text |
96
+ | `--color-secondary-bg` | cyan-200 | cyan-900 | Secondary background |
97
+ | `--color-secondary-bg-subtle` | cyan-50 | cyan-950 | Light secondary background |
98
+ | `--color-secondary-bg-mute` | cyan-100 | cyan-900 | Restrained secondary ground |
99
+ | `--color-secondary-bg-emphasize` | cyan-300 | cyan-800 | Emphasized secondary ground |
100
+ | `--color-secondary-border` | cyan-500 | cyan-500 | Secondary border |
101
+
102
+ ## Data visualization and backdrop
103
+
104
+ | Token | Light | Dark | Use |
105
+ | -------------------------- | ------------------ | ---------- | ----------------------- |
106
+ | `--color-group-primary` | teal-800 | teal-200 | First data series |
107
+ | `--color-group-secondary` | cyan-800 | cyan-200 | Second data series |
108
+ | `--color-group-tertiary` | pink-800 | pink-200 | Third data series |
109
+ | `--color-group-quaternary` | purple-800 | purple-200 | Fourth data series |
110
+ | `--color-back-drop` | `rgb(0 0 0 / 0.5)` | (same) | The backdrop of a modal |
111
+
112
+ Every color is a custom property, so it goes into any CSS property that takes a
113
+ color: `color: var(--color-fg-mute)`, `fill: var(--color-group-primary)`. With
114
+ `tailwind.css`, each one is also a color utility without its `--color-` prefix
115
+ (`bg-bg-base`, `text-fg-mute`, `fill-group-primary`, …).
116
+
117
+ Under forced colors, paint with the system colors through
118
+ `--color-system-canvas-text`, `--color-system-gray-text`,
119
+ `--color-system-highlight` and `--color-system-highlight-text` (see
120
+ [forced colors](#forced-colors-active)).
121
+
122
+ ## Contrast
123
+
124
+ WCAG 2 contrast ratios of the color tokens, as axe measures them, for the
125
+ lowest pair in each row (rounded down). The tokens drop their `--color-` prefix
126
+ in this table and the next. Every pair holds at least AA for
127
+ normal text in light and in dark. The story `styles/contrast` renders each pair,
128
+ and the test suite runs axe over it in both color schemes — AAA where the table
129
+ says AAA — so a token change that breaks a row fails the build:
130
+
131
+ | Text | Ground | Light | Dark | Level |
132
+ | --------------------------------------------------------------------- | ------------------------------------------------- | ----- | ---- | ------------------------------------------------------ |
133
+ | `fg-base`, `fg-mute`, the status `fg-*`, `primary-fg`, `secondary-fg` | `bg-base`, `bg-raised`, `bg-surface`, `bg-subtle` | 7.0 | 8.3 | AAA |
134
+ | A status `fg-*` | Its own `bg-*` (`bg-error` for `fg-error`, …) | 6.9 | 7.5 | AAA, except `fg-success` on `bg-success` in light (AA) |
135
+ | `primary-fg` / `secondary-fg` | `*-bg-subtle` | 7.5 | 11.9 | AAA |
136
+ | `fg-base` | `bg-mute` | 12.8 | 7.8 | AAA |
137
+ | `fg-mute` | `bg-mute` | 6.7 | 5.2 | AA |
138
+ | `fg-base` | `bg-emphasize` | 9.7 | 5.1 | AA |
139
+ | `fg-subtle` | `bg-base`, `bg-raised`, `bg-surface`, `bg-subtle` | 4.8 | 6.1 | AA |
140
+ | `primary-fg` / `secondary-fg` | `*-bg`, `*-bg-mute` | 6.1 | 6.3 | AA |
141
+ | `primary-fg` / `secondary-fg` | `*-bg-emphasize` | 5.2 | 5.2 | AA |
142
+
143
+ In dark, `*-bg` is 900 (the same step as `*-bg-mute`) and `*-bg-emphasize` is
144
+ 800, a step darker than the rest of the dark scale would suggest, so the brand
145
+ text stays AA on the hover and active grounds of a solid `Button` /
146
+ `IconButton`.
147
+
148
+ ## High contrast and forced colors
149
+
150
+ The stylesheet follows the two contrast settings a user makes in the OS. Neither
151
+ is a preference an application stores, so `@k8ordo/color-scheme` leaves them
152
+ alone: there is nothing to toggle or persist.
153
+
154
+ ### `prefers-contrast: more`
155
+
156
+ `styles.css` moves the text and border tokens further from the ground, in light
157
+ and in dark. Text then holds AAA on the page, card, and status grounds, and
158
+ borders hold 3:1 against the grounds they sit on.
159
+
160
+ | Token | Light | Dark |
161
+ | ------------------------------------- | ----------- | -------- |
162
+ | `fg-base` | gray-950 | white |
163
+ | `fg-mute` | gray-900 | gray-100 |
164
+ | `fg-subtle` | gray-800 | gray-200 |
165
+ | The status `fg-*` | 900 | 100 |
166
+ | `primary-fg` / `secondary-fg` | 900 | 100 |
167
+ | `border-base` | gray-600 | gray-400 |
168
+ | `border-subtle` | gray-500 | gray-500 |
169
+ | `border-mute` | gray-500 | gray-400 |
170
+ | `border-emphasize` | gray-800 | gray-200 |
171
+ | The status `border-*` | 700 | 300 |
172
+ | `primary-border` / `secondary-border` | 700 | 300 |
173
+ | `bg-emphasize` | (unchanged) | gray-700 |
174
+
175
+ In dark, `bg-emphasize` moves a step darker as well, because white text on the
176
+ usual gray-600 would stay near 5:1.
177
+
178
+ Surfaces outlined only by a shadow or a ground — `Card`'s `shadow` variant,
179
+ `Modal`, `Drawer`, `Dialog`, `Alert`, `Callout` and `Toast`, a user `Message` — gain a
180
+ 1px `border-base` outline, as do the `Switch` track and thumb and the `Slider`
181
+ and `Progress` tracks. A focused `DropdownMenu` or `ListBox` item and the
182
+ active `Autocomplete` option draw a 2px outline on top of their ground.
183
+
184
+ ### `forced-colors: active`
185
+
186
+ Under forced colors the browser repaints every color from the user's palette,
187
+ drops shadows, and flattens grounds to one color. The components keep their
188
+ boundaries, focus rings, and selected states visible:
189
+
190
+ - **Boundaries**: the same outline as under `prefers-contrast: more`; controls with a border keep it
191
+ - **Focus rings**: the `box-shadow` ring disappears and a 2px outline shows instead (the components draw a transparent outline under forced colors, which the browser paints)
192
+ - **Selected states** are painted with system colors: `Highlight` for the selected tab's indicator, a checked `Switch` track, the `Progress` and `Slider` fill, and a selected `Autocomplete` option; `CanvasText` for the dot of a checked `Radio` / `RadioCard` and the thumb of a `Switch`
193
+ - `Separator` is painted `CanvasText` and `Skeleton` `GrayText`
194
+ - A color swatch in `Code` keeps its real color (`forced-color-adjust: none`), because the color is the content
195
+
196
+ ### In your own UI
197
+
198
+ - Write the two settings as media queries: `@media (prefers-contrast: more)` and `@media (forced-colors: active)` (with `tailwind.css`, the `contrast-more:` and `forced-colors:` variants). Under forced colors only system colors survive, so paint state with them (`background-color: var(--color-system-highlight)`)
199
+ - Do not draw a boundary or a focus ring with `box-shadow` alone
200
+ - Do not hide something with a transparent color: forced colors paints it. Use `visibility: hidden`
201
+ - To tune the high-contrast values, redefine the tokens inside `@media (prefers-contrast: more)`, on `:root` and on `.dark`, in CSS loaded after the library stylesheet
94
202
 
95
203
  ## Usage examples
96
204
 
205
+ ```css
206
+ /* page.module.css: float a card on the page background */
207
+ .page {
208
+ min-height: 100vh;
209
+ background-color: var(--color-bg-subtle);
210
+ }
211
+
212
+ .body {
213
+ padding: calc(var(--spacing) * 6);
214
+ }
215
+
216
+ .title {
217
+ color: var(--color-fg-base);
218
+ font-weight: var(--font-weight-bold);
219
+ }
220
+
221
+ .lead {
222
+ margin-top: calc(var(--spacing) * 2);
223
+ color: var(--color-fg-mute);
224
+ }
225
+
226
+ .accent {
227
+ color: var(--color-primary-fg);
228
+ }
229
+
230
+ /* the hover state */
231
+ .row {
232
+ background-color: var(--color-bg-base);
233
+ transition: background-color var(--duration-fast) var(--easing-out);
234
+ }
235
+
236
+ @media (hover: hover) {
237
+ .row:hover {
238
+ background-color: var(--color-bg-mute);
239
+ }
240
+ }
241
+ ```
242
+
97
243
  ```tsx
98
- // Float a card on the page background
99
- <div className="bg-bg-subtle min-h-screen">
100
- <Card appearance="shadow">
101
- <div className="p-8">
102
- <h2 className="text-fg-base font-bold">Title</h2>
103
- <p className="text-fg-mute mt-2">Supporting text</p>
104
- <span className="text-primary-fg">Accent text</span>
244
+ <div className={styles.page}>
245
+ <Card variant="shadow">
246
+ <div className={styles.body}>
247
+ <h2 className={styles.title}>Title</h2>
248
+ <p className={styles.lead}>Supporting text</p>
249
+ <span className={styles.accent}>Accent text</span>
105
250
  </div>
106
251
  </Card>
107
252
  </div>
108
-
109
- // Hover state
110
- <button className="bg-bg-base hover:bg-bg-mute transition-colors">
111
- Button
112
- </button>
113
253
  ```
114
254
 
255
+ With `tailwind.css` the same reads `bg-bg-subtle`, `p-6`, `text-fg-base
256
+ font-bold`, `mt-2 text-fg-mute`, `text-primary-fg`, and `bg-bg-base
257
+ hover:bg-bg-mute transition-colors duration-150 ease-out`.
258
+
115
259
  ## What not to do
116
260
 
117
- - Gradient backgrounds (`bg-gradient-to-*`)
261
+ - Gradient backgrounds
118
262
  - Saturated color over large areas (keep accents small)
119
- - Expressing state with opacity (`/90`, `/80`, …) — use the dedicated semantic color
120
- - Using `bg-primary-bg` on hover — prefer `bg-bg-mute`
121
- - Using a raw palette color (`bg-teal-500`) directly — use a semantic token
263
+ - Expressing state with opacity (`color-mix(… 90%, transparent)`, `/90`) — use the dedicated semantic color
264
+ - Using `--color-primary-bg` on hover — prefer `--color-bg-mute`
265
+ - Using a palette color (`--teal-500`) directly — use a semantic token. The palette is what the tokens are built from, not part of the API
122
266
  - Simply inverting the colors for dark mode