@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
@@ -9,11 +9,22 @@ import {
9
9
  Stack,
10
10
  Text,
11
11
  } from '@chakra-ui/react';
12
- import { Meta } from '@storybook/react';
12
+ import { Meta, StoryObj } from '@storybook/react';
13
13
 
14
+ import { T } from '../../guidelines/_components/Lang';
15
+ import { TokenTable } from '../../guidelines/_components/TokenTable';
14
16
  import { Badge } from '../Badge';
17
+ import { Radio, RadioGroup } from '../Radio';
15
18
  import { IoCall, IoChatbubbleEllipses, IoIosMail } from '../Icon';
19
+ import { ComboboxField } from './ComboboxField';
16
20
  import { Select } from './Select';
21
+ import {
22
+ contentStyles,
23
+ indicatorStyles,
24
+ itemStyles,
25
+ selectClearTriggerStyles,
26
+ triggerStyles,
27
+ } from './Select.styles';
17
28
  import { SelectField } from './SelectField';
18
29
 
19
30
  const meta = {
@@ -188,6 +199,76 @@ export const MultiSelect = () => (
188
199
  </Box>
189
200
  );
190
201
 
202
+ /**
203
+ * An optional field the member can empty again. `ClearTrigger` goes before
204
+ * the chevron and shows only while something is selected. It draws its own
205
+ * icon and is named 「선택 지우기」 in the provider's language; pass
206
+ * `aria-label` to say what is cleared. A divider separates it from the
207
+ * chevron, and a long value ends in an ellipsis before it. On a touch screen
208
+ * its hit area widens to 44px toward the value, at the field's own height.
209
+ */
210
+ const longValueCollection = createListCollection({
211
+ items: [
212
+ {
213
+ label: 'Engineering / Platform / Developer Experience',
214
+ value: 'dx',
215
+ },
216
+ { label: 'Design', value: 'design' },
217
+ ],
218
+ });
219
+
220
+ export const Clearable = () => (
221
+ <Stack maxW="320px" gap={4}>
222
+ <Box maxW="180px">
223
+ <Select.Root collection={longValueCollection} defaultValue={['dx']}>
224
+ <Select.HiddenSelect />
225
+ <Select.Label>Team (180px)</Select.Label>
226
+ <Select.Control>
227
+ <Select.Trigger>
228
+ <Select.ValueText placeholder="Select a team" />
229
+ </Select.Trigger>
230
+ <Select.IndicatorGroup>
231
+ <Select.ClearTrigger />
232
+ <Select.Indicator />
233
+ </Select.IndicatorGroup>
234
+ </Select.Control>
235
+ </Select.Root>
236
+ </Box>
237
+ {(['xs', 'sm', 'md', 'lg'] as const).map((size) => (
238
+ <Select.Root
239
+ key={size}
240
+ size={size}
241
+ collection={frameworkCollection}
242
+ defaultValue={['react']}
243
+ >
244
+ <Select.HiddenSelect />
245
+ <Select.Label>{`Framework (${size})`}</Select.Label>
246
+ <Select.Control>
247
+ <Select.Trigger>
248
+ <Select.ValueText placeholder="Select a framework" />
249
+ </Select.Trigger>
250
+ <Select.IndicatorGroup>
251
+ <Select.ClearTrigger />
252
+ <Select.Indicator />
253
+ </Select.IndicatorGroup>
254
+ </Select.Control>
255
+ <Portal>
256
+ <Select.Positioner>
257
+ <Select.Content>
258
+ {frameworkCollection.items.map((item) => (
259
+ <Select.Item item={item} key={item.value}>
260
+ <Select.ItemText>{item.label}</Select.ItemText>
261
+ <Select.ItemIndicator />
262
+ </Select.Item>
263
+ ))}
264
+ </Select.Content>
265
+ </Select.Positioner>
266
+ </Portal>
267
+ </Select.Root>
268
+ ))}
269
+ </Stack>
270
+ );
271
+
191
272
  /* -------------------------------------------------------------------------
192
273
  * Custom children
193
274
  *
@@ -771,3 +852,211 @@ export const WithOpenChange = () => {
771
852
  </HStack>
772
853
  );
773
854
  };
855
+
856
+ // ───────────────────────── Usage-page specimens ─────────────────────────
857
+ // Pulled into `Select.usage.mdx` with <Canvas of={…} />. Hidden from the
858
+ // sidebar (`!dev`); `tags` is written out on each story because the indexer
859
+ // reads CSF statically.
860
+
861
+ type UsageStory = StoryObj;
862
+
863
+ const LANGUAGES = [
864
+ { label: '한국어', value: 'ko' },
865
+ { label: 'English', value: 'en' },
866
+ { label: '日本語', value: 'ja' },
867
+ ];
868
+
869
+ const GROUPS = [
870
+ '경영지원팀',
871
+ '고객성공팀',
872
+ '데이터팀',
873
+ '디자인팀',
874
+ '마케팅팀',
875
+ '백엔드팀',
876
+ '법무팀',
877
+ '보안팀',
878
+ '사업개발팀',
879
+ '세일즈팀',
880
+ '인사팀',
881
+ '재무팀',
882
+ '프론트엔드팀',
883
+ ].map((name) => ({ label: name, value: name }));
884
+
885
+ export const DoLabelled: UsageStory = {
886
+ tags: ['!dev'],
887
+ parameters: { layout: 'padded' },
888
+ name: 'Usage / Do: a visible label',
889
+ render: () => (
890
+ <Box maxW="320px">
891
+ <SelectField label="답변 언어" options={LANGUAGES} defaultValue="ko" />
892
+ </Box>
893
+ ),
894
+ };
895
+
896
+ export const DontNameless: UsageStory = {
897
+ tags: ['!dev'],
898
+ parameters: { layout: 'padded' },
899
+ name: "Usage / Don't: no label, ariaLabel or placeholder",
900
+ render: () => (
901
+ <Flex maxW="480px" align="center" justify="space-between" gap={4}>
902
+ <Text fontWeight="semibold">답변 언어</Text>
903
+ <Box w="180px">
904
+ <SelectField options={LANGUAGES} defaultValue="ko" />
905
+ </Box>
906
+ </Flex>
907
+ ),
908
+ };
909
+
910
+ export const DoComboboxForLongList: UsageStory = {
911
+ tags: ['!dev'],
912
+ parameters: { layout: 'padded' },
913
+ name: 'Usage / Do: ComboboxField for a long list',
914
+ render: () => (
915
+ <Box maxW="320px">
916
+ <ComboboxField
917
+ label="그룹"
918
+ placeholder="그룹 이름으로 찾기"
919
+ options={GROUPS}
920
+ emptyText="일치하는 그룹이 없습니다"
921
+ />
922
+ </Box>
923
+ ),
924
+ };
925
+
926
+ export const DontSelectForTwo: UsageStory = {
927
+ tags: ['!dev'],
928
+ parameters: { layout: 'padded' },
929
+ name: "Usage / Don't: a dropdown for two options",
930
+ render: () => (
931
+ <Box maxW="320px">
932
+ <SelectField
933
+ label="공개 범위"
934
+ options={[
935
+ { label: '전체 공개', value: 'public' },
936
+ { label: '그룹만', value: 'group' },
937
+ ]}
938
+ defaultValue="public"
939
+ />
940
+ </Box>
941
+ ),
942
+ };
943
+
944
+ export const DoRadioForTwo: UsageStory = {
945
+ tags: ['!dev'],
946
+ parameters: { layout: 'padded' },
947
+ name: 'Usage / Do: Radio for two visible options',
948
+ render: () => (
949
+ <Stack gap={2} maxW="320px">
950
+ <Text id="usage-visibility" fontWeight="semibold">
951
+ 공개 범위
952
+ </Text>
953
+ <RadioGroup
954
+ defaultValue="public"
955
+ aria-labelledby="usage-visibility"
956
+ display="flex"
957
+ gap={4}
958
+ >
959
+ <Radio value="public">
960
+ <Radio.Control />
961
+ <Radio.Text>전체 공개</Radio.Text>
962
+ </Radio>
963
+ <Radio value="group">
964
+ <Radio.Control />
965
+ <Radio.Text>그룹만</Radio.Text>
966
+ </Radio>
967
+ </RadioGroup>
968
+ </Stack>
969
+ ),
970
+ };
971
+
972
+ /**
973
+ * Tokens the trigger, list and options read, taken from the style objects in
974
+ * `Select.styles.ts` (shared by Select and Combobox).
975
+ */
976
+ export const UsageTokens: UsageStory = {
977
+ tags: ['!dev'],
978
+ parameters: { layout: 'padded' },
979
+ name: 'Usage / Tokens',
980
+ render: () => (
981
+ <TokenTable
982
+ rows={[
983
+ {
984
+ token: triggerStyles.bg,
985
+ use: <T en="Trigger background" ko="트리거 배경" />,
986
+ },
987
+ {
988
+ token: triggerStyles.color,
989
+ use: <T en="Selected value" ko="선택한 값" />,
990
+ },
991
+ {
992
+ token: triggerStyles.borderColor,
993
+ use: <T en="Trigger border at rest" ko="트리거 평소 테두리" />,
994
+ },
995
+ {
996
+ token: triggerStyles._hover.borderColor,
997
+ use: <T en="Border on hover" ko="마우스를 올렸을 때 테두리" />,
998
+ },
999
+ {
1000
+ token: triggerStyles._focus.borderColor,
1001
+ use: (
1002
+ <T
1003
+ en="Border and ring on focus or open"
1004
+ ko="초점을 받거나 열렸을 때 테두리와 링"
1005
+ />
1006
+ ),
1007
+ },
1008
+ {
1009
+ token: triggerStyles._invalid.borderColor,
1010
+ use: <T en="Border when invalid" ko="오류 상태 테두리" />,
1011
+ },
1012
+ {
1013
+ token: triggerStyles._disabled.bg,
1014
+ use: <T en="Disabled background" ko="비활성 배경" />,
1015
+ },
1016
+ {
1017
+ token: triggerStyles._disabled.color,
1018
+ use: <T en="Disabled text" ko="비활성 글자" />,
1019
+ },
1020
+ {
1021
+ token: indicatorStyles.color,
1022
+ use: <T en="Chevron" ko="펼침 화살표" />,
1023
+ },
1024
+ {
1025
+ token: selectClearTriggerStyles.color,
1026
+ use: <T en="Clear (×) button" ko="선택 지우기(×) 버튼" />,
1027
+ },
1028
+ {
1029
+ token: selectClearTriggerStyles._hover.color,
1030
+ use: (
1031
+ <T en="Clear button on hover" ko="마우스를 올렸을 때 지우기 버튼" />
1032
+ ),
1033
+ },
1034
+ {
1035
+ token: contentStyles.bg,
1036
+ use: <T en="List background" ko="목록 배경" />,
1037
+ },
1038
+ {
1039
+ token: contentStyles.borderColor,
1040
+ use: <T en="List border" ko="목록 테두리" />,
1041
+ },
1042
+ {
1043
+ token: itemStyles._highlighted.bg,
1044
+ use: (
1045
+ <T
1046
+ en="Option under the pointer or keyboard"
1047
+ ko="포인터나 키보드가 가리키는 항목"
1048
+ />
1049
+ ),
1050
+ },
1051
+ {
1052
+ token: itemStyles._checked.bg,
1053
+ use: <T en="Selected option" ko="선택된 항목" />,
1054
+ },
1055
+ {
1056
+ token: itemStyles._disabled.color,
1057
+ use: <T en="Disabled option" ko="선택할 수 없는 항목" />,
1058
+ },
1059
+ ]}
1060
+ />
1061
+ ),
1062
+ };
@@ -37,9 +37,27 @@ const fieldBase = {
37
37
  },
38
38
  };
39
39
 
40
+ /**
41
+ * Room for the × and its divider at the end of the value, while the × shows.
42
+ *
43
+ * The indicator group overlays the value. Chakra keeps the value off the
44
+ * chevron with `maxW: 80%` on a Select (too little in a narrow filter) and a
45
+ * 1.5× height padding on a Combobox, and neither counts the × with its
46
+ * divider. This reserves the whole group instead: padding on both sides, the
47
+ * × (`8`) with its `me` (`3`), the group `gap` (`1`) and the chevron (`1em`),
48
+ * so a long value ends in an ellipsis before the ×.
49
+ */
50
+ const clearTriggerRoom = (paddingVar: string) => ({
51
+ '[data-part=control]:has([data-part=clear-trigger]:not([hidden])) > &': {
52
+ pe: `calc(var(${paddingVar}) * 2 + 4em)`,
53
+ '& [data-part=value-text]': { maxW: 'none' },
54
+ },
55
+ });
56
+
40
57
  /** Select trigger — the clickable control. */
41
58
  export const triggerStyles = {
42
59
  ...fieldBase,
60
+ ...clearTriggerRoom('--select-trigger-padding-x'),
43
61
  cursor: 'pointer',
44
62
  _open: {
45
63
  borderColor: 'primary.main',
@@ -67,6 +85,11 @@ export const ghostTriggerStyles = {
67
85
  _hover: { borderColor: 'border.control' },
68
86
  _disabled: {
69
87
  ...disabledText,
88
+ // A field, not a ghost button: the value text stays readable at
89
+ // `disabled.fg` (well apart from the resting `fg.default` already).
90
+ // `disabled.fgGhost` is for fill-less buttons whose resting glyph is
91
+ // `fg.icon`.
92
+ color: 'disabled.fg',
70
93
  cursor: 'not-allowed',
71
94
  fontWeight: 'semibold',
72
95
  },
@@ -75,6 +98,7 @@ export const ghostTriggerStyles = {
75
98
  /** Combobox text input — the typeable control. */
76
99
  export const inputStyles = {
77
100
  ...fieldBase,
101
+ ...clearTriggerRoom('--combobox-input-padding-x'),
78
102
  };
79
103
 
80
104
  /** Dropdown panel for both Select and Combobox. */
@@ -115,3 +139,68 @@ export const itemStyles = {
115
139
  export const indicatorStyles = {
116
140
  color: 'fg.muted',
117
141
  };
142
+
143
+ /**
144
+ * Clear (×) button for both Select and Combobox.
145
+ *
146
+ * Chakra's recipe gives this part a colour and no size, and its default icon
147
+ * is `1em`, so a bare `ClearTrigger` drew a 21px × next to a 14px chevron. The
148
+ * × is the secondary action, so it is smaller (`3.5`, 12px at 14px text) and
149
+ * lighter (`fg.icon`) than the chevron, on an `8` box. `& svg` rather than
150
+ * `_icon` so the size also wins over an icon passed with its own `boxSize`.
151
+ *
152
+ * On a touch screen the hit area widens to 44px, toward the value only: the
153
+ * chevron sits to the right and has to keep opening the list. The height stays
154
+ * the control's own height (`heightVar`), so the area never reaches the field
155
+ * above or below. Every control height is over the 24px KWCAG minimum.
156
+ */
157
+ const clearTriggerStyles = (heightVar: string) => ({
158
+ position: 'relative',
159
+ display: 'inline-flex',
160
+ alignItems: 'center',
161
+ justifyContent: 'center',
162
+ boxSize: '8',
163
+ // The divider sits `1` past the box. `3` leaves the same space between the
164
+ // divider and the chevron glyph as between the × glyph and the divider
165
+ // (about 13px at 14px text).
166
+ me: '3',
167
+ color: 'fg.icon',
168
+ cursor: 'pointer',
169
+ _hover: { color: 'fg.default' },
170
+ // The divider marks where opening starts: it sits in the `me` gap, takes no
171
+ // clicks, and everything right of it belongs to the chevron.
172
+ _after: {
173
+ content: '""',
174
+ position: 'absolute',
175
+ insetEnd: '-1',
176
+ top: '50%',
177
+ transform: 'translateY(-50%)',
178
+ h: '4',
179
+ borderEndWidth: '1px',
180
+ borderColor: 'border.subtle',
181
+ pointerEvents: 'none',
182
+ },
183
+ // zag hides the × with the `hidden` attribute while nothing is selected,
184
+ // and the `display` above would otherwise override it.
185
+ _hidden: { display: 'none' },
186
+ '& svg': { width: '3.5', height: '3.5' },
187
+ '@media (pointer: coarse)': {
188
+ '&::before': {
189
+ content: '""',
190
+ position: 'absolute',
191
+ insetEnd: 0,
192
+ top: '50%',
193
+ transform: 'translateY(-50%)',
194
+ width: '44px',
195
+ height: `var(${heightVar})`,
196
+ },
197
+ },
198
+ });
199
+
200
+ export const selectClearTriggerStyles = clearTriggerStyles(
201
+ '--select-trigger-height'
202
+ );
203
+
204
+ export const comboboxClearTriggerStyles = clearTriggerStyles(
205
+ '--combobox-input-height'
206
+ );
@@ -1,13 +1,16 @@
1
1
  import { forwardRef } from 'react';
2
2
  import { Select as ChakraSelect } from '@chakra-ui/react';
3
3
 
4
+ import { useTranslate } from '@/hooks/useTranslate';
4
5
  import { mergeCss } from '@/utils/mergeCss';
5
6
 
7
+ import { CloseIcon } from '../Icon';
6
8
  import {
7
9
  contentStyles,
8
10
  ghostTriggerStyles,
9
11
  indicatorStyles,
10
12
  itemStyles,
13
+ selectClearTriggerStyles,
11
14
  triggerStyles,
12
15
  } from './Select.styles';
13
16
  import type { SelectVariant } from './Select.types';
@@ -67,10 +70,33 @@ const Indicator = forwardRef<HTMLDivElement, ChakraSelect.IndicatorProps>(
67
70
  }
68
71
  );
69
72
 
73
+ /**
74
+ * The × that empties the selection. Draws `CloseIcon` when no children are
75
+ * passed, and names itself in the provider's language: Chakra's own name is
76
+ * the English "Clear value" in every locale. Pass `aria-label` to say what is
77
+ * being cleared ("조직 선택 지우기").
78
+ */
79
+ const ClearTrigger = forwardRef<
80
+ HTMLButtonElement,
81
+ ChakraSelect.ClearTriggerProps
82
+ >(function SelectClearTrigger({ css, children, ...props }, ref) {
83
+ const translate = useTranslate();
84
+ return (
85
+ <ChakraSelect.ClearTrigger
86
+ ref={ref}
87
+ aria-label={translate('clear_selection') as string}
88
+ {...props}
89
+ css={mergeCss(selectClearTriggerStyles, css)}
90
+ >
91
+ {children ?? <CloseIcon aria-hidden />}
92
+ </ChakraSelect.ClearTrigger>
93
+ );
94
+ });
95
+
70
96
  /**
71
97
  * Compound Select primitives — Chakra's `Select` namespace with the Logician
72
98
  * design-system styling baked into the visual parts (`Trigger`, `Content`,
73
- * `Item`, `Indicator`). Use these directly for full compositional control
99
+ * `Item`, `Indicator`, `ClearTrigger`). Use these directly for full compositional control
74
100
  * (multi-select, grouped options, custom layouts); use `SelectField` for the
75
101
  * common single-select case.
76
102
  */
@@ -84,7 +110,7 @@ export const Select = {
84
110
  ValueText: ChakraSelect.ValueText,
85
111
  IndicatorGroup: ChakraSelect.IndicatorGroup,
86
112
  Indicator,
87
- ClearTrigger: ChakraSelect.ClearTrigger,
113
+ ClearTrigger,
88
114
  HiddenSelect: ChakraSelect.HiddenSelect,
89
115
  Positioner: ChakraSelect.Positioner,
90
116
  Content,