@mindlogic-ai/logician-ui 5.0.0-alpha.1 → 5.0.0-alpha.10

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/dist/components/Avatar/Avatar.d.ts +68 -11
  2. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  3. package/dist/components/Avatar/Avatar.js +38 -5
  4. package/dist/components/Avatar/Avatar.js.map +1 -1
  5. package/dist/components/Avatar/Avatar.mjs +37 -5
  6. package/dist/components/Avatar/Avatar.mjs.map +1 -1
  7. package/dist/components/Avatar/index.d.ts +2 -2
  8. package/dist/components/Avatar/index.d.ts.map +1 -1
  9. package/dist/components/Badge/Badge.d.ts.map +1 -1
  10. package/dist/components/Badge/Badge.js +5 -3
  11. package/dist/components/Badge/Badge.js.map +1 -1
  12. package/dist/components/Badge/Badge.mjs +5 -3
  13. package/dist/components/Badge/Badge.mjs.map +1 -1
  14. package/dist/components/Badge/Badge.types.d.ts +7 -5
  15. package/dist/components/Badge/Badge.types.d.ts.map +1 -1
  16. package/dist/components/Banner/Banner.types.d.ts +24 -1
  17. package/dist/components/Banner/Banner.types.d.ts.map +1 -1
  18. package/dist/components/BottomSheet/BottomSheet.styles.d.ts +2 -2
  19. package/dist/components/Button/Button.d.ts.map +1 -1
  20. package/dist/components/Button/Button.js +10 -2
  21. package/dist/components/Button/Button.js.map +1 -1
  22. package/dist/components/Button/Button.mjs +10 -2
  23. package/dist/components/Button/Button.mjs.map +1 -1
  24. package/dist/components/Card/Card.types.d.ts +12 -0
  25. package/dist/components/Card/Card.types.d.ts.map +1 -1
  26. package/dist/components/ColorMode/ColorModeToggle.d.ts +7 -2
  27. package/dist/components/ColorMode/ColorModeToggle.d.ts.map +1 -1
  28. package/dist/components/ColorMode/ColorModeToggle.js +8 -3
  29. package/dist/components/ColorMode/ColorModeToggle.js.map +1 -1
  30. package/dist/components/ColorMode/ColorModeToggle.mjs +8 -3
  31. package/dist/components/ColorMode/ColorModeToggle.mjs.map +1 -1
  32. package/dist/components/Confetti/Confetti.types.d.ts +5 -1
  33. package/dist/components/Confetti/Confetti.types.d.ts.map +1 -1
  34. package/dist/components/Confetti/confettiColors.d.ts +5 -5
  35. package/dist/components/Confetti/confettiColors.js +5 -5
  36. package/dist/components/Confetti/confettiColors.mjs +5 -5
  37. package/dist/components/ErrorFallback/ErrorFallback.types.d.ts +6 -0
  38. package/dist/components/ErrorFallback/ErrorFallback.types.d.ts.map +1 -1
  39. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts +1 -1
  40. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts.map +1 -1
  41. package/dist/components/Form/FormModalFooter/FormModalFooter.js +2 -2
  42. package/dist/components/Form/FormModalFooter/FormModalFooter.js.map +1 -1
  43. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs +2 -2
  44. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs.map +1 -1
  45. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts +11 -1
  46. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts.map +1 -1
  47. package/dist/components/Form/FormSection/CollapsibleFormSection.js +1 -0
  48. package/dist/components/Form/FormSection/CollapsibleFormSection.js.map +1 -1
  49. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs +1 -0
  50. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs.map +1 -1
  51. package/dist/components/LineGraph/LineGraph.d.ts.map +1 -1
  52. package/dist/components/LineGraph/LineGraph.js +4 -5
  53. package/dist/components/LineGraph/LineGraph.js.map +1 -1
  54. package/dist/components/LineGraph/LineGraph.mjs +5 -6
  55. package/dist/components/LineGraph/LineGraph.mjs.map +1 -1
  56. package/dist/components/LineGraph/LineGraph.types.d.ts +12 -2
  57. package/dist/components/LineGraph/LineGraph.types.d.ts.map +1 -1
  58. package/dist/components/LineGraph/seriesColors.d.ts +12 -6
  59. package/dist/components/LineGraph/seriesColors.d.ts.map +1 -1
  60. package/dist/components/LineGraph/seriesColors.js +8 -7
  61. package/dist/components/LineGraph/seriesColors.js.map +1 -1
  62. package/dist/components/LineGraph/seriesColors.mjs +8 -7
  63. package/dist/components/LineGraph/seriesColors.mjs.map +1 -1
  64. package/dist/components/Masonry/Masonry.types.d.ts +8 -3
  65. package/dist/components/Masonry/Masonry.types.d.ts.map +1 -1
  66. package/dist/components/Menu/MenuItem.types.d.ts +8 -0
  67. package/dist/components/Menu/MenuItem.types.d.ts.map +1 -1
  68. package/dist/components/Modal/ModalCloseButton.d.ts +1 -1
  69. package/dist/components/Modal/ModalCloseButton.js +1 -1
  70. package/dist/components/Modal/ModalCloseButton.mjs +1 -1
  71. package/dist/components/Pagination/Pagination.d.ts +11 -10
  72. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  73. package/dist/components/Pagination/Pagination.js +11 -10
  74. package/dist/components/Pagination/Pagination.js.map +1 -1
  75. package/dist/components/Pagination/Pagination.mjs +11 -10
  76. package/dist/components/Pagination/Pagination.mjs.map +1 -1
  77. package/dist/components/ProgressBar/ProgressBar.types.d.ts +9 -0
  78. package/dist/components/ProgressBar/ProgressBar.types.d.ts.map +1 -1
  79. package/dist/components/RadialProgress/RadialProgress.types.d.ts +21 -1
  80. package/dist/components/RadialProgress/RadialProgress.types.d.ts.map +1 -1
  81. package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts +8 -0
  82. package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts.map +1 -1
  83. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  84. package/dist/components/SegmentedControl/SegmentedControl.js +6 -7
  85. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  86. package/dist/components/SegmentedControl/SegmentedControl.mjs +6 -7
  87. package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  88. package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts +2 -0
  89. package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts.map +1 -1
  90. package/dist/components/Select/Select.d.ts +5 -1
  91. package/dist/components/Select/Select.d.ts.map +1 -1
  92. package/dist/components/Select/Select.js +2 -2
  93. package/dist/components/Select/Select.js.map +1 -1
  94. package/dist/components/Select/Select.mjs +3 -3
  95. package/dist/components/Select/Select.mjs.map +1 -1
  96. package/dist/components/Select/Select.styles.d.ts +38 -0
  97. package/dist/components/Select/Select.styles.d.ts.map +1 -1
  98. package/dist/components/Select/Select.styles.js +35 -0
  99. package/dist/components/Select/Select.styles.js.map +1 -1
  100. package/dist/components/Select/Select.styles.mjs +35 -2
  101. package/dist/components/Select/Select.styles.mjs.map +1 -1
  102. package/dist/components/Select/Select.types.d.ts +10 -0
  103. package/dist/components/Select/Select.types.d.ts.map +1 -1
  104. package/dist/components/Select/SelectField.d.ts +1 -1
  105. package/dist/components/Select/SelectField.d.ts.map +1 -1
  106. package/dist/components/Select/SelectField.js +3 -2
  107. package/dist/components/Select/SelectField.js.map +1 -1
  108. package/dist/components/Select/SelectField.mjs +3 -2
  109. package/dist/components/Select/SelectField.mjs.map +1 -1
  110. package/dist/components/Select/index.d.ts +1 -0
  111. package/dist/components/Select/index.d.ts.map +1 -1
  112. package/dist/components/Toast/Toast.styles.d.ts +6 -2
  113. package/dist/components/Toast/Toast.styles.d.ts.map +1 -1
  114. package/dist/components/Toast/Toast.styles.js +18 -10
  115. package/dist/components/Toast/Toast.styles.js.map +1 -1
  116. package/dist/components/Toast/Toast.styles.mjs +18 -10
  117. package/dist/components/Toast/Toast.styles.mjs.map +1 -1
  118. package/dist/components/Typography/Caption.d.ts.map +1 -1
  119. package/dist/components/Typography/Caption.js +1 -1
  120. package/dist/components/Typography/Caption.js.map +1 -1
  121. package/dist/components/Typography/Caption.mjs +1 -1
  122. package/dist/components/Typography/Caption.mjs.map +1 -1
  123. package/dist/components/Typography/H1.d.ts.map +1 -1
  124. package/dist/components/Typography/H1.js +1 -1
  125. package/dist/components/Typography/H1.js.map +1 -1
  126. package/dist/components/Typography/H1.mjs +1 -1
  127. package/dist/components/Typography/H1.mjs.map +1 -1
  128. package/dist/components/Typography/H2.d.ts.map +1 -1
  129. package/dist/components/Typography/H2.js +1 -1
  130. package/dist/components/Typography/H2.js.map +1 -1
  131. package/dist/components/Typography/H2.mjs +1 -1
  132. package/dist/components/Typography/H2.mjs.map +1 -1
  133. package/dist/components/Typography/H3.d.ts.map +1 -1
  134. package/dist/components/Typography/H3.js +1 -1
  135. package/dist/components/Typography/H3.js.map +1 -1
  136. package/dist/components/Typography/H3.mjs +1 -1
  137. package/dist/components/Typography/H3.mjs.map +1 -1
  138. package/dist/components/Typography/H4.d.ts.map +1 -1
  139. package/dist/components/Typography/H4.js +1 -1
  140. package/dist/components/Typography/H4.js.map +1 -1
  141. package/dist/components/Typography/H4.mjs +1 -1
  142. package/dist/components/Typography/H4.mjs.map +1 -1
  143. package/dist/components/Typography/H5.d.ts.map +1 -1
  144. package/dist/components/Typography/H5.js +1 -1
  145. package/dist/components/Typography/H5.js.map +1 -1
  146. package/dist/components/Typography/H5.mjs +1 -1
  147. package/dist/components/Typography/H5.mjs.map +1 -1
  148. package/dist/components/Typography/Link.d.ts.map +1 -1
  149. package/dist/components/Typography/Link.js +1 -1
  150. package/dist/components/Typography/Link.js.map +1 -1
  151. package/dist/components/Typography/Link.mjs +1 -1
  152. package/dist/components/Typography/Link.mjs.map +1 -1
  153. package/dist/components/Typography/Overline.d.ts.map +1 -1
  154. package/dist/components/Typography/Overline.js +1 -1
  155. package/dist/components/Typography/Overline.js.map +1 -1
  156. package/dist/components/Typography/Overline.mjs +1 -1
  157. package/dist/components/Typography/Overline.mjs.map +1 -1
  158. package/dist/components/Typography/Subtext.d.ts.map +1 -1
  159. package/dist/components/Typography/Subtext.js +1 -1
  160. package/dist/components/Typography/Subtext.js.map +1 -1
  161. package/dist/components/Typography/Subtext.mjs +1 -1
  162. package/dist/components/Typography/Subtext.mjs.map +1 -1
  163. package/dist/components/Typography/Subtitle.d.ts.map +1 -1
  164. package/dist/components/Typography/Subtitle.js +1 -1
  165. package/dist/components/Typography/Subtitle.js.map +1 -1
  166. package/dist/components/Typography/Subtitle.mjs +1 -1
  167. package/dist/components/Typography/Subtitle.mjs.map +1 -1
  168. package/dist/components/Typography/Text.d.ts.map +1 -1
  169. package/dist/components/Typography/Text.js +1 -1
  170. package/dist/components/Typography/Text.js.map +1 -1
  171. package/dist/components/Typography/Text.mjs +1 -1
  172. package/dist/components/Typography/Text.mjs.map +1 -1
  173. package/dist/hooks/useLanguage.d.ts +5 -0
  174. package/dist/hooks/useLanguage.d.ts.map +1 -1
  175. package/dist/hooks/useLanguage.js +7 -3
  176. package/dist/hooks/useLanguage.js.map +1 -1
  177. package/dist/hooks/useLanguage.mjs +7 -4
  178. package/dist/hooks/useLanguage.mjs.map +1 -1
  179. package/dist/hooks/useTranslate.d.ts.map +1 -1
  180. package/dist/hooks/useTranslate.js +8 -5
  181. package/dist/hooks/useTranslate.js.map +1 -1
  182. package/dist/hooks/useTranslate.mjs +8 -5
  183. package/dist/hooks/useTranslate.mjs.map +1 -1
  184. package/dist/index.js +1 -0
  185. package/dist/index.js.map +1 -1
  186. package/dist/index.mjs +1 -1
  187. package/dist/theme/colors.d.ts +2 -2
  188. package/dist/theme/colors.d.ts.map +1 -1
  189. package/dist/theme/colors.js +36 -2
  190. package/dist/theme/colors.js.map +1 -1
  191. package/dist/theme/colors.mjs +37 -3
  192. package/dist/theme/colors.mjs.map +1 -1
  193. package/dist/theme/global.d.ts.map +1 -1
  194. package/dist/theme/global.js +18 -0
  195. package/dist/theme/global.js.map +1 -1
  196. package/dist/theme/global.mjs +18 -0
  197. package/dist/theme/global.mjs.map +1 -1
  198. package/dist/theme/index.d.ts.map +1 -1
  199. package/dist/theme/index.js +2 -0
  200. package/dist/theme/index.js.map +1 -1
  201. package/dist/theme/index.mjs +2 -0
  202. package/dist/theme/index.mjs.map +1 -1
  203. package/dist/theme/palette.generated.d.ts +98 -0
  204. package/dist/theme/palette.generated.d.ts.map +1 -1
  205. package/dist/theme/palette.generated.js +99 -0
  206. package/dist/theme/palette.generated.js.map +1 -1
  207. package/dist/theme/palette.generated.mjs +99 -1
  208. package/dist/theme/palette.generated.mjs.map +1 -1
  209. package/dist/theme/paletteSwatches.d.ts +20 -0
  210. package/dist/theme/paletteSwatches.d.ts.map +1 -1
  211. package/dist/theme/recipes/avatar.d.ts +30 -0
  212. package/dist/theme/recipes/avatar.d.ts.map +1 -0
  213. package/dist/theme/recipes/avatar.js +96 -0
  214. package/dist/theme/recipes/avatar.js.map +1 -0
  215. package/dist/theme/recipes/avatar.mjs +94 -0
  216. package/dist/theme/recipes/avatar.mjs.map +1 -0
  217. package/dist/translations/Defaults.translations.json.js +9 -0
  218. package/dist/translations/Defaults.translations.json.js.map +1 -1
  219. package/dist/translations/Defaults.translations.json.mjs +9 -1
  220. package/dist/translations/Defaults.translations.json.mjs.map +1 -1
  221. package/package.json +1 -1
  222. package/src/components/Accordion/Accordion.stories.tsx +85 -0
  223. package/src/components/Accordion/Accordion.usage.mdx +200 -0
  224. package/src/components/Appear/Appear.usage.mdx +107 -0
  225. package/src/components/Avatar/Avatar.recipe.test.tsx +171 -0
  226. package/src/components/Avatar/Avatar.stories.tsx +199 -24
  227. package/src/components/Avatar/Avatar.tsx +112 -21
  228. package/src/components/Avatar/Avatar.usage.mdx +185 -0
  229. package/src/components/Avatar/index.tsx +8 -1
  230. package/src/components/Badge/Badge.stories.tsx +193 -3
  231. package/src/components/Badge/Badge.tsx +5 -3
  232. package/src/components/Badge/Badge.types.ts +7 -5
  233. package/src/components/Badge/Badge.usage.mdx +265 -0
  234. package/src/components/Banner/Banner.stories.tsx +152 -2
  235. package/src/components/Banner/Banner.types.ts +30 -1
  236. package/src/components/Banner/Banner.usage.mdx +233 -0
  237. package/src/components/BottomSheet/BottomSheet.stories.tsx +168 -1
  238. package/src/components/BottomSheet/BottomSheet.test.tsx +2 -1
  239. package/src/components/BottomSheet/BottomSheet.usage.mdx +216 -0
  240. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +59 -0
  241. package/src/components/Breadcrumb/Breadcrumb.usage.mdx +181 -0
  242. package/src/components/Button/Button.stories.tsx +263 -3
  243. package/src/components/Button/Button.tsx +15 -2
  244. package/src/components/Button/Button.usage.mdx +342 -0
  245. package/src/components/Card/Card.stories.tsx +106 -0
  246. package/src/components/Card/Card.types.ts +12 -0
  247. package/src/components/Card/Card.usage.mdx +216 -0
  248. package/src/components/Checkbox/Checkbox.stories.tsx +140 -13
  249. package/src/components/Checkbox/Checkbox.usage.mdx +214 -0
  250. package/src/components/Chip/Chip.usage.mdx +78 -0
  251. package/src/components/Code/Code.stories.tsx +60 -0
  252. package/src/components/Code/Code.usage.mdx +187 -0
  253. package/src/components/CodeTabs/CodeTabs.stories.tsx +53 -0
  254. package/src/components/CodeTabs/CodeTabs.usage.mdx +176 -0
  255. package/src/components/Collapsible/Collapsible.stories.tsx +58 -0
  256. package/src/components/Collapsible/Collapsible.usage.mdx +173 -0
  257. package/src/components/ColorMode/ColorMode.stories.tsx +50 -0
  258. package/src/components/ColorMode/ColorMode.usage.mdx +135 -0
  259. package/src/components/ColorMode/ColorModeToggle.tsx +10 -3
  260. package/src/components/Confetti/Confetti.types.ts +5 -1
  261. package/src/components/Confetti/Confetti.usage.mdx +111 -0
  262. package/src/components/Confetti/confettiColors.ts +5 -5
  263. package/src/components/Container/Container.stories.tsx +32 -0
  264. package/src/components/Container/Container.usage.mdx +130 -0
  265. package/src/components/CopyableCode/CopyableCode.stories.tsx +62 -0
  266. package/src/components/CopyableCode/CopyableCode.usage.mdx +168 -0
  267. package/src/components/CountBadge/CountBadge.stories.tsx +69 -0
  268. package/src/components/CountBadge/CountBadge.usage.mdx +215 -0
  269. package/src/components/CountUp/CountUp.usage.mdx +107 -0
  270. package/src/components/DatePicker/DatePicker.usage.mdx +177 -0
  271. package/src/components/DatePicker/RangeDatePicker.stories.tsx +87 -3
  272. package/src/components/ErrorFallback/ErrorFallback.types.ts +6 -0
  273. package/src/components/ErrorFallback/ErrorFallback.usage.mdx +127 -0
  274. package/src/components/ExpandableText/ExpandableText.stories.tsx +55 -0
  275. package/src/components/ExpandableText/ExpandableText.usage.mdx +176 -0
  276. package/src/components/FileInput/FileInput.stories.tsx +38 -1
  277. package/src/components/FileInput/FileInput.usage.mdx +178 -0
  278. package/src/components/FileItem/FileItem.stories.tsx +71 -0
  279. package/src/components/FileItem/FileItem.usage.mdx +180 -0
  280. package/src/components/FileList/FileList.stories.tsx +25 -0
  281. package/src/components/FileList/FileList.usage.mdx +165 -0
  282. package/src/components/FlyTo/FlyTo.usage.mdx +99 -0
  283. package/src/components/Form/Form.stories.tsx +149 -0
  284. package/src/components/Form/Form.usage.mdx +203 -0
  285. package/src/components/Form/FormModalFooter/FormModalFooter.stories.tsx +1 -1
  286. package/src/components/Form/FormModalFooter/FormModalFooter.test.tsx +19 -1
  287. package/src/components/Form/FormModalFooter/FormModalFooter.tsx +2 -0
  288. package/src/components/Form/FormModalFooter/FormModalFooter.types.ts +11 -1
  289. package/src/components/FormControl/FormControl.stories.tsx +35 -0
  290. package/src/components/FormControl/FormControl.usage.mdx +128 -0
  291. package/src/components/FormIntegration/FormIntegration.usage.mdx +158 -0
  292. package/src/components/FormLabel/FormLabel.stories.tsx +71 -0
  293. package/src/components/FormLabel/FormLabel.usage.mdx +125 -0
  294. package/src/components/Icon/Icon.stories.tsx +61 -1
  295. package/src/components/Icon/Icon.usage.mdx +158 -0
  296. package/src/components/IconButton/IconButton.stories.tsx +209 -5
  297. package/src/components/IconButton/IconButton.usage.mdx +273 -0
  298. package/src/components/InfoSprinkle/InfoSprinkle.stories.tsx +77 -1
  299. package/src/components/InfoSprinkle/InfoSprinkle.usage.mdx +189 -0
  300. package/src/components/InlineCode/InlineCode.stories.tsx +75 -0
  301. package/src/components/InlineCode/InlineCode.usage.mdx +142 -0
  302. package/src/components/Input/Input.stories.tsx +180 -0
  303. package/src/components/Input/Input.usage.mdx +278 -0
  304. package/src/components/LineGraph/LineGraph.stories.tsx +112 -0
  305. package/src/components/LineGraph/LineGraph.tsx +4 -5
  306. package/src/components/LineGraph/LineGraph.types.ts +12 -2
  307. package/src/components/LineGraph/LineGraph.usage.mdx +186 -0
  308. package/src/components/LineGraph/seriesColors.test.ts +11 -10
  309. package/src/components/LineGraph/seriesColors.ts +18 -14
  310. package/src/components/Loaders/Loaders.stories.tsx +93 -0
  311. package/src/components/Loaders/Loaders.usage.mdx +180 -0
  312. package/src/components/LogicianProvider/LogicianProvider.usage.mdx +98 -0
  313. package/src/components/Markdown/Markdown.stories.tsx +53 -0
  314. package/src/components/Markdown/Markdown.usage.mdx +182 -0
  315. package/src/components/Masonry/Masonry.stories.tsx +63 -1
  316. package/src/components/Masonry/Masonry.types.ts +8 -3
  317. package/src/components/Masonry/Masonry.usage.mdx +142 -0
  318. package/src/components/MaxLengthIndicator/MaxLengthIndicator.stories.tsx +57 -0
  319. package/src/components/MaxLengthIndicator/MaxLengthIndicator.usage.mdx +125 -0
  320. package/src/components/Menu/Menu.stories.tsx +146 -2
  321. package/src/components/Menu/Menu.usage.mdx +230 -0
  322. package/src/components/Menu/MenuItem.types.ts +8 -0
  323. package/src/components/Modal/Modal.stories.tsx +177 -1
  324. package/src/components/Modal/Modal.usage.mdx +262 -0
  325. package/src/components/Modal/ModalCloseButton.tsx +1 -1
  326. package/src/components/MonthPicker/MonthPicker.stories.tsx +30 -0
  327. package/src/components/MonthPicker/MonthPicker.usage.mdx +191 -0
  328. package/src/components/Pagination/Pagination.stories.tsx +90 -1
  329. package/src/components/Pagination/Pagination.tsx +11 -10
  330. package/src/components/Pagination/Pagination.usage.mdx +186 -0
  331. package/src/components/PasswordInput/PasswordInput.stories.tsx +51 -0
  332. package/src/components/PasswordInput/PasswordInput.usage.mdx +193 -0
  333. package/src/components/PinInput/PinInput.stories.tsx +91 -0
  334. package/src/components/PinInput/PinInput.usage.mdx +194 -0
  335. package/src/components/Popover/Popover.stories.tsx +104 -1
  336. package/src/components/Popover/Popover.usage.mdx +197 -0
  337. package/src/components/ProgressBar/ProgressBar.stories.tsx +92 -1
  338. package/src/components/ProgressBar/ProgressBar.types.ts +9 -0
  339. package/src/components/ProgressBar/ProgressBar.usage.mdx +210 -0
  340. package/src/components/Pulse/Pulse.usage.mdx +102 -0
  341. package/src/components/RadialProgress/RadialProgress.stories.tsx +74 -1
  342. package/src/components/RadialProgress/RadialProgress.types.ts +21 -1
  343. package/src/components/RadialProgress/RadialProgress.usage.mdx +153 -0
  344. package/src/components/Radio/Radio.stories.tsx +119 -0
  345. package/src/components/Radio/Radio.usage.mdx +187 -0
  346. package/src/components/Reveal/Reveal.usage.mdx +105 -0
  347. package/src/components/ScaledContext/ScaledContext.usage.mdx +111 -0
  348. package/src/components/SeeMoreButton/SeeMoreButton.stories.tsx +146 -2
  349. package/src/components/SeeMoreButton/SeeMoreButton.types.ts +8 -0
  350. package/src/components/SeeMoreButton/SeeMoreButton.usage.mdx +213 -0
  351. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +69 -0
  352. package/src/components/SegmentedControl/SegmentedControl.tsx +6 -7
  353. package/src/components/SegmentedControl/SegmentedControl.usage.mdx +209 -0
  354. package/src/components/SegmentedProgressBar/SegmentedProgressBar.stories.tsx +54 -0
  355. package/src/components/SegmentedProgressBar/SegmentedProgressBar.types.ts +2 -0
  356. package/src/components/SegmentedProgressBar/SegmentedProgressBar.usage.mdx +145 -0
  357. package/src/components/Select/Comparison.stories.tsx +19 -0
  358. package/src/components/Select/Select.stories.tsx +264 -1
  359. package/src/components/Select/Select.styles.ts +36 -1
  360. package/src/components/Select/Select.tsx +13 -3
  361. package/src/components/Select/Select.types.ts +11 -0
  362. package/src/components/Select/Select.usage.mdx +278 -0
  363. package/src/components/Select/SelectField.tsx +7 -3
  364. package/src/components/Select/index.ts +1 -0
  365. package/src/components/Shake/Shake.usage.mdx +107 -0
  366. package/src/components/Slider/Slider.stories.tsx +116 -0
  367. package/src/components/Slider/Slider.usage.mdx +179 -0
  368. package/src/components/Spinner/Spinner.stories.tsx +64 -0
  369. package/src/components/Spinner/Spinner.usage.mdx +136 -0
  370. package/src/components/SwapTransition/SwapTransition.usage.mdx +102 -0
  371. package/src/components/Switch/Switch.stories.tsx +131 -6
  372. package/src/components/Switch/Switch.usage.mdx +199 -0
  373. package/src/components/Table/Table.stories.tsx +159 -1
  374. package/src/components/Table/Table.usage.mdx +235 -0
  375. package/src/components/Tabs/Tabs.stories.tsx +86 -0
  376. package/src/components/Tabs/Tabs.usage.mdx +219 -0
  377. package/src/components/Tag/Tag.stories.tsx +181 -4
  378. package/src/components/Tag/Tag.usage.mdx +257 -0
  379. package/src/components/Textarea/Textarea.stories.tsx +113 -0
  380. package/src/components/Textarea/Textarea.usage.mdx +186 -0
  381. package/src/components/Toast/Toast.stories.tsx +185 -3
  382. package/src/components/Toast/Toast.styles.ts +18 -10
  383. package/src/components/Toast/Toast.usage.mdx +265 -0
  384. package/src/components/Tooltip/Tooltip.stories.tsx +86 -1
  385. package/src/components/Tooltip/Tooltip.usage.mdx +211 -0
  386. package/src/components/Tree/Tree.stories.tsx +89 -0
  387. package/src/components/Tree/Tree.usage.mdx +207 -0
  388. package/src/components/Typography/Caption.tsx +0 -1
  389. package/src/components/Typography/H1.tsx +0 -1
  390. package/src/components/Typography/H2.tsx +0 -1
  391. package/src/components/Typography/H3.tsx +0 -1
  392. package/src/components/Typography/H4.tsx +0 -1
  393. package/src/components/Typography/H5.tsx +0 -1
  394. package/src/components/Typography/Link.tsx +0 -1
  395. package/src/components/Typography/Overline.tsx +0 -1
  396. package/src/components/Typography/Subtext.tsx +0 -1
  397. package/src/components/Typography/Subtitle.tsx +0 -1
  398. package/src/components/Typography/Text.tsx +0 -1
  399. package/src/components/Typography/Typography.stories.tsx +117 -0
  400. package/src/components/Typography/Typography.usage.mdx +257 -0
  401. package/src/components/Workflow/Workflow.usage.mdx +199 -0
  402. package/src/components/noRawScales.test.ts +5 -1
  403. package/src/foundations/BrandAssets.mdx +637 -0
  404. package/src/foundations/BrandAssets.stories.tsx +680 -0
  405. package/src/foundations/BrandColour.mdx +364 -0
  406. package/src/foundations/BrandColour.stories.tsx +334 -0
  407. package/src/guidelines/ComponentPageTemplate.mdx +84 -0
  408. package/src/guidelines/FeedbackActions.mdx +162 -23
  409. package/src/guidelines/_components/Lang.tsx +175 -0
  410. package/src/guidelines/_components/TokenTable.tsx +136 -0
  411. package/src/hooks/useLanguage.ts +8 -3
  412. package/src/hooks/useTranslate.test.tsx +46 -0
  413. package/src/hooks/useTranslate.ts +7 -5
  414. package/src/theme/BazePalette.stories.tsx +111 -1
  415. package/src/theme/Palette.stories.tsx +2 -2
  416. package/src/theme/SemanticTokens.mdx +86 -1
  417. package/src/theme/claude.md +16 -7
  418. package/src/theme/colors.ts +51 -6
  419. package/src/theme/contrast.test.ts +55 -0
  420. package/src/theme/global.ts +19 -0
  421. package/src/theme/index.ts +2 -0
  422. package/src/theme/palette.generated.ts +99 -0
  423. package/src/theme/paletteSwatches.ts +35 -0
  424. package/src/theme/recipes/avatar.ts +92 -0
  425. package/src/translations/Defaults.translations.json +7 -0
@@ -2,7 +2,10 @@ import { useState } from 'react';
2
2
  import { Button, CloseButton, Heading, Text } from '@chakra-ui/react';
3
3
  import type { Meta, StoryObj } from '@storybook/react';
4
4
 
5
+ import { T } from '../../guidelines/_components/Lang';
6
+ import { TokenTable } from '../../guidelines/_components/TokenTable';
5
7
  import { Tab } from '@/components/Tabs/Tab/Tab';
8
+ import { TAB_RAMP } from '@/components/Tabs/Tab/Tab.styles';
6
9
  import { TabList } from '@/components/Tabs/TabList';
7
10
  import { TabPanel } from '@/components/Tabs/TabPanel';
8
11
  import { TabPanels } from '@/components/Tabs/TabPanels';
@@ -260,3 +263,86 @@ export const DynamicTabs: Story = {
260
263
  );
261
264
  },
262
265
  };
266
+
267
+ // ───────────────────────── Usage-page specimens ─────────────────────────
268
+ // Pulled into `Tabs.usage.mdx` with <Canvas of={…} />. Hidden from the
269
+ // sidebar (`!dev`).
270
+
271
+ export const DoSectionsOfOnePlace: Story = {
272
+ tags: ['!dev'],
273
+ parameters: { layout: 'padded' },
274
+ name: 'Usage / Do: sections of one place, with a named list',
275
+ render: () => (
276
+ <Tabs defaultValue="credit">
277
+ <TabList aria-label="그룹 설정">
278
+ <Tab value="credit">크레딧</Tab>
279
+ <Tab value="security">보안</Tab>
280
+ <Tab value="notice">공지</Tab>
281
+ </TabList>
282
+ <TabPanel value="credit" pt={4}>
283
+ <Text>이 그룹의 월간 크레딧 한도와 사용량입니다.</Text>
284
+ </TabPanel>
285
+ <TabPanel value="security" pt={4}>
286
+ <Text>로그인과 파일 업로드 정책입니다.</Text>
287
+ </TabPanel>
288
+ <TabPanel value="notice" pt={4}>
289
+ <Text>이 그룹에만 보이는 공지입니다.</Text>
290
+ </TabPanel>
291
+ </Tabs>
292
+ ),
293
+ };
294
+
295
+ export const DontTabsAsSteps: Story = {
296
+ tags: ['!dev'],
297
+ parameters: { layout: 'padded' },
298
+ name: "Usage / Don't: tabs as the steps of a flow",
299
+ render: () => (
300
+ <Tabs defaultValue="step1">
301
+ <TabList>
302
+ <Tab value="step1">1. 기본 정보</Tab>
303
+ <Tab value="step2">2. 모델 선택</Tab>
304
+ <Tab value="step3">3. 확인</Tab>
305
+ </TabList>
306
+ <TabPanel value="step1" pt={4}>
307
+ <Text>이름과 설명을 입력하세요.</Text>
308
+ </TabPanel>
309
+ <TabPanel value="step2" pt={4}>
310
+ <Text>모델을 고르세요.</Text>
311
+ </TabPanel>
312
+ <TabPanel value="step3" pt={4}>
313
+ <Text>입력한 내용을 확인하세요.</Text>
314
+ </TabPanel>
315
+ </Tabs>
316
+ ),
317
+ };
318
+
319
+ /** Tokens a tab reads: the selected ramp from `TAB_RAMP` in `Tab.styles.ts`, the rest from `Tab.tsx` and `TabList.tsx`. */
320
+ export const UsageTokens: Story = {
321
+ tags: ['!dev'],
322
+ parameters: { layout: 'padded' },
323
+ name: 'Usage / Tokens',
324
+ render: () => (
325
+ <TokenTable
326
+ rows={[
327
+ {
328
+ token: TAB_RAMP.label,
329
+ use: <T en="Selected tab · label" ko="선택된 탭 · 글자" />,
330
+ },
331
+ {
332
+ token: TAB_RAMP.indicator,
333
+ use: <T en="Selected tab · indicator" ko="선택된 탭 · 표시 막대" />,
334
+ },
335
+ {
336
+ token: 'fg.muted',
337
+ use: <T en="Other tabs · label" ko="다른 탭 · 글자" />,
338
+ },
339
+ { token: 'primary.wash', use: <T en="Hover" ko="마우스 올림" /> },
340
+ {
341
+ token: 'bg.muted',
342
+ use: <T en="Vertical · selected fill" ko="세로 탭 · 선택 배경" />,
343
+ },
344
+ { token: 'border.subtle', use: <T en="List rule" ko="목록 아래 선" /> },
345
+ ]}
346
+ />
347
+ ),
348
+ };
@@ -0,0 +1,219 @@
1
+ import { ArgTypes, Canvas, Meta } from '@storybook/blocks';
2
+
3
+ import { En, Ko, LangToggle, Verdict } from '../../guidelines/_components/Lang';
4
+ import * as TabsStories from './Tabs.stories';
5
+
6
+ <Meta of={TabsStories} name="Usage" />
7
+
8
+ <LangToggle />
9
+
10
+ <En>
11
+
12
+ # Tabs
13
+
14
+ A row (or column) of labels that switches between sections of the same place.
15
+ One section shows at a time.
16
+
17
+ ## When to use
18
+
19
+ - To split one object's settings or data into sections: a group's 크레딧,
20
+ 보안 and 공지; a chatbot's 설정 and 분석.
21
+ - To switch between dashboards of the same scope, such as usage by model and
22
+ usage by user.
23
+ - For a long settings page in a side panel, with `orientation="vertical"`.
24
+
25
+ ## When not to use
26
+
27
+ - To change how the same content is shown, or to filter it (일/주/월, 목록/카드)
28
+ → `SegmentedControl`. Tabs change *what* you are looking at, not how.
29
+ - For the steps of a flow the user must complete in order → a stepper or a
30
+ sequence of pages. Tabs let the user jump ahead.
31
+ - To move to another page of the app → navigation links or `Breadcrumb`.
32
+ - For two or three short panels the user needs side by side → show them on
33
+ the page.
34
+
35
+ ## Variants and what they mean
36
+
37
+ Tabs has one look. A selected tab is a *place*, not a value, so it is marked
38
+ with ink and weight, not with a brand or status colour. `orientation` decides
39
+ the layout:
40
+
41
+ </En>
42
+
43
+ <Ko>
44
+
45
+ # Tabs
46
+
47
+ 같은 곳의 여러 구역을 오가게 하는 라벨 한 줄(또는 한 열)입니다. 한 번에 한 구역만
48
+ 보입니다.
49
+
50
+ ## 언제 쓰나요
51
+
52
+ - 한 대상의 설정이나 데이터를 구역으로 나눌 때: 그룹의 크레딧·보안·공지, 챗봇의 설정·분석.
53
+ - 같은 범위의 대시보드 여러 개를 오갈 때: 모델별 사용량, 사용자별 사용량.
54
+ - 사이드 패널의 긴 설정 화면을 나눌 때는 `orientation="vertical"`을 씁니다.
55
+
56
+ ## 언제 쓰지 않나요
57
+
58
+ - 같은 내용을 보는 방식을 바꾸거나 거를 때(일/주/월, 목록/카드)는 `SegmentedControl`을
59
+ 씁니다. 탭은 무엇을 보는지를 바꾸고, 어떻게 보는지를 바꾸지 않습니다.
60
+ - 차례대로 끝내야 하는 흐름의 단계에는 단계 표시나 이어지는 페이지를 씁니다. 탭은 사용자가
61
+ 단계를 건너뛰게 둡니다.
62
+ - 앱의 다른 페이지로 옮겨 가는 것은 내비게이션 링크나 `Breadcrumb`가 맡습니다.
63
+ - 나란히 봐야 하는 짧은 패널 두세 개는 탭에 숨기지 말고 페이지에 그대로 보입니다.
64
+
65
+ ## 변형과 뜻
66
+
67
+ Tabs의 모양은 하나입니다. 선택된 탭은 값이 아니라 지금 있는 곳이므로, 브랜드색이나
68
+ 상태색이 아니라 진한 글자와 굵기로 표시합니다. 배치는 `orientation`이 정합니다.
69
+
70
+ </Ko>
71
+
72
+ <ArgTypes of={TabsStories} include={['orientation', 'defaultValue', 'value', 'activationMode']} />
73
+
74
+ <En>
75
+
76
+ | `orientation` | Selected tab | Use for |
77
+ | --- | --- | --- |
78
+ | `horizontal` (default) | `fg.emphasized` label, semibold, with a 2px `primary.main` underline | Sections across the top of a page or panel |
79
+ | `vertical` | `bg.muted` fill, bold, with a 2px `primary.main` bar on the leading edge | A long settings page in a narrow side column |
80
+
81
+ ## Do / Don't
82
+
83
+ </En>
84
+
85
+ <Ko>
86
+
87
+ | `orientation` | 선택된 탭 | 쓰는 곳 |
88
+ | --- | --- | --- |
89
+ | `horizontal` (기본) | `fg.emphasized` 글자를 semibold로 쓰고 아래에 2px `primary.main` 밑줄 | 페이지나 패널 위쪽의 구역 |
90
+ | `vertical` | `bg.muted` 배경에 bold, 앞쪽 가장자리에 2px `primary.main` 막대 | 좁은 옆 열에 둔 긴 설정 화면 |
91
+
92
+ ## 이렇게 하세요 / 이렇게 하지 마세요
93
+
94
+ </Ko>
95
+
96
+ <Canvas of={TabsStories.DoSectionsOfOnePlace} />
97
+ <Verdict
98
+ kind="do"
99
+ en="Use short nouns for sections of one place, and name the list with aria-label ('그룹 설정')."
100
+ ko="한 곳의 구역에는 짧은 명사를 쓰고, 탭 목록에 aria-label('그룹 설정')로 이름을 붙입니다."
101
+ />
102
+
103
+ <Canvas of={TabsStories.DontTabsAsSteps} />
104
+ <Verdict
105
+ kind="dont"
106
+ en="Number tabs as the steps of a flow. Nothing stops the user from opening step 3 first."
107
+ ko="탭에 번호를 붙여 흐름의 단계로 쓰지 마세요. 사용자가 3단계를 먼저 열어도 막을 방법이 없습니다."
108
+ />
109
+
110
+ <En>
111
+
112
+ ## Content
113
+
114
+ - One or two words, a noun: "크레딧", "보안", "사용자별". No full stop and no
115
+ icons alone.
116
+ - Keep labels the same length class; one long label next to short ones reads as
117
+ a different kind of tab.
118
+ - Stay under about six horizontal tabs. More than that, use `vertical` or split
119
+ the page.
120
+ - Do not put a count in the label unless it changes what the user does next.
121
+
122
+ ## Accessibility
123
+
124
+ What Tabs does for you:
125
+
126
+ - `TabList` is `role="tablist"`, each `Tab` is `role="tab"` with
127
+ `aria-selected`, and each `TabPanel` is `role="tabpanel"` labelled by its tab
128
+ (WCAG 4.1.2).
129
+ - Keyboard (WCAG 2.1.1): `Tab` lands on the selected tab and then moves on; the
130
+ arrow keys move between tabs and wrap at the ends, `Home` / `End` jump to the
131
+ first and last. With the default `activationMode="automatic"` the panel
132
+ changes as focus moves.
133
+ - Each `Tab` is a `Button`, so it shows the focus ring (WCAG 2.4.7). The
134
+ selected label is `fg.emphasized`, at least 13:1 on every surface it can land
135
+ on (WCAG 1.4.3), and the underline is a second cue beside weight (WCAG
136
+ 1.4.1).
137
+
138
+ What you still have to do:
139
+
140
+ - **Name the list.** Pass `aria-label` to `TabList` when there is no visible
141
+ heading right above it, or `aria-labelledby` pointing at the heading.
142
+ - Give every `Tab` and `TabPanel` the same `value`. Both throw without one.
143
+ - Put only phrasing content inside a `Tab`: it renders a `<button>`, so no
144
+ `<div>` or `<p>` inside (KWCAG 5.4.1.1, see `ACCESSIBILITY.md`).
145
+ - If switching a panel is slow (it fetches data), use
146
+ `activationMode="manual"` so arrowing across the list does not fire a request
147
+ per tab.
148
+
149
+ ## Tokens
150
+
151
+ The selected ramp is `TAB_RAMP` in `Tab.styles.ts`; the other tokens are set in
152
+ `Tab.tsx` and `TabList.tsx`.
153
+
154
+ </En>
155
+
156
+ <Ko>
157
+
158
+ ## 문구
159
+
160
+ - 한두 단어의 명사로 씁니다. "크레딧", "보안", "사용자별". 마침표를 찍지 않고, 아이콘만
161
+ 두지 않습니다.
162
+ - 라벨 길이를 비슷하게 맞춥니다. 짧은 라벨 사이의 긴 라벨 하나는 다른 종류의 탭처럼
163
+ 보입니다.
164
+ - 가로 탭은 여섯 개 안쪽으로 둡니다. 더 많으면 `vertical`을 쓰거나 페이지를 나눕니다.
165
+ - 다음 행동을 바꾸는 경우가 아니면 라벨에 개수를 넣지 않습니다.
166
+
167
+ ## 접근성
168
+
169
+ Tabs가 알아서 하는 일
170
+
171
+ - `TabList`는 `role="tablist"`, 각 `Tab`은 `aria-selected`가 붙은 `role="tab"`, 각
172
+ `TabPanel`은 자기 탭으로 이름이 붙는 `role="tabpanel"`입니다(WCAG 4.1.2).
173
+ - 키보드(WCAG 2.1.1): `Tab`을 누르면 선택된 탭에 닿고, 한 번 더 누르면 목록을 벗어납니다. 방향키로 탭 사이를
174
+ 옮기고 끝에서는 처음으로 돌아가며, `Home`/`End`로 처음과 끝으로 갑니다. 기본값인
175
+ `activationMode="automatic"`에서는 초점이 옮겨 가면 패널도 바뀝니다.
176
+ - 각 `Tab`은 `Button`이라 초점 테두리가 보입니다(WCAG 2.4.7). 선택된 글자는
177
+ `fg.emphasized`로, 놓일 수 있는 어느 면에서도 13:1 이상입니다(WCAG 1.4.3). 굵기 말고도
178
+ 밑줄이 한 번 더 알려 줍니다(WCAG 1.4.1).
179
+
180
+ 직접 챙겨야 하는 일
181
+
182
+ - **탭 목록에 이름을 붙입니다.** 바로 위에 보이는 제목이 없다면 `TabList`에
183
+ `aria-label`을, 제목이 있다면 그 제목을 가리키는 `aria-labelledby`를 넘깁니다.
184
+ - 모든 `Tab`과 `TabPanel`에 짝이 맞는 `value`를 줍니다. 없으면 둘 다 오류를 냅니다.
185
+ - `Tab` 안에는 phrasing content만 넣습니다. `<button>`으로 그려지므로 안에 `<div>`나
186
+ `<p>`를 넣지 않습니다(KWCAG 5.4.1.1, `ACCESSIBILITY.md` 참고).
187
+ - 패널을 바꿀 때 데이터를 불러와 느리다면 `activationMode="manual"`을 씁니다. 그래야
188
+ 방향키로 탭을 훑을 때마다 요청이 나가지 않습니다.
189
+
190
+ ## 토큰
191
+
192
+ 선택 상태의 색은 `Tab.styles.ts`의 `TAB_RAMP`에서, 나머지 토큰은 `Tab.tsx`와
193
+ `TabList.tsx`에서 정합니다.
194
+
195
+ </Ko>
196
+
197
+ <Canvas of={TabsStories.UsageTokens} sourceState="none" />
198
+
199
+ <En>
200
+
201
+ ## Related
202
+
203
+ - **SegmentedControl**: change how the same content is shown.
204
+ - **Breadcrumb**: where this page sits in a hierarchy.
205
+ - **Foundations/Brand & colour usage**: why a selected place is ink, not
206
+ colour.
207
+
208
+ </En>
209
+
210
+ <Ko>
211
+
212
+ ## 관련 컴포넌트
213
+
214
+ - **SegmentedControl**: 같은 내용을 보는 방식 바꾸기.
215
+ - **Breadcrumb**: 이 페이지가 계층의 어디에 있는지.
216
+ - **Foundations/Brand & colour usage**: 선택된 곳을 색이 아니라 진한 글자로 표시하는
217
+ 이유.
218
+
219
+ </Ko>
@@ -3,8 +3,11 @@ import { Box, Flex, Text, VStack } from '@chakra-ui/react';
3
3
  import { Meta, StoryObj } from '@storybook/react';
4
4
 
5
5
  import { SYSTEM_HUE_NAMES } from '@/theme/colors';
6
+ import { disabledControl } from '@/utils/disabledControl';
6
7
 
7
- import { Tag, tagTones } from '.';
8
+ import { T } from '../../guidelines/_components/Lang';
9
+ import { TokenTable } from '../../guidelines/_components/TokenTable';
10
+ import { getTagStyles, Tag, tagTones, tagToneStyles } from '.';
8
11
  import { TagCloseButton } from './TagCloseButton';
9
12
 
10
13
  const meta = {
@@ -17,16 +20,19 @@ const meta = {
17
20
  tone: {
18
21
  control: 'select',
19
22
  options: tagTones,
20
- description: 'Colour role; `neutral` (grey wash) is the default',
23
+ description:
24
+ '`neutral` (default): a plain label. `success` / `warning` / `danger` / `info`: only when the tag reports a status every reader shares. Ignored while `selected` or `category` is set.',
21
25
  },
22
26
  selected: {
23
27
  control: 'boolean',
24
- description: 'Filter-chip "on" state (black fill)',
28
+ description:
29
+ 'Filter-chip "on" state (black fill). Passing it, true or false, makes the tag a toggle; with `as="button"` it sets `aria-pressed`.',
25
30
  },
26
31
  category: {
27
32
  control: 'select',
28
33
  options: [undefined, ...SYSTEM_HUE_NAMES],
29
- description: 'Decorative category hue (no status meaning)',
34
+ description:
35
+ 'One of twelve category hues. Classifies only: no status meaning. Wins over `tone`.',
30
36
  },
31
37
  disabled: { control: 'boolean' },
32
38
  },
@@ -180,3 +186,174 @@ export const UseCases: Story = {
180
186
  </VStack>
181
187
  ),
182
188
  };
189
+
190
+ // ───────────────────────── Usage-page specimens ─────────────────────────
191
+ // Pulled into `Tag.usage.mdx` with <Canvas of={…} />. Hidden from the sidebar
192
+ // (`!dev`); `tags` is written on each story because the indexer reads CSF
193
+ // statically.
194
+
195
+ const TOPICS = [
196
+ { label: '연구', hue: 'blue' },
197
+ { label: '수업', hue: 'purple' },
198
+ { label: '행정', hue: 'brown' },
199
+ ] as const;
200
+
201
+ export const DoCategoryForTopics: Story = {
202
+ tags: ['!dev'],
203
+ parameters: { layout: 'padded' },
204
+ name: 'Usage / Do: category hues for topics',
205
+ render: () => (
206
+ <Flex gap={2} wrap="wrap">
207
+ {TOPICS.map(({ label, hue }) => (
208
+ <Tag key={label} category={hue} icon="#">
209
+ {label}
210
+ </Tag>
211
+ ))}
212
+ </Flex>
213
+ ),
214
+ };
215
+
216
+ export const DontToneForTopics: Story = {
217
+ tags: ['!dev'],
218
+ parameters: { layout: 'padded' },
219
+ name: "Usage / Don't: status tones for topics",
220
+ render: () => (
221
+ <Flex gap={2} wrap="wrap">
222
+ <Tag tone="success">연구</Tag>
223
+ <Tag tone="danger">수업</Tag>
224
+ <Tag tone="warning">행정</Tag>
225
+ </Flex>
226
+ ),
227
+ };
228
+
229
+ export const DoFilterToggle: Story = {
230
+ tags: ['!dev'],
231
+ parameters: { layout: 'padded' },
232
+ name: 'Usage / Do: filter chips as buttons with `selected`',
233
+ render: function DoFilterToggleStory() {
234
+ const [on, setOn] = useState('전체');
235
+ return (
236
+ <Flex gap={2} wrap="wrap" role="group" aria-label="파일 종류">
237
+ {['전체', '이미지', '문서', '코드'].map((name) => (
238
+ <Tag
239
+ key={name}
240
+ as="button"
241
+ selected={on === name}
242
+ onClick={() => setOn(name)}
243
+ >
244
+ {name}
245
+ </Tag>
246
+ ))}
247
+ </Flex>
248
+ );
249
+ },
250
+ };
251
+
252
+ export const DoRemovableWithName: Story = {
253
+ tags: ['!dev'],
254
+ parameters: { layout: 'padded' },
255
+ name: 'Usage / Do: a remove button with its own name',
256
+ render: function DoRemovableStory() {
257
+ const [items, setItems] = useState(['마케팅팀', '영업팀', '개발팀']);
258
+ return (
259
+ <Flex gap={2} wrap="wrap">
260
+ {items.map((item) => (
261
+ <Tag key={item}>
262
+ {item}
263
+ <TagCloseButton
264
+ type="button"
265
+ aria-label={`${item} 삭제`}
266
+ onClick={() => setItems((prev) => prev.filter((i) => i !== item))}
267
+ />
268
+ </Tag>
269
+ ))}
270
+ </Flex>
271
+ );
272
+ },
273
+ };
274
+
275
+ export const DontSelectedForStatus: Story = {
276
+ tags: ['!dev'],
277
+ parameters: { layout: 'padded' },
278
+ name: "Usage / Don't: `selected` to mark a status",
279
+ render: () => (
280
+ <Flex gap={2} wrap="wrap" align="center">
281
+ <Text fontSize="sm">보고서 초안</Text>
282
+ <Tag selected>게시됨</Tag>
283
+ </Flex>
284
+ ),
285
+ };
286
+
287
+ /** Tokens each tone and state reads, from `Tag.styles.ts` and the theme. */
288
+ export const UsageTokens: Story = {
289
+ tags: ['!dev'],
290
+ parameters: { layout: 'padded' },
291
+ name: 'Usage / Tokens',
292
+ render: () => {
293
+ const selected = getTagStyles({ selected: true });
294
+ const category = getTagStyles({ category: 'blue' });
295
+ return (
296
+ <TokenTable
297
+ rows={[
298
+ ...tagTones.flatMap((tone) => [
299
+ {
300
+ token: tagToneStyles[tone].bgColor,
301
+ use: <T en={`${tone} · background`} ko={`${tone} · 배경`} />,
302
+ },
303
+ {
304
+ token: tagToneStyles[tone].color,
305
+ use: <T en={`${tone} · text`} ko={`${tone} · 글자`} />,
306
+ },
307
+ {
308
+ token: tagToneStyles[tone].hoverBorder,
309
+ use: (
310
+ <T
311
+ en={`${tone} · hover border (interactive)`}
312
+ ko={`${tone} · 호버 테두리(누를 수 있을 때)`}
313
+ />
314
+ ),
315
+ },
316
+ ]),
317
+ {
318
+ token: selected.bgColor as string,
319
+ use: <T en="selected · background" ko="selected · 배경" />,
320
+ },
321
+ {
322
+ token: selected.color as string,
323
+ use: <T en="selected · text" ko="selected · 글자" />,
324
+ },
325
+ {
326
+ token: category.bgColor as string,
327
+ use: (
328
+ <T
329
+ en="category (blue shown) · background"
330
+ ko="category(예: blue) · 배경"
331
+ />
332
+ ),
333
+ },
334
+ {
335
+ token: 'category.blue.fg',
336
+ use: (
337
+ <T
338
+ en="category (blue shown) · icon mark"
339
+ ko="category(예: blue) · 앞쪽 표시"
340
+ />
341
+ ),
342
+ },
343
+ {
344
+ token: category.color as string,
345
+ use: <T en="category · text" ko="category · 글자" />,
346
+ },
347
+ {
348
+ token: disabledControl.bg,
349
+ use: <T en="disabled · background" ko="disabled · 배경" />,
350
+ },
351
+ {
352
+ token: disabledControl.color,
353
+ use: <T en="disabled · text" ko="disabled · 글자" />,
354
+ },
355
+ ]}
356
+ />
357
+ );
358
+ },
359
+ };