@mindlogic-ai/logician-ui 5.0.0-alpha.3 → 5.0.0-alpha.30

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 (610) hide show
  1. package/MIGRATION-5.0.md +40 -1
  2. package/README.md +1 -0
  3. package/USAGE.md +20 -0
  4. package/dist/components/Avatar/Avatar.d.ts +68 -11
  5. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  6. package/dist/components/Avatar/Avatar.js +41 -5
  7. package/dist/components/Avatar/Avatar.js.map +1 -1
  8. package/dist/components/Avatar/Avatar.mjs +40 -5
  9. package/dist/components/Avatar/Avatar.mjs.map +1 -1
  10. package/dist/components/Avatar/index.d.ts +2 -2
  11. package/dist/components/Avatar/index.d.ts.map +1 -1
  12. package/dist/components/Banner/Banner.types.d.ts +24 -1
  13. package/dist/components/Banner/Banner.types.d.ts.map +1 -1
  14. package/dist/components/BottomSheet/BottomSheet.styles.d.ts +2 -2
  15. package/dist/components/Button/Button.d.ts.map +1 -1
  16. package/dist/components/Button/Button.js +31 -3
  17. package/dist/components/Button/Button.js.map +1 -1
  18. package/dist/components/Button/Button.mjs +31 -3
  19. package/dist/components/Button/Button.mjs.map +1 -1
  20. package/dist/components/Button/Button.types.d.ts +38 -1
  21. package/dist/components/Button/Button.types.d.ts.map +1 -1
  22. package/dist/components/Card/Card.types.d.ts +12 -0
  23. package/dist/components/Card/Card.types.d.ts.map +1 -1
  24. package/dist/components/Code/shikiAdapter.d.ts +3 -1
  25. package/dist/components/Code/shikiAdapter.d.ts.map +1 -1
  26. package/dist/components/Code/shikiAdapter.js +29 -8
  27. package/dist/components/Code/shikiAdapter.js.map +1 -1
  28. package/dist/components/Code/shikiAdapter.mjs +29 -8
  29. package/dist/components/Code/shikiAdapter.mjs.map +1 -1
  30. package/dist/components/CodeTabs/CodeTabs.styles.d.ts +6 -5
  31. package/dist/components/CodeTabs/CodeTabs.styles.d.ts.map +1 -1
  32. package/dist/components/CodeTabs/CodeTabs.styles.js +6 -5
  33. package/dist/components/CodeTabs/CodeTabs.styles.js.map +1 -1
  34. package/dist/components/CodeTabs/CodeTabs.styles.mjs +6 -5
  35. package/dist/components/CodeTabs/CodeTabs.styles.mjs.map +1 -1
  36. package/dist/components/ColorMode/ColorModeToggle.d.ts +7 -2
  37. package/dist/components/ColorMode/ColorModeToggle.d.ts.map +1 -1
  38. package/dist/components/ColorMode/ColorModeToggle.js +8 -3
  39. package/dist/components/ColorMode/ColorModeToggle.js.map +1 -1
  40. package/dist/components/ColorMode/ColorModeToggle.mjs +8 -3
  41. package/dist/components/ColorMode/ColorModeToggle.mjs.map +1 -1
  42. package/dist/components/Confetti/Confetti.types.d.ts +5 -1
  43. package/dist/components/Confetti/Confetti.types.d.ts.map +1 -1
  44. package/dist/components/Confetti/confettiColors.d.ts +5 -5
  45. package/dist/components/Confetti/confettiColors.js +5 -5
  46. package/dist/components/Confetti/confettiColors.mjs +5 -5
  47. package/dist/components/DatePicker/DatePicker.types.d.ts +12 -0
  48. package/dist/components/DatePicker/DatePicker.types.d.ts.map +1 -0
  49. package/dist/components/DatePicker/RangeDatePicker.d.ts +2 -1
  50. package/dist/components/DatePicker/RangeDatePicker.d.ts.map +1 -1
  51. package/dist/components/DatePicker/RangeDatePicker.js +4 -2
  52. package/dist/components/DatePicker/RangeDatePicker.js.map +1 -1
  53. package/dist/components/DatePicker/RangeDatePicker.mjs +4 -2
  54. package/dist/components/DatePicker/RangeDatePicker.mjs.map +1 -1
  55. package/dist/components/DatePicker/SingleDatePicker.d.ts +2 -1
  56. package/dist/components/DatePicker/SingleDatePicker.d.ts.map +1 -1
  57. package/dist/components/DatePicker/SingleDatePicker.js +4 -2
  58. package/dist/components/DatePicker/SingleDatePicker.js.map +1 -1
  59. package/dist/components/DatePicker/SingleDatePicker.mjs +4 -2
  60. package/dist/components/DatePicker/SingleDatePicker.mjs.map +1 -1
  61. package/dist/components/DatePicker/index.d.ts +1 -0
  62. package/dist/components/DatePicker/index.d.ts.map +1 -1
  63. package/dist/components/ErrorFallback/ErrorFallback.types.d.ts +6 -0
  64. package/dist/components/ErrorFallback/ErrorFallback.types.d.ts.map +1 -1
  65. package/dist/components/ExpandableText/ExpandableText.d.ts.map +1 -1
  66. package/dist/components/ExpandableText/ExpandableText.js +1 -1
  67. package/dist/components/ExpandableText/ExpandableText.js.map +1 -1
  68. package/dist/components/ExpandableText/ExpandableText.mjs +1 -1
  69. package/dist/components/ExpandableText/ExpandableText.mjs.map +1 -1
  70. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts +1 -1
  71. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts.map +1 -1
  72. package/dist/components/Form/FormModalFooter/FormModalFooter.js +2 -2
  73. package/dist/components/Form/FormModalFooter/FormModalFooter.js.map +1 -1
  74. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs +2 -2
  75. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs.map +1 -1
  76. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts +11 -1
  77. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts.map +1 -1
  78. package/dist/components/Form/FormSection/CollapsibleFormSection.js +1 -0
  79. package/dist/components/Form/FormSection/CollapsibleFormSection.js.map +1 -1
  80. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs +1 -0
  81. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs.map +1 -1
  82. package/dist/components/Input/Input.d.ts.map +1 -1
  83. package/dist/components/Input/Input.js +4 -0
  84. package/dist/components/Input/Input.js.map +1 -1
  85. package/dist/components/Input/Input.mjs +4 -0
  86. package/dist/components/Input/Input.mjs.map +1 -1
  87. package/dist/components/LineGraph/LineGraph.d.ts.map +1 -1
  88. package/dist/components/LineGraph/LineGraph.js +4 -5
  89. package/dist/components/LineGraph/LineGraph.js.map +1 -1
  90. package/dist/components/LineGraph/LineGraph.mjs +5 -6
  91. package/dist/components/LineGraph/LineGraph.mjs.map +1 -1
  92. package/dist/components/LineGraph/LineGraph.types.d.ts +12 -2
  93. package/dist/components/LineGraph/LineGraph.types.d.ts.map +1 -1
  94. package/dist/components/LineGraph/seriesColors.d.ts +12 -8
  95. package/dist/components/LineGraph/seriesColors.d.ts.map +1 -1
  96. package/dist/components/LineGraph/seriesColors.js +8 -7
  97. package/dist/components/LineGraph/seriesColors.js.map +1 -1
  98. package/dist/components/LineGraph/seriesColors.mjs +8 -7
  99. package/dist/components/LineGraph/seriesColors.mjs.map +1 -1
  100. package/dist/components/Masonry/Masonry.types.d.ts +8 -3
  101. package/dist/components/Masonry/Masonry.types.d.ts.map +1 -1
  102. package/dist/components/Menu/MenuItem.types.d.ts +8 -0
  103. package/dist/components/Menu/MenuItem.types.d.ts.map +1 -1
  104. package/dist/components/Modal/ModalCloseButton.d.ts +1 -1
  105. package/dist/components/Modal/ModalCloseButton.js +1 -1
  106. package/dist/components/Modal/ModalCloseButton.mjs +1 -1
  107. package/dist/components/MonthPicker/MonthPicker.d.ts.map +1 -1
  108. package/dist/components/MonthPicker/MonthPicker.js +3 -2
  109. package/dist/components/MonthPicker/MonthPicker.js.map +1 -1
  110. package/dist/components/MonthPicker/MonthPicker.mjs +3 -2
  111. package/dist/components/MonthPicker/MonthPicker.mjs.map +1 -1
  112. package/dist/components/MonthPicker/MonthPicker.types.d.ts +7 -1
  113. package/dist/components/MonthPicker/MonthPicker.types.d.ts.map +1 -1
  114. package/dist/components/NavList/NavList.d.ts +35 -0
  115. package/dist/components/NavList/NavList.d.ts.map +1 -0
  116. package/dist/components/NavList/NavList.js +113 -0
  117. package/dist/components/NavList/NavList.js.map +1 -0
  118. package/dist/components/NavList/NavList.mjs +111 -0
  119. package/dist/components/NavList/NavList.mjs.map +1 -0
  120. package/dist/components/NavList/NavList.styles.d.ts +90 -0
  121. package/dist/components/NavList/NavList.styles.d.ts.map +1 -0
  122. package/dist/components/NavList/NavList.styles.js +104 -0
  123. package/dist/components/NavList/NavList.styles.js.map +1 -0
  124. package/dist/components/NavList/NavList.styles.mjs +97 -0
  125. package/dist/components/NavList/NavList.styles.mjs.map +1 -0
  126. package/dist/components/NavList/NavList.translations.json.js +19 -0
  127. package/dist/components/NavList/NavList.translations.json.js.map +1 -0
  128. package/dist/components/NavList/NavList.translations.json.mjs +14 -0
  129. package/dist/components/NavList/NavList.translations.json.mjs.map +1 -0
  130. package/dist/components/NavList/NavList.types.d.ts +140 -0
  131. package/dist/components/NavList/NavList.types.d.ts.map +1 -0
  132. package/dist/components/NavList/NavListContext.d.ts +30 -0
  133. package/dist/components/NavList/NavListContext.d.ts.map +1 -0
  134. package/dist/components/NavList/NavListContext.js +16 -0
  135. package/dist/components/NavList/NavListContext.js.map +1 -0
  136. package/dist/components/NavList/NavListContext.mjs +13 -0
  137. package/dist/components/NavList/NavListContext.mjs.map +1 -0
  138. package/dist/components/NavList/NavListGroup.d.ts +31 -0
  139. package/dist/components/NavList/NavListGroup.d.ts.map +1 -0
  140. package/dist/components/NavList/NavListGroup.js +115 -0
  141. package/dist/components/NavList/NavListGroup.js.map +1 -0
  142. package/dist/components/NavList/NavListGroup.mjs +113 -0
  143. package/dist/components/NavList/NavListGroup.mjs.map +1 -0
  144. package/dist/components/NavList/NavListItem.d.ts +16 -0
  145. package/dist/components/NavList/NavListItem.d.ts.map +1 -0
  146. package/dist/components/NavList/NavListItem.js +284 -0
  147. package/dist/components/NavList/NavListItem.js.map +1 -0
  148. package/dist/components/NavList/NavListItem.mjs +282 -0
  149. package/dist/components/NavList/NavListItem.mjs.map +1 -0
  150. package/dist/components/NavList/NavListSkeleton.d.ts +17 -0
  151. package/dist/components/NavList/NavListSkeleton.d.ts.map +1 -0
  152. package/dist/components/NavList/NavListSkeleton.js +33 -0
  153. package/dist/components/NavList/NavListSkeleton.js.map +1 -0
  154. package/dist/components/NavList/NavListSkeleton.mjs +31 -0
  155. package/dist/components/NavList/NavListSkeleton.mjs.map +1 -0
  156. package/dist/components/NavList/index.d.ts +7 -0
  157. package/dist/components/NavList/index.d.ts.map +1 -0
  158. package/dist/components/Pagination/Pagination.d.ts +11 -10
  159. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  160. package/dist/components/Pagination/Pagination.js +11 -10
  161. package/dist/components/Pagination/Pagination.js.map +1 -1
  162. package/dist/components/Pagination/Pagination.mjs +11 -10
  163. package/dist/components/Pagination/Pagination.mjs.map +1 -1
  164. package/dist/components/ProgressBar/ProgressBar.types.d.ts +9 -0
  165. package/dist/components/ProgressBar/ProgressBar.types.d.ts.map +1 -1
  166. package/dist/components/RadialProgress/RadialProgress.types.d.ts +21 -1
  167. package/dist/components/RadialProgress/RadialProgress.types.d.ts.map +1 -1
  168. package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts +8 -0
  169. package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts.map +1 -1
  170. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  171. package/dist/components/SegmentedControl/SegmentedControl.js +34 -33
  172. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  173. package/dist/components/SegmentedControl/SegmentedControl.mjs +35 -34
  174. package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  175. package/dist/components/SegmentedControl/SegmentedControl.styles.d.ts +24 -0
  176. package/dist/components/SegmentedControl/SegmentedControl.styles.d.ts.map +1 -1
  177. package/dist/components/SegmentedControl/SegmentedControl.styles.js +30 -0
  178. package/dist/components/SegmentedControl/SegmentedControl.styles.js.map +1 -1
  179. package/dist/components/SegmentedControl/SegmentedControl.styles.mjs +29 -1
  180. package/dist/components/SegmentedControl/SegmentedControl.styles.mjs.map +1 -1
  181. package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts +2 -0
  182. package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts.map +1 -1
  183. package/dist/components/Select/Combobox.d.ts +1 -1
  184. package/dist/components/Select/Combobox.d.ts.map +1 -1
  185. package/dist/components/Select/Combobox.js +9 -2
  186. package/dist/components/Select/Combobox.js.map +1 -1
  187. package/dist/components/Select/Combobox.mjs +10 -3
  188. package/dist/components/Select/Combobox.mjs.map +1 -1
  189. package/dist/components/Select/Select.d.ts +1 -1
  190. package/dist/components/Select/Select.d.ts.map +1 -1
  191. package/dist/components/Select/Select.js +14 -2
  192. package/dist/components/Select/Select.js.map +1 -1
  193. package/dist/components/Select/Select.mjs +15 -3
  194. package/dist/components/Select/Select.mjs.map +1 -1
  195. package/dist/components/Select/Select.styles.d.ts +97 -1
  196. package/dist/components/Select/Select.styles.d.ts.map +1 -1
  197. package/dist/components/Select/Select.styles.js +83 -0
  198. package/dist/components/Select/Select.styles.js.map +1 -1
  199. package/dist/components/Select/Select.styles.mjs +82 -1
  200. package/dist/components/Select/Select.styles.mjs.map +1 -1
  201. package/dist/components/Switch/SwitchControl.d.ts.map +1 -1
  202. package/dist/components/Switch/SwitchControl.js +26 -11
  203. package/dist/components/Switch/SwitchControl.js.map +1 -1
  204. package/dist/components/Switch/SwitchControl.mjs +27 -12
  205. package/dist/components/Switch/SwitchControl.mjs.map +1 -1
  206. package/dist/components/Tabs/Tab/Tab.styles.d.ts +1 -1
  207. package/dist/components/Tabs/Tab/Tab.styles.js +1 -1
  208. package/dist/components/Tabs/Tab/Tab.styles.mjs +1 -1
  209. package/dist/components/Tag/Tag.d.ts.map +1 -1
  210. package/dist/components/Tag/Tag.js +14 -2
  211. package/dist/components/Tag/Tag.js.map +1 -1
  212. package/dist/components/Tag/Tag.mjs +15 -3
  213. package/dist/components/Tag/Tag.mjs.map +1 -1
  214. package/dist/components/Tag/Tag.styles.d.ts +20 -2
  215. package/dist/components/Tag/Tag.styles.d.ts.map +1 -1
  216. package/dist/components/Tag/Tag.styles.js +81 -0
  217. package/dist/components/Tag/Tag.styles.js.map +1 -1
  218. package/dist/components/Tag/Tag.styles.mjs +81 -1
  219. package/dist/components/Tag/Tag.styles.mjs.map +1 -1
  220. package/dist/components/Tag/Tag.types.d.ts +15 -2
  221. package/dist/components/Tag/Tag.types.d.ts.map +1 -1
  222. package/dist/components/Tag/index.d.ts +2 -2
  223. package/dist/components/Tag/index.d.ts.map +1 -1
  224. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  225. package/dist/components/Textarea/Textarea.js +4 -0
  226. package/dist/components/Textarea/Textarea.js.map +1 -1
  227. package/dist/components/Textarea/Textarea.mjs +4 -0
  228. package/dist/components/Textarea/Textarea.mjs.map +1 -1
  229. package/dist/components/Toast/Toast.d.ts.map +1 -1
  230. package/dist/components/Toast/Toast.js +5 -1
  231. package/dist/components/Toast/Toast.js.map +1 -1
  232. package/dist/components/Toast/Toast.mjs +5 -1
  233. package/dist/components/Toast/Toast.mjs.map +1 -1
  234. package/dist/components/Toast/Toast.styles.d.ts +13 -2
  235. package/dist/components/Toast/Toast.styles.d.ts.map +1 -1
  236. package/dist/components/Toast/Toast.styles.js +19 -7
  237. package/dist/components/Toast/Toast.styles.js.map +1 -1
  238. package/dist/components/Toast/Toast.styles.mjs +19 -7
  239. package/dist/components/Toast/Toast.styles.mjs.map +1 -1
  240. package/dist/components/Typography/Caption.d.ts.map +1 -1
  241. package/dist/components/Typography/Caption.js +1 -1
  242. package/dist/components/Typography/Caption.js.map +1 -1
  243. package/dist/components/Typography/Caption.mjs +1 -1
  244. package/dist/components/Typography/Caption.mjs.map +1 -1
  245. package/dist/components/Typography/H1.d.ts.map +1 -1
  246. package/dist/components/Typography/H1.js +1 -1
  247. package/dist/components/Typography/H1.js.map +1 -1
  248. package/dist/components/Typography/H1.mjs +1 -1
  249. package/dist/components/Typography/H1.mjs.map +1 -1
  250. package/dist/components/Typography/H2.d.ts.map +1 -1
  251. package/dist/components/Typography/H2.js +1 -1
  252. package/dist/components/Typography/H2.js.map +1 -1
  253. package/dist/components/Typography/H2.mjs +1 -1
  254. package/dist/components/Typography/H2.mjs.map +1 -1
  255. package/dist/components/Typography/H3.d.ts.map +1 -1
  256. package/dist/components/Typography/H3.js +1 -1
  257. package/dist/components/Typography/H3.js.map +1 -1
  258. package/dist/components/Typography/H3.mjs +1 -1
  259. package/dist/components/Typography/H3.mjs.map +1 -1
  260. package/dist/components/Typography/H4.d.ts.map +1 -1
  261. package/dist/components/Typography/H4.js +1 -1
  262. package/dist/components/Typography/H4.js.map +1 -1
  263. package/dist/components/Typography/H4.mjs +1 -1
  264. package/dist/components/Typography/H4.mjs.map +1 -1
  265. package/dist/components/Typography/H5.d.ts.map +1 -1
  266. package/dist/components/Typography/H5.js +1 -1
  267. package/dist/components/Typography/H5.js.map +1 -1
  268. package/dist/components/Typography/H5.mjs +1 -1
  269. package/dist/components/Typography/H5.mjs.map +1 -1
  270. package/dist/components/Typography/Link.d.ts.map +1 -1
  271. package/dist/components/Typography/Link.js +1 -1
  272. package/dist/components/Typography/Link.js.map +1 -1
  273. package/dist/components/Typography/Link.mjs +1 -1
  274. package/dist/components/Typography/Link.mjs.map +1 -1
  275. package/dist/components/Typography/Overline.d.ts.map +1 -1
  276. package/dist/components/Typography/Overline.js +1 -1
  277. package/dist/components/Typography/Overline.js.map +1 -1
  278. package/dist/components/Typography/Overline.mjs +1 -1
  279. package/dist/components/Typography/Overline.mjs.map +1 -1
  280. package/dist/components/Typography/Subtext.d.ts.map +1 -1
  281. package/dist/components/Typography/Subtext.js +1 -1
  282. package/dist/components/Typography/Subtext.js.map +1 -1
  283. package/dist/components/Typography/Subtext.mjs +1 -1
  284. package/dist/components/Typography/Subtext.mjs.map +1 -1
  285. package/dist/components/Typography/Subtitle.d.ts.map +1 -1
  286. package/dist/components/Typography/Subtitle.js +1 -1
  287. package/dist/components/Typography/Subtitle.js.map +1 -1
  288. package/dist/components/Typography/Subtitle.mjs +1 -1
  289. package/dist/components/Typography/Subtitle.mjs.map +1 -1
  290. package/dist/components/Typography/Text.d.ts.map +1 -1
  291. package/dist/components/Typography/Text.js +1 -1
  292. package/dist/components/Typography/Text.js.map +1 -1
  293. package/dist/components/Typography/Text.mjs +1 -1
  294. package/dist/components/Typography/Text.mjs.map +1 -1
  295. package/dist/hooks/useLanguage.d.ts +5 -0
  296. package/dist/hooks/useLanguage.d.ts.map +1 -1
  297. package/dist/hooks/useLanguage.js +7 -3
  298. package/dist/hooks/useLanguage.js.map +1 -1
  299. package/dist/hooks/useLanguage.mjs +7 -4
  300. package/dist/hooks/useLanguage.mjs.map +1 -1
  301. package/dist/hooks/useTranslate.d.ts.map +1 -1
  302. package/dist/hooks/useTranslate.js +8 -5
  303. package/dist/hooks/useTranslate.js.map +1 -1
  304. package/dist/hooks/useTranslate.mjs +8 -5
  305. package/dist/hooks/useTranslate.mjs.map +1 -1
  306. package/dist/index.d.ts +3 -1
  307. package/dist/index.d.ts.map +1 -1
  308. package/dist/index.js +22 -0
  309. package/dist/index.js.map +1 -1
  310. package/dist/index.mjs +9 -3
  311. package/dist/index.mjs.map +1 -1
  312. package/dist/theme/colors.d.ts +2 -2
  313. package/dist/theme/colors.d.ts.map +1 -1
  314. package/dist/theme/colors.js +63 -19
  315. package/dist/theme/colors.js.map +1 -1
  316. package/dist/theme/colors.mjs +64 -20
  317. package/dist/theme/colors.mjs.map +1 -1
  318. package/dist/theme/controlSizes.d.ts +91 -0
  319. package/dist/theme/controlSizes.d.ts.map +1 -0
  320. package/dist/theme/controlSizes.js +143 -0
  321. package/dist/theme/controlSizes.js.map +1 -0
  322. package/dist/theme/controlSizes.mjs +135 -0
  323. package/dist/theme/controlSizes.mjs.map +1 -0
  324. package/dist/theme/global.d.ts.map +1 -1
  325. package/dist/theme/global.js +19 -1
  326. package/dist/theme/global.js.map +1 -1
  327. package/dist/theme/global.mjs +19 -1
  328. package/dist/theme/global.mjs.map +1 -1
  329. package/dist/theme/index.d.ts.map +1 -1
  330. package/dist/theme/index.js +14 -43
  331. package/dist/theme/index.js.map +1 -1
  332. package/dist/theme/index.mjs +14 -43
  333. package/dist/theme/index.mjs.map +1 -1
  334. package/dist/theme/palette.generated.d.ts +295 -162
  335. package/dist/theme/palette.generated.d.ts.map +1 -1
  336. package/dist/theme/palette.generated.js +296 -162
  337. package/dist/theme/palette.generated.js.map +1 -1
  338. package/dist/theme/palette.generated.mjs +296 -163
  339. package/dist/theme/palette.generated.mjs.map +1 -1
  340. package/dist/theme/paletteSwatches.d.ts +20 -0
  341. package/dist/theme/paletteSwatches.d.ts.map +1 -1
  342. package/dist/theme/recipes/avatar.d.ts +30 -0
  343. package/dist/theme/recipes/avatar.d.ts.map +1 -0
  344. package/dist/theme/recipes/avatar.js +96 -0
  345. package/dist/theme/recipes/avatar.js.map +1 -0
  346. package/dist/theme/recipes/avatar.mjs +94 -0
  347. package/dist/theme/recipes/avatar.mjs.map +1 -0
  348. package/dist/theme/recipes/controls.d.ts +94 -0
  349. package/dist/theme/recipes/controls.d.ts.map +1 -0
  350. package/dist/theme/recipes/controls.js +154 -0
  351. package/dist/theme/recipes/controls.js.map +1 -0
  352. package/dist/theme/recipes/controls.mjs +144 -0
  353. package/dist/theme/recipes/controls.mjs.map +1 -0
  354. package/dist/translations/Defaults.translations.json.js +19 -1
  355. package/dist/translations/Defaults.translations.json.js.map +1 -1
  356. package/dist/translations/Defaults.translations.json.mjs +18 -2
  357. package/dist/translations/Defaults.translations.json.mjs.map +1 -1
  358. package/dist/utils/disabledControl.d.ts +8 -1
  359. package/dist/utils/disabledControl.d.ts.map +1 -1
  360. package/dist/utils/disabledControl.js +8 -1
  361. package/dist/utils/disabledControl.js.map +1 -1
  362. package/dist/utils/disabledControl.mjs +8 -1
  363. package/dist/utils/disabledControl.mjs.map +1 -1
  364. package/dist/utils/focusRing.d.ts +22 -0
  365. package/dist/utils/focusRing.d.ts.map +1 -1
  366. package/dist/utils/focusRing.js +22 -0
  367. package/dist/utils/focusRing.js.map +1 -1
  368. package/dist/utils/focusRing.mjs +21 -1
  369. package/dist/utils/focusRing.mjs.map +1 -1
  370. package/package.json +2 -1
  371. package/src/components/Accordion/Accordion.stories.tsx +85 -0
  372. package/src/components/Accordion/Accordion.usage.mdx +200 -0
  373. package/src/components/Appear/Appear.usage.mdx +107 -0
  374. package/src/components/Avatar/Avatar.recipe.test.tsx +176 -0
  375. package/src/components/Avatar/Avatar.stories.tsx +199 -24
  376. package/src/components/Avatar/Avatar.tsx +118 -21
  377. package/src/components/Avatar/Avatar.usage.mdx +185 -0
  378. package/src/components/Avatar/index.tsx +8 -1
  379. package/src/components/Banner/Banner.stories.tsx +152 -2
  380. package/src/components/Banner/Banner.types.ts +30 -1
  381. package/src/components/Banner/Banner.usage.mdx +233 -0
  382. package/src/components/BottomSheet/BottomSheet.stories.tsx +168 -1
  383. package/src/components/BottomSheet/BottomSheet.test.tsx +2 -1
  384. package/src/components/BottomSheet/BottomSheet.usage.mdx +216 -0
  385. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +59 -0
  386. package/src/components/Breadcrumb/Breadcrumb.usage.mdx +181 -0
  387. package/src/components/Button/Button.focusableWhenDisabled.test.tsx +218 -0
  388. package/src/components/Button/Button.stories.tsx +332 -3
  389. package/src/components/Button/Button.tsx +46 -3
  390. package/src/components/Button/Button.types.ts +38 -1
  391. package/src/components/Button/Button.usage.mdx +358 -0
  392. package/src/components/Button/Button.variants.test.tsx +13 -1
  393. package/src/components/Card/Card.stories.tsx +106 -0
  394. package/src/components/Card/Card.types.ts +12 -0
  395. package/src/components/Card/Card.usage.mdx +216 -0
  396. package/src/components/Checkbox/Checkbox.stories.tsx +140 -13
  397. package/src/components/Checkbox/Checkbox.usage.mdx +214 -0
  398. package/src/components/Chip/Chip.usage.mdx +78 -0
  399. package/src/components/Code/Code.stories.tsx +60 -0
  400. package/src/components/Code/Code.test.tsx +116 -0
  401. package/src/components/Code/Code.usage.mdx +187 -0
  402. package/src/components/Code/shikiAdapter.ts +38 -9
  403. package/src/components/CodeTabs/CodeTabs.stories.tsx +53 -0
  404. package/src/components/CodeTabs/CodeTabs.styles.ts +6 -5
  405. package/src/components/CodeTabs/CodeTabs.usage.mdx +176 -0
  406. package/src/components/Collapsible/Collapsible.stories.tsx +58 -0
  407. package/src/components/Collapsible/Collapsible.usage.mdx +173 -0
  408. package/src/components/ColorMode/ColorMode.stories.tsx +50 -0
  409. package/src/components/ColorMode/ColorMode.usage.mdx +135 -0
  410. package/src/components/ColorMode/ColorModeToggle.tsx +10 -3
  411. package/src/components/Confetti/Confetti.types.ts +5 -1
  412. package/src/components/Confetti/Confetti.usage.mdx +111 -0
  413. package/src/components/Confetti/confettiColors.ts +5 -5
  414. package/src/components/Container/Container.stories.tsx +32 -0
  415. package/src/components/Container/Container.usage.mdx +130 -0
  416. package/src/components/CopyableCode/CopyableCode.stories.tsx +62 -0
  417. package/src/components/CopyableCode/CopyableCode.usage.mdx +168 -0
  418. package/src/components/CountBadge/CountBadge.stories.tsx +69 -0
  419. package/src/components/CountBadge/CountBadge.usage.mdx +215 -0
  420. package/src/components/CountUp/CountUp.usage.mdx +107 -0
  421. package/src/components/DatePicker/DatePicker.types.ts +12 -0
  422. package/src/components/DatePicker/DatePicker.usage.mdx +177 -0
  423. package/src/components/DatePicker/RangeDatePicker.stories.tsx +87 -3
  424. package/src/components/DatePicker/RangeDatePicker.tsx +7 -1
  425. package/src/components/DatePicker/SingleDatePicker.tsx +7 -1
  426. package/src/components/DatePicker/index.ts +1 -0
  427. package/src/components/ErrorFallback/ErrorFallback.types.ts +6 -0
  428. package/src/components/ErrorFallback/ErrorFallback.usage.mdx +127 -0
  429. package/src/components/ExpandableText/ExpandableText.stories.tsx +55 -0
  430. package/src/components/ExpandableText/ExpandableText.tsx +0 -1
  431. package/src/components/ExpandableText/ExpandableText.usage.mdx +178 -0
  432. package/src/components/FileInput/FileInput.stories.tsx +38 -1
  433. package/src/components/FileInput/FileInput.usage.mdx +178 -0
  434. package/src/components/FileItem/FileItem.stories.tsx +71 -0
  435. package/src/components/FileItem/FileItem.usage.mdx +180 -0
  436. package/src/components/FileList/FileList.stories.tsx +25 -0
  437. package/src/components/FileList/FileList.usage.mdx +165 -0
  438. package/src/components/FlyTo/FlyTo.usage.mdx +99 -0
  439. package/src/components/Form/Form.stories.tsx +149 -0
  440. package/src/components/Form/Form.usage.mdx +203 -0
  441. package/src/components/Form/FormModalFooter/FormModalFooter.stories.tsx +1 -1
  442. package/src/components/Form/FormModalFooter/FormModalFooter.test.tsx +19 -1
  443. package/src/components/Form/FormModalFooter/FormModalFooter.tsx +2 -0
  444. package/src/components/Form/FormModalFooter/FormModalFooter.types.ts +11 -1
  445. package/src/components/FormControl/FormControl.stories.tsx +35 -0
  446. package/src/components/FormControl/FormControl.usage.mdx +128 -0
  447. package/src/components/FormIntegration/FormIntegration.usage.mdx +158 -0
  448. package/src/components/FormLabel/FormLabel.stories.tsx +71 -0
  449. package/src/components/FormLabel/FormLabel.usage.mdx +125 -0
  450. package/src/components/Icon/Icon.stories.tsx +61 -1
  451. package/src/components/Icon/Icon.usage.mdx +158 -0
  452. package/src/components/IconButton/IconButton.stories.tsx +213 -5
  453. package/src/components/IconButton/IconButton.usage.mdx +275 -0
  454. package/src/components/InfoSprinkle/InfoSprinkle.stories.tsx +77 -1
  455. package/src/components/InfoSprinkle/InfoSprinkle.usage.mdx +189 -0
  456. package/src/components/InlineCode/InlineCode.stories.tsx +75 -0
  457. package/src/components/InlineCode/InlineCode.usage.mdx +142 -0
  458. package/src/components/Input/Input.stories.tsx +180 -0
  459. package/src/components/Input/Input.tsx +4 -0
  460. package/src/components/Input/Input.usage.mdx +278 -0
  461. package/src/components/LineGraph/LineGraph.stories.tsx +112 -0
  462. package/src/components/LineGraph/LineGraph.tsx +4 -5
  463. package/src/components/LineGraph/LineGraph.types.ts +12 -2
  464. package/src/components/LineGraph/LineGraph.usage.mdx +186 -0
  465. package/src/components/LineGraph/seriesColors.test.ts +10 -9
  466. package/src/components/LineGraph/seriesColors.ts +18 -16
  467. package/src/components/Loaders/Loaders.stories.tsx +93 -0
  468. package/src/components/Loaders/Loaders.usage.mdx +180 -0
  469. package/src/components/LogicianProvider/LogicianProvider.usage.mdx +98 -0
  470. package/src/components/Markdown/Markdown.stories.tsx +53 -0
  471. package/src/components/Markdown/Markdown.usage.mdx +182 -0
  472. package/src/components/Masonry/Masonry.stories.tsx +63 -1
  473. package/src/components/Masonry/Masonry.types.ts +8 -3
  474. package/src/components/Masonry/Masonry.usage.mdx +142 -0
  475. package/src/components/MaxLengthIndicator/MaxLengthIndicator.stories.tsx +57 -0
  476. package/src/components/MaxLengthIndicator/MaxLengthIndicator.usage.mdx +125 -0
  477. package/src/components/Menu/Menu.stories.tsx +146 -2
  478. package/src/components/Menu/Menu.usage.mdx +238 -0
  479. package/src/components/Menu/MenuItem.types.ts +8 -0
  480. package/src/components/Modal/Modal.stories.tsx +177 -1
  481. package/src/components/Modal/Modal.usage.mdx +262 -0
  482. package/src/components/Modal/ModalCloseButton.tsx +1 -1
  483. package/src/components/MonthPicker/MonthPicker.stories.tsx +30 -0
  484. package/src/components/MonthPicker/MonthPicker.tsx +7 -1
  485. package/src/components/MonthPicker/MonthPicker.types.ts +8 -1
  486. package/src/components/MonthPicker/MonthPicker.usage.mdx +191 -0
  487. package/src/components/NavList/NavList.stories.tsx +927 -0
  488. package/src/components/NavList/NavList.styles.ts +114 -0
  489. package/src/components/NavList/NavList.test.tsx +1306 -0
  490. package/src/components/NavList/NavList.translations.json +9 -0
  491. package/src/components/NavList/NavList.tsx +160 -0
  492. package/src/components/NavList/NavList.types.ts +155 -0
  493. package/src/components/NavList/NavList.usage.mdx +545 -0
  494. package/src/components/NavList/NavListContext.ts +25 -0
  495. package/src/components/NavList/NavListGroup.tsx +243 -0
  496. package/src/components/NavList/NavListItem.tsx +543 -0
  497. package/src/components/NavList/NavListSkeleton.tsx +57 -0
  498. package/src/components/NavList/index.ts +15 -0
  499. package/src/components/Pagination/Pagination.stories.tsx +90 -1
  500. package/src/components/Pagination/Pagination.tsx +11 -10
  501. package/src/components/Pagination/Pagination.usage.mdx +186 -0
  502. package/src/components/PasswordInput/PasswordInput.stories.tsx +51 -0
  503. package/src/components/PasswordInput/PasswordInput.usage.mdx +193 -0
  504. package/src/components/PinInput/PinInput.stories.tsx +91 -0
  505. package/src/components/PinInput/PinInput.usage.mdx +194 -0
  506. package/src/components/Popover/Popover.stories.tsx +104 -1
  507. package/src/components/Popover/Popover.usage.mdx +197 -0
  508. package/src/components/ProgressBar/ProgressBar.stories.tsx +92 -1
  509. package/src/components/ProgressBar/ProgressBar.types.ts +9 -0
  510. package/src/components/ProgressBar/ProgressBar.usage.mdx +210 -0
  511. package/src/components/Pulse/Pulse.usage.mdx +102 -0
  512. package/src/components/RadialProgress/RadialProgress.stories.tsx +74 -1
  513. package/src/components/RadialProgress/RadialProgress.types.ts +21 -1
  514. package/src/components/RadialProgress/RadialProgress.usage.mdx +153 -0
  515. package/src/components/Radio/Radio.stories.tsx +119 -0
  516. package/src/components/Radio/Radio.usage.mdx +187 -0
  517. package/src/components/Reveal/Reveal.usage.mdx +105 -0
  518. package/src/components/ScaledContext/ScaledContext.usage.mdx +111 -0
  519. package/src/components/SeeMoreButton/SeeMoreButton.stories.tsx +146 -2
  520. package/src/components/SeeMoreButton/SeeMoreButton.types.ts +8 -0
  521. package/src/components/SeeMoreButton/SeeMoreButton.usage.mdx +213 -0
  522. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +69 -0
  523. package/src/components/SegmentedControl/SegmentedControl.styles.ts +38 -0
  524. package/src/components/SegmentedControl/SegmentedControl.tsx +43 -37
  525. package/src/components/SegmentedControl/SegmentedControl.usage.mdx +216 -0
  526. package/src/components/SegmentedProgressBar/SegmentedProgressBar.stories.tsx +54 -0
  527. package/src/components/SegmentedProgressBar/SegmentedProgressBar.types.ts +2 -0
  528. package/src/components/SegmentedProgressBar/SegmentedProgressBar.usage.mdx +145 -0
  529. package/src/components/Select/Combobox.tsx +28 -3
  530. package/src/components/Select/Select.clearTrigger.test.tsx +76 -0
  531. package/src/components/Select/Select.stories.tsx +290 -1
  532. package/src/components/Select/Select.styles.ts +89 -0
  533. package/src/components/Select/Select.tsx +28 -2
  534. package/src/components/Select/Select.usage.mdx +341 -0
  535. package/src/components/Shake/Shake.usage.mdx +107 -0
  536. package/src/components/Slider/Slider.stories.tsx +116 -0
  537. package/src/components/Slider/Slider.usage.mdx +179 -0
  538. package/src/components/Spinner/Spinner.stories.tsx +64 -0
  539. package/src/components/Spinner/Spinner.usage.mdx +136 -0
  540. package/src/components/SwapTransition/SwapTransition.usage.mdx +102 -0
  541. package/src/components/Switch/Switch.stories.tsx +139 -6
  542. package/src/components/Switch/Switch.usage.mdx +200 -0
  543. package/src/components/Switch/SwitchControl.tsx +32 -15
  544. package/src/components/Table/Table.stories.tsx +159 -1
  545. package/src/components/Table/Table.usage.mdx +235 -0
  546. package/src/components/Tabs/Tab/Tab.styles.ts +1 -1
  547. package/src/components/Tabs/Tabs.stories.tsx +86 -0
  548. package/src/components/Tabs/Tabs.usage.mdx +263 -0
  549. package/src/components/Tag/Tag.stories.tsx +181 -4
  550. package/src/components/Tag/Tag.styles.ts +117 -2
  551. package/src/components/Tag/Tag.test.tsx +87 -1
  552. package/src/components/Tag/Tag.tsx +22 -1
  553. package/src/components/Tag/Tag.types.ts +16 -2
  554. package/src/components/Tag/Tag.usage.mdx +257 -0
  555. package/src/components/Tag/index.ts +2 -0
  556. package/src/components/Textarea/Textarea.stories.tsx +113 -0
  557. package/src/components/Textarea/Textarea.tsx +4 -0
  558. package/src/components/Textarea/Textarea.usage.mdx +186 -0
  559. package/src/components/Toast/Toast.stories.tsx +185 -3
  560. package/src/components/Toast/Toast.styles.ts +19 -7
  561. package/src/components/Toast/Toast.tsx +8 -1
  562. package/src/components/Toast/Toast.usage.mdx +265 -0
  563. package/src/components/Tooltip/Tooltip.stories.tsx +86 -1
  564. package/src/components/Tooltip/Tooltip.usage.mdx +219 -0
  565. package/src/components/Tree/Tree.stories.tsx +89 -0
  566. package/src/components/Tree/Tree.usage.mdx +207 -0
  567. package/src/components/Typography/Caption.tsx +0 -1
  568. package/src/components/Typography/H1.tsx +0 -1
  569. package/src/components/Typography/H2.tsx +0 -1
  570. package/src/components/Typography/H3.tsx +0 -1
  571. package/src/components/Typography/H4.tsx +0 -1
  572. package/src/components/Typography/H5.tsx +0 -1
  573. package/src/components/Typography/Link.tsx +0 -1
  574. package/src/components/Typography/Overline.tsx +0 -1
  575. package/src/components/Typography/Subtext.tsx +0 -1
  576. package/src/components/Typography/Subtitle.tsx +0 -1
  577. package/src/components/Typography/Text.tsx +0 -1
  578. package/src/components/Typography/Typography.stories.tsx +117 -0
  579. package/src/components/Typography/Typography.usage.mdx +257 -0
  580. package/src/components/Workflow/Workflow.usage.mdx +199 -0
  581. package/src/components/a11y.kwcag.test.tsx +78 -21
  582. package/src/components/claude.md +24 -1
  583. package/src/components/noRawScales.test.ts +5 -1
  584. package/src/foundations/BrandAssets.mdx +637 -0
  585. package/src/foundations/BrandAssets.stories.tsx +680 -0
  586. package/src/foundations/BrandColour.mdx +103 -4
  587. package/src/foundations/BrandColour.stories.tsx +135 -2
  588. package/src/hooks/useLanguage.ts +8 -3
  589. package/src/hooks/useTranslate.test.tsx +46 -0
  590. package/src/hooks/useTranslate.ts +7 -5
  591. package/src/index.ts +19 -1
  592. package/src/theme/BazePalette.stories.tsx +111 -1
  593. package/src/theme/ControlSizes.stories.tsx +586 -0
  594. package/src/theme/Palette.stories.tsx +2 -2
  595. package/src/theme/SemanticTokens.mdx +118 -19
  596. package/src/theme/claude.md +34 -9
  597. package/src/theme/colors.ts +82 -19
  598. package/src/theme/contrast.test.ts +67 -0
  599. package/src/theme/controlSizes.test.ts +153 -0
  600. package/src/theme/controlSizes.ts +162 -0
  601. package/src/theme/global.ts +20 -1
  602. package/src/theme/index.ts +23 -46
  603. package/src/theme/palette.generated.ts +296 -162
  604. package/src/theme/paletteSwatches.test.ts +1 -1
  605. package/src/theme/paletteSwatches.ts +35 -0
  606. package/src/theme/recipes/avatar.ts +92 -0
  607. package/src/theme/recipes/controls.ts +171 -0
  608. package/src/translations/Defaults.translations.json +14 -0
  609. package/src/utils/disabledControl.ts +8 -1
  610. package/src/utils/focusRing.ts +23 -0
@@ -0,0 +1,257 @@
1
+ import { Canvas, Meta } from '@storybook/blocks';
2
+
3
+ import { En, Ko, LangToggle, Verdict } from '../../guidelines/_components/Lang';
4
+ import * as TypographyStories from './Typography.stories';
5
+
6
+ <Meta of={TypographyStories} name="Usage" />
7
+
8
+ <LangToggle />
9
+
10
+ <En>
11
+
12
+ # Typography
13
+
14
+ The type scale: headings (`H1`–`H5`), body text (`Text`), supporting text
15
+ (`Subtitle`, `Subtext`, `Caption`, `Overline`) and inline links (`Link`).
16
+ Each tier sets a size and a colour. Word breaking is set by language on
17
+ `<html>` in the global styles: Korean (`lang="ko"`) gets `keep-all`, Japanese
18
+ (`lang="ja"`) gets `auto-phrase` where supported, other languages keep the
19
+ browser default.
20
+
21
+ ## When to use
22
+
23
+ - `H1`–`H5` for headings that belong in the page outline: a page title, a
24
+ section, a card or modal title.
25
+ - `Text` for body copy. `Subtext` for the secondary line under a title or
26
+ value. `Caption` for metadata (time, count, length). `Overline` for a short
27
+ uppercase eyebrow above a heading.
28
+ - `Link` for navigation inside a sentence.
29
+
30
+ ## When not to use
31
+
32
+ - An action that changes something (save, delete, open a modal) → `Button`
33
+ (`variant="ghost"` if it has to look light). A link goes somewhere.
34
+ - A status label next to a title → `Badge`.
35
+ - Code inside a sentence → `InlineCode`. Formatted content from a model or an
36
+ author → `Markdown`, which maps to these same components.
37
+
38
+ ## The scale and what each tier means
39
+
40
+ | Component | Renders | Default colour | Use for |
41
+ | --- | --- | --- | --- |
42
+ | `H1`–`H5` | `<h1>`–`<h5>` | `fg.emphasized` | Headings in the outline |
43
+ | `Text` | `<p>` | `fg.default` | Body copy |
44
+ | `Subtitle` | `<p>` | `fg.muted` | Helper copy under a heading |
45
+ | `Subtext` | `<p>` | `fg.default` | A step smaller than body: secondary lines, dense lists |
46
+ | `Caption` | `<p>` | `fg.subtle` | Timestamps, counts, file sizes |
47
+ | `Overline` | `<p>` | `fg.muted` | Uppercase eyebrow above a heading |
48
+ | `Link` | `<a>` | `fg.link` (`variant="error"`: `danger.fg`) | Inline navigation |
49
+
50
+ **Size and level are separate choices.** Every component takes `as`, and the
51
+ props of that element come with it. Pick the size for the layout, then set
52
+ the level the outline needs: `<H3 as="h2">`. `Subtitle` used to render
53
+ `<h6>`; it is a paragraph now, and says `as="h2"` only where it really is the
54
+ next heading. Passing `fontSize` turns off the tier's `textStyle`, so an
55
+ explicit size wins.
56
+
57
+ ## Do / Don't
58
+
59
+ </En>
60
+
61
+ <Ko>
62
+
63
+ # Typography
64
+
65
+ 글자 체계입니다. 제목(`H1`–`H5`), 본문(`Text`), 보조 문구(`Subtitle`, `Subtext`,
66
+ `Caption`, `Overline`), 문장 안 링크(`Link`)로 나뉩니다. 각 단계는 크기와 색을
67
+ 정합니다. 줄바꿈 방식은 전역 스타일이 `<html>`의 언어로 정합니다. 한국어
68
+ (`lang="ko"`)는 단어 중간에서 끊기지 않도록 `keep-all`, 일본어(`lang="ja"`)는
69
+ 지원 브라우저에서 문절 단위로 끊는 `auto-phrase`이고, 다른 언어는 브라우저
70
+ 기본값을 씁니다.
71
+
72
+ ## 언제 쓰나요
73
+
74
+ - 페이지 구조에 들어가는 제목에는 `H1`–`H5`를 씁니다. 페이지 제목, 섹션, 카드나
75
+ 모달의 제목이 여기에 해당합니다.
76
+ - 본문은 `Text`, 제목이나 값 아래의 보조 줄은 `Subtext`, 시간·개수·길이 같은
77
+ 메타데이터는 `Caption`, 제목 위의 짧은 대문자 머리말은 `Overline`을 씁니다.
78
+ - 문장 안에서 다른 곳으로 이동할 때는 `Link`를 씁니다.
79
+
80
+ ## 언제 쓰지 않나요
81
+
82
+ - 무언가를 바꾸는 동작(저장, 삭제, 모달 열기)에는 `Button`을 씁니다. 가벼워 보여야
83
+ 한다면 `variant="ghost"`를 씁니다. 링크는 어딘가로 이동할 때만 씁니다.
84
+ - 제목 옆의 상태 라벨은 `Badge`를 씁니다.
85
+ - 문장 안의 코드는 `InlineCode`를 씁니다. 모델이나 작성자가 쓴 서식 있는 글은
86
+ `Markdown`을 쓰면 같은 컴포넌트로 그려집니다.
87
+
88
+ ## 단계와 뜻
89
+
90
+ | 컴포넌트 | 그리는 요소 | 기본 색 | 쓰는 곳 |
91
+ | --- | --- | --- | --- |
92
+ | `H1`–`H5` | `<h1>`–`<h5>` | `fg.emphasized` | 문서 구조 안의 제목 |
93
+ | `Text` | `<p>` | `fg.default` | 본문 |
94
+ | `Subtitle` | `<p>` | `fg.muted` | 제목 아래의 도움말 |
95
+ | `Subtext` | `<p>` | `fg.default` | 본문보다 한 단계 작은 글: 보조 줄, 촘촘한 목록 |
96
+ | `Caption` | `<p>` | `fg.subtle` | 시각, 개수, 파일 크기 |
97
+ | `Overline` | `<p>` | `fg.muted` | 제목 위의 대문자 머리말 |
98
+ | `Link` | `<a>` | `fg.link` (`variant="error"`이면 `danger.fg`) | 문장 안의 이동 |
99
+
100
+ **크기와 제목 수준은 따로 고릅니다.** 모든 컴포넌트가 `as`를 받고, 그 요소의
101
+ 속성도 함께 받습니다. 크기는 레이아웃에 맞춰 고르고, 수준은 문서 구조에 맞춰
102
+ `<H3 as="h2">`처럼 정합니다. `Subtitle`은 예전에 `<h6>`로 그려졌지만 지금은
103
+ 문단이며, 정말 다음 수준의 제목일 때만 `as="h2"`를 붙입니다. `fontSize`를 넘기면
104
+ 그 단계의 `textStyle`이 꺼지고 지정한 크기가 적용됩니다.
105
+
106
+ ## 이렇게 하세요 / 이렇게 하지 마세요
107
+
108
+ </Ko>
109
+
110
+ <Canvas of={TypographyStories.DoLevelFromOutline} />
111
+ <Verdict
112
+ kind="do"
113
+ en="Choose H3 for its size and render it as h2 because it is the first heading under the page title."
114
+ ko="크기 때문에 H3를 고르고, 페이지 제목 바로 아래의 첫 제목이므로 h2로 그립니다."
115
+ />
116
+
117
+ <Canvas of={TypographyStories.DontSubtitleAsHeading} />
118
+ <Verdict
119
+ kind="dont"
120
+ en="Give helper copy a heading tag. A screen reader lists it as a heading, and the outline jumps from h2 to h6."
121
+ ko="도움말 문구에 제목 태그를 주지 마세요. 화면 낭독기가 제목 목록에 넣고, 문서 구조가 h2에서 h6로 건너뜁니다."
122
+ />
123
+
124
+ <Canvas of={TypographyStories.DoLinkSaysWhere} />
125
+ <Verdict
126
+ kind="do"
127
+ en="Write link text that names where it goes, so it makes sense when read on its own."
128
+ ko="링크 문구에는 이동할 곳을 적어서, 링크만 따로 읽어도 뜻이 통하게 합니다."
129
+ />
130
+
131
+ <Canvas of={TypographyStories.DontLinkHere} />
132
+ <Verdict
133
+ kind="dont"
134
+ en="Use “여기” as the link text, or remove the underline. A link list full of “여기” tells nobody anything, and without the underline only colour marks the link."
135
+ ko="'여기'를 링크 문구로 쓰거나 밑줄을 없애지 마세요. '여기'만 늘어선 링크 목록은 아무것도 알려 주지 못하고, 밑줄이 없으면 색만으로 링크를 구분해야 합니다."
136
+ />
137
+
138
+ <Canvas of={TypographyStories.DoCaptionForMetadata} />
139
+ <Verdict
140
+ kind="do"
141
+ en="Keep Caption for metadata the reader can skip."
142
+ ko="Caption은 읽지 않고 넘어가도 되는 메타데이터에만 씁니다."
143
+ />
144
+
145
+ <Canvas of={TypographyStories.DontCaptionForErrors} />
146
+ <Verdict
147
+ kind="dont"
148
+ en="Put something the user must act on in Caption. It is the faintest tier; use Text, or a Banner for a real error."
149
+ ko="사용자가 조치해야 하는 내용을 Caption에 넣지 마세요. 가장 흐린 단계이므로 Text를 쓰고, 실제 오류라면 Banner를 씁니다."
150
+ />
151
+
152
+ <En>
153
+
154
+ ## Content
155
+
156
+ - Headings in sentence case, no full stop. Keep them short enough for one
157
+ line on mobile.
158
+ - Do not set long body copy in `Subtext` or `Caption` to make it fit. Cut
159
+ the copy instead.
160
+ - Link text is the destination or the thing you get: 요금제 비교 보기, not
161
+ 여기 or 자세히.
162
+
163
+ ## Accessibility
164
+
165
+ What the components do for you:
166
+
167
+ - `H1`–`H5` render real heading elements, and the body tiers render
168
+ paragraphs, so the outline only contains what you mark as a heading.
169
+ - `Link` is underlined (1px, 2px on hover) and medium weight, so it does not
170
+ rely on colour alone (WCAG 1.4.1). `fg.link` and `fg.linkHover` are tuned
171
+ against the canvas in both modes (WCAG 1.4.3).
172
+ - The markdown `h6` keeps `as="h6"`, because a heading the author wrote must
173
+ stay in the outline.
174
+
175
+ What you still have to do:
176
+
177
+ - **Keep the heading levels in order** (WCAG 1.3.1, 2.4.6; KWCAG 5.2.4.2 제목
178
+ 제공). Use `as` to fix the level, never a smaller component to fix the size.
179
+ - **Do not remove the link underline** in running text (WCAG 1.4.1).
180
+ - **Name the destination** in the link text (WCAG 2.4.4). If a link opens a
181
+ new tab, say so in the text or with a visually hidden note.
182
+ - The error link keeps `danger.fg` on hover; only the underline thickens.
183
+ - An action is a `<button>`, not a link with an `onClick` (WCAG 4.1.2).
184
+ `<Link as="button">` is fine when it must look like a link.
185
+
186
+ ## Tokens
187
+
188
+ Default colour of each tier, and the link states from `LINK_RAMP` in
189
+ `Link.tsx`.
190
+
191
+ </En>
192
+
193
+ <Ko>
194
+
195
+ ## 문구
196
+
197
+ - 제목은 문장형 대소문자로 쓰고 마침표를 찍지 않습니다. 모바일에서 한 줄에 들어갈
198
+ 만큼 짧게 씁니다.
199
+ - 긴 본문을 화면에 맞추려고 `Subtext`나 `Caption`으로 줄이지 않습니다. 문구를
200
+ 줄입니다.
201
+ - 링크 문구에는 이동할 곳이나 얻을 것을 씁니다. '여기', '자세히'가 아니라 '요금제
202
+ 비교 보기'처럼 씁니다.
203
+
204
+ ## 접근성
205
+
206
+ 컴포넌트가 알아서 하는 일
207
+
208
+ - `H1`–`H5`는 실제 제목 요소로, 본문 단계는 문단으로 그려집니다. 그래서 제목으로
209
+ 지정한 것만 문서 구조에 들어갑니다.
210
+ - `Link`는 밑줄(평소 1px, 마우스를 올리면 2px)과 중간 굵기를 가지므로 색에만
211
+ 기대지 않습니다(WCAG 1.4.1). `fg.link`와 `fg.linkHover`는 두 모드 모두에서 바탕과
212
+ 대비가 맞도록 정해져 있습니다(WCAG 1.4.3).
213
+ - 마크다운의 `h6`는 `as="h6"`를 유지합니다. 작성자가 쓴 제목은 문서 구조에 남아야
214
+ 하기 때문입니다.
215
+
216
+ 직접 챙겨야 하는 일
217
+
218
+ - **제목 수준을 차례대로 씁니다**(WCAG 1.3.1, 2.4.6, KWCAG 5.2.4.2 제목 제공).
219
+ 수준은 `as`로 맞추고, 크기를 맞추려고 더 작은 컴포넌트를 고르지 않습니다.
220
+ - 본문 안 링크의 **밑줄을 없애지 않습니다**(WCAG 1.4.1).
221
+ - 링크 문구에 **이동할 곳을 적습니다**(WCAG 2.4.4). 새 탭에서 열린다면 문구나
222
+ 시각적으로 숨긴 안내로 알립니다.
223
+ - 오류 링크는 마우스를 올려도 `danger.fg`를 유지하고 밑줄만 굵어집니다.
224
+ - 동작은 `onClick`을 단 링크가 아니라 `<button>`으로 만듭니다(WCAG 4.1.2). 링크처럼
225
+ 보여야 한다면 `<Link as="button">`을 씁니다.
226
+
227
+ ## 토큰
228
+
229
+ 각 단계의 기본 색과 `Link.tsx`의 `LINK_RAMP`에 있는 링크 상태입니다.
230
+
231
+ </Ko>
232
+
233
+ <Canvas of={TypographyStories.UsageTokens} sourceState="none" />
234
+
235
+ <En>
236
+
237
+ ## Related
238
+
239
+ - **Markdown**: renders authored or generated text with these components.
240
+ - **InlineCode**: code inside a sentence.
241
+ - **ExpandableText**: body text clipped to a few lines.
242
+ - **Badge**: a status label next to a heading.
243
+ - **Foundations/Brand & colour usage**: which `fg.*` role to use where.
244
+
245
+ </En>
246
+
247
+ <Ko>
248
+
249
+ ## 관련 컴포넌트
250
+
251
+ - **Markdown**: 작성하거나 생성한 글을 이 컴포넌트들로 그립니다.
252
+ - **InlineCode**: 문장 안의 코드.
253
+ - **ExpandableText**: 몇 줄만 보여 주고 접어 두는 본문.
254
+ - **Badge**: 제목 옆의 상태 라벨.
255
+ - **Foundations/Brand & colour usage**: 어느 자리에 어떤 `fg.*` 역할을 쓰는지.
256
+
257
+ </Ko>
@@ -0,0 +1,199 @@
1
+ import { Canvas, Meta } from '@storybook/blocks';
2
+
3
+ import { En, Ko, LangToggle, Verdict } from '../../guidelines/_components/Lang';
4
+ import * as WorkflowStories from './stories/Workflow.stories';
5
+
6
+ <Meta of={WorkflowStories} name="Usage" />
7
+
8
+ <LangToggle />
9
+
10
+ <En>
11
+
12
+ # Workflow
13
+
14
+ A node-based workflow editor on React Flow: a drag-and-drop palette, a
15
+ canvas with undo/redo, auto-arrange and selection, and an optional inspector
16
+ drawer. It ships **no node types**: you register yours with
17
+ `defineNodeType`, and you own persistence and validation. FactChat's studio
18
+ behaviour editor is built on it. Full API: `Workflow/README.md`.
19
+
20
+ ## When to use
21
+
22
+ - Users build or read a graph of steps with branches: triggers, AI steps,
23
+ conditions, outputs.
24
+ - A read-only picture of a saved flow (`readOnly`, `showPalette={false}`,
25
+ `minHeight={0}`).
26
+
27
+ ## When not to use
28
+
29
+ - A fixed, linear sequence of steps → a numbered list or a stepper.
30
+ - A hierarchy → `Tree`.
31
+ - A settings form that happens to have sections → `Accordion` or `Card`s.
32
+
33
+ ## Options that change behaviour
34
+
35
+ | Prop / part | Means |
36
+ | --- | --- |
37
+ | `nodeTypes` | Required. Your node kinds; `category` (`trigger`, `ai`, `logic`, `safety`, `output`, `note`) drives the tile colour |
38
+ | `graph` + `onGraphChange`, or `defaultGraph` | Controlled or uncontrolled graph |
39
+ | `<NodeInspector />` child | Built-in drawer on selection (`dock="left" \| "right"`); omit it and use `onSelectionChange` to drive your own panel |
40
+ | `issues` / `validating` | Render-only validation you supply; the editor does not validate |
41
+ | `readOnly` | No palette, no connecting, dragging or deleting; the inspector becomes a read-only view |
42
+ | `translate` | Chrome copy. Without it the bundled strings resolve to Korean |
43
+ | `useWorkflowActions().addNode` | Add nodes without dragging (a "+" toolbar, a tap-to-add list) |
44
+
45
+ ## Do / Don't
46
+
47
+ </En>
48
+
49
+ <Ko>
50
+
51
+ # Workflow
52
+
53
+ React Flow 위에 만든 노드 기반 워크플로 편집기입니다. 끌어다 놓는 팔레트, 실행 취소·
54
+ 다시 실행, 자동 정렬, 선택이 되는 캔버스, 그리고 선택해서 켜는 속성 서랍이 있습니다.
55
+ **노드 종류는 하나도 들어 있지 않습니다.** `defineNodeType`으로 직접 등록하고, 저장과
56
+ 검증도 앱이 맡습니다. FactChat 스튜디오의 동작 편집기가 이것으로 만들어졌습니다. 전체
57
+ API는 `Workflow/README.md`에 있습니다.
58
+
59
+ ## 언제 쓰나요
60
+
61
+ - 사용자가 갈래가 있는 단계 그래프(트리거, AI 단계, 조건, 출력)를 만들거나 읽을 때.
62
+ - 저장된 흐름을 읽기 전용 그림으로 보여 줄 때(`readOnly`, `showPalette={false}`,
63
+ `minHeight={0}`).
64
+
65
+ ## 언제 쓰지 않나요
66
+
67
+ - 갈래 없이 정해진 순서의 단계라면 번호 목록이나 단계 표시를 씁니다.
68
+ - 계층이라면 `Tree`를 씁니다.
69
+ - 섹션이 있는 설정 폼이라면 `Accordion`이나 `Card`를 씁니다.
70
+
71
+ ## 동작을 바꾸는 옵션
72
+
73
+ | 속성 / 파트 | 뜻 |
74
+ | --- | --- |
75
+ | `nodeTypes` | 필수. 노드 종류. `category`(`trigger`, `ai`, `logic`, `safety`, `output`, `note`)가 타일 색을 정합니다 |
76
+ | `graph` + `onGraphChange`, 또는 `defaultGraph` | 제어 그래프 또는 비제어 그래프 |
77
+ | 자식 `<NodeInspector />` | 선택하면 열리는 기본 서랍(`dock="left" \| "right"`). 빼고 `onSelectionChange`로 직접 만든 패널을 움직일 수도 있습니다 |
78
+ | `issues` / `validating` | 앱이 넘기는 검증 결과를 그리기만 합니다. 편집기가 검증하지 않습니다 |
79
+ | `readOnly` | 팔레트를 숨기고 연결·이동·삭제를 막습니다. 서랍은 읽기 전용 보기가 됩니다 |
80
+ | `translate` | 화면 문구 번역 함수. 넘기지 않으면 내장 문구가 한국어로 나옵니다 |
81
+ | `useWorkflowActions().addNode` | 끌지 않고 노드를 추가합니다("+" 도구 모음, 눌러서 추가하는 목록) |
82
+
83
+ ## 이렇게 하세요 / 이렇게 하지 마세요
84
+
85
+ </Ko>
86
+
87
+ <Canvas of={WorkflowStories.AddNodeWithoutDrag} />
88
+ <Verdict
89
+ kind="do"
90
+ en="Offer a way to add nodes without dragging: a + beside the selected node or a list of node types, built on useWorkflowActions().addNode."
91
+ ko="끌지 않고도 노드를 추가할 방법을 줍니다. useWorkflowActions().addNode로 선택한 노드 옆의 +나 노드 종류 목록을 만듭니다."
92
+ />
93
+
94
+ <Canvas of={WorkflowStories.ReadOnly} />
95
+ <Verdict
96
+ kind="do"
97
+ en="Use readOnly for a saved flow the user can look at but not change."
98
+ ko="사용자가 보기만 하고 바꾸지 않는 저장된 흐름에는 readOnly를 씁니다."
99
+ />
100
+
101
+ <Verdict
102
+ kind="dont"
103
+ en="Validate inside the editor or rely on canvas colour alone for errors. Pass issues with a message; they appear on the node and in the drawer as text."
104
+ ko="편집기 안에서 검증하거나 캔버스 색만으로 오류를 알리지 마세요. 메시지가 있는 issues를 넘기면 노드와 서랍에 글로 나타납니다."
105
+ />
106
+
107
+ <En>
108
+
109
+ ## Content
110
+
111
+ - Node `label`s are short operational nouns (Message, Condition). The README
112
+ keeps them untranslated on purpose.
113
+ - `getMetaChips` shows a few words of config on the card; keep chips short.
114
+ - Issue `message`s say what to fix: "연결되지 않은 출구가 있습니다", not "오류".
115
+
116
+ ## Accessibility
117
+
118
+ What Workflow does for you:
119
+
120
+ - Canvas controls (zoom, fit, undo, redo, lock, auto-arrange) are buttons
121
+ with translated names; the palette is a labelled region with a named close
122
+ button (WCAG 4.1.2).
123
+ - Keyboard shortcuts: ⌘/Ctrl+Z and +Y (undo, redo), +C/+V (copy, paste),
124
+ +D (duplicate), Delete/Backspace (remove the selected node or edge), Escape
125
+ (close the inspector). They stay out of the way while typing in a field.
126
+
127
+ What you still have to do:
128
+
129
+ - **Give a non-drag way to add nodes** (WCAG 2.5.7): the palette is
130
+ drag-and-drop. Use `useWorkflowActions().addNode`, as in the Do example.
131
+ - **Pass `translate`** for any non-Korean app, or the chrome is announced in
132
+ Korean.
133
+ - Moving nodes and drawing connections are pointer gestures in React Flow;
134
+ the graph is hard to edit by keyboard alone. Keep the inspector the place
135
+ where every setting can be changed by keyboard (WCAG 2.1.1).
136
+
137
+ ## Tokens
138
+
139
+ Node tiles take their colour from `category`; override the mapping with
140
+ `categoryTokens`. See `Workflow/README.md`, "Theming, layout & read-only".
141
+
142
+ </En>
143
+
144
+ <Ko>
145
+
146
+ ## 문구
147
+
148
+ - 노드 `label`은 짧은 동작 명사(Message, Condition)로 씁니다. README는 일부러 번역하지
149
+ 않습니다.
150
+ - `getMetaChips`는 카드에 설정값 몇 단어를 보여 줍니다. 칩은 짧게 씁니다.
151
+ - issue의 `message`에는 고칠 내용을 씁니다. '오류'가 아니라 '연결되지 않은 출구가
152
+ 있습니다'처럼 씁니다.
153
+
154
+ ## 접근성
155
+
156
+ Workflow가 알아서 하는 일
157
+
158
+ - 캔버스 컨트롤(확대, 축소, 화면 맞춤, 실행 취소, 다시 실행, 잠금, 자동 정렬)은 번역된
159
+ 이름이 있는 버튼이고, 팔레트는 이름이 있는 영역이며 닫기 버튼에도 이름이 있습니다
160
+ (WCAG 4.1.2).
161
+ - 단축키: ⌘/Ctrl+Z와 +Y(실행 취소, 다시 실행), +C/+V(복사, 붙여넣기), +D(복제),
162
+ Delete/Backspace(선택한 노드나 연결 삭제), Escape(서랍 닫기). 입력 칸에 글을 쓰는
163
+ 동안에는 동작하지 않습니다.
164
+
165
+ 직접 챙겨야 하는 일
166
+
167
+ - **끌지 않고 노드를 추가하는 방법을 줍니다**(WCAG 2.5.7). 팔레트는 끌어다 놓는
168
+ 방식입니다. 이렇게 하세요 예시처럼 `useWorkflowActions().addNode`를 씁니다.
169
+ - 한국어가 아닌 앱이라면 **`translate`를 넘깁니다.** 넘기지 않으면 화면 문구가 한국어로
170
+ 읽힙니다.
171
+ - 노드 이동과 연결 그리기는 React Flow의 포인터 동작이라 키보드만으로 그래프를 고치기
172
+ 어렵습니다. 모든 설정은 서랍에서 키보드로 바꿀 수 있게 합니다(WCAG 2.1.1).
173
+
174
+ ## 토큰
175
+
176
+ 노드 타일 색은 `category`에서 오며, `categoryTokens`로 바꿀 수 있습니다.
177
+ `Workflow/README.md`의 "Theming, layout & read-only"를 봅니다.
178
+
179
+ </Ko>
180
+
181
+ <En>
182
+
183
+ ## Related
184
+
185
+ - **Tree**: a hierarchy rather than a graph.
186
+ - **Banner**: graph-wide issues above the canvas.
187
+ - `Workflow/README.md`: node types, the inspector, selection, `hostBridge`.
188
+
189
+ </En>
190
+
191
+ <Ko>
192
+
193
+ ## 관련 컴포넌트
194
+
195
+ - **Tree**: 그래프가 아니라 계층일 때.
196
+ - **Banner**: 캔버스 위의 그래프 전체 문제.
197
+ - `Workflow/README.md`: 노드 종류, 서랍, 선택, `hostBridge`.
198
+
199
+ </Ko>
@@ -6,6 +6,7 @@ import { buttonVariantStyles } from '@/components/Button/Button.styles';
6
6
  import { FileInput } from '@/components/FileInput';
7
7
  import { LogicianProvider } from '@/components/LogicianProvider';
8
8
  import { baseMarkdownComponents } from '@/components/Markdown/Markdown';
9
+ import { NavList } from '@/components/NavList';
9
10
  import { Radio, RadioGroup } from '@/components/Radio';
10
11
  import { SelectField } from '@/components/Select';
11
12
  import {
@@ -292,6 +293,71 @@ describe('axe — 구조·ARIA 규칙', () => {
292
293
  </RadioGroup>,
293
294
  ],
294
295
  ['파일 입력', <FileInput key="file" onChange={() => {}} />],
296
+ [
297
+ // Rows are links or buttons with aria-current — never tabs — and the
298
+ // trailing action sits beside its row, not inside it (nested-interactive).
299
+ '내비게이션 목록',
300
+ <NavList key="navlist" aria-label="소스">
301
+ <NavList.Item href="/recent" isCurrent trailingVisual="3">
302
+ 최근
303
+ </NavList.Item>
304
+ <NavList.Item href="/off" isDisabled>
305
+ 사용 불가
306
+ </NavList.Item>
307
+ <NavList.Group title="공유 드라이브">
308
+ <NavList.Item
309
+ onClick={() => {}}
310
+ trailingAction={
311
+ <button type="button" aria-label="마케팅 옵션">
312
+ …
313
+ </button>
314
+ }
315
+ >
316
+ 마케팅
317
+ </NavList.Item>
318
+ <NavList.Item onClick={() => {}} isDisabled>
319
+ 보관됨
320
+ </NavList.Item>
321
+ </NavList.Group>
322
+ </NavList>,
323
+ ],
324
+ [
325
+ // Icon-only rows keep their label as the name; a new-window link says
326
+ // so in its name; a collapsible group is a disclosure with its list
327
+ // still labelled; a hover-revealed action is still in the tree.
328
+ '접힌 내비게이션 레일과 새 창 링크',
329
+ <NavList key="navlist-collapsed" aria-label="관리자 메뉴" isCollapsed>
330
+ <NavList.Item href="/a" isCurrent leadingVisual={<svg />}>
331
+ 멤버 관리
332
+ </NavList.Item>
333
+ <NavList.Item
334
+ href="https://docs.example"
335
+ target="_blank"
336
+ leadingVisual={<svg />}
337
+ >
338
+ 사용 가이드
339
+ </NavList.Item>
340
+ </NavList>,
341
+ ],
342
+ [
343
+ '접을 수 있는 내비게이션 묶음',
344
+ <NavList key="navlist-collapsible" aria-label="설정">
345
+ <NavList.Group title="결제" isCollapsible>
346
+ <NavList.Item
347
+ href="/b"
348
+ tooltip="요금제와 결제 수단"
349
+ trailingActionVisibility="hover"
350
+ trailingAction={
351
+ <button type="button" aria-label="요금제 옵션">
352
+ …
353
+ </button>
354
+ }
355
+ >
356
+ 요금제
357
+ </NavList.Item>
358
+ </NavList.Group>
359
+ </NavList>,
360
+ ],
295
361
  ])('%s', async (_name, ui) => {
296
362
  const { container } = withProvider(ui);
297
363
  expect(await axeViolations(container)).toEqual([]);
@@ -393,27 +459,18 @@ describe('브랜드 색 대비 — Link · Tab 램프', () => {
393
459
  expect(hover).toBeGreaterThan(resting);
394
460
  });
395
461
 
396
- // KNOWN (5.0 open question, needs designer sign-off): the BAZE guide's dark
397
- // `fg.linkHover` #8BB7E3 is 6.52:1 on bg.surface against the resting link's
398
- // 7.89:1 — the hover moves TOWARD the background. Both still clear 4.5:1 and
399
- // the underline thickens 1px → 2px, so the hover cue survives, but this is
400
- // the exact inversion this file was written to stop. `it.fails` keeps the
401
- // invariant on record: when the value is fixed this starts passing and fails
402
- // the suite, so flip it back to `it`.
403
- it.fails(
404
- 'hover 가 배경 반대쪽으로 간다 — 다크 (BAZE 가이드 값 확인 필요)',
405
- () => {
406
- const resting = contrast(
407
- resolve(LINK_RAMP.default, '_dark'),
408
- DARK_CANVAS
409
- );
410
- const hover = contrast(
411
- resolve(LINK_RAMP.defaultHover, '_dark'),
412
- DARK_CANVAS
413
- );
414
- expect(hover).toBeGreaterThan(resting);
415
- }
416
- );
462
+ // The BAZE guide's dark `fg.linkHover` #8BB7E3 went TOWARD the background
463
+ // (6.52:1 on bg.surface against the resting link's 7.89:1) and sat here as
464
+ // `it.fails`. Fixed by making the dark hover lighter than the resting link
465
+ // (#C5DEF8, 10.66:1 on bg.surface).
466
+ it('hover 가 배경 반대쪽으로 간다 — 다크', () => {
467
+ const resting = contrast(resolve(LINK_RAMP.default, '_dark'), DARK_CANVAS);
468
+ const hover = contrast(
469
+ resolve(LINK_RAMP.defaultHover, '_dark'),
470
+ DARK_CANVAS
471
+ );
472
+ expect(hover).toBeGreaterThan(resting);
473
+ });
417
474
 
418
475
  it('선택된 가로 탭의 레이블이 라이트·다크 양쪽에서 4.5:1 을 넘는다', () => {
419
476
  // Measured against the RAISED surface (bg.surface), not the page canvas:
@@ -249,6 +249,29 @@ const createSyntheticEvent = (
249
249
  };
250
250
  ```
251
251
 
252
+ ## Control sizes
253
+
254
+ Every control that takes `size` resolves it through **one** table,
255
+ `controlSizes` in `src/theme/controlSizes.ts` — height token, textStyle, icon
256
+ size, inline padding (action vs field ramp) and `CONTROL_RADIUS`. `Button` is
257
+ the reference. Recipe-driven controls get it from `src/theme/recipes/controls.ts`;
258
+ components with their own maps (SegmentedControl, interactive Tag, the date
259
+ pickers, MonthPicker) call `getControlSize(size)`.
260
+
261
+ - Never add a per-component height / font-size map. Read the scale.
262
+ - Control type must be the textStyle of the size, not a fixed `fontSize`:
263
+ inside a `ScaledContext` the sizes tokens are em and resolve against the
264
+ control's own type, so a different type means a different height.
265
+ - Overriding a Chakra **slot** recipe: pass the full anatomy
266
+ (`selectAnatomy.keys()` from `@chakra-ui/react/anatomy`), never a partial
267
+ `slots` list — Chakra merges arrays by index and drops slots.
268
+ - Keep `size` responsive (`ConditionalValue<…>`) where Chakra allowed it, and
269
+ resolve the scale per breakpoint — never collapse an object/array to `md`.
270
+ A composed sub-part with its own recipe type (e.g. `TagLabel` in an
271
+ interactive Tag) must inherit the control's type, not keep the badge's.
272
+ - `src/theme/controlSizes.test.ts` fails if a control stops resolving to the
273
+ scale; the Storybook page **Foundations / Control sizes** measures it live.
274
+
252
275
  ## Component Props Best Practices
253
276
 
254
277
  ### Default Values
@@ -348,7 +371,7 @@ When adding to `src/index.ts`, follow these categories:
348
371
 
349
372
  - **Core Components**: Button, Card, Badge, Tag
350
373
  - **Form Components**: Input, Select, Checkbox, Radio
351
- - **Navigation**: Breadcrumb, Pagination, Menu, Tabs
374
+ - **Navigation**: Breadcrumb, Pagination, Menu, Tabs, NavList
352
375
  - **Feedback**: Alert, Toast, Modal, Tooltip
353
376
  - **Data Display**: Table, Avatar, Typography, Code
354
377
  - **File Components**: FileInput, FileItem, FileList
@@ -4,7 +4,7 @@ import { join, relative } from 'node:path';
4
4
  import { describe, expect, it } from 'vitest';
5
5
 
6
6
  import { SYSTEM_HUE_NAMES } from '@/theme/colors';
7
- import { CORAL } from '@/theme/palette.generated';
7
+ import { CORAL, DATAVIZ } from '@/theme/palette.generated';
8
8
 
9
9
  /**
10
10
  * Components read ROLE tokens (`bg.*`, `fg.*`, `primary.*`, `category.*` …),
@@ -64,6 +64,7 @@ const TOKEN = new RegExp(
64
64
  `(?<![\\w.$-])(?:` +
65
65
  `(?:${alt(numeric)})\\.\\d+` +
66
66
  `|coral\\.(?:${alt(Object.keys(CORAL))})` +
67
+ `|dataviz\\.(?:${alt(Object.keys(DATAVIZ))})` +
67
68
  `|(?:${alt(SYSTEM_HUE_NAMES)})\\.(?:${alt(HUE_KEYS)})` +
68
69
  `)(?![\\w.])`,
69
70
  'g'
@@ -124,6 +125,7 @@ describe('components read no raw palette scales', () => {
124
125
  "'ink.12'",
125
126
  "'sandDark.3'",
126
127
  "'coral.base'",
128
+ "'dataviz.blueMid'",
127
129
  "'red.surface'",
128
130
  "'blue.hc'",
129
131
  "'blackAlpha.600'",
@@ -135,6 +137,8 @@ describe('components read no raw palette scales', () => {
135
137
  "'category.green.surface'",
136
138
  "'green'",
137
139
  "'fg.default'",
140
+ "'data.4'",
141
+ "'diverging.pos.3'",
138
142
  'theme.colors.gray.100',
139
143
  "'--chakra-colors-gray-100'",
140
144
  "'secondary.surface'",