@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
@@ -12,7 +12,15 @@ export type SeeMoreButtonOwnProps = Omit<
12
12
  ButtonOwnProps,
13
13
  'variant' | 'isDestructive'
14
14
  > & {
15
+ /**
16
+ * How many items the list shows now. Printed as the first number of
17
+ * `더보기 (currentCount/maxCount)`.
18
+ */
15
19
  currentCount: number;
20
+ /**
21
+ * How many items there are in total. The button does not disable or hide
22
+ * itself when `currentCount` reaches this; the caller does.
23
+ */
16
24
  maxCount: number;
17
25
  };
18
26
 
@@ -0,0 +1,213 @@
1
+ import { ArgTypes, Canvas, Meta } from '@storybook/blocks';
2
+
3
+ import { En, Ko, LangToggle, Verdict } from '../../guidelines/_components/Lang';
4
+ import * as SeeMoreButtonStories from './SeeMoreButton.stories';
5
+
6
+ <Meta of={SeeMoreButtonStories} name="Usage" />
7
+
8
+ <LangToggle />
9
+
10
+ <En>
11
+
12
+ # SeeMoreButton
13
+
14
+ A full-width button at the end of a list that shows more of the same list in
15
+ place, and says how many are shown out of how many.
16
+
17
+ ## When to use
18
+
19
+ - A list that grows where it is when the reader asks: reviews, recommended
20
+ questions, search results in a dropdown. In FactChat the store's reviews,
21
+ recommended questions and chatbot search use it.
22
+ - When you know the total, so the count `(3/10)` is true.
23
+
24
+ ## When not to use
25
+
26
+ - Opening the full list on another page → a link-shaped `Button`
27
+ (`as="a"`, `ghost`) such as 전체 보기, usually next to the section heading.
28
+ - Paging through a long, numbered result set → `Pagination`.
29
+ - Expanding one block of text → `ExpandableText`, which has its own
30
+ 더보기 / 접기.
31
+ - Showing more attached files → `FileList` already renders its own control.
32
+ - You do not know the total → a `subtle` or `ghost` `Button` with your own
33
+ label, because SeeMoreButton always prints a count.
34
+
35
+ ## Props
36
+
37
+ SeeMoreButton has no `variant`. It always renders the `ghost` Button recipe
38
+ with a top hairline, takes the full width of its container, and accepts
39
+ Button's other props (`onClick`, `disabled`, `loading`, `size` …).
40
+
41
+ </En>
42
+
43
+ <Ko>
44
+
45
+ # SeeMoreButton
46
+
47
+ 목록 끝에 놓는 전체 너비 버튼입니다. 같은 목록을 그 자리에서 더 보여 주고, 전체 중
48
+ 몇 개를 보여 주는지 알려 줍니다.
49
+
50
+ ## 언제 쓰나요
51
+
52
+ - 읽는 사람이 원할 때 그 자리에서 늘어나는 목록: 리뷰, 추천 질문, 드롭다운 안의 검색
53
+ 결과. FactChat에서는 스토어의 리뷰, 추천 질문, 챗봇 검색에 씁니다.
54
+ - 전체 개수를 알고 있어서 `(3/10)` 같은 개수가 사실일 때.
55
+
56
+ ## 언제 쓰지 않나요
57
+
58
+ - 다른 화면에서 전체 목록을 연다면 링크 모양의 `Button`(`as="a"`, `ghost`)을 씁니다.
59
+ "전체 보기"처럼 쓰고, 보통 섹션 제목 옆에 둡니다.
60
+ - 번호가 매겨진 긴 결과를 넘겨 본다면 `Pagination`을 씁니다.
61
+ - 글 한 덩어리를 펼친다면 더보기 / 접기가 들어 있는 `ExpandableText`를 씁니다.
62
+ - 첨부 파일을 더 보여 준다면 `FileList`가 자체 컨트롤을 그립니다.
63
+ - 전체 개수를 모른다면 라벨을 직접 쓰는 `subtle`이나 `ghost` `Button`을 씁니다.
64
+ SeeMoreButton은 언제나 개수를 함께 표시하기 때문입니다.
65
+
66
+ ## 속성
67
+
68
+ SeeMoreButton에는 `variant`가 없습니다. 언제나 위쪽 구분선을 더한 `ghost` Button
69
+ 레시피로 그려지고, 담긴 영역의 너비를 다 차지하며, Button의 나머지 속성(`onClick`,
70
+ `disabled`, `loading`, `size` 등)을 받습니다.
71
+
72
+ </Ko>
73
+
74
+ <ArgTypes of={SeeMoreButtonStories} include={['currentCount', 'maxCount']} />
75
+
76
+ <En>
77
+
78
+ The component does not disable or hide itself when `currentCount` reaches
79
+ `maxCount`; that is up to you (see Do / Don't).
80
+
81
+ ## Do / Don't
82
+
83
+ </En>
84
+
85
+ <Ko>
86
+
87
+ `currentCount`가 `maxCount`에 닿아도 컴포넌트가 스스로 비활성이 되거나 사라지지
88
+ 않습니다. 그 처리는 호출하는 쪽에서 합니다(아래 예시 참고).
89
+
90
+ ## 이렇게 하세요 / 이렇게 하지 마세요
91
+
92
+ </Ko>
93
+
94
+ <Canvas of={SeeMoreButtonStories.DoGrowTheList} />
95
+ <Verdict
96
+ kind="do"
97
+ en="Put it right under the list, let each click add items in place, and remove it once everything is shown. FactChat renders it only while there is a next page."
98
+ ko="목록 바로 아래에 두고, 누를 때마다 그 자리에 항목을 더하며, 모두 보여 준 뒤에는 버튼을 없앱니다. FactChat도 다음 페이지가 있을 때만 버튼을 그립니다."
99
+ />
100
+
101
+ <Canvas of={SeeMoreButtonStories.DontNavigate} />
102
+ <Verdict
103
+ kind="dont"
104
+ en="Use it to send the reader to a different page with all 128 reviews. It promises more of this list, here."
105
+ ko="리뷰 128개가 있는 다른 화면으로 보내는 데 쓰지 마세요. 이 버튼은 지금 이 목록을 이 자리에서 더 보여 주겠다는 뜻입니다."
106
+ />
107
+
108
+ <Canvas of={SeeMoreButtonStories.DoLinkToFullPage} />
109
+ <Verdict
110
+ kind="do"
111
+ en="To open the full list elsewhere, use a link-shaped ghost Button next to the heading."
112
+ ko="다른 화면에서 전체 목록을 연다면 제목 옆에 링크 모양의 ghost Button을 둡니다."
113
+ />
114
+
115
+ <En>
116
+
117
+ ## Content
118
+
119
+ - The label is fixed: `더보기 (currentCount/maxCount)` and a chevron.
120
+ Children are ignored. The text comes from the library's own `see_more`
121
+ string, which today always resolves to Korean, so an English screen still
122
+ shows 더보기.
123
+ - Keep the numbers honest. `maxCount` is the real total; if the server only
124
+ tells you "there is more", use a `Button` instead.
125
+
126
+ ## Accessibility
127
+
128
+ What SeeMoreButton does for you:
129
+
130
+ - It is a Button: a native `<button>`, Tab and Enter / Space (WCAG 2.1.1), and
131
+ the keyboard focus ring (WCAG 2.4.7).
132
+ - The count is part of the visible label, so the accessible name is
133
+ "더보기 (3/10)" and matches what is on screen (WCAG 2.5.3).
134
+
135
+ What you still have to do:
136
+
137
+ - **Keep the keyboard user's place.** When the last click removes the button,
138
+ focus would fall back to the page. Move focus to the first newly shown item
139
+ (WCAG 2.4.3).
140
+ - **New items are not announced.** The component has no live region. If the
141
+ added items are not obvious from the focus move, announce the new count
142
+ yourself.
143
+ - **Loading.** While the next page loads, pass `loading` with a
144
+ `loadingText` (불러오는 중) so the button cannot be pressed twice and still
145
+ has words. Without `loadingText` the label is hidden behind the spinner.
146
+
147
+ ## Tokens
148
+
149
+ The table is generated from `SeeMoreButton.styles.ts` and the ghost Button
150
+ recipe it renders.
151
+
152
+ </En>
153
+
154
+ <Ko>
155
+
156
+ ## 문구
157
+
158
+ - 라벨은 정해져 있습니다. `더보기 (currentCount/maxCount)`와 아래 화살표이며,
159
+ children은 무시됩니다. 문구는 라이브러리의 `see_more` 문자열에서 오는데 지금은
160
+ 언제나 한국어로 풀리므로, 영어 화면에도 "더보기"가 나옵니다.
161
+ - 숫자는 사실이어야 합니다. `maxCount`는 실제 전체 개수입니다. 서버가 "더 있다"는
162
+ 것만 알려 준다면 `Button`을 씁니다.
163
+
164
+ ## 접근성
165
+
166
+ SeeMoreButton이 알아서 하는 일
167
+
168
+ - Button 그대로입니다. 기본 `<button>`이며 Tab, Enter와 Space로 다루고(WCAG 2.1.1),
169
+ 키보드 초점 링을 그립니다(WCAG 2.4.7).
170
+ - 개수가 보이는 라벨에 들어 있어서, 접근 가능한 이름이 화면에 보이는 그대로
171
+ "더보기 (3/10)"입니다(WCAG 2.5.3).
172
+
173
+ 직접 챙겨야 하는 일
174
+
175
+ - **키보드 사용자의 위치를 지킵니다.** 마지막으로 눌렀을 때 버튼이 사라지면 초점이
176
+ 페이지 처음으로 돌아갈 수 있습니다. 새로 나온 첫 항목으로 초점을 옮깁니다(WCAG
177
+ 2.4.3).
178
+ - **새 항목은 알려 주지 않습니다.** 컴포넌트에 라이브 영역이 없습니다. 초점을 옮기는
179
+ 것만으로 새 항목이 분명하지 않다면 늘어난 개수를 직접 알립니다.
180
+ - **불러오는 중.** 다음 페이지를 불러오는 동안 `loading`과 `loadingText`(불러오는 중)를
181
+ 함께 주어 두 번 눌리지 않게 하고 글자도 남깁니다. `loadingText`가 없으면 라벨이
182
+ 스피너 뒤로 숨습니다.
183
+
184
+ ## 토큰
185
+
186
+ 아래 표는 `SeeMoreButton.styles.ts`와 이 컴포넌트가 그리는 ghost Button 레시피에서
187
+ 자동으로 만듭니다.
188
+
189
+ </Ko>
190
+
191
+ <Canvas of={SeeMoreButtonStories.UsageTokens} sourceState="none" />
192
+
193
+ <En>
194
+
195
+ ## Related
196
+
197
+ - **Button**: a link-shaped `ghost` Button for 전체 보기, or your own label
198
+ when the total is unknown.
199
+ - **Pagination**: numbered pages.
200
+ - **ExpandableText**: 더보기 / 접기 for one block of text.
201
+
202
+ </En>
203
+
204
+ <Ko>
205
+
206
+ ## 관련 컴포넌트
207
+
208
+ - **Button**: 전체 보기에 쓰는 링크 모양의 `ghost` Button, 또는 전체 개수를 모를 때
209
+ 라벨을 직접 쓰는 버튼.
210
+ - **Pagination**: 번호가 있는 페이지.
211
+ - **ExpandableText**: 글 한 덩어리의 더보기 / 접기.
212
+
213
+ </Ko>
@@ -3,6 +3,8 @@ import { Meta, StoryObj } from '@storybook/react';
3
3
  import React, { useState } from 'react';
4
4
  import { FiHome, FiSettings, FiUser } from 'react-icons/fi';
5
5
 
6
+ import { T } from '../../guidelines/_components/Lang';
7
+ import { TokenTable } from '../../guidelines/_components/TokenTable';
6
8
  import { SegmentedControl } from './SegmentedControl';
7
9
 
8
10
  const meta = {
@@ -202,3 +204,70 @@ export const WithCustomContent = {
202
204
  ],
203
205
  },
204
206
  };
207
+
208
+ // ───────────────────────── Usage-page specimens ─────────────────────────
209
+ // Pulled into `SegmentedControl.usage.mdx` with <Canvas of={…} />. Hidden from
210
+ // the sidebar (`!dev`).
211
+
212
+ export const DoChangeTheView: Story = {
213
+ tags: ['!dev'],
214
+ parameters: { layout: 'padded' },
215
+ name: 'Usage / Do: change how the same data is shown',
216
+ render: () => (
217
+ <VStack align="start" gap={3}>
218
+ <Text fontWeight="600">크레딧 사용량</Text>
219
+ <SegmentedControl
220
+ aria-label="집계 단위"
221
+ size="sm"
222
+ defaultValue="week"
223
+ options={[
224
+ { label: '일', value: 'day' },
225
+ { label: '주', value: 'week' },
226
+ { label: '월', value: 'month' },
227
+ ]}
228
+ />
229
+ </VStack>
230
+ ),
231
+ };
232
+
233
+ export const DontSectionsAsSegments: Story = {
234
+ tags: ['!dev'],
235
+ parameters: { layout: 'padded' },
236
+ name: "Usage / Don't: switch between unrelated sections",
237
+ render: () => (
238
+ <SegmentedControl
239
+ defaultValue="credit"
240
+ options={[
241
+ { label: '크레딧', value: 'credit' },
242
+ { label: '보안', value: 'security' },
243
+ { label: '공지', value: 'notice' },
244
+ { label: '멤버', value: 'members' },
245
+ { label: '감사 로그', value: 'audit' },
246
+ ]}
247
+ />
248
+ ),
249
+ };
250
+
251
+ /** Tokens the track, thumb and labels read, as set in `SegmentedControl.tsx`. */
252
+ export const UsageTokens: Story = {
253
+ tags: ['!dev'],
254
+ parameters: { layout: 'padded' },
255
+ name: 'Usage / Tokens',
256
+ render: () => (
257
+ <TokenTable
258
+ rows={[
259
+ { token: 'bg.subtle', use: <T en="Track" ko="트랙" /> },
260
+ {
261
+ token: 'border.default',
262
+ use: <T en="Track ring (light)" ko="트랙 테두리(라이트)" />,
263
+ },
264
+ { token: 'bg.raised', use: <T en="Selected thumb" ko="선택된 칸" /> },
265
+ { token: 'fg.muted', use: <T en="Label" ko="라벨" /> },
266
+ {
267
+ token: 'fg.default',
268
+ use: <T en="Selected label" ko="선택된 라벨" />,
269
+ },
270
+ ]}
271
+ />
272
+ ),
273
+ };
@@ -1,5 +1,11 @@
1
1
  import type { SystemStyleObject } from '@chakra-ui/react';
2
2
 
3
+ import {
4
+ controlHeightVar,
5
+ type ControlSize,
6
+ controlSizes,
7
+ } from '@/theme/controlSizes';
8
+
3
9
  /**
4
10
  * `travel`, but delivered through custom properties.
5
11
  *
@@ -20,3 +26,35 @@ export const indicatorTravel: SystemStyleObject = {
20
26
  '--transition-duration': 'var(--chakra-durations-motion-instant)',
21
27
  },
22
28
  };
29
+
30
+ /**
31
+ * The root's padding in px (see `rootPadding` in SegmentedControl.tsx for
32
+ * why px), per size. Shared with the item-height calc so the two cannot
33
+ * disagree.
34
+ *
35
+ * 4px from `sm` up; 2px at `xs` / `2xs`. A fixed 4px left an `xs` item 20px
36
+ * tall (28 − 8) inside a 16px `ScaledContext`, shorter than its own 14px type's
37
+ * 21px line, and the label read squeezed against the indicator (FactChat
38
+ * coding-agent toolbar, 박상현 2026-11-10). At 2px the item is 24px.
39
+ */
40
+ export const segmentRootPaddingPx = (size: unknown): number =>
41
+ size === 'xs' || size === '2xs' ? 2 : 4;
42
+
43
+ /**
44
+ * Item height so that the OUTER height (item + 2 × root padding) equals the
45
+ * Button height for the same size — `controlSizes[size].height`, i.e. 28 /
46
+ * 31.5 / 35 / 38.5px for xs / sm / md / lg at the 14px root, and 36 / 40 / 44
47
+ * for sm / md / lg inside a 16px `ScaledContext`.
48
+ *
49
+ * A `calc()` on the height token rather than a smaller token: the root padding
50
+ * is a fixed px value while the sizes tokens are rem (em inside a
51
+ * ScaledContext), so no single token equals "Button height − padding" at every
52
+ * font size. The old one-token-smaller table (`6`/`7`/`8`/`9`) was written for
53
+ * a 16px rem and came out 1px taller than Button at the real 14px root.
54
+ */
55
+ export const segmentItemHeight = (size: unknown): string =>
56
+ `calc(${controlHeightVar(
57
+ (typeof size === 'string' && size in controlSizes
58
+ ? size
59
+ : 'md') as ControlSize
60
+ )} - ${segmentRootPaddingPx(size) * 2}px)`;
@@ -1,30 +1,19 @@
1
1
  import { forwardRef } from 'react';
2
2
  import { SegmentGroup } from '@chakra-ui/react';
3
3
 
4
+ import { getControlSize } from '@/theme/controlSizes';
4
5
  import { mergeCss } from '@/utils/mergeCss';
5
6
 
6
- import { indicatorTravel } from './SegmentedControl.styles';
7
+ import {
8
+ indicatorTravel,
9
+ segmentItemHeight,
10
+ segmentRootPaddingPx,
11
+ } from './SegmentedControl.styles';
7
12
  import {
8
13
  SegmentedControlOption,
9
14
  SegmentedControlProps,
10
15
  } from './SegmentedControl.types';
11
16
 
12
- // Match font sizes to the equivalent Chakra button sizes
13
- const fontSizeBySize: Record<string, string> = {
14
- xs: 'xs',
15
- sm: 'sm',
16
- md: 'sm',
17
- lg: 'md',
18
- };
19
-
20
- // Item heights so that itemHeight + 2×root-padding(p="1") equals the Button height for each size
21
- const itemHeightBySize: Record<string, string> = {
22
- xs: '6', // 32 - 8 = 24px
23
- sm: '7', // 36 - 8 = 28px
24
- md: '8', // 40 - 8 = 32px
25
- lg: '9', // 44 - 8 = 36px
26
- };
27
-
28
17
  export const SegmentedControl = forwardRef<
29
18
  HTMLDivElement,
30
19
  SegmentedControlProps
@@ -40,8 +29,16 @@ export const SegmentedControl = forwardRef<
40
29
  ...rest
41
30
  } = props;
42
31
 
43
- const fontSize = fontSizeBySize[size as string] ?? 'sm';
44
- const itemHeight = itemHeightBySize[size as string] ?? '8';
32
+ // Same textStyle as every other control at this size (see controlSizes):
33
+ // the item height is em inside a ScaledContext, so equal type is what keeps
34
+ // the outer height equal to Button's there too.
35
+ const spec = getControlSize(size);
36
+
37
+ // Root padding in px, not the `1` spacing token: that token is 0.25em, so at
38
+ // a 14px font it is 3.5px, and Ark positions the indicator from the item's
39
+ // integer offsetTop/offsetLeft (3.5 rounds to 4). The thumb then sat 0.5px
40
+ // low and its bottom gap was a pixel narrower than its top.
41
+ const rootPadding = `${segmentRootPaddingPx(size)}px`;
45
42
 
46
43
  // Normalize options to the format expected by SegmentGroup.Items
47
44
  const items = options.map((option: SegmentedControlOption) => ({
@@ -50,11 +47,14 @@ export const SegmentedControl = forwardRef<
50
47
  disabled: option.disabled,
51
48
  }));
52
49
 
53
- // Use theme borderRadius token directly via CSS variable
50
+ // Concentric with the root: inner radius = outer radius − root padding
51
+ // (rootPadding), floored at 0, so the gap between the two curves stays even.
54
52
  const indicatorRadius =
55
53
  typeof borderRadius === 'string'
56
- ? `var(--chakra-radii-${borderRadius})`
57
- : borderRadius;
54
+ ? `max(0px, calc(var(--chakra-radii-${borderRadius}) - ${rootPadding}))`
55
+ : typeof borderRadius === 'number'
56
+ ? `max(0px, calc(${borderRadius}px - ${rootPadding}))`
57
+ : borderRadius;
58
58
 
59
59
  return (
60
60
  <SegmentGroup.Root
@@ -67,18 +67,18 @@ export const SegmentedControl = forwardRef<
67
67
  }
68
68
  }}
69
69
  size={size}
70
- // Track is bg.subtle (gray.50 light) and the selected indicator rides on
71
- // `bg.raised` — a raised neutral surface that resolves white in light and
72
- // the lightest neutral (gray.1100) in dark, so the thumb reads as lifted
73
- // above the track in both modes (`bg.surface` could not: its dark value is
74
- // darker than the track). The indicator also gains a shadow: an md drop
75
- // shadow in light, and in dark — where a drop shadow is invisible on a
70
+ // Track is bg.subtle and the selected indicator rides on `bg.raised` — a
71
+ // raised neutral surface that resolves white in light and a lighter
72
+ // neutral than the track in dark, so the thumb reads as lifted
73
+ // above the track in both modes. The indicator also gains a shadow: an xs drop
74
+ // shadow in light (md's 4px/8px drop filled the 4px track padding below the
75
+ // thumb and made it read as sagging), and in dark — where a drop shadow is invisible on a
76
76
  // dark canvas — a soft ambient shadow + a translucent-white hairline edge.
77
77
  //
78
78
  // The track itself only contrasts where the page wash is darker (light) or
79
79
  // lighter (dark) than the fill. It vanishes when the page matches the
80
- // track: a `bg.sunken` list/overview page is gray.50 in light — identical
81
- // to the bg.subtle track — and a `bg.surface` card is lighter than the
80
+ // track: a `bg.sunken` list/overview page has the same light value as
81
+ // the bg.subtle track — and a `bg.surface` card is lighter than the
82
82
  // track in dark. In either case the control would read as floating text,
83
83
  // so a hairline ring defines its bounds on *any* background: a neutral
84
84
  // `border.default` ring in light, a translucent-white ring in dark. (The
@@ -88,21 +88,25 @@ export const SegmentedControl = forwardRef<
88
88
  // it. `border.default` keeps the edge present but light — `border.strong`
89
89
  // reads as a heavy box for a control that normally has no outline.) Both
90
90
  // rings are box-shadows (not borders) so the matched item-height math is
91
- // preserved.
91
+ // preserved, and both are inset: an outer ring sits 1px outside the box,
92
+ // so any `overflow` ancestor flush with the control (a horizontal scroll
93
+ // row) clipped its straight edges and left only the rounded corners.
94
+ // Inset, it is drawn inside the root padding, where the indicator never
95
+ // reaches.
92
96
  bg="bg.subtle"
93
- p="1"
97
+ p={rootPadding}
94
98
  borderRadius={borderRadius}
95
99
  w="fit-content"
96
100
  {...rest}
97
101
  css={mergeCss(
98
102
  {
99
103
  '--segment-indicator-bg': `var(--chakra-colors-bg-raised)`,
100
- '--segment-indicator-shadow': `var(--chakra-shadows-md)`,
101
- boxShadow: '0 0 0 1px var(--chakra-colors-border-default)',
104
+ '--segment-indicator-shadow': `var(--chakra-shadows-xs)`,
105
+ boxShadow: 'inset 0 0 0 1px var(--chakra-colors-border-default)',
102
106
  '.dark &': {
103
107
  '--segment-indicator-shadow':
104
108
  '0 1px 2px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.08)',
105
- boxShadow: '0 0 0 1px rgba(255, 255, 255, 0.12)',
109
+ boxShadow: 'inset 0 0 0 1px rgba(255, 255, 255, 0.12)',
106
110
  },
107
111
  },
108
112
  css
@@ -121,14 +125,16 @@ export const SegmentedControl = forwardRef<
121
125
  disabled={item.disabled}
122
126
  cursor={item.disabled ? 'not-allowed' : 'pointer'}
123
127
  flex="1"
124
- height={itemHeight}
128
+ height={segmentItemHeight(size)}
129
+ textStyle={spec.textStyle}
130
+ px={spec.actionPaddingX}
131
+ gap={spec.gap}
125
132
  _hover={{ bg: 'transparent' }}
126
133
  >
127
134
  <SegmentGroup.ItemText
128
135
  data-text={typeof item.label === 'string' ? item.label : undefined}
129
136
  color="fg.muted"
130
137
  fontWeight="500"
131
- fontSize={fontSize}
132
138
  whiteSpace="nowrap"
133
139
  display="inline-flex"
134
140
  flexDirection="column"