@k8ordo/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +624 -0
  3. package/dist/components/_internal/focus-ring.d.mts +8 -0
  4. package/dist/components/_internal/focus-ring.mjs +8 -0
  5. package/dist/components/ai/_internal/collapsible.d.mts +13 -0
  6. package/dist/components/ai/_internal/collapsible.mjs +49 -0
  7. package/dist/components/ai/_internal/streaming-cursor.d.mts +5 -0
  8. package/dist/components/ai/_internal/streaming-cursor.mjs +8 -0
  9. package/dist/components/ai/conversation/conversation.d.mts +18 -0
  10. package/dist/components/ai/conversation/conversation.mjs +111 -0
  11. package/dist/components/ai/conversation/index.d.mts +2 -0
  12. package/dist/components/ai/conversation/index.mjs +2 -0
  13. package/dist/components/ai/index.d.mts +14 -0
  14. package/dist/components/ai/index.mjs +7 -0
  15. package/dist/components/ai/message/index.d.mts +2 -0
  16. package/dist/components/ai/message/index.mjs +2 -0
  17. package/dist/components/ai/message/message.d.mts +17 -0
  18. package/dist/components/ai/message/message.mjs +34 -0
  19. package/dist/components/ai/prompt-input/index.d.mts +2 -0
  20. package/dist/components/ai/prompt-input/index.mjs +2 -0
  21. package/dist/components/ai/prompt-input/prompt-input.d.mts +27 -0
  22. package/dist/components/ai/prompt-input/prompt-input.mjs +108 -0
  23. package/dist/components/ai/reasoning/index.d.mts +2 -0
  24. package/dist/components/ai/reasoning/index.mjs +2 -0
  25. package/dist/components/ai/reasoning/reasoning.d.mts +12 -0
  26. package/dist/components/ai/reasoning/reasoning.mjs +25 -0
  27. package/dist/components/ai/response/index.d.mts +2 -0
  28. package/dist/components/ai/response/index.mjs +2 -0
  29. package/dist/components/ai/response/response.d.mts +20 -0
  30. package/dist/components/ai/response/response.mjs +57 -0
  31. package/dist/components/ai/suggestion/index.d.mts +2 -0
  32. package/dist/components/ai/suggestion/index.mjs +2 -0
  33. package/dist/components/ai/suggestion/suggestion.d.mts +17 -0
  34. package/dist/components/ai/suggestion/suggestion.mjs +29 -0
  35. package/dist/components/ai/tool-invocation/index.d.mts +2 -0
  36. package/dist/components/ai/tool-invocation/index.mjs +2 -0
  37. package/dist/components/ai/tool-invocation/tool-invocation.d.mts +17 -0
  38. package/dist/components/ai/tool-invocation/tool-invocation.mjs +73 -0
  39. package/dist/components/ai/types.d.mts +5 -0
  40. package/dist/components/ai/types.mjs +1 -0
  41. package/dist/components/buttons/button/button.d.mts +27 -0
  42. package/dist/components/buttons/button/button.mjs +60 -0
  43. package/dist/components/buttons/button/index.d.mts +2 -0
  44. package/dist/components/buttons/button/index.mjs +2 -0
  45. package/dist/components/buttons/icon-button/icon-button.d.mts +29 -0
  46. package/dist/components/buttons/icon-button/icon-button.mjs +84 -0
  47. package/dist/components/buttons/icon-button/index.d.mts +2 -0
  48. package/dist/components/buttons/icon-button/index.mjs +2 -0
  49. package/dist/components/data-display/accordion/accordion-button.d.mts +5 -0
  50. package/dist/components/data-display/accordion/accordion-button.mjs +26 -0
  51. package/dist/components/data-display/accordion/accordion-item.d.mts +9 -0
  52. package/dist/components/data-display/accordion/accordion-item.mjs +20 -0
  53. package/dist/components/data-display/accordion/accordion-panel.d.mts +5 -0
  54. package/dist/components/data-display/accordion/accordion-panel.mjs +18 -0
  55. package/dist/components/data-display/accordion/accordion.d.mts +5 -0
  56. package/dist/components/data-display/accordion/accordion.mjs +8 -0
  57. package/dist/components/data-display/accordion/context.d.mts +14 -0
  58. package/dist/components/data-display/accordion/context.mjs +32 -0
  59. package/dist/components/data-display/accordion/index.d.mts +19 -0
  60. package/dist/components/data-display/accordion/index.mjs +13 -0
  61. package/dist/components/data-display/avatar/avatar.d.mts +14 -0
  62. package/dist/components/data-display/avatar/avatar.mjs +43 -0
  63. package/dist/components/data-display/avatar/index.d.mts +2 -0
  64. package/dist/components/data-display/avatar/index.mjs +2 -0
  65. package/dist/components/data-display/badge/badge.d.mts +21 -0
  66. package/dist/components/data-display/badge/badge.mjs +27 -0
  67. package/dist/components/data-display/badge/index.d.mts +2 -0
  68. package/dist/components/data-display/badge/index.mjs +2 -0
  69. package/dist/components/data-display/card/card.d.mts +10 -0
  70. package/dist/components/data-display/card/card.mjs +10 -0
  71. package/dist/components/data-display/card/index.d.mts +2 -0
  72. package/dist/components/data-display/card/index.mjs +2 -0
  73. package/dist/components/data-display/code/code.d.mts +8 -0
  74. package/dist/components/data-display/code/code.mjs +35 -0
  75. package/dist/components/data-display/code/find-all-colors.d.mts +16 -0
  76. package/dist/components/data-display/code/find-all-colors.mjs +267 -0
  77. package/dist/components/data-display/code/index.d.mts +2 -0
  78. package/dist/components/data-display/code/index.mjs +2 -0
  79. package/dist/components/data-display/heading/heading.d.mts +9 -0
  80. package/dist/components/data-display/heading/heading.mjs +46 -0
  81. package/dist/components/data-display/heading/index.d.mts +2 -0
  82. package/dist/components/data-display/heading/index.mjs +2 -0
  83. package/dist/components/data-display/table/index.d.mts +2 -0
  84. package/dist/components/data-display/table/index.mjs +2 -0
  85. package/dist/components/data-display/table/table.d.mts +33 -0
  86. package/dist/components/data-display/table/table.mjs +62 -0
  87. package/dist/components/feedback/alert/alert.d.mts +19 -0
  88. package/dist/components/feedback/alert/alert.mjs +71 -0
  89. package/dist/components/feedback/alert/index.d.mts +2 -0
  90. package/dist/components/feedback/alert/index.mjs +2 -0
  91. package/dist/components/feedback/progress/index.d.mts +2 -0
  92. package/dist/components/feedback/progress/index.mjs +2 -0
  93. package/dist/components/feedback/progress/progress.d.mts +11 -0
  94. package/dist/components/feedback/progress/progress.mjs +21 -0
  95. package/dist/components/feedback/skeleton/index.d.mts +2 -0
  96. package/dist/components/feedback/skeleton/index.mjs +2 -0
  97. package/dist/components/feedback/skeleton/skeleton.d.mts +10 -0
  98. package/dist/components/feedback/skeleton/skeleton.mjs +10 -0
  99. package/dist/components/feedback/spinner/index.d.mts +2 -0
  100. package/dist/components/feedback/spinner/index.mjs +2 -0
  101. package/dist/components/feedback/spinner/spinner.d.mts +9 -0
  102. package/dist/components/feedback/spinner/spinner.mjs +24 -0
  103. package/dist/components/feedback/toast/context.d.mts +34 -0
  104. package/dist/components/feedback/toast/context.mjs +7 -0
  105. package/dist/components/feedback/toast/index.d.mts +3 -0
  106. package/dist/components/feedback/toast/index.mjs +3 -0
  107. package/dist/components/feedback/toast/provider.d.mts +8 -0
  108. package/dist/components/feedback/toast/provider.mjs +171 -0
  109. package/dist/components/feedback/toast/toast.d.mts +15 -0
  110. package/dist/components/feedback/toast/toast.mjs +32 -0
  111. package/dist/components/form/autocomplete/autocomplete.d.mts +23 -0
  112. package/dist/components/form/autocomplete/autocomplete.mjs +225 -0
  113. package/dist/components/form/autocomplete/index.d.mts +2 -0
  114. package/dist/components/form/autocomplete/index.mjs +2 -0
  115. package/dist/components/form/checkbox/checkbox.d.mts +21 -0
  116. package/dist/components/form/checkbox/checkbox.mjs +59 -0
  117. package/dist/components/form/checkbox/index.d.mts +2 -0
  118. package/dist/components/form/checkbox/index.mjs +2 -0
  119. package/dist/components/form/checkbox-card/checkbox-card.d.mts +29 -0
  120. package/dist/components/form/checkbox-card/checkbox-card.mjs +76 -0
  121. package/dist/components/form/checkbox-card/index.d.mts +2 -0
  122. package/dist/components/form/checkbox-card/index.mjs +2 -0
  123. package/dist/components/form/checkbox-group/checkbox-group.d.mts +29 -0
  124. package/dist/components/form/checkbox-group/checkbox-group.mjs +43 -0
  125. package/dist/components/form/checkbox-group/index.d.mts +34 -0
  126. package/dist/components/form/checkbox-group/index.mjs +9 -0
  127. package/dist/components/form/file-field/file-field.d.mts +27 -0
  128. package/dist/components/form/file-field/file-field.mjs +129 -0
  129. package/dist/components/form/file-field/index.d.mts +2 -0
  130. package/dist/components/form/file-field/index.mjs +2 -0
  131. package/dist/components/form/form/form.d.mts +9 -0
  132. package/dist/components/form/form/form.mjs +11 -0
  133. package/dist/components/form/form/index.d.mts +2 -0
  134. package/dist/components/form/form/index.mjs +2 -0
  135. package/dist/components/form/form-control/form-control.d.mts +23 -0
  136. package/dist/components/form/form-control/form-control.mjs +61 -0
  137. package/dist/components/form/form-control/index.d.mts +2 -0
  138. package/dist/components/form/form-control/index.mjs +2 -0
  139. package/dist/components/form/number-field/cast.d.mts +4 -0
  140. package/dist/components/form/number-field/cast.mjs +32 -0
  141. package/dist/components/form/number-field/index.d.mts +2 -0
  142. package/dist/components/form/number-field/index.mjs +2 -0
  143. package/dist/components/form/number-field/number-field.d.mts +25 -0
  144. package/dist/components/form/number-field/number-field.mjs +115 -0
  145. package/dist/components/form/password-input/index.d.mts +2 -0
  146. package/dist/components/form/password-input/index.mjs +2 -0
  147. package/dist/components/form/password-input/password-input.d.mts +11 -0
  148. package/dist/components/form/password-input/password-input.mjs +36 -0
  149. package/dist/components/form/radio/index.d.mts +2 -0
  150. package/dist/components/form/radio/index.mjs +2 -0
  151. package/dist/components/form/radio/radio.d.mts +24 -0
  152. package/dist/components/form/radio/radio.mjs +51 -0
  153. package/dist/components/form/radio-card/index.d.mts +2 -0
  154. package/dist/components/form/radio-card/index.mjs +2 -0
  155. package/dist/components/form/radio-card/radio-card.d.mts +29 -0
  156. package/dist/components/form/radio-card/radio-card.mjs +74 -0
  157. package/dist/components/form/select/index.d.mts +2 -0
  158. package/dist/components/form/select/index.mjs +2 -0
  159. package/dist/components/form/select/select.d.mts +11 -0
  160. package/dist/components/form/select/select.mjs +33 -0
  161. package/dist/components/form/slider/index.d.mts +2 -0
  162. package/dist/components/form/slider/index.mjs +2 -0
  163. package/dist/components/form/slider/slider.d.mts +23 -0
  164. package/dist/components/form/slider/slider.mjs +50 -0
  165. package/dist/components/form/switch/index.d.mts +2 -0
  166. package/dist/components/form/switch/index.mjs +2 -0
  167. package/dist/components/form/switch/switch.d.mts +21 -0
  168. package/dist/components/form/switch/switch.mjs +50 -0
  169. package/dist/components/form/text-field/index.d.mts +2 -0
  170. package/dist/components/form/text-field/index.mjs +2 -0
  171. package/dist/components/form/text-field/text-field.d.mts +11 -0
  172. package/dist/components/form/text-field/text-field.mjs +19 -0
  173. package/dist/components/form/textarea/index.d.mts +2 -0
  174. package/dist/components/form/textarea/index.mjs +2 -0
  175. package/dist/components/form/textarea/textarea.d.mts +11 -0
  176. package/dist/components/form/textarea/textarea.mjs +38 -0
  177. package/dist/components/icons/base.d.mts +15 -0
  178. package/dist/components/icons/base.mjs +18 -0
  179. package/dist/components/icons/browsers.d.mts +9 -0
  180. package/dist/components/icons/browsers.mjs +891 -0
  181. package/dist/components/icons/color-scale.d.mts +6 -0
  182. package/dist/components/icons/color-scale.mjs +44 -0
  183. package/dist/components/icons/github-mark.d.mts +6 -0
  184. package/dist/components/icons/github-mark.mjs +19 -0
  185. package/dist/components/icons/index.d.mts +10 -0
  186. package/dist/components/icons/index.mjs +9 -0
  187. package/dist/components/icons/logo.d.mts +7 -0
  188. package/dist/components/icons/logo.mjs +29 -0
  189. package/dist/components/icons/lucide-deep.d.mts +9 -0
  190. package/dist/components/icons/lucide-imports.d.mts +65 -0
  191. package/dist/components/icons/lucide-imports.mjs +65 -0
  192. package/dist/components/icons/lucide.d.mts +69 -0
  193. package/dist/components/icons/lucide.mjs +256 -0
  194. package/dist/components/icons/qiita.d.mts +6 -0
  195. package/dist/components/icons/qiita.mjs +28 -0
  196. package/dist/components/icons/twitter.d.mts +6 -0
  197. package/dist/components/icons/twitter.mjs +20 -0
  198. package/dist/components/icons/vertical-writing.d.mts +6 -0
  199. package/dist/components/icons/vertical-writing.mjs +26 -0
  200. package/dist/components/index.d.mts +106 -0
  201. package/dist/components/index.mjs +57 -0
  202. package/dist/components/layout/_shared/gap.d.mts +11 -0
  203. package/dist/components/layout/_shared/gap.mjs +10 -0
  204. package/dist/components/layout/_shared/padding.d.mts +11 -0
  205. package/dist/components/layout/_shared/padding.mjs +10 -0
  206. package/dist/components/layout/grid/grid.d.mts +16 -0
  207. package/dist/components/layout/grid/grid.mjs +35 -0
  208. package/dist/components/layout/grid/index.d.mts +2 -0
  209. package/dist/components/layout/grid/index.mjs +2 -0
  210. package/dist/components/layout/scroll-linked/index.d.mts +2 -0
  211. package/dist/components/layout/scroll-linked/index.mjs +2 -0
  212. package/dist/components/layout/scroll-linked/scroll-linked.d.mts +14 -0
  213. package/dist/components/layout/scroll-linked/scroll-linked.mjs +59 -0
  214. package/dist/components/layout/separator/index.d.mts +2 -0
  215. package/dist/components/layout/separator/index.mjs +2 -0
  216. package/dist/components/layout/separator/separator.d.mts +9 -0
  217. package/dist/components/layout/separator/separator.mjs +14 -0
  218. package/dist/components/layout/stack/index.d.mts +2 -0
  219. package/dist/components/layout/stack/index.mjs +2 -0
  220. package/dist/components/layout/stack/stack.d.mts +15 -0
  221. package/dist/components/layout/stack/stack.mjs +24 -0
  222. package/dist/components/navigation/anchor/anchor.d.mts +20 -0
  223. package/dist/components/navigation/anchor/anchor.mjs +28 -0
  224. package/dist/components/navigation/anchor/index.d.mts +2 -0
  225. package/dist/components/navigation/anchor/index.mjs +2 -0
  226. package/dist/components/navigation/breadcrumb/breadcrumb.d.mts +19 -0
  227. package/dist/components/navigation/breadcrumb/breadcrumb.mjs +43 -0
  228. package/dist/components/navigation/breadcrumb/index.d.mts +14 -0
  229. package/dist/components/navigation/breadcrumb/index.mjs +10 -0
  230. package/dist/components/navigation/pagination/index.d.mts +2 -0
  231. package/dist/components/navigation/pagination/index.mjs +2 -0
  232. package/dist/components/navigation/pagination/pagination.d.mts +15 -0
  233. package/dist/components/navigation/pagination/pagination.mjs +74 -0
  234. package/dist/components/navigation/tabs/index.d.mts +2 -0
  235. package/dist/components/navigation/tabs/index.mjs +2 -0
  236. package/dist/components/navigation/tabs/tabs.d.mts +21 -0
  237. package/dist/components/navigation/tabs/tabs.mjs +130 -0
  238. package/dist/components/overlays/_internal/index.d.mts +4 -0
  239. package/dist/components/overlays/_internal/index.mjs +4 -0
  240. package/dist/components/overlays/_internal/modal-dialog-context.d.mts +14 -0
  241. package/dist/components/overlays/_internal/modal-dialog-context.mjs +13 -0
  242. package/dist/components/overlays/_internal/use-can-hover.d.mts +9 -0
  243. package/dist/components/overlays/_internal/use-can-hover.mjs +20 -0
  244. package/dist/components/overlays/_internal/use-hover-intent.d.mts +25 -0
  245. package/dist/components/overlays/_internal/use-hover-intent.mjs +56 -0
  246. package/dist/components/overlays/_internal/use-list-navigation.d.mts +36 -0
  247. package/dist/components/overlays/_internal/use-list-navigation.mjs +98 -0
  248. package/dist/components/overlays/dialog/dialog.d.mts +19 -0
  249. package/dist/components/overlays/dialog/dialog.mjs +87 -0
  250. package/dist/components/overlays/dialog/index.d.mts +2 -0
  251. package/dist/components/overlays/dialog/index.mjs +2 -0
  252. package/dist/components/overlays/drawer/drawer.d.mts +12 -0
  253. package/dist/components/overlays/drawer/drawer.mjs +60 -0
  254. package/dist/components/overlays/drawer/index.d.mts +2 -0
  255. package/dist/components/overlays/drawer/index.mjs +2 -0
  256. package/dist/components/overlays/dropdown-menu/dropdown-menu.d.mts +34 -0
  257. package/dist/components/overlays/dropdown-menu/dropdown-menu.mjs +85 -0
  258. package/dist/components/overlays/dropdown-menu/hooks.d.mts +24 -0
  259. package/dist/components/overlays/dropdown-menu/hooks.mjs +26 -0
  260. package/dist/components/overlays/dropdown-menu/index.d.mts +2 -0
  261. package/dist/components/overlays/dropdown-menu/index.mjs +2 -0
  262. package/dist/components/overlays/dropdown-menu/shared.d.mts +7 -0
  263. package/dist/components/overlays/dropdown-menu/shared.mjs +8 -0
  264. package/dist/components/overlays/dropdown-menu/sub-menu.d.mts +10 -0
  265. package/dist/components/overlays/dropdown-menu/sub-menu.mjs +143 -0
  266. package/dist/components/overlays/dropdown-menu/use-safe-triangle.d.mts +18 -0
  267. package/dist/components/overlays/dropdown-menu/use-safe-triangle.mjs +57 -0
  268. package/dist/components/overlays/list-box/hooks.d.mts +35 -0
  269. package/dist/components/overlays/list-box/hooks.mjs +43 -0
  270. package/dist/components/overlays/list-box/index.d.mts +2 -0
  271. package/dist/components/overlays/list-box/index.mjs +2 -0
  272. package/dist/components/overlays/list-box/list-box.d.mts +28 -0
  273. package/dist/components/overlays/list-box/list-box.mjs +150 -0
  274. package/dist/components/overlays/modal/index.d.mts +2 -0
  275. package/dist/components/overlays/modal/index.mjs +2 -0
  276. package/dist/components/overlays/modal/modal.d.mts +15 -0
  277. package/dist/components/overlays/modal/modal.mjs +72 -0
  278. package/dist/components/overlays/popover/anchor-positioning.d.mts +26 -0
  279. package/dist/components/overlays/popover/anchor-positioning.mjs +49 -0
  280. package/dist/components/overlays/popover/escape-stack.d.mts +7 -0
  281. package/dist/components/overlays/popover/escape-stack.mjs +34 -0
  282. package/dist/components/overlays/popover/hooks.d.mts +53 -0
  283. package/dist/components/overlays/popover/hooks.mjs +141 -0
  284. package/dist/components/overlays/popover/index.d.mts +3 -0
  285. package/dist/components/overlays/popover/index.mjs +3 -0
  286. package/dist/components/overlays/popover/popover.d.mts +25 -0
  287. package/dist/components/overlays/popover/popover.mjs +90 -0
  288. package/dist/components/overlays/tooltip/bridge.d.mts +5 -0
  289. package/dist/components/overlays/tooltip/bridge.mjs +29 -0
  290. package/dist/components/overlays/tooltip/index.d.mts +2 -0
  291. package/dist/components/overlays/tooltip/index.mjs +2 -0
  292. package/dist/components/overlays/tooltip/tooltip.d.mts +34 -0
  293. package/dist/components/overlays/tooltip/tooltip.mjs +87 -0
  294. package/dist/components/providers/index.d.mts +4 -0
  295. package/dist/components/providers/index.mjs +3 -0
  296. package/dist/components/providers/portal-root.d.mts +8 -0
  297. package/dist/components/providers/portal-root.mjs +12 -0
  298. package/dist/components/providers/ui-provider.d.mts +8 -0
  299. package/dist/components/providers/ui-provider.mjs +11 -0
  300. package/dist/helpers/chain.d.mts +5 -0
  301. package/dist/helpers/chain.mjs +29 -0
  302. package/dist/helpers/cn.d.mts +5 -0
  303. package/dist/helpers/cn.mjs +27 -0
  304. package/dist/helpers/create-safe-context.d.mts +6 -0
  305. package/dist/helpers/create-safe-context.mjs +30 -0
  306. package/dist/helpers/index.d.mts +6 -0
  307. package/dist/helpers/index.mjs +6 -0
  308. package/dist/helpers/merge-props.d.mts +6 -0
  309. package/dist/helpers/merge-props.mjs +56 -0
  310. package/dist/helpers/merge-refs.d.mts +5 -0
  311. package/dist/helpers/merge-refs.mjs +55 -0
  312. package/dist/hooks/breakpoint/index.d.mts +5 -0
  313. package/dist/hooks/breakpoint/index.mjs +24 -0
  314. package/dist/hooks/click-away/index.d.mts +5 -0
  315. package/dist/hooks/click-away/index.mjs +24 -0
  316. package/dist/hooks/client/index.d.mts +4 -0
  317. package/dist/hooks/client/index.mjs +6 -0
  318. package/dist/hooks/clipboard/index.d.mts +7 -0
  319. package/dist/hooks/clipboard/index.mjs +15 -0
  320. package/dist/hooks/controllable-state/index.d.mts +9 -0
  321. package/dist/hooks/controllable-state/index.mjs +21 -0
  322. package/dist/hooks/debounced-transition/index.d.mts +5 -0
  323. package/dist/hooks/debounced-transition/index.mjs +49 -0
  324. package/dist/hooks/deferred-debounce/index.d.mts +4 -0
  325. package/dist/hooks/deferred-debounce/index.mjs +9 -0
  326. package/dist/hooks/disclosure/index.d.mts +10 -0
  327. package/dist/hooks/disclosure/index.mjs +20 -0
  328. package/dist/hooks/focus-trap/index.d.mts +18 -0
  329. package/dist/hooks/focus-trap/index.mjs +51 -0
  330. package/dist/hooks/hash/index.d.mts +4 -0
  331. package/dist/hooks/hash/index.mjs +25 -0
  332. package/dist/hooks/hover/index.d.mts +12 -0
  333. package/dist/hooks/hover/index.mjs +19 -0
  334. package/dist/hooks/index.d.mts +25 -0
  335. package/dist/hooks/index.mjs +24 -0
  336. package/dist/hooks/intersection-observer/index.d.mts +3 -0
  337. package/dist/hooks/intersection-observer/index.mjs +3 -0
  338. package/dist/hooks/intersection-observer/use-in-view.d.mts +11 -0
  339. package/dist/hooks/intersection-observer/use-in-view.mjs +18 -0
  340. package/dist/hooks/intersection-observer/use-intersection-observer.d.mts +11 -0
  341. package/dist/hooks/intersection-observer/use-intersection-observer.mjs +33 -0
  342. package/dist/hooks/interval/index.d.mts +4 -0
  343. package/dist/hooks/interval/index.mjs +19 -0
  344. package/dist/hooks/local-storage/index.d.mts +4 -0
  345. package/dist/hooks/local-storage/index.mjs +46 -0
  346. package/dist/hooks/resize/index.d.mts +8 -0
  347. package/dist/hooks/resize/index.mjs +24 -0
  348. package/dist/hooks/scroll-direction/index.d.mts +13 -0
  349. package/dist/hooks/scroll-direction/index.mjs +67 -0
  350. package/dist/hooks/scroll-lock/index.d.mts +9 -0
  351. package/dist/hooks/scroll-lock/index.mjs +59 -0
  352. package/dist/hooks/session-storage/index.d.mts +4 -0
  353. package/dist/hooks/session-storage/index.mjs +46 -0
  354. package/dist/hooks/step/index.d.mts +15 -0
  355. package/dist/hooks/step/index.mjs +39 -0
  356. package/dist/hooks/timeout/index.d.mts +4 -0
  357. package/dist/hooks/timeout/index.mjs +19 -0
  358. package/dist/hooks/window-resize/index.d.mts +11 -0
  359. package/dist/hooks/window-resize/index.mjs +21 -0
  360. package/dist/hooks/window-size/index.d.mts +8 -0
  361. package/dist/hooks/window-size/index.mjs +31 -0
  362. package/dist/hooks/writing-mode/index.d.mts +6 -0
  363. package/dist/hooks/writing-mode/index.mjs +24 -0
  364. package/dist/i18n/context.d.mts +9 -0
  365. package/dist/i18n/context.mjs +19 -0
  366. package/dist/i18n/en.d.mts +5 -0
  367. package/dist/i18n/en.mjs +64 -0
  368. package/dist/i18n/index.d.mts +5 -0
  369. package/dist/i18n/index.mjs +4 -0
  370. package/dist/i18n/ja.d.mts +5 -0
  371. package/dist/i18n/ja.mjs +64 -0
  372. package/dist/i18n/messages.d.mts +84 -0
  373. package/dist/i18n/messages.mjs +1 -0
  374. package/dist/index.d.mts +94 -0
  375. package/dist/index.mjs +85 -0
  376. package/dist/integrations/_shared/openui-defs.d.mts +18 -0
  377. package/dist/integrations/_shared/openui-defs.mjs +162 -0
  378. package/dist/integrations/_shared/renderers.d.mts +71 -0
  379. package/dist/integrations/_shared/renderers.mjs +679 -0
  380. package/dist/integrations/_shared/schemas.d.mts +718 -0
  381. package/dist/integrations/_shared/schemas.mjs +545 -0
  382. package/dist/integrations/ai-sdk/index.d.mts +3 -0
  383. package/dist/integrations/ai-sdk/index.mjs +2 -0
  384. package/dist/integrations/ai-sdk/map-parts.d.mts +28 -0
  385. package/dist/integrations/ai-sdk/map-parts.mjs +32 -0
  386. package/dist/integrations/json-render/catalog.d.mts +838 -0
  387. package/dist/integrations/json-render/catalog.mjs +311 -0
  388. package/dist/integrations/json-render/registry.d.mts +29 -0
  389. package/dist/integrations/json-render/registry.mjs +159 -0
  390. package/dist/integrations/openui/form-views.d.mts +21 -0
  391. package/dist/integrations/openui/form-views.mjs +66 -0
  392. package/dist/integrations/openui/library.d.mts +151 -0
  393. package/dist/integrations/openui/library.mjs +69 -0
  394. package/dist/integrations/openui/prompt.d.mts +5 -0
  395. package/dist/integrations/openui/prompt.mjs +19 -0
  396. package/dist/internal/clamp.d.mts +4 -0
  397. package/dist/internal/clamp.mjs +15 -0
  398. package/dist/internal/to-precision.d.mts +4 -0
  399. package/dist/internal/to-precision.mjs +15 -0
  400. package/dist/styles/base.css +315 -0
  401. package/dist/styles/index.css +2677 -0
  402. package/dist/styles/tailwind.css +22 -0
  403. package/dist/styles/tokens.css +380 -0
  404. package/dist/styles/tokens.d.mts +2 -0
  405. package/dist/styles/tokens.generated.d.mts +840 -0
  406. package/dist/styles/tokens.generated.mjs +813 -0
  407. package/dist/styles/tokens.mjs +2 -0
  408. package/dist/styles/utilities.css +62 -0
  409. package/dist/types/index.d.mts +2 -0
  410. package/dist/types/index.mjs +1 -0
  411. package/dist/types/variables.d.mts +23 -0
  412. package/dist/types/variables.mjs +1 -0
  413. package/docs/GUIDE.md +324 -0
  414. package/docs/llms.txt +25 -0
  415. package/docs/props.generated.json +3519 -0
  416. package/docs/references/ai-chat.md +354 -0
  417. package/docs/references/color.md +121 -0
  418. package/docs/references/components.md +1466 -0
  419. package/docs/references/generative-ui.md +112 -0
  420. package/docs/references/helpers.md +120 -0
  421. package/docs/references/hooks.md +314 -0
  422. package/docs/references/interaction-design.md +95 -0
  423. package/docs/references/spatial-design.md +137 -0
  424. package/docs/references/typography.md +110 -0
  425. package/package.json +197 -0
@@ -0,0 +1,354 @@
1
+ # k8ordo UI AI チャットコンポーネント
2
+
3
+ AI チャット UI(会話ログ・メッセージ・入力欄・推論表示・ツール実行表示)を構築するコンポーネント群。ルートではなく専用サブパスからインポートする。
4
+
5
+ ## インポート方法
6
+
7
+ ```tsx
8
+ // 基本コンポーネント(追加の依存なし)
9
+ import {
10
+ Conversation,
11
+ Message,
12
+ PromptInput,
13
+ Reasoning,
14
+ Suggestion,
15
+ ToolInvocation,
16
+ } from '@k8ordo/ui/ai';
17
+
18
+ // ストリーミング対応 Markdown 描画(optional peer: streamdown)
19
+ import { Response } from '@k8ordo/ui/ai/response';
20
+
21
+ // AI SDK 連携(optional peer: ai)
22
+ import { mapMessageParts } from '@k8ordo/ui/ai-sdk';
23
+ ```
24
+
25
+ 型も `@k8ordo/ui/ai` から export される:
26
+
27
+ - `ChatStatus`: `'ready' | 'submitted' | 'streaming' | 'error'`(AI SDK の `status` と互換)
28
+ - `ToolState`: `'input-streaming' | 'input-available' | 'approval-requested' | 'approval-responded' | 'output-available' | 'output-error' | 'output-denied'`(AI SDK v7 のツール状態と 1:1)
29
+
30
+ ### optional peer のセットアップ
31
+
32
+ 使うサブパスの分だけインストールする。`@k8ordo/ui/ai` 本体はどちらも不要。
33
+
34
+ ```bash
35
+ # @k8ordo/ui/ai/response(Response)を使う場合
36
+ pnpm add streamdown
37
+ # @k8ordo/ui/ai-sdk(mapMessageParts)を使う場合
38
+ pnpm add ai
39
+ ```
40
+
41
+ `Response` を使う場合は streamdown のスタイルシートの読み込みと、Tailwind の `@source` 設定も必要。streamdown のスタイルはビルド済み `styles.css` には含まれないため、`Response` だけは Tailwind CSS 4 のビルド(`@k8ordo/ui/tailwind.css` エントリ)が前提になる:
42
+
43
+ ```tsx
44
+ import 'streamdown/styles.css';
45
+ ```
46
+
47
+ ```css
48
+ /* アプリの CSS エントリに追加(パスは CSS ファイルから node_modules への相対) */
49
+ @source '../node_modules/streamdown/dist/*.js';
50
+ ```
51
+
52
+ なお本リファレンスの例で使う `useChat` は AI SDK の React バインディング(`pnpm add @ai-sdk/react`)から import する。
53
+
54
+ 以下に出てくる `label` / `sendLabel` などの「デフォルト」は文言辞書の既定値(日本語)。`<UIProvider messages={en}>` で辞書ごと切り替えられる([i18n](components.md))。個別の prop を渡した場合はそちらが辞書より優先される。
55
+
56
+ ## 全体像
57
+
58
+ `Conversation`(会話ログ)+ `Message`(吹き出し)+ `PromptInput`(入力欄)が骨組み。`Response` / `Reasoning` / `ToolInvocation` は後から足せる。
59
+
60
+ ```tsx
61
+ 'use client';
62
+ import { Avatar, AssistantIcon } from '@k8ordo/ui';
63
+ import { Conversation, Message, PromptInput } from '@k8ordo/ui/ai';
64
+ import { useChat } from '@ai-sdk/react';
65
+ import type { UIMessage } from 'ai';
66
+
67
+ const textOf = (m: UIMessage) =>
68
+ m.parts.map((p) => (p.type === 'text' ? p.text : '')).join('');
69
+
70
+ export function Chat() {
71
+ const { messages, sendMessage, status, stop } = useChat();
72
+
73
+ return (
74
+ <div className="flex h-full flex-col gap-3">
75
+ <Conversation.Root>
76
+ <Conversation.Messages isStreaming={status === 'streaming'}>
77
+ {messages.map((m) => (
78
+ <Message.Root
79
+ from={m.role === 'user' ? 'user' : 'assistant'}
80
+ key={m.id}
81
+ >
82
+ {m.role !== 'user' && (
83
+ <Avatar
84
+ color="primary"
85
+ icon={<AssistantIcon />}
86
+ name="AI"
87
+ size="sm"
88
+ />
89
+ )}
90
+ <Message.Content>{textOf(m)}</Message.Content>
91
+ </Message.Root>
92
+ ))}
93
+ </Conversation.Messages>
94
+ <Conversation.ScrollButton />
95
+ </Conversation.Root>
96
+
97
+ <PromptInput.Root
98
+ onStop={stop}
99
+ onSubmit={(text) => sendMessage({ text })}
100
+ status={status}
101
+ >
102
+ <PromptInput.Textarea placeholder="メッセージを入力" />
103
+ <PromptInput.Submit />
104
+ </PromptInput.Root>
105
+ </div>
106
+ );
107
+ }
108
+ ```
109
+
110
+ ## Conversation
111
+
112
+ 会話ログのスクロール領域。Compound component パターン。最下部に張り付き、新しいメッセージで自動スクロールする。最下部から離れると `ScrollButton` が現れる。
113
+
114
+ ```tsx
115
+ import { Conversation } from '@k8ordo/ui/ai';
116
+
117
+ <Conversation.Root>
118
+ <Conversation.Messages isStreaming={isStreaming}>
119
+ {/* Message.Root ... */}
120
+ </Conversation.Messages>
121
+ <Conversation.ScrollButton />
122
+ </Conversation.Root>;
123
+ ```
124
+
125
+ Props (Conversation.Messages):
126
+
127
+ - `label`: string(デフォルト: `'チャット'`、aria-label として使用)
128
+ - `isStreaming`: boolean(`aria-busy` に反映)
129
+
130
+ Props (Conversation.ScrollButton):
131
+
132
+ - `label`: string(デフォルト: `'最新のメッセージへ移動'`)
133
+
134
+ ## Message
135
+
136
+ メッセージ 1 件。`from="user"` は右寄せの吹き出し、`from="assistant"` は地の文として描画される。アバターなどは `Message.Root` の子として自由に並べられる。
137
+
138
+ ```tsx
139
+ import { Message } from '@k8ordo/ui/ai';
140
+
141
+ <Message.Root from="user">
142
+ <Message.Content>こんにちは</Message.Content>
143
+ </Message.Root>
144
+
145
+ <Message.Root from="assistant">
146
+ <Message.Content isStreaming>生成中の本文…</Message.Content>
147
+ </Message.Root>
148
+ ```
149
+
150
+ Props (Message.Root):
151
+
152
+ - `from`: `'user'` | `'assistant'`(必須)
153
+
154
+ Props (Message.Content):
155
+
156
+ - `isStreaming`: boolean(true でストリーミングカーソルを表示)
157
+
158
+ ## PromptInput
159
+
160
+ 送信フォーム。Enter で送信、Shift+Enter で改行。IME 変換確定の Enter では送信しない。`status` が `'submitted'` / `'streaming'` の間は `Submit` が停止ボタンに切り替わる。本文は trim され、空文字は送信されない。
161
+
162
+ ```tsx
163
+ import { PromptInput } from '@k8ordo/ui/ai';
164
+
165
+ <PromptInput.Root
166
+ status={status}
167
+ onSubmit={(message) => send(message)}
168
+ onStop={stop}
169
+ >
170
+ <PromptInput.Textarea placeholder="メッセージを入力" />
171
+ <PromptInput.Submit />
172
+ </PromptInput.Root>;
173
+ ```
174
+
175
+ Props (PromptInput.Root):
176
+
177
+ - `status`: ChatStatus(デフォルト: `'ready'`)
178
+ - `value` / `defaultValue` / `onChange`: controlled / uncontrolled 両対応(`onChange` は `(value: string) => void`)
179
+ - `onSubmit`: `(message: string) => void`(trim 済みの本文)
180
+ - `onStop`: `() => void`(送信中に停止ボタンを押したとき)
181
+
182
+ Props (PromptInput.Textarea):
183
+
184
+ - `placeholder`: string ほか textarea 属性
185
+
186
+ Props (PromptInput.Submit):
187
+
188
+ - `sendLabel`: string(デフォルト: `'送信'`)
189
+ - `stopLabel`: string(デフォルト: `'停止'`)
190
+
191
+ ## Reasoning
192
+
193
+ 推論(思考過程)の折りたたみ表示。ストリーミング中はラベルが「思考中…」になる。
194
+
195
+ ```tsx
196
+ import { Reasoning } from '@k8ordo/ui/ai';
197
+
198
+ <Reasoning isStreaming={isThinking}>{reasoningText}</Reasoning>;
199
+ ```
200
+
201
+ Props:
202
+
203
+ - `isStreaming`: boolean
204
+ - `isOpen` / `defaultOpen` / `onChange`: 開閉の controlled / uncontrolled 両対応(`onChange` は `(isOpen: boolean) => void`)
205
+
206
+ ## Response
207
+
208
+ ストリーミング対応の Markdown レンダラ。未クローズのコードブロックなど途中の Markdown も破綻なく描画する。optional peer の `streamdown` が必要([セットアップ](#optional-peer-のセットアップ)参照)。
209
+
210
+ ```tsx
211
+ import { Response } from '@k8ordo/ui/ai/response';
212
+ import 'streamdown/styles.css';
213
+
214
+ <Message.Content>
215
+ <Response isStreaming={isStreaming}>{markdown}</Response>
216
+ </Message.Content>;
217
+ ```
218
+
219
+ Props:
220
+
221
+ - `children`: string(Markdown 文字列、必須)
222
+ - `isStreaming`: boolean
223
+ - 上記以外の streamdown の props(`translations` / `controls` / `linkSafety` / `plugins` / `components` / `urlTransform` / `dir` など)はそのまま透過する。`className` と `mode` はライブラリが握る(`mode` は `isStreaming` から決まる)
224
+
225
+ 文言は i18n 辞書から引くので、既定では「コードをコピー」「表をダウンロード」などが日本語で出る。個別に変えたいときは `translations` を渡す(prop > 辞書 > streamdown 既定)。
226
+
227
+ `linkSafety` はライブラリ側で**無効を既定にしている**。streamdown の既定(有効)ではリンクが `<a>` ではなく `<button>` で描画され、⌘クリック・中クリック・リンクアドレスのコピー・支援技術の link ロールが失われるため。確認ダイアログを挟みたい場合は明示的に有効化する:
228
+
229
+ ```tsx
230
+ <Response linkSafety={{ enabled: true }}>{markdown}</Response>
231
+ ```
232
+
233
+ なお `javascript:` のような危険なスキームは `linkSafety` とは無関係に rehype-harden が無効化するので、既定のままでも生きたリンクにはならない。
234
+
235
+ ## Suggestion
236
+
237
+ 候補プロンプトのチップ表示。クリックで `onSelect` に `value` が渡る。
238
+
239
+ ```tsx
240
+ import { Suggestion } from '@k8ordo/ui/ai';
241
+
242
+ <Suggestion.List>
243
+ <Suggestion.Item onSelect={send} value="IME 対応について教えて" />
244
+ <Suggestion.Item onSelect={send} value="streaming">
245
+ ストリーミング表示は?
246
+ </Suggestion.Item>
247
+ </Suggestion.List>;
248
+ ```
249
+
250
+ Props (Suggestion.List):
251
+
252
+ - `label`: string(デフォルト: `'候補'`、aria-label として使用)
253
+
254
+ Props (Suggestion.Item):
255
+
256
+ - `value`: string(必須。children 省略時は表示テキストも兼ねる)
257
+ - `onSelect`: `(value: string) => void`
258
+
259
+ ## ToolInvocation
260
+
261
+ ツール呼び出しの折りたたみ表示。`state` に応じてスピナー / 成功 / エラー / 拒否のアイコンが切り替わる(承認待ち・承認応答・入力中は進行中としてスピナー)。
262
+
263
+ ```tsx
264
+ import { ToolInvocation } from '@k8ordo/ui/ai';
265
+
266
+ <ToolInvocation
267
+ name="search_web"
268
+ state="output-available"
269
+ input={{ query: 'k8ordo UI' }}
270
+ output="検索結果…"
271
+ />;
272
+ ```
273
+
274
+ Props:
275
+
276
+ - `name`: string(必須、ツール名)
277
+ - `state`: ToolState(必須)
278
+ - `input`: unknown(文字列以外は JSON 表示)
279
+ - `output`: ReactNode(文字列は `pre` 表示、要素はそのまま描画)
280
+ - `errorText`: string(`state="output-error"` 時の表示。省略時は既定文言)
281
+ - `deniedReason`: string(`state="output-denied"` 時の表示。省略時は既定文言)
282
+ - `isOpen` / `defaultOpen` / `onChange`: 開閉の controlled / uncontrolled 両対応
283
+
284
+ ## AI SDK 連携(mapMessageParts)
285
+
286
+ `@k8ordo/ui/ai-sdk` の `mapMessageParts` は、AI SDK の `UIMessage.parts` を描画しやすい `MappedPart[]` に変換する。React 非依存で、optional peer の `ai`(v7)が必要。
287
+
288
+ ```ts
289
+ type MappedPart =
290
+ | { kind: 'text'; text: string }
291
+ | { kind: 'reasoning'; text: string }
292
+ | {
293
+ kind: 'tool';
294
+ name: string;
295
+ toolCallId: string;
296
+ state: ToolState;
297
+ input?: unknown;
298
+ output?: unknown;
299
+ errorText?: string;
300
+ deniedReason?: string;
301
+ };
302
+ ```
303
+
304
+ 利用側が `kind` で分岐して `Response` / `Reasoning` / `ToolInvocation` を描画する:
305
+
306
+ ```tsx
307
+ import { mapMessageParts } from '@k8ordo/ui/ai-sdk';
308
+ import { Reasoning, ToolInvocation } from '@k8ordo/ui/ai';
309
+ import { Response } from '@k8ordo/ui/ai/response';
310
+
311
+ <Message.Content>
312
+ {mapMessageParts(message).map((part, i) => {
313
+ if (part.kind === 'reasoning')
314
+ return <Reasoning key={i}>{part.text}</Reasoning>;
315
+ if (part.kind === 'tool') {
316
+ // output は unknown なので、ReactNode に変換してから渡す
317
+ return (
318
+ <ToolInvocation
319
+ key={part.toolCallId}
320
+ name={part.name}
321
+ state={part.state}
322
+ input={part.input}
323
+ output={
324
+ typeof part.output === 'string'
325
+ ? part.output
326
+ : JSON.stringify(part.output, null, 2)
327
+ }
328
+ errorText={part.errorText}
329
+ deniedReason={part.deniedReason}
330
+ />
331
+ );
332
+ }
333
+ return <Response key={i}>{part.text}</Response>;
334
+ })}
335
+ </Message.Content>;
336
+ ```
337
+
338
+ `ChatStatus` / `ToolState` 型は `@k8ordo/ui/ai-sdk` からも re-export される。
339
+
340
+ ## 生成 UI との組み合わせ
341
+
342
+ LLM がツール結果として返した UI spec を、チャットの吹き出し内で描画できる。詳細は [生成 UI リファレンス](generative-ui.md) を参照。
343
+
344
+ ```tsx
345
+ 'use client';
346
+ import { Message } from '@k8ordo/ui/ai';
347
+ import { JsonRenderUI } from '@k8ordo/ui/json-render/registry';
348
+
349
+ <Message.Root from="assistant">
350
+ <Message.Content>
351
+ <JsonRenderUI spec={spec} />
352
+ </Message.Content>
353
+ </Message.Root>;
354
+ ```
@@ -0,0 +1,121 @@
1
+ # カラーシステム
2
+
3
+ k8ordo UI のカラーは OKLCH 色空間で定義され、穏やかなトーンでUIに出る。
4
+
5
+ ## 設計思想
6
+
7
+ - **OKLCH パレット**: 全色を OKLCH で定義。明度(L)を全色相で統一し、同じステップ番号同士のコントラストが揃う
8
+ - **鮮やかなパレット、穏やかなトークン**: パレット自体は鮮やかに保ち、セマンティックトークンで抑えたトーンにマッピング
9
+ - **WCAG AAA 準拠**: fg/bg の組み合わせで 7:1 以上のコントラスト比を確保
10
+ - **60-30-10 ルール**: 60% ニュートラル(グレー系)、30% サポート(bg-subtle 等)、10% アクセント(primary)
11
+ - Primary に Teal(H:180)、Secondary に Cyan(H:210)を使用
12
+ - ダークモードは「ライトモードの反転」ではなく、独立したトーンで設計
13
+
14
+ ## OKLCH パレット設計
15
+
16
+ 明度スケール(全色相で共通):
17
+
18
+ | Step | L | 用途 |
19
+ | ---- | ----- | -------------------------- |
20
+ | 50 | 0.975 | 最も薄い背景 |
21
+ | 100 | 0.945 | 薄い背景 |
22
+ | 200 | 0.900 | 控えめな背景 |
23
+ | 300 | 0.840 | サポートカラー |
24
+ | 400 | 0.750 | 中間トーン |
25
+ | 500 | 0.660 | コアカラー |
26
+ | 600 | 0.575 | やや暗い |
27
+ | 700 | 0.490 | 暗いトーン |
28
+ | 800 | 0.410 | テキスト用(AAA on white) |
29
+ | 900 | 0.370 | 最も暗い |
30
+
31
+ Chroma は色相ごとに最適化(gamut 内で最大化)。
32
+
33
+ ## セマンティックカラー(前景)
34
+
35
+ | Tailwind クラス | Light | Dark | 用途 |
36
+ | ----------------- | ---------- | ---------- | ---------------- |
37
+ | `text-fg-base` | gray-900 | gray-50 | 基本テキスト |
38
+ | `text-fg-subtle` | gray-400 | gray-500 | プレースホルダー |
39
+ | `text-fg-mute` | gray-700 | gray-300 | 補足テキスト |
40
+ | `text-fg-inverse` | gray-50 | gray-900 | 反転テキスト |
41
+ | `text-fg-info` | blue-800 | blue-200 | 情報 |
42
+ | `text-fg-success` | green-800 | green-200 | 成功 |
43
+ | `text-fg-warning` | yellow-800 | yellow-200 | 警告 |
44
+ | `text-fg-error` | red-800 | red-200 | エラー |
45
+
46
+ ## セマンティックカラー(背景)
47
+
48
+ | Tailwind クラス | Light | Dark | 用途 |
49
+ | ----------------- | ---------- | ---------- | ---------------- |
50
+ | `bg-bg-base` | white | gray-900 | カード背景 |
51
+ | `bg-bg-subtle` | gray-100 | gray-800 | ページ背景 |
52
+ | `bg-bg-mute` | gray-200 | gray-700 | ホバー状態用 |
53
+ | `bg-bg-emphasize` | gray-300 | gray-600 | アクティブ状態用 |
54
+ | `bg-bg-inverse` | gray-900 | white | 反転背景 |
55
+ | `bg-bg-info` | blue-100 | blue-900 | 情報背景 |
56
+ | `bg-bg-success` | green-100 | green-900 | 成功背景 |
57
+ | `bg-bg-warning` | yellow-100 | yellow-900 | 警告背景 |
58
+ | `bg-bg-error` | red-100 | red-900 | エラー背景 |
59
+
60
+ ## セマンティックカラー(ボーダー)
61
+
62
+ | Tailwind クラス | Light | Dark | 用途 |
63
+ | ------------------------- | ---------- | ---------- | -------------- |
64
+ | `border-border-base` | gray-400 | gray-600 | 標準ボーダー |
65
+ | `border-border-subtle` | gray-100 | gray-900 | 薄いボーダー |
66
+ | `border-border-mute` | gray-200 | gray-800 | 控えめボーダー |
67
+ | `border-border-emphasize` | gray-500 | gray-500 | 強調ボーダー |
68
+ | `border-border-inverse` | gray-700 | gray-300 | 反転ボーダー |
69
+ | `border-border-info` | blue-500 | blue-500 | 情報ボーダー |
70
+ | `border-border-success` | green-500 | green-500 | 成功ボーダー |
71
+ | `border-border-warning` | yellow-500 | yellow-500 | 警告ボーダー |
72
+ | `border-border-error` | red-500 | red-500 | エラーボーダー |
73
+
74
+ ## ブランドカラー(Primary: Teal H:180)
75
+
76
+ | Tailwind クラス | Light | Dark | 用途 |
77
+ | ------------------------- | -------- | -------- | ------------------- |
78
+ | `text-primary-fg` | teal-800 | teal-100 | Primary テキスト |
79
+ | `bg-primary-bg` | teal-200 | teal-800 | Primary 背景 |
80
+ | `bg-primary-bg-subtle` | teal-50 | teal-900 | 薄い Primary 背景 |
81
+ | `bg-primary-bg-mute` | teal-100 | teal-800 | 控えめ Primary 背景 |
82
+ | `bg-primary-bg-emphasize` | teal-200 | teal-700 | 強調 Primary 背景 |
83
+ | `border-primary-border` | teal-500 | teal-500 | Primary ボーダー |
84
+
85
+ ## ブランドカラー(Secondary: Cyan H:210)
86
+
87
+ | Tailwind クラス | Light | Dark | 用途 |
88
+ | ------------------------- | -------- | -------- | ------------------- |
89
+ | `text-secondary-fg` | cyan-700 | cyan-300 | Secondary テキスト |
90
+ | `bg-secondary-bg` | cyan-300 | cyan-700 | Secondary 背景 |
91
+ | `bg-secondary-bg-subtle` | cyan-100 | cyan-900 | 薄い Secondary 背景 |
92
+ | `border-secondary-border` | cyan-600 | cyan-600 | Secondary ボーダー |
93
+
94
+ ## 使い方の例
95
+
96
+ ```tsx
97
+ // ページ背景にカードを浮かせる
98
+ <div className="bg-bg-subtle min-h-screen">
99
+ <Card appearance="shadow">
100
+ <div className="p-8">
101
+ <h2 className="text-fg-base font-bold">タイトル</h2>
102
+ <p className="text-fg-mute mt-2">補足テキスト</p>
103
+ <span className="text-primary-fg">アクセントテキスト</span>
104
+ </div>
105
+ </Card>
106
+ </div>
107
+
108
+ // ホバー状態
109
+ <button className="bg-bg-base hover:bg-bg-mute transition-colors">
110
+ ボタン
111
+ </button>
112
+ ```
113
+
114
+ ## やってはいけないこと
115
+
116
+ - グラデーション背景(`bg-gradient-to-*`)
117
+ - 彩度の高い色の広範囲使用(アクセントは小面積で)
118
+ - 透明度による状態表現(`/90`, `/80` など)— 専用のセマンティックカラーを使う
119
+ - ホバーに `bg-primary-bg` を使う — `bg-bg-mute` を優先
120
+ - 生のパレット色(`bg-teal-500`)を直接使う — セマンティックトークンを使う
121
+ - ダークモードで単純にカラーを反転させる