@mindlogic-ai/logician-ui 3.0.0 → 3.1.0-alpha.0

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 (299) hide show
  1. package/dist/components/Avatar/Avatar.js +1 -1
  2. package/dist/components/Avatar/Avatar.js.map +1 -1
  3. package/dist/components/Avatar/Avatar.mjs +1 -1
  4. package/dist/components/Avatar/Avatar.mjs.map +1 -1
  5. package/dist/components/Badge/Badge.styles.d.ts.map +1 -1
  6. package/dist/components/Badge/Badge.styles.js +5 -3
  7. package/dist/components/Badge/Badge.styles.js.map +1 -1
  8. package/dist/components/Badge/Badge.styles.mjs +5 -3
  9. package/dist/components/Badge/Badge.styles.mjs.map +1 -1
  10. package/dist/components/Button/Button.styles.d.ts.map +1 -1
  11. package/dist/components/Button/Button.styles.js +39 -33
  12. package/dist/components/Button/Button.styles.js.map +1 -1
  13. package/dist/components/Button/Button.styles.mjs +39 -33
  14. package/dist/components/Button/Button.styles.mjs.map +1 -1
  15. package/dist/components/Card/Card.js +1 -1
  16. package/dist/components/Card/Card.js.map +1 -1
  17. package/dist/components/Card/Card.mjs +1 -1
  18. package/dist/components/Card/Card.mjs.map +1 -1
  19. package/dist/components/Checkbox/CheckboxControl.d.ts.map +1 -1
  20. package/dist/components/Checkbox/CheckboxControl.js +9 -3
  21. package/dist/components/Checkbox/CheckboxControl.js.map +1 -1
  22. package/dist/components/Checkbox/CheckboxControl.mjs +9 -3
  23. package/dist/components/Checkbox/CheckboxControl.mjs.map +1 -1
  24. package/dist/components/Chip/Chip.styles.d.ts.map +1 -1
  25. package/dist/components/Chip/Chip.styles.js +14 -11
  26. package/dist/components/Chip/Chip.styles.js.map +1 -1
  27. package/dist/components/Chip/Chip.styles.mjs +14 -11
  28. package/dist/components/Chip/Chip.styles.mjs.map +1 -1
  29. package/dist/components/Code/Code.js +4 -4
  30. package/dist/components/Code/Code.js.map +1 -1
  31. package/dist/components/Code/Code.mjs +4 -4
  32. package/dist/components/Code/Code.mjs.map +1 -1
  33. package/dist/components/CodeTabs/CopyButton.js +1 -1
  34. package/dist/components/CodeTabs/CopyButton.mjs +1 -1
  35. package/dist/components/Collapsible/CollapsibleRoot.js +1 -1
  36. package/dist/components/Collapsible/CollapsibleRoot.js.map +1 -1
  37. package/dist/components/Collapsible/CollapsibleRoot.mjs +1 -1
  38. package/dist/components/Collapsible/CollapsibleRoot.mjs.map +1 -1
  39. package/dist/components/Collapsible/CollapsibleTrigger.js +1 -1
  40. package/dist/components/Collapsible/CollapsibleTrigger.js.map +1 -1
  41. package/dist/components/Collapsible/CollapsibleTrigger.mjs +1 -1
  42. package/dist/components/Collapsible/CollapsibleTrigger.mjs.map +1 -1
  43. package/dist/components/ColorMode/ColorModeProvider.d.ts +39 -0
  44. package/dist/components/ColorMode/ColorModeProvider.d.ts.map +1 -0
  45. package/dist/components/ColorMode/ColorModeProvider.js +39 -0
  46. package/dist/components/ColorMode/ColorModeProvider.js.map +1 -0
  47. package/dist/components/ColorMode/ColorModeProvider.mjs +37 -0
  48. package/dist/components/ColorMode/ColorModeProvider.mjs.map +1 -0
  49. package/dist/components/ColorMode/ColorModeToggle.d.ts +18 -0
  50. package/dist/components/ColorMode/ColorModeToggle.d.ts.map +1 -0
  51. package/dist/components/ColorMode/ColorModeToggle.js +34 -0
  52. package/dist/components/ColorMode/ColorModeToggle.js.map +1 -0
  53. package/dist/components/ColorMode/ColorModeToggle.mjs +32 -0
  54. package/dist/components/ColorMode/ColorModeToggle.mjs.map +1 -0
  55. package/dist/components/ColorMode/index.d.ts +7 -0
  56. package/dist/components/ColorMode/index.d.ts.map +1 -0
  57. package/dist/components/ColorMode/useColorMode.d.ts +41 -0
  58. package/dist/components/ColorMode/useColorMode.d.ts.map +1 -0
  59. package/dist/components/ColorMode/useColorMode.js +55 -0
  60. package/dist/components/ColorMode/useColorMode.js.map +1 -0
  61. package/dist/components/ColorMode/useColorMode.mjs +52 -0
  62. package/dist/components/ColorMode/useColorMode.mjs.map +1 -0
  63. package/dist/components/DatePicker/RangeDatePicker.d.ts.map +1 -1
  64. package/dist/components/DatePicker/RangeDatePicker.js +8 -5
  65. package/dist/components/DatePicker/RangeDatePicker.js.map +1 -1
  66. package/dist/components/DatePicker/RangeDatePicker.mjs +8 -5
  67. package/dist/components/DatePicker/RangeDatePicker.mjs.map +1 -1
  68. package/dist/components/DatePicker/SingleDatePicker.js +3 -3
  69. package/dist/components/DatePicker/SingleDatePicker.js.map +1 -1
  70. package/dist/components/DatePicker/SingleDatePicker.mjs +3 -3
  71. package/dist/components/DatePicker/SingleDatePicker.mjs.map +1 -1
  72. package/dist/components/ErrorFallback/ErrorFallback.js +1 -1
  73. package/dist/components/ErrorFallback/ErrorFallback.js.map +1 -1
  74. package/dist/components/ErrorFallback/ErrorFallback.mjs +1 -1
  75. package/dist/components/ErrorFallback/ErrorFallback.mjs.map +1 -1
  76. package/dist/components/FileInput/FileInput.js +1 -1
  77. package/dist/components/FileInput/FileInput.js.map +1 -1
  78. package/dist/components/FileInput/FileInput.mjs +1 -1
  79. package/dist/components/FileInput/FileInput.mjs.map +1 -1
  80. package/dist/components/FileItem/FileItem.js +2 -2
  81. package/dist/components/FileItem/FileItem.js.map +1 -1
  82. package/dist/components/FileItem/FileItem.mjs +2 -2
  83. package/dist/components/FileItem/FileItem.mjs.map +1 -1
  84. package/dist/components/FileList/FileList.js +3 -3
  85. package/dist/components/FileList/FileList.js.map +1 -1
  86. package/dist/components/FileList/FileList.mjs +3 -3
  87. package/dist/components/FileList/FileList.mjs.map +1 -1
  88. package/dist/components/FormLabel/FormLabel.js +1 -1
  89. package/dist/components/FormLabel/FormLabel.js.map +1 -1
  90. package/dist/components/FormLabel/FormLabel.mjs +1 -1
  91. package/dist/components/FormLabel/FormLabel.mjs.map +1 -1
  92. package/dist/components/IconButton/IconButton.styles.js +1 -1
  93. package/dist/components/IconButton/IconButton.styles.js.map +1 -1
  94. package/dist/components/IconButton/IconButton.styles.mjs +1 -1
  95. package/dist/components/IconButton/IconButton.styles.mjs.map +1 -1
  96. package/dist/components/Input/Input.d.ts.map +1 -1
  97. package/dist/components/Input/Input.js +6 -6
  98. package/dist/components/Input/Input.js.map +1 -1
  99. package/dist/components/Input/Input.mjs +6 -6
  100. package/dist/components/Input/Input.mjs.map +1 -1
  101. package/dist/components/LineGraph/LineGraph.d.ts.map +1 -1
  102. package/dist/components/LineGraph/LineGraph.js +9 -5
  103. package/dist/components/LineGraph/LineGraph.js.map +1 -1
  104. package/dist/components/LineGraph/LineGraph.mjs +9 -5
  105. package/dist/components/LineGraph/LineGraph.mjs.map +1 -1
  106. package/dist/components/Loaders/PageLoader.js +1 -1
  107. package/dist/components/Loaders/PageLoader.js.map +1 -1
  108. package/dist/components/Loaders/PageLoader.mjs +1 -1
  109. package/dist/components/Loaders/PageLoader.mjs.map +1 -1
  110. package/dist/components/Loaders/SectionLoader.js +1 -1
  111. package/dist/components/Loaders/SectionLoader.js.map +1 -1
  112. package/dist/components/Loaders/SectionLoader.mjs +1 -1
  113. package/dist/components/Loaders/SectionLoader.mjs.map +1 -1
  114. package/dist/components/LogicianProvider/LogicianProvider.d.ts +20 -0
  115. package/dist/components/LogicianProvider/LogicianProvider.d.ts.map +1 -1
  116. package/dist/components/LogicianProvider/LogicianProvider.js +9 -2
  117. package/dist/components/LogicianProvider/LogicianProvider.js.map +1 -1
  118. package/dist/components/LogicianProvider/LogicianProvider.mjs +9 -2
  119. package/dist/components/LogicianProvider/LogicianProvider.mjs.map +1 -1
  120. package/dist/components/MDXEditor/MDXEditor.d.ts.map +1 -1
  121. package/dist/components/MDXEditor/MDXEditor.js +8 -16
  122. package/dist/components/MDXEditor/MDXEditor.js.map +1 -1
  123. package/dist/components/MDXEditor/MDXEditor.mjs +8 -16
  124. package/dist/components/MDXEditor/MDXEditor.mjs.map +1 -1
  125. package/dist/components/Markdown/Markdown.module.css.js +1 -1
  126. package/dist/components/Markdown/Markdown.module.css.mjs +1 -1
  127. package/dist/components/MaxLengthIndicator/MaxLengthIndicator.js +1 -1
  128. package/dist/components/MaxLengthIndicator/MaxLengthIndicator.js.map +1 -1
  129. package/dist/components/MaxLengthIndicator/MaxLengthIndicator.mjs +1 -1
  130. package/dist/components/MaxLengthIndicator/MaxLengthIndicator.mjs.map +1 -1
  131. package/dist/components/Menu/MenuItem.d.ts.map +1 -1
  132. package/dist/components/Menu/MenuItem.js +7 -3
  133. package/dist/components/Menu/MenuItem.js.map +1 -1
  134. package/dist/components/Menu/MenuItem.mjs +7 -3
  135. package/dist/components/Menu/MenuItem.mjs.map +1 -1
  136. package/dist/components/Menu/MenuList.d.ts.map +1 -1
  137. package/dist/components/Menu/MenuList.js +7 -1
  138. package/dist/components/Menu/MenuList.js.map +1 -1
  139. package/dist/components/Menu/MenuList.mjs +7 -1
  140. package/dist/components/Menu/MenuList.mjs.map +1 -1
  141. package/dist/components/Modal/ModalFooter/ModalFooter.js +1 -1
  142. package/dist/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  143. package/dist/components/Modal/ModalFooter/ModalFooter.mjs +1 -1
  144. package/dist/components/Modal/ModalFooter/ModalFooter.mjs.map +1 -1
  145. package/dist/components/MonthPicker/MonthPicker.js +1 -1
  146. package/dist/components/MonthPicker/MonthPicker.mjs +1 -1
  147. package/dist/components/Popover/PopoverArrowTip.js +1 -1
  148. package/dist/components/Popover/PopoverArrowTip.js.map +1 -1
  149. package/dist/components/Popover/PopoverArrowTip.mjs +1 -1
  150. package/dist/components/Popover/PopoverArrowTip.mjs.map +1 -1
  151. package/dist/components/Popover/PopoverContent.js +1 -1
  152. package/dist/components/Popover/PopoverContent.js.map +1 -1
  153. package/dist/components/Popover/PopoverContent.mjs +1 -1
  154. package/dist/components/Popover/PopoverContent.mjs.map +1 -1
  155. package/dist/components/RadialProgress/RadialProgress.js +1 -1
  156. package/dist/components/RadialProgress/RadialProgress.js.map +1 -1
  157. package/dist/components/RadialProgress/RadialProgress.mjs +1 -1
  158. package/dist/components/RadialProgress/RadialProgress.mjs.map +1 -1
  159. package/dist/components/SeeMoreButton/SeeMoreButton.styles.js +2 -2
  160. package/dist/components/SeeMoreButton/SeeMoreButton.styles.js.map +1 -1
  161. package/dist/components/SeeMoreButton/SeeMoreButton.styles.mjs +2 -2
  162. package/dist/components/SeeMoreButton/SeeMoreButton.styles.mjs.map +1 -1
  163. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  164. package/dist/components/SegmentedControl/SegmentedControl.js +7 -3
  165. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  166. package/dist/components/SegmentedControl/SegmentedControl.mjs +7 -3
  167. package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  168. package/dist/components/Select/Select.styles.d.ts +18 -4
  169. package/dist/components/Select/Select.styles.d.ts.map +1 -1
  170. package/dist/components/Select/Select.styles.js +11 -10
  171. package/dist/components/Select/Select.styles.js.map +1 -1
  172. package/dist/components/Select/Select.styles.mjs +11 -10
  173. package/dist/components/Select/Select.styles.mjs.map +1 -1
  174. package/dist/components/Slider/SliderThumb/SliderThumb.js +1 -1
  175. package/dist/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
  176. package/dist/components/Slider/SliderThumb/SliderThumb.mjs +1 -1
  177. package/dist/components/Slider/SliderThumb/SliderThumb.mjs.map +1 -1
  178. package/dist/components/Table/Table.styles.js +1 -1
  179. package/dist/components/Table/Table.styles.js.map +1 -1
  180. package/dist/components/Table/Table.styles.mjs +1 -1
  181. package/dist/components/Table/Table.styles.mjs.map +1 -1
  182. package/dist/components/Table/TableContainer.js +1 -1
  183. package/dist/components/Table/TableContainer.js.map +1 -1
  184. package/dist/components/Table/TableContainer.mjs +1 -1
  185. package/dist/components/Table/TableContainer.mjs.map +1 -1
  186. package/dist/components/Table/Tbody.js +1 -1
  187. package/dist/components/Table/Tbody.js.map +1 -1
  188. package/dist/components/Table/Tbody.mjs +1 -1
  189. package/dist/components/Table/Tbody.mjs.map +1 -1
  190. package/dist/components/Table/Thead.js +1 -1
  191. package/dist/components/Table/Thead.mjs +1 -1
  192. package/dist/components/Tabs/Tab/Tab.js +1 -1
  193. package/dist/components/Tabs/Tab/Tab.mjs +1 -1
  194. package/dist/components/Tabs/TabList/TabList.js +1 -1
  195. package/dist/components/Tabs/TabList/TabList.js.map +1 -1
  196. package/dist/components/Tabs/TabList/TabList.mjs +1 -1
  197. package/dist/components/Tabs/TabList/TabList.mjs.map +1 -1
  198. package/dist/components/Tag/Tag.styles.d.ts.map +1 -1
  199. package/dist/components/Tag/Tag.styles.js +19 -16
  200. package/dist/components/Tag/Tag.styles.js.map +1 -1
  201. package/dist/components/Tag/Tag.styles.mjs +19 -16
  202. package/dist/components/Tag/Tag.styles.mjs.map +1 -1
  203. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  204. package/dist/components/Textarea/Textarea.js +7 -7
  205. package/dist/components/Textarea/Textarea.js.map +1 -1
  206. package/dist/components/Textarea/Textarea.mjs +7 -7
  207. package/dist/components/Textarea/Textarea.mjs.map +1 -1
  208. package/dist/components/Typography/H3.js +1 -1
  209. package/dist/components/Typography/H3.js.map +1 -1
  210. package/dist/components/Typography/H3.mjs +1 -1
  211. package/dist/components/Typography/H3.mjs.map +1 -1
  212. package/dist/components/Typography/Subtext.js +1 -1
  213. package/dist/components/Typography/Subtext.js.map +1 -1
  214. package/dist/components/Typography/Subtext.mjs +1 -1
  215. package/dist/components/Typography/Subtext.mjs.map +1 -1
  216. package/dist/components/Typography/Subtitle.js +1 -1
  217. package/dist/components/Typography/Subtitle.js.map +1 -1
  218. package/dist/components/Typography/Subtitle.mjs +1 -1
  219. package/dist/components/Typography/Subtitle.mjs.map +1 -1
  220. package/dist/components/Typography/Text.js +1 -1
  221. package/dist/components/Typography/Text.js.map +1 -1
  222. package/dist/components/Typography/Text.mjs +1 -1
  223. package/dist/components/Typography/Text.mjs.map +1 -1
  224. package/dist/index.d.ts +2 -0
  225. package/dist/index.d.ts.map +1 -1
  226. package/dist/index.js +7 -0
  227. package/dist/index.js.map +1 -1
  228. package/dist/index.mjs +3 -0
  229. package/dist/index.mjs.map +1 -1
  230. package/dist/theme/colors.d.ts +276 -40
  231. package/dist/theme/colors.d.ts.map +1 -1
  232. package/dist/theme/colors.js +197 -40
  233. package/dist/theme/colors.js.map +1 -1
  234. package/dist/theme/colors.mjs +197 -40
  235. package/dist/theme/colors.mjs.map +1 -1
  236. package/dist/theme/global.d.ts.map +1 -1
  237. package/dist/theme/global.js +11 -1
  238. package/dist/theme/global.js.map +1 -1
  239. package/dist/theme/global.mjs +11 -1
  240. package/dist/theme/global.mjs.map +1 -1
  241. package/package.json +2 -1
  242. package/src/components/Avatar/Avatar.tsx +1 -1
  243. package/src/components/Badge/Badge.styles.ts +5 -3
  244. package/src/components/Button/Button.styles.ts +39 -33
  245. package/src/components/Card/Card.tsx +3 -3
  246. package/src/components/Checkbox/CheckboxControl.tsx +8 -3
  247. package/src/components/Chip/Chip.styles.ts +14 -11
  248. package/src/components/Code/Code.tsx +5 -5
  249. package/src/components/CodeTabs/CopyButton.tsx +1 -1
  250. package/src/components/Collapsible/CollapsibleRoot.tsx +1 -1
  251. package/src/components/Collapsible/CollapsibleTrigger.tsx +1 -1
  252. package/src/components/ColorMode/ColorModeProvider.tsx +63 -0
  253. package/src/components/ColorMode/ColorModeToggle.tsx +45 -0
  254. package/src/components/ColorMode/index.ts +6 -0
  255. package/src/components/ColorMode/useColorMode.ts +74 -0
  256. package/src/components/DatePicker/RangeDatePicker.tsx +8 -5
  257. package/src/components/DatePicker/SingleDatePicker.tsx +3 -3
  258. package/src/components/ErrorFallback/ErrorFallback.tsx +3 -3
  259. package/src/components/FileInput/FileInput.tsx +1 -1
  260. package/src/components/FileItem/FileItem.tsx +5 -5
  261. package/src/components/FileList/FileList.tsx +4 -4
  262. package/src/components/FormLabel/FormLabel.tsx +1 -1
  263. package/src/components/IconButton/IconButton.styles.ts +1 -1
  264. package/src/components/Input/Input.tsx +10 -7
  265. package/src/components/LineGraph/LineGraph.tsx +8 -5
  266. package/src/components/Loaders/PageLoader.tsx +1 -1
  267. package/src/components/Loaders/SectionLoader.tsx +1 -1
  268. package/src/components/LogicianProvider/LogicianProvider.tsx +41 -1
  269. package/src/components/MDXEditor/MDXEditor.tsx +8 -18
  270. package/src/components/Markdown/Markdown.module.css +1 -1
  271. package/src/components/MaxLengthIndicator/MaxLengthIndicator.tsx +1 -1
  272. package/src/components/Menu/MenuItem.tsx +6 -3
  273. package/src/components/Menu/MenuList.tsx +7 -2
  274. package/src/components/Modal/ModalFooter/ModalFooter.tsx +1 -1
  275. package/src/components/MonthPicker/MonthPicker.tsx +1 -1
  276. package/src/components/Popover/PopoverArrowTip.tsx +1 -1
  277. package/src/components/Popover/PopoverContent.tsx +1 -1
  278. package/src/components/RadialProgress/RadialProgress.stories.tsx +1 -1
  279. package/src/components/RadialProgress/RadialProgress.tsx +2 -2
  280. package/src/components/SeeMoreButton/SeeMoreButton.styles.ts +2 -2
  281. package/src/components/SegmentedControl/SegmentedControl.tsx +6 -3
  282. package/src/components/Select/Select.styles.ts +11 -10
  283. package/src/components/Slider/SliderThumb/SliderThumb.tsx +1 -1
  284. package/src/components/Table/Table.styles.ts +1 -1
  285. package/src/components/Table/TableContainer.tsx +1 -1
  286. package/src/components/Table/Tbody.tsx +1 -1
  287. package/src/components/Table/Thead.tsx +1 -1
  288. package/src/components/Tabs/Tab/Tab.tsx +1 -1
  289. package/src/components/Tabs/TabList/TabList.tsx +1 -1
  290. package/src/components/Tag/Tag.styles.ts +19 -16
  291. package/src/components/Textarea/Textarea.tsx +10 -7
  292. package/src/components/Typography/H3.tsx +1 -1
  293. package/src/components/Typography/Subtext.tsx +1 -1
  294. package/src/components/Typography/Subtitle.tsx +1 -1
  295. package/src/components/Typography/Text.tsx +1 -1
  296. package/src/index.ts +2 -0
  297. package/src/theme/Palette.stories.tsx +114 -88
  298. package/src/theme/colors.ts +225 -40
  299. package/src/theme/global.ts +12 -1
@@ -66,94 +66,279 @@ export const semanticTokens = {
66
66
  * Primary colors (Blue-based)
67
67
  * Use for: Primary buttons, links, focus rings, brand elements
68
68
  *
69
- * Contrast ratios (on white):
69
+ * Light contrast ratios (on white):
70
70
  * - main (#1751D0): 5.9:1 ✓ AA
71
71
  * - dark (#0D317D): 9.4:1 ✓ AAA
72
+ *
73
+ * `_dark` lightens brand steps ~2 stops so interactive/text tokens keep
74
+ * AA contrast on dark surfaces (bg.canvas → gray.1500). Background tints
75
+ * (lightest/extralight/lighter/light) map to the deep end of the scale so
76
+ * brand-tinted fills read as subtle on dark, not as glare.
72
77
  */
73
78
  primary: {
74
- lightest: { value: '{colors.blue.25}' }, // #F4F7FD - Lightest backgrounds
75
- extralight: { value: '{colors.blue.50}' }, // #E8EEFB - Extra-light backgrounds
76
- lighter: { value: '{colors.blue.100}' }, // #B9CBF3 - Light backgrounds
77
- light: { value: '{colors.blue.200}' }, // #7DA0E8 - Hover states, subtle fills
78
- main: { value: '{colors.blue.500}' }, // #1751D0 - Primary actions
79
- dark: { value: '{colors.blue.700}' }, // #0D317D - Text on light backgrounds
80
- darker: { value: '{colors.blue.900}' }, // #04102A - High-contrast text
79
+ lightest: {
80
+ value: { base: '{colors.blue.25}', _dark: '{colors.blue.900}' },
81
+ },
82
+ extralight: {
83
+ value: { base: '{colors.blue.50}', _dark: '{colors.blue.800}' },
84
+ },
85
+ lighter: {
86
+ value: { base: '{colors.blue.100}', _dark: '{colors.blue.700}' },
87
+ },
88
+ light: {
89
+ value: { base: '{colors.blue.200}', _dark: '{colors.blue.600}' },
90
+ },
91
+ main: {
92
+ value: { base: '{colors.blue.500}', _dark: '{colors.blue.300}' },
93
+ }, // primary actions
94
+ dark: {
95
+ value: { base: '{colors.blue.700}', _dark: '{colors.blue.200}' },
96
+ }, // emphasis text
97
+ darker: {
98
+ value: { base: '{colors.blue.900}', _dark: '{colors.blue.100}' },
99
+ }, // high-contrast text
81
100
  },
82
101
 
83
102
  /**
84
103
  * Secondary colors (Violet-based)
85
104
  * Use for: Accent elements, highlights, tags
86
105
  *
87
- * Contrast ratios (on white):
106
+ * Light contrast ratios (on white):
88
107
  * - main (#9117D0): 5.1:1 ✓ AA
89
108
  * - dark (#570D7D): 9.2:1 ✓ AAA
90
109
  */
91
110
  secondary: {
92
- lightest: { value: '{colors.violet.25}' }, // #FAF4FD - Lightest backgrounds
93
- extralight: { value: '{colors.violet.50}' }, // #F4E8FB - Extra-light backgrounds
94
- lighter: { value: '{colors.violet.100}' }, // #DEB9F3 - Light backgrounds
95
- light: { value: '{colors.violet.200}' }, // #C17DE8 - Hover states
96
- main: { value: '{colors.violet.500}' }, // #9117D0 - Accent actions
97
- dark: { value: '{colors.violet.700}' }, // #570D7D - Text on light backgrounds
98
- darker: { value: '{colors.violet.900}' }, // #1D042A - High-contrast text
111
+ lightest: {
112
+ value: { base: '{colors.violet.25}', _dark: '{colors.violet.900}' },
113
+ },
114
+ extralight: {
115
+ value: { base: '{colors.violet.50}', _dark: '{colors.violet.800}' },
116
+ },
117
+ lighter: {
118
+ value: { base: '{colors.violet.100}', _dark: '{colors.violet.700}' },
119
+ },
120
+ light: {
121
+ value: { base: '{colors.violet.200}', _dark: '{colors.violet.600}' },
122
+ },
123
+ main: {
124
+ // _dark is violet.200 (not .300 like the other brands): violet.300 on
125
+ // the dark canvas is only 4.29:1, just under AA. Solid fills no longer
126
+ // use *.main (they pin to violet.500), so main now only drives
127
+ // text/icon/outline on dark, where the extra lift is pure benefit.
128
+ value: { base: '{colors.violet.500}', _dark: '{colors.violet.200}' },
129
+ },
130
+ dark: {
131
+ value: { base: '{colors.violet.700}', _dark: '{colors.violet.200}' },
132
+ },
133
+ darker: {
134
+ value: { base: '{colors.violet.900}', _dark: '{colors.violet.100}' },
135
+ },
99
136
  },
100
137
 
101
138
  /**
102
139
  * Danger colors (Rose-based)
103
140
  * Use for: Error states, destructive actions, validation errors
104
141
  *
105
- * Contrast ratios (on white):
142
+ * Light contrast ratios (on white):
106
143
  * - main (#D01721): 5.2:1 ✓ AA
107
144
  * - dark (#7D0D14): 9.6:1 ✓ AAA
108
145
  */
109
146
  danger: {
110
- lightest: { value: '{colors.rose.25}' }, // #FDF5F5 - Lightest backgrounds
111
- extralight: { value: '{colors.rose.50}' }, // #FBE8E9 - Extra-light backgrounds
112
- lighter: { value: '{colors.rose.100}' }, // #F3B9BD - Light error fills
113
- light: { value: '{colors.rose.200}' }, // #E87D84 - Error borders, icons
114
- main: { value: '{colors.rose.500}' }, // #D01721 - Error text, buttons
115
- dark: { value: '{colors.rose.700}' }, // #7D0D14 - Error text on light bg
116
- darker: { value: '{colors.rose.900}' }, // #2A0407 - High-contrast error text
147
+ lightest: {
148
+ value: { base: '{colors.rose.25}', _dark: '{colors.rose.900}' },
149
+ },
150
+ extralight: {
151
+ value: { base: '{colors.rose.50}', _dark: '{colors.rose.800}' },
152
+ },
153
+ lighter: {
154
+ value: { base: '{colors.rose.100}', _dark: '{colors.rose.700}' },
155
+ },
156
+ light: {
157
+ value: { base: '{colors.rose.200}', _dark: '{colors.rose.600}' },
158
+ },
159
+ main: {
160
+ value: { base: '{colors.rose.500}', _dark: '{colors.rose.300}' },
161
+ },
162
+ dark: {
163
+ value: { base: '{colors.rose.700}', _dark: '{colors.rose.200}' },
164
+ },
165
+ darker: {
166
+ value: { base: '{colors.rose.900}', _dark: '{colors.rose.100}' },
167
+ },
117
168
  },
118
169
 
119
170
  /**
120
171
  * Success colors (Green-based)
121
172
  * Use for: Success messages, confirmations, positive feedback
122
173
  *
123
- * Contrast ratios (on white):
174
+ * Light contrast ratios (on white):
124
175
  * - main (#1AA612): 4.5:1 ✓ AA (large text)
125
176
  * - dark (#147D0D): 6.1:1 ✓ AA
126
177
  */
127
178
  success: {
128
- lightest: { value: '{colors.green.25}' }, // #F4FDF4 - Lightest backgrounds
129
- extralight: { value: '{colors.green.50}' }, // #E9FBE8 - Extra-light backgrounds
130
- lighter: { value: '{colors.green.100}' }, // #BDF3B9 - Light success fills
131
- light: { value: '{colors.green.200}' }, // #84E87D - Success borders, icons
132
- main: { value: '{colors.green.600}' }, // #1AA612 - Success text, buttons
133
- dark: { value: '{colors.green.700}' }, // #147D0D - Success text on light bg
134
- darker: { value: '{colors.green.900}' }, // #072A04 - High-contrast success text
179
+ lightest: {
180
+ value: { base: '{colors.green.25}', _dark: '{colors.green.900}' },
181
+ },
182
+ extralight: {
183
+ value: { base: '{colors.green.50}', _dark: '{colors.green.800}' },
184
+ },
185
+ lighter: {
186
+ value: { base: '{colors.green.100}', _dark: '{colors.green.700}' },
187
+ },
188
+ light: {
189
+ value: { base: '{colors.green.200}', _dark: '{colors.green.600}' },
190
+ },
191
+ main: {
192
+ value: { base: '{colors.green.600}', _dark: '{colors.green.300}' },
193
+ },
194
+ dark: {
195
+ value: { base: '{colors.green.700}', _dark: '{colors.green.200}' },
196
+ },
197
+ darker: {
198
+ value: { base: '{colors.green.900}', _dark: '{colors.green.100}' },
199
+ },
135
200
  },
136
201
 
137
202
  /**
138
203
  * Warning colors (Gold-based)
139
204
  * Use for: Warning messages, caution states, attention needed
140
205
  *
141
- * Contrast ratios (on white):
206
+ * Light contrast ratios (on white):
142
207
  * - main (#D0A117): 3.0:1 (use dark on light backgrounds)
143
208
  * - dark (#7D610D): 5.8:1 ✓ AA
209
+ *
210
+ * NOTE: gold is the AA risk in both modes — verify per-pair contrast in the
211
+ * Storybook palette before relying on `warning.main` for text.
144
212
  */
145
213
  warning: {
146
- lightest: { value: '{colors.gold.25}' }, // #FDFBF4 - Lightest backgrounds
147
- extralight: { value: '{colors.gold.50}' }, // #FBF6E8 - Extra-light backgrounds
148
- lighter: { value: '{colors.gold.100}' }, // #F3E4B9 - Light warning fills
149
- light: { value: '{colors.gold.200}' }, // #E8CD7D - Warning borders, icons
150
- main: { value: '{colors.gold.500}' }, // #D0A117 - Warning icons, accents
151
- dark: { value: '{colors.gold.700}' }, // #7D610D - Warning text on light bg
152
- darker: { value: '{colors.gold.900}' }, // #2A2004 - High-contrast warning text
214
+ lightest: {
215
+ value: { base: '{colors.gold.25}', _dark: '{colors.gold.900}' },
216
+ },
217
+ extralight: {
218
+ value: { base: '{colors.gold.50}', _dark: '{colors.gold.800}' },
219
+ },
220
+ lighter: {
221
+ value: { base: '{colors.gold.100}', _dark: '{colors.gold.700}' },
222
+ },
223
+ light: {
224
+ value: { base: '{colors.gold.200}', _dark: '{colors.gold.600}' },
225
+ },
226
+ main: {
227
+ value: { base: '{colors.gold.500}', _dark: '{colors.gold.300}' },
228
+ },
229
+ dark: {
230
+ value: { base: '{colors.gold.700}', _dark: '{colors.gold.200}' },
231
+ },
232
+ darker: {
233
+ value: { base: '{colors.gold.900}', _dark: '{colors.gold.100}' },
234
+ },
235
+ },
236
+
237
+ /**
238
+ * Neutral background tokens — map onto the gray.0–1500 scale.
239
+ * Use for: page/canvas, raised surfaces (cards, menus), subtle/muted fills,
240
+ * and inverse surfaces (tooltips, contrast banners).
241
+ *
242
+ * - canvas: app background
243
+ * - surface: raised surface (card, popover, menu)
244
+ * - subtle: subtle fill / secondary surface
245
+ * - muted: muted fill / tertiary surface, hover
246
+ * - inverse: high-contrast surface (flips to light in dark mode)
247
+ */
248
+ bg: {
249
+ canvas: {
250
+ value: { base: '{colors.gray.0}', _dark: '{colors.gray.1500}' },
251
+ },
252
+ surface: {
253
+ value: { base: '{colors.white}', _dark: '{colors.gray.1400}' },
254
+ },
255
+ subtle: {
256
+ value: { base: '{colors.gray.50}', _dark: '{colors.gray.1300}' },
257
+ },
258
+ muted: {
259
+ value: { base: '{colors.gray.100}', _dark: '{colors.gray.1200}' },
260
+ },
261
+ inverse: {
262
+ value: { base: '{colors.gray.1300}', _dark: '{colors.gray.50}' },
263
+ },
264
+ // Override Chakra's default `bg.panel` (whose `_dark` resolves to Chakra's
265
+ // own gray.950 = #111111, off our slate palette). Light value is white —
266
+ // identical to Chakra's default — so this only realigns dark overlay
267
+ // surfaces (Menu / Modal / Popover / Toast) onto our gray scale.
268
+ panel: {
269
+ value: { base: '{colors.white}', _dark: '{colors.gray.1400}' },
270
+ },
271
+ },
272
+
273
+ /**
274
+ * Neutral foreground (text/icon) tokens — map onto the gray.0–1500 scale.
275
+ *
276
+ * - default: primary text/icons
277
+ * - muted: secondary text
278
+ * - subtle: tertiary / placeholder text
279
+ * - inverse: text on inverse surfaces (flips with mode)
280
+ */
281
+ fg: {
282
+ default: {
283
+ value: { base: '{colors.gray.1300}', _dark: '{colors.gray.50}' },
284
+ },
285
+ muted: {
286
+ value: { base: '{colors.gray.900}', _dark: '{colors.gray.400}' },
287
+ },
288
+ subtle: {
289
+ value: { base: '{colors.gray.700}', _dark: '{colors.gray.600}' },
290
+ },
291
+ inverse: {
292
+ value: { base: '{colors.gray.0}', _dark: '{colors.gray.1400}' },
293
+ },
294
+ },
295
+
296
+ /**
297
+ * Neutral border tokens — map onto the gray.0–1500 scale.
298
+ *
299
+ * - default: standard borders, dividers
300
+ * - subtle: low-emphasis dividers
301
+ * - strong: high-emphasis borders, focus outlines on neutral
302
+ */
303
+ border: {
304
+ default: {
305
+ value: { base: '{colors.gray.300}', _dark: '{colors.gray.1100}' },
306
+ },
307
+ subtle: {
308
+ value: { base: '{colors.gray.200}', _dark: '{colors.gray.1300}' },
309
+ },
310
+ strong: {
311
+ value: { base: '{colors.gray.500}', _dark: '{colors.gray.900}' },
312
+ },
153
313
  },
154
314
  },
155
315
  } as const;
156
316
 
317
+ /**
318
+ * Union of every semantic color token name exposed by the Logician theme,
319
+ * in Chakra dotted-path form (e.g. `fg.default`, `bg.surface`, `primary.main`).
320
+ *
321
+ * This is the contract consumed by the factchat primitive→semantic codemod and
322
+ * by reviewers. It is intentionally hand-maintained alongside `semanticTokens`
323
+ * so a rename here is a visible, reviewable diff.
324
+ *
325
+ * Note: `bg.panel` is deliberately omitted — it is an internal realignment of a
326
+ * Chakra default (for overlay surfaces), not part of the public migration
327
+ * contract. App code should use `bg.surface`/`bg.canvas`.
328
+ */
329
+ export type SemanticColorToken =
330
+ | `bg.${'canvas' | 'surface' | 'subtle' | 'muted' | 'inverse'}`
331
+ | `fg.${'default' | 'muted' | 'subtle' | 'inverse'}`
332
+ | `border.${'default' | 'subtle' | 'strong'}`
333
+ | `${'primary' | 'secondary' | 'danger' | 'success' | 'warning'}.${
334
+ | 'lightest'
335
+ | 'extralight'
336
+ | 'lighter'
337
+ | 'light'
338
+ | 'main'
339
+ | 'dark'
340
+ | 'darker'}`;
341
+
157
342
  /**
158
343
  * Primitive color palette following the Golden Ratio system.
159
344
  *
@@ -11,11 +11,19 @@ import { inter, noto, pretendard } from './font';
11
11
  * @see ./colors.ts for full color palette documentation
12
12
  */
13
13
  export const globalCss = defineGlobalStyles({
14
+ // Light mode body fallbacks (unchanged — preserves existing resolved values).
14
15
  ':root': {
15
16
  '--chakra-colors-chakra-body-text': '#1E2433', // gray.1300 - Primary text
16
17
  '--chakra-colors-chakra-body-bg': '#FDFDFF', // gray.0 - Background
17
18
  },
18
19
 
20
+ // Dark mode body fallbacks. Only activates under the `.dark` class set by the
21
+ // color-mode provider, so light-mode rendering is byte-for-byte identical.
22
+ '.dark': {
23
+ '--chakra-colors-chakra-body-text': '#F7F9FC', // gray.50 - Primary text (dark)
24
+ '--chakra-colors-chakra-body-bg': '#0B0E17', // gray.1500 - Background (dark)
25
+ },
26
+
19
27
  html: {
20
28
  height: 'var(--chakra-vh)',
21
29
  fontSize: 16,
@@ -29,7 +37,10 @@ export const globalCss = defineGlobalStyles({
29
37
  },
30
38
 
31
39
  'html, body': {
32
- color: 'gray.1300', // Primary text color (Golden Ratio palette)
40
+ // Mode-aware primary text. In light mode `fg.default` resolves to gray.1300
41
+ // (#1E2433) — identical to the previous literal — and flips to gray.50 under
42
+ // `.dark`. Resolved light value is unchanged; only the CSS var name differs.
43
+ color: 'fg.default',
33
44
  },
34
45
 
35
46
  '#__next': {