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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/MIGRATION-5.0.md +40 -1
  2. package/README.md +1 -0
  3. package/USAGE.md +20 -0
  4. package/dist/components/Avatar/Avatar.d.ts +68 -11
  5. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  6. package/dist/components/Avatar/Avatar.js +41 -5
  7. package/dist/components/Avatar/Avatar.js.map +1 -1
  8. package/dist/components/Avatar/Avatar.mjs +40 -5
  9. package/dist/components/Avatar/Avatar.mjs.map +1 -1
  10. package/dist/components/Avatar/index.d.ts +2 -2
  11. package/dist/components/Avatar/index.d.ts.map +1 -1
  12. package/dist/components/Banner/Banner.types.d.ts +24 -1
  13. package/dist/components/Banner/Banner.types.d.ts.map +1 -1
  14. package/dist/components/BottomSheet/BottomSheet.styles.d.ts +2 -2
  15. package/dist/components/Button/Button.d.ts.map +1 -1
  16. package/dist/components/Button/Button.js +31 -3
  17. package/dist/components/Button/Button.js.map +1 -1
  18. package/dist/components/Button/Button.mjs +31 -3
  19. package/dist/components/Button/Button.mjs.map +1 -1
  20. package/dist/components/Button/Button.types.d.ts +38 -1
  21. package/dist/components/Button/Button.types.d.ts.map +1 -1
  22. package/dist/components/Card/Card.types.d.ts +12 -0
  23. package/dist/components/Card/Card.types.d.ts.map +1 -1
  24. package/dist/components/Code/shikiAdapter.d.ts +3 -1
  25. package/dist/components/Code/shikiAdapter.d.ts.map +1 -1
  26. package/dist/components/Code/shikiAdapter.js +29 -8
  27. package/dist/components/Code/shikiAdapter.js.map +1 -1
  28. package/dist/components/Code/shikiAdapter.mjs +29 -8
  29. package/dist/components/Code/shikiAdapter.mjs.map +1 -1
  30. package/dist/components/CodeTabs/CodeTabs.styles.d.ts +6 -5
  31. package/dist/components/CodeTabs/CodeTabs.styles.d.ts.map +1 -1
  32. package/dist/components/CodeTabs/CodeTabs.styles.js +6 -5
  33. package/dist/components/CodeTabs/CodeTabs.styles.js.map +1 -1
  34. package/dist/components/CodeTabs/CodeTabs.styles.mjs +6 -5
  35. package/dist/components/CodeTabs/CodeTabs.styles.mjs.map +1 -1
  36. package/dist/components/ColorMode/ColorModeToggle.d.ts +7 -2
  37. package/dist/components/ColorMode/ColorModeToggle.d.ts.map +1 -1
  38. package/dist/components/ColorMode/ColorModeToggle.js +8 -3
  39. package/dist/components/ColorMode/ColorModeToggle.js.map +1 -1
  40. package/dist/components/ColorMode/ColorModeToggle.mjs +8 -3
  41. package/dist/components/ColorMode/ColorModeToggle.mjs.map +1 -1
  42. package/dist/components/Confetti/Confetti.types.d.ts +5 -1
  43. package/dist/components/Confetti/Confetti.types.d.ts.map +1 -1
  44. package/dist/components/Confetti/confettiColors.d.ts +5 -5
  45. package/dist/components/Confetti/confettiColors.js +5 -5
  46. package/dist/components/Confetti/confettiColors.mjs +5 -5
  47. package/dist/components/DatePicker/DatePicker.types.d.ts +12 -0
  48. package/dist/components/DatePicker/DatePicker.types.d.ts.map +1 -0
  49. package/dist/components/DatePicker/RangeDatePicker.d.ts +2 -1
  50. package/dist/components/DatePicker/RangeDatePicker.d.ts.map +1 -1
  51. package/dist/components/DatePicker/RangeDatePicker.js +4 -2
  52. package/dist/components/DatePicker/RangeDatePicker.js.map +1 -1
  53. package/dist/components/DatePicker/RangeDatePicker.mjs +4 -2
  54. package/dist/components/DatePicker/RangeDatePicker.mjs.map +1 -1
  55. package/dist/components/DatePicker/SingleDatePicker.d.ts +2 -1
  56. package/dist/components/DatePicker/SingleDatePicker.d.ts.map +1 -1
  57. package/dist/components/DatePicker/SingleDatePicker.js +4 -2
  58. package/dist/components/DatePicker/SingleDatePicker.js.map +1 -1
  59. package/dist/components/DatePicker/SingleDatePicker.mjs +4 -2
  60. package/dist/components/DatePicker/SingleDatePicker.mjs.map +1 -1
  61. package/dist/components/DatePicker/index.d.ts +1 -0
  62. package/dist/components/DatePicker/index.d.ts.map +1 -1
  63. package/dist/components/ErrorFallback/ErrorFallback.types.d.ts +6 -0
  64. package/dist/components/ErrorFallback/ErrorFallback.types.d.ts.map +1 -1
  65. package/dist/components/ExpandableText/ExpandableText.d.ts.map +1 -1
  66. package/dist/components/ExpandableText/ExpandableText.js +1 -1
  67. package/dist/components/ExpandableText/ExpandableText.js.map +1 -1
  68. package/dist/components/ExpandableText/ExpandableText.mjs +1 -1
  69. package/dist/components/ExpandableText/ExpandableText.mjs.map +1 -1
  70. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts +1 -1
  71. package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts.map +1 -1
  72. package/dist/components/Form/FormModalFooter/FormModalFooter.js +2 -2
  73. package/dist/components/Form/FormModalFooter/FormModalFooter.js.map +1 -1
  74. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs +2 -2
  75. package/dist/components/Form/FormModalFooter/FormModalFooter.mjs.map +1 -1
  76. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts +11 -1
  77. package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts.map +1 -1
  78. package/dist/components/Form/FormSection/CollapsibleFormSection.js +1 -0
  79. package/dist/components/Form/FormSection/CollapsibleFormSection.js.map +1 -1
  80. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs +1 -0
  81. package/dist/components/Form/FormSection/CollapsibleFormSection.mjs.map +1 -1
  82. package/dist/components/Input/Input.d.ts.map +1 -1
  83. package/dist/components/Input/Input.js +4 -0
  84. package/dist/components/Input/Input.js.map +1 -1
  85. package/dist/components/Input/Input.mjs +4 -0
  86. package/dist/components/Input/Input.mjs.map +1 -1
  87. package/dist/components/LineGraph/LineGraph.d.ts.map +1 -1
  88. package/dist/components/LineGraph/LineGraph.js +4 -5
  89. package/dist/components/LineGraph/LineGraph.js.map +1 -1
  90. package/dist/components/LineGraph/LineGraph.mjs +5 -6
  91. package/dist/components/LineGraph/LineGraph.mjs.map +1 -1
  92. package/dist/components/LineGraph/LineGraph.types.d.ts +12 -2
  93. package/dist/components/LineGraph/LineGraph.types.d.ts.map +1 -1
  94. package/dist/components/LineGraph/seriesColors.d.ts +12 -8
  95. package/dist/components/LineGraph/seriesColors.d.ts.map +1 -1
  96. package/dist/components/LineGraph/seriesColors.js +8 -7
  97. package/dist/components/LineGraph/seriesColors.js.map +1 -1
  98. package/dist/components/LineGraph/seriesColors.mjs +8 -7
  99. package/dist/components/LineGraph/seriesColors.mjs.map +1 -1
  100. package/dist/components/Masonry/Masonry.types.d.ts +8 -3
  101. package/dist/components/Masonry/Masonry.types.d.ts.map +1 -1
  102. package/dist/components/Menu/MenuItem.types.d.ts +8 -0
  103. package/dist/components/Menu/MenuItem.types.d.ts.map +1 -1
  104. package/dist/components/Modal/ModalCloseButton.d.ts +1 -1
  105. package/dist/components/Modal/ModalCloseButton.js +1 -1
  106. package/dist/components/Modal/ModalCloseButton.mjs +1 -1
  107. package/dist/components/MonthPicker/MonthPicker.d.ts.map +1 -1
  108. package/dist/components/MonthPicker/MonthPicker.js +3 -2
  109. package/dist/components/MonthPicker/MonthPicker.js.map +1 -1
  110. package/dist/components/MonthPicker/MonthPicker.mjs +3 -2
  111. package/dist/components/MonthPicker/MonthPicker.mjs.map +1 -1
  112. package/dist/components/MonthPicker/MonthPicker.types.d.ts +7 -1
  113. package/dist/components/MonthPicker/MonthPicker.types.d.ts.map +1 -1
  114. package/dist/components/NavList/NavList.d.ts +35 -0
  115. package/dist/components/NavList/NavList.d.ts.map +1 -0
  116. package/dist/components/NavList/NavList.js +113 -0
  117. package/dist/components/NavList/NavList.js.map +1 -0
  118. package/dist/components/NavList/NavList.mjs +111 -0
  119. package/dist/components/NavList/NavList.mjs.map +1 -0
  120. package/dist/components/NavList/NavList.styles.d.ts +90 -0
  121. package/dist/components/NavList/NavList.styles.d.ts.map +1 -0
  122. package/dist/components/NavList/NavList.styles.js +104 -0
  123. package/dist/components/NavList/NavList.styles.js.map +1 -0
  124. package/dist/components/NavList/NavList.styles.mjs +97 -0
  125. package/dist/components/NavList/NavList.styles.mjs.map +1 -0
  126. package/dist/components/NavList/NavList.translations.json.js +19 -0
  127. package/dist/components/NavList/NavList.translations.json.js.map +1 -0
  128. package/dist/components/NavList/NavList.translations.json.mjs +14 -0
  129. package/dist/components/NavList/NavList.translations.json.mjs.map +1 -0
  130. package/dist/components/NavList/NavList.types.d.ts +140 -0
  131. package/dist/components/NavList/NavList.types.d.ts.map +1 -0
  132. package/dist/components/NavList/NavListContext.d.ts +30 -0
  133. package/dist/components/NavList/NavListContext.d.ts.map +1 -0
  134. package/dist/components/NavList/NavListContext.js +16 -0
  135. package/dist/components/NavList/NavListContext.js.map +1 -0
  136. package/dist/components/NavList/NavListContext.mjs +13 -0
  137. package/dist/components/NavList/NavListContext.mjs.map +1 -0
  138. package/dist/components/NavList/NavListGroup.d.ts +31 -0
  139. package/dist/components/NavList/NavListGroup.d.ts.map +1 -0
  140. package/dist/components/NavList/NavListGroup.js +115 -0
  141. package/dist/components/NavList/NavListGroup.js.map +1 -0
  142. package/dist/components/NavList/NavListGroup.mjs +113 -0
  143. package/dist/components/NavList/NavListGroup.mjs.map +1 -0
  144. package/dist/components/NavList/NavListItem.d.ts +16 -0
  145. package/dist/components/NavList/NavListItem.d.ts.map +1 -0
  146. package/dist/components/NavList/NavListItem.js +284 -0
  147. package/dist/components/NavList/NavListItem.js.map +1 -0
  148. package/dist/components/NavList/NavListItem.mjs +282 -0
  149. package/dist/components/NavList/NavListItem.mjs.map +1 -0
  150. package/dist/components/NavList/NavListSkeleton.d.ts +17 -0
  151. package/dist/components/NavList/NavListSkeleton.d.ts.map +1 -0
  152. package/dist/components/NavList/NavListSkeleton.js +33 -0
  153. package/dist/components/NavList/NavListSkeleton.js.map +1 -0
  154. package/dist/components/NavList/NavListSkeleton.mjs +31 -0
  155. package/dist/components/NavList/NavListSkeleton.mjs.map +1 -0
  156. package/dist/components/NavList/index.d.ts +7 -0
  157. package/dist/components/NavList/index.d.ts.map +1 -0
  158. package/dist/components/Pagination/Pagination.d.ts +11 -10
  159. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  160. package/dist/components/Pagination/Pagination.js +11 -10
  161. package/dist/components/Pagination/Pagination.js.map +1 -1
  162. package/dist/components/Pagination/Pagination.mjs +11 -10
  163. package/dist/components/Pagination/Pagination.mjs.map +1 -1
  164. package/dist/components/ProgressBar/ProgressBar.types.d.ts +9 -0
  165. package/dist/components/ProgressBar/ProgressBar.types.d.ts.map +1 -1
  166. package/dist/components/RadialProgress/RadialProgress.types.d.ts +21 -1
  167. package/dist/components/RadialProgress/RadialProgress.types.d.ts.map +1 -1
  168. package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts +8 -0
  169. package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts.map +1 -1
  170. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  171. package/dist/components/SegmentedControl/SegmentedControl.js +34 -33
  172. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  173. package/dist/components/SegmentedControl/SegmentedControl.mjs +35 -34
  174. package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  175. package/dist/components/SegmentedControl/SegmentedControl.styles.d.ts +24 -0
  176. package/dist/components/SegmentedControl/SegmentedControl.styles.d.ts.map +1 -1
  177. package/dist/components/SegmentedControl/SegmentedControl.styles.js +30 -0
  178. package/dist/components/SegmentedControl/SegmentedControl.styles.js.map +1 -1
  179. package/dist/components/SegmentedControl/SegmentedControl.styles.mjs +29 -1
  180. package/dist/components/SegmentedControl/SegmentedControl.styles.mjs.map +1 -1
  181. package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts +2 -0
  182. package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts.map +1 -1
  183. package/dist/components/Select/Combobox.d.ts +1 -1
  184. package/dist/components/Select/Combobox.d.ts.map +1 -1
  185. package/dist/components/Select/Combobox.js +9 -2
  186. package/dist/components/Select/Combobox.js.map +1 -1
  187. package/dist/components/Select/Combobox.mjs +10 -3
  188. package/dist/components/Select/Combobox.mjs.map +1 -1
  189. package/dist/components/Select/Select.d.ts +1 -1
  190. package/dist/components/Select/Select.d.ts.map +1 -1
  191. package/dist/components/Select/Select.js +14 -2
  192. package/dist/components/Select/Select.js.map +1 -1
  193. package/dist/components/Select/Select.mjs +15 -3
  194. package/dist/components/Select/Select.mjs.map +1 -1
  195. package/dist/components/Select/Select.styles.d.ts +97 -1
  196. package/dist/components/Select/Select.styles.d.ts.map +1 -1
  197. package/dist/components/Select/Select.styles.js +83 -0
  198. package/dist/components/Select/Select.styles.js.map +1 -1
  199. package/dist/components/Select/Select.styles.mjs +82 -1
  200. package/dist/components/Select/Select.styles.mjs.map +1 -1
  201. package/dist/components/Switch/SwitchControl.d.ts.map +1 -1
  202. package/dist/components/Switch/SwitchControl.js +26 -11
  203. package/dist/components/Switch/SwitchControl.js.map +1 -1
  204. package/dist/components/Switch/SwitchControl.mjs +27 -12
  205. package/dist/components/Switch/SwitchControl.mjs.map +1 -1
  206. package/dist/components/Tabs/Tab/Tab.styles.d.ts +1 -1
  207. package/dist/components/Tabs/Tab/Tab.styles.js +1 -1
  208. package/dist/components/Tabs/Tab/Tab.styles.mjs +1 -1
  209. package/dist/components/Tag/Tag.d.ts.map +1 -1
  210. package/dist/components/Tag/Tag.js +14 -2
  211. package/dist/components/Tag/Tag.js.map +1 -1
  212. package/dist/components/Tag/Tag.mjs +15 -3
  213. package/dist/components/Tag/Tag.mjs.map +1 -1
  214. package/dist/components/Tag/Tag.styles.d.ts +20 -2
  215. package/dist/components/Tag/Tag.styles.d.ts.map +1 -1
  216. package/dist/components/Tag/Tag.styles.js +81 -0
  217. package/dist/components/Tag/Tag.styles.js.map +1 -1
  218. package/dist/components/Tag/Tag.styles.mjs +81 -1
  219. package/dist/components/Tag/Tag.styles.mjs.map +1 -1
  220. package/dist/components/Tag/Tag.types.d.ts +15 -2
  221. package/dist/components/Tag/Tag.types.d.ts.map +1 -1
  222. package/dist/components/Tag/index.d.ts +2 -2
  223. package/dist/components/Tag/index.d.ts.map +1 -1
  224. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  225. package/dist/components/Textarea/Textarea.js +4 -0
  226. package/dist/components/Textarea/Textarea.js.map +1 -1
  227. package/dist/components/Textarea/Textarea.mjs +4 -0
  228. package/dist/components/Textarea/Textarea.mjs.map +1 -1
  229. package/dist/components/Toast/Toast.d.ts.map +1 -1
  230. package/dist/components/Toast/Toast.js +5 -1
  231. package/dist/components/Toast/Toast.js.map +1 -1
  232. package/dist/components/Toast/Toast.mjs +5 -1
  233. package/dist/components/Toast/Toast.mjs.map +1 -1
  234. package/dist/components/Toast/Toast.styles.d.ts +13 -2
  235. package/dist/components/Toast/Toast.styles.d.ts.map +1 -1
  236. package/dist/components/Toast/Toast.styles.js +19 -7
  237. package/dist/components/Toast/Toast.styles.js.map +1 -1
  238. package/dist/components/Toast/Toast.styles.mjs +19 -7
  239. package/dist/components/Toast/Toast.styles.mjs.map +1 -1
  240. package/dist/components/Typography/Caption.d.ts.map +1 -1
  241. package/dist/components/Typography/Caption.js +1 -1
  242. package/dist/components/Typography/Caption.js.map +1 -1
  243. package/dist/components/Typography/Caption.mjs +1 -1
  244. package/dist/components/Typography/Caption.mjs.map +1 -1
  245. package/dist/components/Typography/H1.d.ts.map +1 -1
  246. package/dist/components/Typography/H1.js +1 -1
  247. package/dist/components/Typography/H1.js.map +1 -1
  248. package/dist/components/Typography/H1.mjs +1 -1
  249. package/dist/components/Typography/H1.mjs.map +1 -1
  250. package/dist/components/Typography/H2.d.ts.map +1 -1
  251. package/dist/components/Typography/H2.js +1 -1
  252. package/dist/components/Typography/H2.js.map +1 -1
  253. package/dist/components/Typography/H2.mjs +1 -1
  254. package/dist/components/Typography/H2.mjs.map +1 -1
  255. package/dist/components/Typography/H3.d.ts.map +1 -1
  256. package/dist/components/Typography/H3.js +1 -1
  257. package/dist/components/Typography/H3.js.map +1 -1
  258. package/dist/components/Typography/H3.mjs +1 -1
  259. package/dist/components/Typography/H3.mjs.map +1 -1
  260. package/dist/components/Typography/H4.d.ts.map +1 -1
  261. package/dist/components/Typography/H4.js +1 -1
  262. package/dist/components/Typography/H4.js.map +1 -1
  263. package/dist/components/Typography/H4.mjs +1 -1
  264. package/dist/components/Typography/H4.mjs.map +1 -1
  265. package/dist/components/Typography/H5.d.ts.map +1 -1
  266. package/dist/components/Typography/H5.js +1 -1
  267. package/dist/components/Typography/H5.js.map +1 -1
  268. package/dist/components/Typography/H5.mjs +1 -1
  269. package/dist/components/Typography/H5.mjs.map +1 -1
  270. package/dist/components/Typography/Link.d.ts.map +1 -1
  271. package/dist/components/Typography/Link.js +1 -1
  272. package/dist/components/Typography/Link.js.map +1 -1
  273. package/dist/components/Typography/Link.mjs +1 -1
  274. package/dist/components/Typography/Link.mjs.map +1 -1
  275. package/dist/components/Typography/Overline.d.ts.map +1 -1
  276. package/dist/components/Typography/Overline.js +1 -1
  277. package/dist/components/Typography/Overline.js.map +1 -1
  278. package/dist/components/Typography/Overline.mjs +1 -1
  279. package/dist/components/Typography/Overline.mjs.map +1 -1
  280. package/dist/components/Typography/Subtext.d.ts.map +1 -1
  281. package/dist/components/Typography/Subtext.js +1 -1
  282. package/dist/components/Typography/Subtext.js.map +1 -1
  283. package/dist/components/Typography/Subtext.mjs +1 -1
  284. package/dist/components/Typography/Subtext.mjs.map +1 -1
  285. package/dist/components/Typography/Subtitle.d.ts.map +1 -1
  286. package/dist/components/Typography/Subtitle.js +1 -1
  287. package/dist/components/Typography/Subtitle.js.map +1 -1
  288. package/dist/components/Typography/Subtitle.mjs +1 -1
  289. package/dist/components/Typography/Subtitle.mjs.map +1 -1
  290. package/dist/components/Typography/Text.d.ts.map +1 -1
  291. package/dist/components/Typography/Text.js +1 -1
  292. package/dist/components/Typography/Text.js.map +1 -1
  293. package/dist/components/Typography/Text.mjs +1 -1
  294. package/dist/components/Typography/Text.mjs.map +1 -1
  295. package/dist/hooks/useLanguage.d.ts +5 -0
  296. package/dist/hooks/useLanguage.d.ts.map +1 -1
  297. package/dist/hooks/useLanguage.js +7 -3
  298. package/dist/hooks/useLanguage.js.map +1 -1
  299. package/dist/hooks/useLanguage.mjs +7 -4
  300. package/dist/hooks/useLanguage.mjs.map +1 -1
  301. package/dist/hooks/useTranslate.d.ts.map +1 -1
  302. package/dist/hooks/useTranslate.js +8 -5
  303. package/dist/hooks/useTranslate.js.map +1 -1
  304. package/dist/hooks/useTranslate.mjs +8 -5
  305. package/dist/hooks/useTranslate.mjs.map +1 -1
  306. package/dist/index.d.ts +3 -1
  307. package/dist/index.d.ts.map +1 -1
  308. package/dist/index.js +22 -0
  309. package/dist/index.js.map +1 -1
  310. package/dist/index.mjs +9 -3
  311. package/dist/index.mjs.map +1 -1
  312. package/dist/theme/colors.d.ts +2 -2
  313. package/dist/theme/colors.d.ts.map +1 -1
  314. package/dist/theme/colors.js +63 -19
  315. package/dist/theme/colors.js.map +1 -1
  316. package/dist/theme/colors.mjs +64 -20
  317. package/dist/theme/colors.mjs.map +1 -1
  318. package/dist/theme/controlSizes.d.ts +91 -0
  319. package/dist/theme/controlSizes.d.ts.map +1 -0
  320. package/dist/theme/controlSizes.js +143 -0
  321. package/dist/theme/controlSizes.js.map +1 -0
  322. package/dist/theme/controlSizes.mjs +135 -0
  323. package/dist/theme/controlSizes.mjs.map +1 -0
  324. package/dist/theme/global.d.ts.map +1 -1
  325. package/dist/theme/global.js +19 -1
  326. package/dist/theme/global.js.map +1 -1
  327. package/dist/theme/global.mjs +19 -1
  328. package/dist/theme/global.mjs.map +1 -1
  329. package/dist/theme/index.d.ts.map +1 -1
  330. package/dist/theme/index.js +14 -43
  331. package/dist/theme/index.js.map +1 -1
  332. package/dist/theme/index.mjs +14 -43
  333. package/dist/theme/index.mjs.map +1 -1
  334. package/dist/theme/palette.generated.d.ts +295 -162
  335. package/dist/theme/palette.generated.d.ts.map +1 -1
  336. package/dist/theme/palette.generated.js +296 -162
  337. package/dist/theme/palette.generated.js.map +1 -1
  338. package/dist/theme/palette.generated.mjs +296 -163
  339. package/dist/theme/palette.generated.mjs.map +1 -1
  340. package/dist/theme/paletteSwatches.d.ts +20 -0
  341. package/dist/theme/paletteSwatches.d.ts.map +1 -1
  342. package/dist/theme/recipes/avatar.d.ts +30 -0
  343. package/dist/theme/recipes/avatar.d.ts.map +1 -0
  344. package/dist/theme/recipes/avatar.js +96 -0
  345. package/dist/theme/recipes/avatar.js.map +1 -0
  346. package/dist/theme/recipes/avatar.mjs +94 -0
  347. package/dist/theme/recipes/avatar.mjs.map +1 -0
  348. package/dist/theme/recipes/controls.d.ts +94 -0
  349. package/dist/theme/recipes/controls.d.ts.map +1 -0
  350. package/dist/theme/recipes/controls.js +154 -0
  351. package/dist/theme/recipes/controls.js.map +1 -0
  352. package/dist/theme/recipes/controls.mjs +144 -0
  353. package/dist/theme/recipes/controls.mjs.map +1 -0
  354. package/dist/translations/Defaults.translations.json.js +19 -1
  355. package/dist/translations/Defaults.translations.json.js.map +1 -1
  356. package/dist/translations/Defaults.translations.json.mjs +18 -2
  357. package/dist/translations/Defaults.translations.json.mjs.map +1 -1
  358. package/dist/utils/disabledControl.d.ts +8 -1
  359. package/dist/utils/disabledControl.d.ts.map +1 -1
  360. package/dist/utils/disabledControl.js +8 -1
  361. package/dist/utils/disabledControl.js.map +1 -1
  362. package/dist/utils/disabledControl.mjs +8 -1
  363. package/dist/utils/disabledControl.mjs.map +1 -1
  364. package/dist/utils/focusRing.d.ts +22 -0
  365. package/dist/utils/focusRing.d.ts.map +1 -1
  366. package/dist/utils/focusRing.js +22 -0
  367. package/dist/utils/focusRing.js.map +1 -1
  368. package/dist/utils/focusRing.mjs +21 -1
  369. package/dist/utils/focusRing.mjs.map +1 -1
  370. package/package.json +2 -1
  371. package/src/components/Accordion/Accordion.stories.tsx +85 -0
  372. package/src/components/Accordion/Accordion.usage.mdx +200 -0
  373. package/src/components/Appear/Appear.usage.mdx +107 -0
  374. package/src/components/Avatar/Avatar.recipe.test.tsx +176 -0
  375. package/src/components/Avatar/Avatar.stories.tsx +199 -24
  376. package/src/components/Avatar/Avatar.tsx +118 -21
  377. package/src/components/Avatar/Avatar.usage.mdx +185 -0
  378. package/src/components/Avatar/index.tsx +8 -1
  379. package/src/components/Banner/Banner.stories.tsx +152 -2
  380. package/src/components/Banner/Banner.types.ts +30 -1
  381. package/src/components/Banner/Banner.usage.mdx +233 -0
  382. package/src/components/BottomSheet/BottomSheet.stories.tsx +168 -1
  383. package/src/components/BottomSheet/BottomSheet.test.tsx +2 -1
  384. package/src/components/BottomSheet/BottomSheet.usage.mdx +216 -0
  385. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +59 -0
  386. package/src/components/Breadcrumb/Breadcrumb.usage.mdx +181 -0
  387. package/src/components/Button/Button.focusableWhenDisabled.test.tsx +218 -0
  388. package/src/components/Button/Button.stories.tsx +332 -3
  389. package/src/components/Button/Button.tsx +46 -3
  390. package/src/components/Button/Button.types.ts +38 -1
  391. package/src/components/Button/Button.usage.mdx +358 -0
  392. package/src/components/Button/Button.variants.test.tsx +13 -1
  393. package/src/components/Card/Card.stories.tsx +106 -0
  394. package/src/components/Card/Card.types.ts +12 -0
  395. package/src/components/Card/Card.usage.mdx +216 -0
  396. package/src/components/Checkbox/Checkbox.stories.tsx +140 -13
  397. package/src/components/Checkbox/Checkbox.usage.mdx +214 -0
  398. package/src/components/Chip/Chip.usage.mdx +78 -0
  399. package/src/components/Code/Code.stories.tsx +60 -0
  400. package/src/components/Code/Code.test.tsx +116 -0
  401. package/src/components/Code/Code.usage.mdx +187 -0
  402. package/src/components/Code/shikiAdapter.ts +38 -9
  403. package/src/components/CodeTabs/CodeTabs.stories.tsx +53 -0
  404. package/src/components/CodeTabs/CodeTabs.styles.ts +6 -5
  405. package/src/components/CodeTabs/CodeTabs.usage.mdx +176 -0
  406. package/src/components/Collapsible/Collapsible.stories.tsx +58 -0
  407. package/src/components/Collapsible/Collapsible.usage.mdx +173 -0
  408. package/src/components/ColorMode/ColorMode.stories.tsx +50 -0
  409. package/src/components/ColorMode/ColorMode.usage.mdx +135 -0
  410. package/src/components/ColorMode/ColorModeToggle.tsx +10 -3
  411. package/src/components/Confetti/Confetti.types.ts +5 -1
  412. package/src/components/Confetti/Confetti.usage.mdx +111 -0
  413. package/src/components/Confetti/confettiColors.ts +5 -5
  414. package/src/components/Container/Container.stories.tsx +32 -0
  415. package/src/components/Container/Container.usage.mdx +130 -0
  416. package/src/components/CopyableCode/CopyableCode.stories.tsx +62 -0
  417. package/src/components/CopyableCode/CopyableCode.usage.mdx +168 -0
  418. package/src/components/CountBadge/CountBadge.stories.tsx +69 -0
  419. package/src/components/CountBadge/CountBadge.usage.mdx +215 -0
  420. package/src/components/CountUp/CountUp.usage.mdx +107 -0
  421. package/src/components/DatePicker/DatePicker.types.ts +12 -0
  422. package/src/components/DatePicker/DatePicker.usage.mdx +177 -0
  423. package/src/components/DatePicker/RangeDatePicker.stories.tsx +87 -3
  424. package/src/components/DatePicker/RangeDatePicker.tsx +7 -1
  425. package/src/components/DatePicker/SingleDatePicker.tsx +7 -1
  426. package/src/components/DatePicker/index.ts +1 -0
  427. package/src/components/ErrorFallback/ErrorFallback.types.ts +6 -0
  428. package/src/components/ErrorFallback/ErrorFallback.usage.mdx +127 -0
  429. package/src/components/ExpandableText/ExpandableText.stories.tsx +55 -0
  430. package/src/components/ExpandableText/ExpandableText.tsx +0 -1
  431. package/src/components/ExpandableText/ExpandableText.usage.mdx +178 -0
  432. package/src/components/FileInput/FileInput.stories.tsx +38 -1
  433. package/src/components/FileInput/FileInput.usage.mdx +178 -0
  434. package/src/components/FileItem/FileItem.stories.tsx +71 -0
  435. package/src/components/FileItem/FileItem.usage.mdx +180 -0
  436. package/src/components/FileList/FileList.stories.tsx +25 -0
  437. package/src/components/FileList/FileList.usage.mdx +165 -0
  438. package/src/components/FlyTo/FlyTo.usage.mdx +99 -0
  439. package/src/components/Form/Form.stories.tsx +149 -0
  440. package/src/components/Form/Form.usage.mdx +203 -0
  441. package/src/components/Form/FormModalFooter/FormModalFooter.stories.tsx +1 -1
  442. package/src/components/Form/FormModalFooter/FormModalFooter.test.tsx +19 -1
  443. package/src/components/Form/FormModalFooter/FormModalFooter.tsx +2 -0
  444. package/src/components/Form/FormModalFooter/FormModalFooter.types.ts +11 -1
  445. package/src/components/FormControl/FormControl.stories.tsx +35 -0
  446. package/src/components/FormControl/FormControl.usage.mdx +128 -0
  447. package/src/components/FormIntegration/FormIntegration.usage.mdx +158 -0
  448. package/src/components/FormLabel/FormLabel.stories.tsx +71 -0
  449. package/src/components/FormLabel/FormLabel.usage.mdx +125 -0
  450. package/src/components/Icon/Icon.stories.tsx +61 -1
  451. package/src/components/Icon/Icon.usage.mdx +158 -0
  452. package/src/components/IconButton/IconButton.stories.tsx +213 -5
  453. package/src/components/IconButton/IconButton.usage.mdx +275 -0
  454. package/src/components/InfoSprinkle/InfoSprinkle.stories.tsx +77 -1
  455. package/src/components/InfoSprinkle/InfoSprinkle.usage.mdx +189 -0
  456. package/src/components/InlineCode/InlineCode.stories.tsx +75 -0
  457. package/src/components/InlineCode/InlineCode.usage.mdx +142 -0
  458. package/src/components/Input/Input.stories.tsx +180 -0
  459. package/src/components/Input/Input.tsx +4 -0
  460. package/src/components/Input/Input.usage.mdx +278 -0
  461. package/src/components/LineGraph/LineGraph.stories.tsx +112 -0
  462. package/src/components/LineGraph/LineGraph.tsx +4 -5
  463. package/src/components/LineGraph/LineGraph.types.ts +12 -2
  464. package/src/components/LineGraph/LineGraph.usage.mdx +186 -0
  465. package/src/components/LineGraph/seriesColors.test.ts +10 -9
  466. package/src/components/LineGraph/seriesColors.ts +18 -16
  467. package/src/components/Loaders/Loaders.stories.tsx +93 -0
  468. package/src/components/Loaders/Loaders.usage.mdx +180 -0
  469. package/src/components/LogicianProvider/LogicianProvider.usage.mdx +98 -0
  470. package/src/components/Markdown/Markdown.stories.tsx +53 -0
  471. package/src/components/Markdown/Markdown.usage.mdx +182 -0
  472. package/src/components/Masonry/Masonry.stories.tsx +63 -1
  473. package/src/components/Masonry/Masonry.types.ts +8 -3
  474. package/src/components/Masonry/Masonry.usage.mdx +142 -0
  475. package/src/components/MaxLengthIndicator/MaxLengthIndicator.stories.tsx +57 -0
  476. package/src/components/MaxLengthIndicator/MaxLengthIndicator.usage.mdx +125 -0
  477. package/src/components/Menu/Menu.stories.tsx +146 -2
  478. package/src/components/Menu/Menu.usage.mdx +238 -0
  479. package/src/components/Menu/MenuItem.types.ts +8 -0
  480. package/src/components/Modal/Modal.stories.tsx +177 -1
  481. package/src/components/Modal/Modal.usage.mdx +262 -0
  482. package/src/components/Modal/ModalCloseButton.tsx +1 -1
  483. package/src/components/MonthPicker/MonthPicker.stories.tsx +30 -0
  484. package/src/components/MonthPicker/MonthPicker.tsx +7 -1
  485. package/src/components/MonthPicker/MonthPicker.types.ts +8 -1
  486. package/src/components/MonthPicker/MonthPicker.usage.mdx +191 -0
  487. package/src/components/NavList/NavList.stories.tsx +927 -0
  488. package/src/components/NavList/NavList.styles.ts +114 -0
  489. package/src/components/NavList/NavList.test.tsx +1306 -0
  490. package/src/components/NavList/NavList.translations.json +9 -0
  491. package/src/components/NavList/NavList.tsx +160 -0
  492. package/src/components/NavList/NavList.types.ts +155 -0
  493. package/src/components/NavList/NavList.usage.mdx +545 -0
  494. package/src/components/NavList/NavListContext.ts +25 -0
  495. package/src/components/NavList/NavListGroup.tsx +243 -0
  496. package/src/components/NavList/NavListItem.tsx +543 -0
  497. package/src/components/NavList/NavListSkeleton.tsx +57 -0
  498. package/src/components/NavList/index.ts +15 -0
  499. package/src/components/Pagination/Pagination.stories.tsx +90 -1
  500. package/src/components/Pagination/Pagination.tsx +11 -10
  501. package/src/components/Pagination/Pagination.usage.mdx +186 -0
  502. package/src/components/PasswordInput/PasswordInput.stories.tsx +51 -0
  503. package/src/components/PasswordInput/PasswordInput.usage.mdx +193 -0
  504. package/src/components/PinInput/PinInput.stories.tsx +91 -0
  505. package/src/components/PinInput/PinInput.usage.mdx +194 -0
  506. package/src/components/Popover/Popover.stories.tsx +104 -1
  507. package/src/components/Popover/Popover.usage.mdx +197 -0
  508. package/src/components/ProgressBar/ProgressBar.stories.tsx +92 -1
  509. package/src/components/ProgressBar/ProgressBar.types.ts +9 -0
  510. package/src/components/ProgressBar/ProgressBar.usage.mdx +210 -0
  511. package/src/components/Pulse/Pulse.usage.mdx +102 -0
  512. package/src/components/RadialProgress/RadialProgress.stories.tsx +74 -1
  513. package/src/components/RadialProgress/RadialProgress.types.ts +21 -1
  514. package/src/components/RadialProgress/RadialProgress.usage.mdx +153 -0
  515. package/src/components/Radio/Radio.stories.tsx +119 -0
  516. package/src/components/Radio/Radio.usage.mdx +187 -0
  517. package/src/components/Reveal/Reveal.usage.mdx +105 -0
  518. package/src/components/ScaledContext/ScaledContext.usage.mdx +111 -0
  519. package/src/components/SeeMoreButton/SeeMoreButton.stories.tsx +146 -2
  520. package/src/components/SeeMoreButton/SeeMoreButton.types.ts +8 -0
  521. package/src/components/SeeMoreButton/SeeMoreButton.usage.mdx +213 -0
  522. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +69 -0
  523. package/src/components/SegmentedControl/SegmentedControl.styles.ts +38 -0
  524. package/src/components/SegmentedControl/SegmentedControl.tsx +43 -37
  525. package/src/components/SegmentedControl/SegmentedControl.usage.mdx +216 -0
  526. package/src/components/SegmentedProgressBar/SegmentedProgressBar.stories.tsx +54 -0
  527. package/src/components/SegmentedProgressBar/SegmentedProgressBar.types.ts +2 -0
  528. package/src/components/SegmentedProgressBar/SegmentedProgressBar.usage.mdx +145 -0
  529. package/src/components/Select/Combobox.tsx +28 -3
  530. package/src/components/Select/Select.clearTrigger.test.tsx +76 -0
  531. package/src/components/Select/Select.stories.tsx +290 -1
  532. package/src/components/Select/Select.styles.ts +89 -0
  533. package/src/components/Select/Select.tsx +28 -2
  534. package/src/components/Select/Select.usage.mdx +341 -0
  535. package/src/components/Shake/Shake.usage.mdx +107 -0
  536. package/src/components/Slider/Slider.stories.tsx +116 -0
  537. package/src/components/Slider/Slider.usage.mdx +179 -0
  538. package/src/components/Spinner/Spinner.stories.tsx +64 -0
  539. package/src/components/Spinner/Spinner.usage.mdx +136 -0
  540. package/src/components/SwapTransition/SwapTransition.usage.mdx +102 -0
  541. package/src/components/Switch/Switch.stories.tsx +139 -6
  542. package/src/components/Switch/Switch.usage.mdx +200 -0
  543. package/src/components/Switch/SwitchControl.tsx +32 -15
  544. package/src/components/Table/Table.stories.tsx +159 -1
  545. package/src/components/Table/Table.usage.mdx +235 -0
  546. package/src/components/Tabs/Tab/Tab.styles.ts +1 -1
  547. package/src/components/Tabs/Tabs.stories.tsx +86 -0
  548. package/src/components/Tabs/Tabs.usage.mdx +263 -0
  549. package/src/components/Tag/Tag.stories.tsx +181 -4
  550. package/src/components/Tag/Tag.styles.ts +117 -2
  551. package/src/components/Tag/Tag.test.tsx +87 -1
  552. package/src/components/Tag/Tag.tsx +22 -1
  553. package/src/components/Tag/Tag.types.ts +16 -2
  554. package/src/components/Tag/Tag.usage.mdx +257 -0
  555. package/src/components/Tag/index.ts +2 -0
  556. package/src/components/Textarea/Textarea.stories.tsx +113 -0
  557. package/src/components/Textarea/Textarea.tsx +4 -0
  558. package/src/components/Textarea/Textarea.usage.mdx +186 -0
  559. package/src/components/Toast/Toast.stories.tsx +185 -3
  560. package/src/components/Toast/Toast.styles.ts +19 -7
  561. package/src/components/Toast/Toast.tsx +8 -1
  562. package/src/components/Toast/Toast.usage.mdx +265 -0
  563. package/src/components/Tooltip/Tooltip.stories.tsx +86 -1
  564. package/src/components/Tooltip/Tooltip.usage.mdx +219 -0
  565. package/src/components/Tree/Tree.stories.tsx +89 -0
  566. package/src/components/Tree/Tree.usage.mdx +207 -0
  567. package/src/components/Typography/Caption.tsx +0 -1
  568. package/src/components/Typography/H1.tsx +0 -1
  569. package/src/components/Typography/H2.tsx +0 -1
  570. package/src/components/Typography/H3.tsx +0 -1
  571. package/src/components/Typography/H4.tsx +0 -1
  572. package/src/components/Typography/H5.tsx +0 -1
  573. package/src/components/Typography/Link.tsx +0 -1
  574. package/src/components/Typography/Overline.tsx +0 -1
  575. package/src/components/Typography/Subtext.tsx +0 -1
  576. package/src/components/Typography/Subtitle.tsx +0 -1
  577. package/src/components/Typography/Text.tsx +0 -1
  578. package/src/components/Typography/Typography.stories.tsx +117 -0
  579. package/src/components/Typography/Typography.usage.mdx +257 -0
  580. package/src/components/Workflow/Workflow.usage.mdx +199 -0
  581. package/src/components/a11y.kwcag.test.tsx +78 -21
  582. package/src/components/claude.md +24 -1
  583. package/src/components/noRawScales.test.ts +5 -1
  584. package/src/foundations/BrandAssets.mdx +637 -0
  585. package/src/foundations/BrandAssets.stories.tsx +680 -0
  586. package/src/foundations/BrandColour.mdx +103 -4
  587. package/src/foundations/BrandColour.stories.tsx +135 -2
  588. package/src/hooks/useLanguage.ts +8 -3
  589. package/src/hooks/useTranslate.test.tsx +46 -0
  590. package/src/hooks/useTranslate.ts +7 -5
  591. package/src/index.ts +19 -1
  592. package/src/theme/BazePalette.stories.tsx +111 -1
  593. package/src/theme/ControlSizes.stories.tsx +586 -0
  594. package/src/theme/Palette.stories.tsx +2 -2
  595. package/src/theme/SemanticTokens.mdx +118 -19
  596. package/src/theme/claude.md +34 -9
  597. package/src/theme/colors.ts +82 -19
  598. package/src/theme/contrast.test.ts +67 -0
  599. package/src/theme/controlSizes.test.ts +153 -0
  600. package/src/theme/controlSizes.ts +162 -0
  601. package/src/theme/global.ts +20 -1
  602. package/src/theme/index.ts +23 -46
  603. package/src/theme/palette.generated.ts +296 -162
  604. package/src/theme/paletteSwatches.test.ts +1 -1
  605. package/src/theme/paletteSwatches.ts +35 -0
  606. package/src/theme/recipes/avatar.ts +92 -0
  607. package/src/theme/recipes/controls.ts +171 -0
  608. package/src/translations/Defaults.translations.json +14 -0
  609. package/src/utils/disabledControl.ts +8 -1
  610. package/src/utils/focusRing.ts +23 -0
@@ -0,0 +1,153 @@
1
+ import { defaultSystem } from '@chakra-ui/react';
2
+ import { describe, expect, it } from 'vitest';
3
+
4
+ import {
5
+ segmentItemHeight,
6
+ segmentRootPaddingPx,
7
+ } from '../components/SegmentedControl/SegmentedControl.styles';
8
+ import { getTagSizeStyles } from '../components/Tag/Tag.styles';
9
+ import {
10
+ CONTROL_RADIUS,
11
+ CONTROL_SIZES,
12
+ controlHeightToken,
13
+ controlSizes,
14
+ CORE_CONTROL_SIZES,
15
+ } from './controlSizes';
16
+ import { system } from './index';
17
+
18
+ /**
19
+ * Every control that takes `size` must resolve it through `controlSizes`.
20
+ *
21
+ * These read the recipes the shipped `system` actually ends up with (Chakra's
22
+ * defaults deep-merged with ours) and the helpers the components call, so a
23
+ * component that grows its own height or type map again fails here — the
24
+ * QA #18 toolbar (SegmentedControl 36px next to Input 28px next to Tag 20px)
25
+ * is what that looked like.
26
+ */
27
+
28
+ type Variant = Record<string, any>;
29
+ const sizeVariants = (recipe: { variants?: { size?: Variant } }) =>
30
+ recipe.variants?.size ?? {};
31
+
32
+ describe('controlSizes — Button is the reference', () => {
33
+ it('restates Chakra’s own button sizes exactly (no Button changes size)', () => {
34
+ const chakra = sizeVariants(defaultSystem.getRecipe('button'));
35
+ for (const size of CONTROL_SIZES) {
36
+ const s = controlSizes[size];
37
+ expect(chakra[size], size).toMatchObject({
38
+ h: s.height,
39
+ minW: s.height,
40
+ textStyle: s.textStyle,
41
+ px: s.actionPaddingX,
42
+ gap: s.gap,
43
+ _icon: { width: s.iconSize, height: s.iconSize },
44
+ });
45
+ }
46
+ });
47
+
48
+ it('the shipped button recipe resolves to the scale', () => {
49
+ const shipped = sizeVariants(system.getRecipe('button'));
50
+ for (const size of CONTROL_SIZES) {
51
+ expect(shipped[size].h, size).toBe(controlSizes[size].height);
52
+ expect(shipped[size].textStyle, size).toBe(controlSizes[size].textStyle);
53
+ }
54
+ });
55
+ });
56
+
57
+ describe('controlSizes — every other control resolves to the same scale', () => {
58
+ it.each(CORE_CONTROL_SIZES)('Input %s', (size) => {
59
+ const v = sizeVariants(system.getRecipe('input'))[size];
60
+ expect(v['--input-height']).toBe(controlHeightToken(size));
61
+ expect(v.textStyle).toBe(controlSizes[size].textStyle);
62
+ expect(v.px).toBe(controlSizes[size].fieldPaddingX);
63
+ });
64
+
65
+ it.each(CORE_CONTROL_SIZES)('Textarea %s (type and padding)', (size) => {
66
+ const v = sizeVariants(system.getRecipe('textarea'))[size];
67
+ expect(v.textStyle).toBe(controlSizes[size].textStyle);
68
+ expect(v.px).toBe(controlSizes[size].fieldPaddingX);
69
+ });
70
+
71
+ it.each(CORE_CONTROL_SIZES)('Select %s', (size) => {
72
+ const v = sizeVariants(system.getSlotRecipe('select'))[size];
73
+ expect(v.root['--select-trigger-height']).toBe(controlHeightToken(size));
74
+ expect(v.trigger.textStyle).toBe(controlSizes[size].textStyle);
75
+ });
76
+
77
+ it.each(CORE_CONTROL_SIZES)('Combobox %s', (size) => {
78
+ const v = sizeVariants(system.getSlotRecipe('combobox'))[size];
79
+ expect(v.root['--combobox-input-height']).toBe(controlHeightToken(size));
80
+ expect(v.input.textStyle).toBe(controlSizes[size].textStyle);
81
+ });
82
+
83
+ it.each(['sm', 'md', 'lg'] as const)('Tabs %s', (size) => {
84
+ const v = sizeVariants(system.getSlotRecipe('tabs'))[size];
85
+ expect(v.root['--tabs-height']).toBe(controlHeightToken(size));
86
+ expect(v.trigger.textStyle).toBe(controlSizes[size].textStyle);
87
+ });
88
+
89
+ it.each(CORE_CONTROL_SIZES)('Checkbox / Radio / Switch label %s', (size) => {
90
+ const t = controlSizes[size].textStyle;
91
+ expect(
92
+ sizeVariants(system.getSlotRecipe('checkbox'))[size].label.textStyle
93
+ ).toBe(t);
94
+ expect(
95
+ sizeVariants(system.getSlotRecipe('radioGroup'))[size].item.textStyle
96
+ ).toBe(t);
97
+ expect(
98
+ sizeVariants(system.getSlotRecipe('switch'))[size].label.textStyle
99
+ ).toBe(t);
100
+ });
101
+
102
+ it.each(CORE_CONTROL_SIZES)(
103
+ 'SegmentedControl %s: item + 2 × root padding = the height token',
104
+ (size) => {
105
+ const padding = size === 'xs' ? 2 : 4;
106
+ expect(segmentRootPaddingPx(size)).toBe(padding);
107
+ expect(segmentItemHeight(size)).toBe(
108
+ `calc(var(--chakra-sizes-${controlSizes[size].height}) - ${padding * 2}px)`
109
+ );
110
+ }
111
+ );
112
+
113
+ it.each(CORE_CONTROL_SIZES)('interactive Tag %s', (size) => {
114
+ const { sizeStyles } = getTagSizeStyles(size, true);
115
+ expect(sizeStyles).toMatchObject({
116
+ h: controlSizes[size].height,
117
+ textStyle: controlSizes[size].textStyle,
118
+ px: controlSizes[size].actionPaddingX,
119
+ borderRadius: CONTROL_RADIUS,
120
+ });
121
+ });
122
+
123
+ it('a static Tag keeps the badge sizes', () => {
124
+ expect(getTagSizeStyles('lg', false).sizeStyles).toEqual({
125
+ fontSize: 'sm',
126
+ });
127
+ expect(getTagSizeStyles('xs', false).recipeSize).toBe('sm');
128
+ });
129
+
130
+ it('boxed fields share Button’s corner', () => {
131
+ expect(system.getRecipe('input').base.borderRadius).toBe(CONTROL_RADIUS);
132
+ expect(system.getRecipe('textarea').base.borderRadius).toBe(CONTROL_RADIUS);
133
+ expect(system.getSlotRecipe('select').base.trigger.borderRadius).toBe(
134
+ CONTROL_RADIUS
135
+ );
136
+ expect(system.getSlotRecipe('combobox').base.input.borderRadius).toBe(
137
+ CONTROL_RADIUS
138
+ );
139
+ });
140
+ });
141
+
142
+ describe('slot recipe overrides keep Chakra’s anatomy', () => {
143
+ // Chakra merges configs array-by-index: a partial `slots` list overwrites
144
+ // the first entries of the default list instead of adding to it.
145
+ it.each(['select', 'combobox', 'tabs', 'checkbox', 'radioGroup', 'switch'])(
146
+ '%s',
147
+ (key) => {
148
+ expect(system.getSlotRecipe(key).slots).toEqual(
149
+ defaultSystem.getSlotRecipe(key).slots
150
+ );
151
+ }
152
+ );
153
+ });
@@ -0,0 +1,162 @@
1
+ /**
2
+ * One size scale for every control.
3
+ *
4
+ * A row of controls — a table filter bar, a toolbar, an inline form — only
5
+ * lines up when every control resolves the same `size` value to the same
6
+ * height, type size, icon size and corner. Each component used to carry its own
7
+ * map (Chakra's recipe here, a local table there), and they drifted: in the
8
+ * FactChat coding-agent toolbar a `SegmentedControl size="sm"` drew 36px, an
9
+ * `Input size="xs"` 28px and an `lg` `Tag` 20.4px side by side (R28 3차 QA #18).
10
+ * Every height-bearing control and every recipe override now reads this table,
11
+ * and `controlSizes.test.ts` fails if one stops doing so.
12
+ *
13
+ * ## The scale is Button's
14
+ *
15
+ * `Button` was the reference and does not change: the values below are exactly
16
+ * Chakra's button recipe. Everything else is aligned to it.
17
+ *
18
+ * | size | height token | px at the 14px root | in a 16px `ScaledContext` (desktop) |
19
+ * |------|--------------|---------------------|-------------------------------------|
20
+ * | 2xs | `sizes.6` | 21 | 21 (2xs type is 0.875em) |
21
+ * | xs | `sizes.8` | 28 | 28 (xs type is 0.875em) |
22
+ * | sm | `sizes.9` | 31.5 | 36 |
23
+ * | md | `sizes.10` | 35 | 40 |
24
+ * | lg | `sizes.11` | 38.5 | 44 |
25
+ * | xl | `sizes.12` | 42 | 48 |
26
+ *
27
+ * ## Why one type step per size, not just one height
28
+ *
29
+ * `html` is 14px, and the sizes tokens are rem, so outside a `ScaledContext`
30
+ * the height alone decides. Inside one (FactChat's `ReadingScale` is
31
+ * `<ScaledContext fontSize="16px">`) the sizes tokens become **em**, and an em
32
+ * resolves against the control's *own* font size. Two controls with the same
33
+ * height token but different type therefore stop matching there — that is how
34
+ * `Input lg` (1.143em type) drew 50px next to a 44px `Button lg`. The same
35
+ * happens at the mobile breakpoint, where the textStyles drop to 0.875em. So
36
+ * every control takes its type from `textStyle` here too: equal type per size
37
+ * is what keeps equal height everywhere, not only at the root.
38
+ *
39
+ * Text-entry controls still raise their type to 16px under `pointer: coarse`
40
+ * (`noZoomOnFocus`, iOS zoom). At the root that changes nothing about height;
41
+ * inside a `ScaledContext` on a touch device it makes an `Input` taller than
42
+ * its neighbours. That is the price of not zooming, and it is left alone.
43
+ *
44
+ * ## Two padding ramps
45
+ *
46
+ * Action controls (Button, SegmentedControl items, interactive Tag) and field
47
+ * controls (Input, Select, Combobox, Textarea) keep different inline padding on
48
+ * purpose: a field's text starts near its edge, a button's label is centred in
49
+ * air. Each ramp is shared by its whole family.
50
+ *
51
+ * ## Icons
52
+ *
53
+ * `iconSize` is Button's `_icon` ramp as a sizes token; `iconBoxSize` is the
54
+ * `Icon` `boxSize` name with the same size, for icons a control draws itself
55
+ * (DatePicker / MonthPicker triggers) and for call sites placing an icon in a
56
+ * control (`<SearchIcon boxSize={controlSizes[size].iconBoxSize} />`).
57
+ */
58
+
59
+ export const CONTROL_SIZES = ['2xs', 'xs', 'sm', 'md', 'lg', 'xl'] as const;
60
+
61
+ export type ControlSize = (typeof CONTROL_SIZES)[number];
62
+
63
+ /**
64
+ * The four sizes a control row is built from. Every height-bearing control
65
+ * supports these; `2xs` / `xl` exist only where the component already had them.
66
+ */
67
+ export const CORE_CONTROL_SIZES = ['xs', 'sm', 'md', 'lg'] as const;
68
+
69
+ export type CoreControlSize = (typeof CORE_CONTROL_SIZES)[number];
70
+
71
+ export interface ControlSizeSpec {
72
+ /** `sizes` token key — the outer height of every height-bearing control. */
73
+ height: string;
74
+ /** textStyle every control uses at this size (font size + line height). */
75
+ textStyle: 'xs' | 'sm' | 'md';
76
+ /** `sizes` token key for an icon inside the control (Button's `_icon`). */
77
+ iconSize: string;
78
+ /** The `Icon` `boxSize` name that renders at `iconSize`. */
79
+ iconBoxSize: '2xs' | 'xs' | 'sm';
80
+ /** Inline padding of action controls (spacing token). */
81
+ actionPaddingX: string;
82
+ /** Inline padding of field controls (spacing token). */
83
+ fieldPaddingX: string;
84
+ /** Gap between an icon and the label (spacing token). */
85
+ gap: string;
86
+ }
87
+
88
+ export const controlSizes: Record<ControlSize, ControlSizeSpec> = {
89
+ '2xs': {
90
+ height: '6',
91
+ textStyle: 'xs',
92
+ iconSize: '3.5',
93
+ iconBoxSize: '2xs',
94
+ actionPaddingX: '2',
95
+ fieldPaddingX: '2',
96
+ gap: '1',
97
+ },
98
+ xs: {
99
+ height: '8',
100
+ textStyle: 'xs',
101
+ iconSize: '4',
102
+ iconBoxSize: 'xs',
103
+ actionPaddingX: '2.5',
104
+ fieldPaddingX: '2',
105
+ gap: '1',
106
+ },
107
+ sm: {
108
+ height: '9',
109
+ textStyle: 'sm',
110
+ iconSize: '4',
111
+ iconBoxSize: 'xs',
112
+ actionPaddingX: '3.5',
113
+ fieldPaddingX: '2.5',
114
+ gap: '2',
115
+ },
116
+ md: {
117
+ height: '10',
118
+ textStyle: 'sm',
119
+ iconSize: '5',
120
+ iconBoxSize: 'sm',
121
+ actionPaddingX: '4',
122
+ fieldPaddingX: '3',
123
+ gap: '2',
124
+ },
125
+ lg: {
126
+ height: '11',
127
+ textStyle: 'md',
128
+ iconSize: '5',
129
+ iconBoxSize: 'sm',
130
+ actionPaddingX: '5',
131
+ // 12px at a 16px font — kept from the lg padding fix (f2820c8) so lg reads
132
+ // as a step up from md rather than a wider box.
133
+ fieldPaddingX: '3',
134
+ gap: '3',
135
+ },
136
+ xl: {
137
+ height: '12',
138
+ textStyle: 'md',
139
+ iconSize: '5',
140
+ iconBoxSize: 'sm',
141
+ actionPaddingX: '5',
142
+ fieldPaddingX: '4.5',
143
+ gap: '2.5',
144
+ },
145
+ };
146
+
147
+ /** Corner radius of every boxed control, at every size (Button's). */
148
+ export const CONTROL_RADIUS = 'md';
149
+
150
+ /** `sizes.N` token path of a size's height, for recipe CSS variables. */
151
+ export const controlHeightToken = (size: ControlSize): string =>
152
+ `sizes.${controlSizes[size].height}`;
153
+
154
+ /** The same height as a CSS value, for `calc()` and inline styles. */
155
+ export const controlHeightVar = (size: ControlSize): string =>
156
+ `var(--chakra-sizes-${controlSizes[size].height})`;
157
+
158
+ /** Resolve an arbitrary `size` prop to a spec, falling back to `md`. */
159
+ export const getControlSize = (size: unknown): ControlSizeSpec =>
160
+ typeof size === 'string' && size in controlSizes
161
+ ? controlSizes[size as ControlSize]
162
+ : controlSizes.md;
@@ -35,10 +35,29 @@ export const globalCss = defineGlobalStyles({
35
35
  },
36
36
 
37
37
  'html, body': {
38
- // Mode-aware primary text (neutral.11 light / cream dark).
38
+ // Mode-aware primary text (neutral.11 light / off-white dark).
39
39
  color: 'fg.default',
40
40
  },
41
41
 
42
+ // Korean breaks between 어절, not mid-word — but only Korean. Japanese and
43
+ // Chinese have no spaces, so `keep-all` turns a whole sentence into one
44
+ // unbreakable run that overflows its box. Set once on <html> by language
45
+ // and let it inherit (`word-break` is inherited), so a component that asks
46
+ // for `break-all` (emails, keys, file names) still gets it. The Typography
47
+ // components used to hard-code `keep-all` on themselves, which left every
48
+ // ja screen to undo it one call site at a time.
49
+ 'html:lang(ko)': {
50
+ wordBreak: 'keep-all',
51
+ },
52
+ // Japanese wraps at phrase boundaries (文節) where the browser can find them
53
+ // (Chromium 119+, ja only). Elsewhere the rule is skipped and ja keeps the
54
+ // default `normal`, which breaks between characters — never `keep-all`.
55
+ 'html:lang(ja)': {
56
+ '@supports (word-break: auto-phrase)': {
57
+ wordBreak: 'auto-phrase',
58
+ },
59
+ },
60
+
42
61
  '#__next': {
43
62
  height: 'var(--chakra-vh)',
44
63
  },
@@ -2,7 +2,6 @@ import {
2
2
  createSystem,
3
3
  defaultConfig,
4
4
  defineConfig,
5
- defineSlotRecipe,
6
5
  defineTextStyles,
7
6
  type SystemConfig,
8
7
  } from '@chakra-ui/react';
@@ -15,6 +14,18 @@ import {
15
14
  import { globalCss } from './global';
16
15
  import { animationStyles, durations, easings, keyframes } from './motion';
17
16
  import { accordionSlotRecipe } from './recipes/accordion';
17
+ import { avatarSlotRecipe } from './recipes/avatar';
18
+ import {
19
+ buttonRecipe,
20
+ checkboxSlotRecipe,
21
+ comboboxSlotRecipe,
22
+ inputRecipe,
23
+ radioGroupSlotRecipe,
24
+ selectSlotRecipe,
25
+ switchSlotRecipe,
26
+ tabsSlotRecipe,
27
+ textareaRecipe,
28
+ } from './recipes/controls';
18
29
  import { tableSlotRecipe } from './recipes/table';
19
30
 
20
31
  /**
@@ -212,49 +223,6 @@ export const textStyles = defineTextStyles({
212
223
  },
213
224
  });
214
225
 
215
- /**
216
- * `lg`/`xl` form-control font size.
217
- *
218
- * Chakra's input, textarea and select recipes put `sm`/`md` on the `sm`
219
- * textStyle and `lg`/`xl` on `md`. This theme maps both textStyles to
220
- * `subtitleAndP`, so every size rendered at the same 14px and only the height
221
- * changed. `lg`/`xl` get their own step here (desktop 16px, phone 14px);
222
- * `xs`/`sm`/`md` keep their current size on purpose, so call sites that do not
223
- * pass `size` render exactly as before.
224
- *
225
- * Spacing tokens are em-based, so Chakra's `lg` `px: 4` grows with the font to
226
- * 16px. `lg` drops to `px: 3` (12px) to stay close to `md`'s 10.5px.
227
- */
228
- const FORM_CONTROL_LG_FONT_SIZE = { base: '1em', md: '1.143em' } as const;
229
-
230
- const formControlLgOverride = {
231
- variants: {
232
- size: {
233
- lg: { fontSize: FORM_CONTROL_LG_FONT_SIZE, px: '3' },
234
- xl: { fontSize: FORM_CONTROL_LG_FONT_SIZE },
235
- },
236
- },
237
- };
238
-
239
- // Same `lg` step as Input, and the same height as Input `lg` (Chakra puts the
240
- // select trigger one token taller). Chakra's `py: 3` is em-based, so at 16px it
241
- // alone pushes the trigger past the min height; let the height token win.
242
- const selectSlotRecipe = defineSlotRecipe({
243
- slots: ['root', 'trigger', 'content'],
244
- variants: {
245
- size: {
246
- lg: {
247
- root: {
248
- '--select-trigger-height': 'sizes.11',
249
- '--select-trigger-padding-x': 'spacing.3',
250
- },
251
- trigger: { fontSize: FORM_CONTROL_LG_FONT_SIZE, py: '1.5' },
252
- content: { fontSize: FORM_CONTROL_LG_FONT_SIZE },
253
- },
254
- },
255
- },
256
- });
257
-
258
226
  type TokenNode = { value?: unknown; [key: string]: unknown };
259
227
 
260
228
  const normalizeNode = (node: TokenNode): TokenNode => {
@@ -397,14 +365,23 @@ export function createLogicianTheme(options: LogicianThemeOptions = {}) {
397
365
  colors: createSemanticColors(options),
398
366
  },
399
367
  textStyles,
368
+ // Every control's `size` variant reads the shared scale in
369
+ // ./controlSizes — see ./recipes/controls.
400
370
  recipes: {
401
- input: formControlLgOverride,
402
- textarea: formControlLgOverride,
371
+ button: buttonRecipe,
372
+ input: inputRecipe,
373
+ textarea: textareaRecipe,
403
374
  },
404
375
  slotRecipes: {
405
376
  accordion: accordionSlotRecipe,
377
+ avatar: avatarSlotRecipe,
406
378
  table: tableSlotRecipe,
407
379
  select: selectSlotRecipe,
380
+ combobox: comboboxSlotRecipe,
381
+ tabs: tabsSlotRecipe,
382
+ checkbox: checkboxSlotRecipe,
383
+ radioGroup: radioGroupSlotRecipe,
384
+ switch: switchSlotRecipe,
408
385
  },
409
386
  },
410
387
  });