@lt-three/love3 0.0.0 → 0.1.1

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 (377) hide show
  1. package/README.md +85 -1
  2. package/dist/native/analytics/animation.d.ts +4 -0
  3. package/dist/native/analytics/animation.js +6 -0
  4. package/dist/native/analytics/chart.types.d.ts +25 -0
  5. package/dist/native/analytics/chart.types.js +0 -0
  6. package/dist/native/analytics/line-chart.d.ts +4 -0
  7. package/dist/native/analytics/line-chart.ios.d.ts +4 -0
  8. package/dist/native/analytics/line-chart.ios.js +24 -0
  9. package/dist/native/analytics/line-chart.js +33 -0
  10. package/dist/native/analytics/metric-card.d.ts +10 -0
  11. package/dist/native/analytics/metric-card.js +29 -0
  12. package/dist/native/analytics/multi-line-chart.d.ts +18 -0
  13. package/dist/native/analytics/multi-line-chart.js +216 -0
  14. package/dist/native/analytics/pie-chart.d.ts +15 -0
  15. package/dist/native/analytics/pie-chart.ios.d.ts +4 -0
  16. package/dist/native/analytics/pie-chart.ios.js +24 -0
  17. package/dist/native/analytics/pie-chart.js +92 -0
  18. package/dist/native/analytics/single-number.d.ts +19 -0
  19. package/dist/native/analytics/single-number.js +101 -0
  20. package/dist/native/atom/avatar.d.ts +21 -0
  21. package/dist/native/atom/avatar.js +46 -0
  22. package/dist/native/atom/badge.d.ts +28 -0
  23. package/dist/native/atom/badge.js +51 -0
  24. package/dist/native/atom/button.d.ts +46 -0
  25. package/dist/native/atom/button.js +109 -0
  26. package/dist/native/atom/checkbox.d.ts +21 -0
  27. package/dist/native/atom/checkbox.js +47 -0
  28. package/dist/native/atom/colored-value.d.ts +12 -0
  29. package/dist/native/atom/colored-value.js +24 -0
  30. package/dist/native/atom/image.d.ts +21 -0
  31. package/dist/native/atom/image.js +72 -0
  32. package/dist/native/atom/label.d.ts +18 -0
  33. package/dist/native/atom/label.js +33 -0
  34. package/dist/native/atom/link.d.ts +18 -0
  35. package/dist/native/atom/link.js +25 -0
  36. package/dist/native/atom/readout.d.ts +22 -0
  37. package/dist/native/atom/readout.js +39 -0
  38. package/dist/native/atom/search-input.d.ts +12 -0
  39. package/dist/native/atom/search-input.js +36 -0
  40. package/dist/native/atom/select.d.ts +54 -0
  41. package/dist/native/atom/select.js +200 -0
  42. package/dist/native/atom/separator.d.ts +12 -0
  43. package/dist/native/atom/separator.js +16 -0
  44. package/dist/native/atom/skeleton.d.ts +12 -0
  45. package/dist/native/atom/skeleton.js +39 -0
  46. package/dist/native/atom/slider.d.ts +32 -0
  47. package/dist/native/atom/slider.js +75 -0
  48. package/dist/native/atom/spinner.d.ts +15 -0
  49. package/dist/native/atom/spinner.js +25 -0
  50. package/dist/native/atom/switch.d.ts +18 -0
  51. package/dist/native/atom/switch.js +52 -0
  52. package/dist/native/atom/symbol.d.ts +16 -0
  53. package/dist/native/atom/symbol.js +38 -0
  54. package/dist/native/atom/symbol.types.d.ts +25 -0
  55. package/dist/native/atom/symbol.types.js +49 -0
  56. package/dist/native/atom/text-field.d.ts +49 -0
  57. package/dist/native/atom/text-field.js +56 -0
  58. package/dist/native/atom/text.d.ts +2 -0
  59. package/dist/native/atom/text.js +3 -0
  60. package/dist/native/atom/theme-toggle.d.ts +21 -0
  61. package/dist/native/atom/theme-toggle.js +36 -0
  62. package/dist/native/atom/timezone-select.d.ts +16 -0
  63. package/dist/native/atom/timezone-select.js +28 -0
  64. package/dist/native/atom/typography.d.ts +13 -0
  65. package/dist/native/atom/typography.js +28 -0
  66. package/dist/native/base/button.d.ts +61 -0
  67. package/dist/native/base/button.js +92 -0
  68. package/dist/native/base/form.d.ts +72 -0
  69. package/dist/native/base/form.js +113 -0
  70. package/dist/native/base/glass-card.d.ts +15 -0
  71. package/dist/native/base/glass-card.js +38 -0
  72. package/dist/native/base/input.d.ts +29 -0
  73. package/dist/native/base/input.js +27 -0
  74. package/dist/native/base/sheet.d.ts +71 -0
  75. package/dist/native/base/sheet.js +187 -0
  76. package/dist/native/base/text.d.ts +14 -0
  77. package/dist/native/base/text.js +53 -0
  78. package/dist/native/form/checkbox.d.ts +13 -0
  79. package/dist/native/form/checkbox.js +55 -0
  80. package/dist/native/form/date-picker.d.ts +23 -0
  81. package/dist/native/form/date-picker.js +119 -0
  82. package/dist/native/form/form.d.ts +22 -0
  83. package/dist/native/form/form.js +44 -0
  84. package/dist/native/form/radio-group.d.ts +23 -0
  85. package/dist/native/form/radio-group.js +88 -0
  86. package/dist/native/form/select.d.ts +13 -0
  87. package/dist/native/form/select.js +45 -0
  88. package/dist/native/form/slider.d.ts +14 -0
  89. package/dist/native/form/slider.js +42 -0
  90. package/dist/native/form/switch.d.ts +9 -0
  91. package/dist/native/form/switch.js +59 -0
  92. package/dist/native/form/text-area.d.ts +11 -0
  93. package/dist/native/form/text-area.js +50 -0
  94. package/dist/native/form/text-input.d.ts +18 -0
  95. package/dist/native/form/text-input.js +90 -0
  96. package/dist/native/index.d.ts +1 -0
  97. package/dist/native/index.js +0 -0
  98. package/dist/native/layout/accordion.d.ts +25 -0
  99. package/dist/native/layout/accordion.js +54 -0
  100. package/dist/native/layout/card.d.ts +47 -0
  101. package/dist/native/layout/card.js +57 -0
  102. package/dist/native/layout/description.d.ts +16 -0
  103. package/dist/native/layout/description.js +32 -0
  104. package/dist/native/layout/error.d.ts +21 -0
  105. package/dist/native/layout/error.js +44 -0
  106. package/dist/native/layout/information.d.ts +25 -0
  107. package/dist/native/layout/information.js +35 -0
  108. package/dist/native/layout/locked.d.ts +38 -0
  109. package/dist/native/layout/locked.js +94 -0
  110. package/dist/native/layout/modal.d.ts +25 -0
  111. package/dist/native/layout/modal.js +93 -0
  112. package/dist/native/layout/not-found.d.ts +17 -0
  113. package/dist/native/layout/not-found.js +30 -0
  114. package/dist/native/layout/page-frame.d.ts +23 -0
  115. package/dist/native/layout/page-frame.js +46 -0
  116. package/dist/native/layout/panel.d.ts +18 -0
  117. package/dist/native/layout/panel.js +23 -0
  118. package/dist/native/layout/reorderable-list.d.ts +42 -0
  119. package/dist/native/layout/reorderable-list.js +52 -0
  120. package/dist/native/layout/sheet.d.ts +30 -0
  121. package/dist/native/layout/sheet.js +46 -0
  122. package/dist/native/layout/simple-dialog.d.ts +16 -0
  123. package/dist/native/layout/simple-dialog.js +20 -0
  124. package/dist/native/layout/simple-table.d.ts +50 -0
  125. package/dist/native/layout/simple-table.js +75 -0
  126. package/dist/native/layout/tab-bar.d.ts +33 -0
  127. package/dist/native/layout/tab-bar.js +48 -0
  128. package/dist/native/layout/tabs.d.ts +28 -0
  129. package/dist/native/layout/tabs.js +54 -0
  130. package/dist/native/layout/tuning-panel.d.ts +24 -0
  131. package/dist/native/layout/tuning-panel.js +246 -0
  132. package/dist/native/lib/autocomplete.d.ts +7 -0
  133. package/dist/native/lib/autocomplete.js +34 -0
  134. package/dist/native/lib/breakpoints.d.ts +14 -0
  135. package/dist/native/lib/breakpoints.js +17 -0
  136. package/dist/native/lib/chart-palette.d.ts +8 -0
  137. package/dist/native/lib/chart-palette.js +20 -0
  138. package/dist/native/lib/confirm.d.ts +48 -0
  139. package/dist/native/lib/confirm.js +69 -0
  140. package/dist/native/lib/control.d.ts +24 -0
  141. package/dist/native/lib/control.js +0 -0
  142. package/dist/native/lib/external-store.d.ts +16 -0
  143. package/dist/native/lib/external-store.js +30 -0
  144. package/dist/native/lib/keyboard.d.ts +15 -0
  145. package/dist/native/lib/keyboard.js +24 -0
  146. package/dist/native/lib/labels.d.ts +15 -0
  147. package/dist/native/lib/labels.js +17 -0
  148. package/dist/native/lib/loading.d.ts +10 -0
  149. package/dist/native/lib/loading.js +15 -0
  150. package/dist/native/lib/network.d.ts +11 -0
  151. package/dist/native/lib/network.js +20 -0
  152. package/dist/native/lib/scheme.d.ts +18 -0
  153. package/dist/native/lib/scheme.js +22 -0
  154. package/dist/native/lib/snackbar.d.ts +45 -0
  155. package/dist/native/lib/snackbar.js +59 -0
  156. package/dist/native/lib/theme.d.ts +34 -0
  157. package/dist/native/lib/theme.js +53 -0
  158. package/dist/native/lib/timezone.d.ts +26 -0
  159. package/dist/native/lib/timezone.js +95 -0
  160. package/dist/native/lib/token-color.d.ts +5 -0
  161. package/dist/native/lib/token-color.js +13 -0
  162. package/dist/native/lib/token-color.web.d.ts +4 -0
  163. package/dist/native/lib/token-color.web.js +7 -0
  164. package/dist/native/lib/tuning-context.d.ts +9 -0
  165. package/dist/native/lib/tuning-context.js +7 -0
  166. package/dist/native/lib/tuning.d.ts +24 -0
  167. package/dist/native/lib/tuning.js +42 -0
  168. package/dist/native/lib/typography.d.ts +10 -0
  169. package/dist/native/lib/typography.js +11 -0
  170. package/dist/native/lib/utils.d.ts +11 -0
  171. package/dist/native/lib/utils.js +21 -0
  172. package/dist/native/once/confirm.d.ts +7 -0
  173. package/dist/native/once/confirm.js +60 -0
  174. package/dist/native/once/error-boundary.d.ts +28 -0
  175. package/dist/native/once/error-boundary.js +55 -0
  176. package/dist/native/once/loading-lock.d.ts +8 -0
  177. package/dist/native/once/loading-lock.js +28 -0
  178. package/dist/native/once/offline-banner.d.ts +15 -0
  179. package/dist/native/once/offline-banner.js +35 -0
  180. package/dist/native/once/snackbar.d.ts +17 -0
  181. package/dist/native/once/snackbar.js +106 -0
  182. package/dist/native/styles.css +46 -0
  183. package/dist/shared/analytics.d.ts +71 -0
  184. package/dist/shared/analytics.js +0 -0
  185. package/dist/shared/button.d.ts +7 -0
  186. package/dist/shared/button.js +23 -0
  187. package/dist/shared/form.d.ts +45 -0
  188. package/dist/shared/form.js +46 -0
  189. package/dist/shared/index.d.ts +3 -0
  190. package/dist/shared/index.js +3 -0
  191. package/dist/tokens/contrast-pairs.d.ts +30 -0
  192. package/dist/tokens/contrast-pairs.js +404 -0
  193. package/dist/tokens/index.d.ts +6 -0
  194. package/dist/tokens/index.js +10 -0
  195. package/dist/tokens/styles.gen.css +250 -0
  196. package/dist/tokens/tokens.gen.d.ts +141 -0
  197. package/dist/tokens/tokens.gen.js +206 -0
  198. package/dist/tuning/catalog.d.ts +27 -0
  199. package/dist/tuning/catalog.gen.d.ts +4 -0
  200. package/dist/tuning/catalog.gen.js +397 -0
  201. package/dist/tuning/catalog.js +128 -0
  202. package/dist/tuning/color.d.ts +20 -0
  203. package/dist/tuning/color.js +80 -0
  204. package/dist/tuning/css.d.ts +35 -0
  205. package/dist/tuning/css.js +147 -0
  206. package/dist/tuning/index.d.ts +8 -0
  207. package/dist/tuning/index.js +9 -0
  208. package/dist/tuning/model.d.ts +33 -0
  209. package/dist/tuning/model.js +154 -0
  210. package/dist/tuning/native.d.ts +35 -0
  211. package/dist/tuning/native.js +80 -0
  212. package/dist/tuning/schema.d.ts +69 -0
  213. package/dist/tuning/schema.js +247 -0
  214. package/dist/tuning/types.d.ts +75 -0
  215. package/dist/tuning/types.js +39 -0
  216. package/dist/web/analytics/line-chart.d.ts +20 -0
  217. package/dist/web/analytics/line-chart.js +28 -0
  218. package/dist/web/analytics/metric-card.d.ts +18 -0
  219. package/dist/web/analytics/metric-card.js +40 -0
  220. package/dist/web/analytics/multi-line-chart.d.ts +39 -0
  221. package/dist/web/analytics/multi-line-chart.js +345 -0
  222. package/dist/web/atom/avatar.d.ts +11 -0
  223. package/dist/web/atom/avatar.js +24 -0
  224. package/dist/web/atom/badge.d.ts +2 -0
  225. package/dist/web/atom/badge.js +3 -0
  226. package/dist/web/atom/button.d.ts +23 -0
  227. package/dist/web/atom/button.js +35 -0
  228. package/dist/web/atom/checkbox.d.ts +19 -0
  229. package/dist/web/atom/checkbox.js +33 -0
  230. package/dist/web/atom/colored-value.d.ts +13 -0
  231. package/dist/web/atom/colored-value.js +24 -0
  232. package/dist/web/atom/help.d.ts +10 -0
  233. package/dist/web/atom/help.js +18 -0
  234. package/dist/web/atom/label.d.ts +2 -0
  235. package/dist/web/atom/label.js +3 -0
  236. package/dist/web/atom/segmented-control.d.ts +39 -0
  237. package/dist/web/atom/segmented-control.js +42 -0
  238. package/dist/web/atom/select.d.ts +43 -0
  239. package/dist/web/atom/select.js +93 -0
  240. package/dist/web/atom/separator.d.ts +2 -0
  241. package/dist/web/atom/separator.js +3 -0
  242. package/dist/web/atom/skeleton.d.ts +2 -0
  243. package/dist/web/atom/skeleton.js +3 -0
  244. package/dist/web/atom/slider.d.ts +33 -0
  245. package/dist/web/atom/slider.js +70 -0
  246. package/dist/web/atom/spinner.d.ts +8 -0
  247. package/dist/web/atom/spinner.js +14 -0
  248. package/dist/web/atom/switch.d.ts +11 -0
  249. package/dist/web/atom/switch.js +10 -0
  250. package/dist/web/atom/text-area.d.ts +23 -0
  251. package/dist/web/atom/text-area.js +27 -0
  252. package/dist/web/atom/text-field.d.ts +18 -0
  253. package/dist/web/atom/text-field.js +22 -0
  254. package/dist/web/atom/toggle-chip.d.ts +22 -0
  255. package/dist/web/atom/toggle-chip.js +28 -0
  256. package/dist/web/atom/tooltip.d.ts +23 -0
  257. package/dist/web/atom/tooltip.js +26 -0
  258. package/dist/web/atom/typography.d.ts +6 -0
  259. package/dist/web/atom/typography.js +23 -0
  260. package/dist/web/base/accordion.d.ts +9 -0
  261. package/dist/web/base/accordion.js +44 -0
  262. package/dist/web/base/alert.d.ts +11 -0
  263. package/dist/web/base/alert.js +37 -0
  264. package/dist/web/base/avatar.d.ts +8 -0
  265. package/dist/web/base/avatar.js +29 -0
  266. package/dist/web/base/badge.d.ts +12 -0
  267. package/dist/web/base/badge.js +26 -0
  268. package/dist/web/base/breadcrumb.d.ts +16 -0
  269. package/dist/web/base/breadcrumb.js +72 -0
  270. package/dist/web/base/button.d.ts +12 -0
  271. package/dist/web/base/button.js +47 -0
  272. package/dist/web/base/card.d.ts +19 -0
  273. package/dist/web/base/card.js +74 -0
  274. package/dist/web/base/checkbox.d.ts +6 -0
  275. package/dist/web/base/checkbox.js +21 -0
  276. package/dist/web/base/dialog.d.ts +20 -0
  277. package/dist/web/base/dialog.js +92 -0
  278. package/dist/web/base/dropdown-menu.d.ts +29 -0
  279. package/dist/web/base/dropdown-menu.js +125 -0
  280. package/dist/web/base/field.d.ts +27 -0
  281. package/dist/web/base/field.js +118 -0
  282. package/dist/web/base/form.d.ts +38 -0
  283. package/dist/web/base/form.js +110 -0
  284. package/dist/web/base/input.d.ts +9 -0
  285. package/dist/web/base/input.js +23 -0
  286. package/dist/web/base/label.d.ts +6 -0
  287. package/dist/web/base/label.js +15 -0
  288. package/dist/web/base/pagination.d.ts +34 -0
  289. package/dist/web/base/pagination.js +90 -0
  290. package/dist/web/base/popover.d.ts +11 -0
  291. package/dist/web/base/popover.js +37 -0
  292. package/dist/web/base/radio-group.d.ts +7 -0
  293. package/dist/web/base/radio-group.js +27 -0
  294. package/dist/web/base/scroll-area.d.ts +10 -0
  295. package/dist/web/base/scroll-area.js +41 -0
  296. package/dist/web/base/select.d.ts +17 -0
  297. package/dist/web/base/select.js +96 -0
  298. package/dist/web/base/separator.d.ts +6 -0
  299. package/dist/web/base/separator.js +17 -0
  300. package/dist/web/base/sheet.d.ts +19 -0
  301. package/dist/web/base/sheet.js +88 -0
  302. package/dist/web/base/skeleton.d.ts +5 -0
  303. package/dist/web/base/skeleton.js +14 -0
  304. package/dist/web/base/slider.d.ts +9 -0
  305. package/dist/web/base/slider.js +39 -0
  306. package/dist/web/base/sonner.d.ts +9 -0
  307. package/dist/web/base/sonner.js +25 -0
  308. package/dist/web/base/spinner.d.ts +5 -0
  309. package/dist/web/base/spinner.js +17 -0
  310. package/dist/web/base/switch.d.ts +6 -0
  311. package/dist/web/base/switch.js +19 -0
  312. package/dist/web/base/table.d.ts +14 -0
  313. package/dist/web/base/table.js +68 -0
  314. package/dist/web/base/tabs.d.ts +9 -0
  315. package/dist/web/base/tabs.js +36 -0
  316. package/dist/web/base/textarea.d.ts +9 -0
  317. package/dist/web/base/textarea.js +23 -0
  318. package/dist/web/base/tooltip.d.ts +9 -0
  319. package/dist/web/base/tooltip.js +36 -0
  320. package/dist/web/form/checkbox.d.ts +35 -0
  321. package/dist/web/form/checkbox.js +91 -0
  322. package/dist/web/form/radio-group.d.ts +24 -0
  323. package/dist/web/form/radio-group.js +75 -0
  324. package/dist/web/form/select.d.ts +16 -0
  325. package/dist/web/form/select.js +44 -0
  326. package/dist/web/form/slider.d.ts +19 -0
  327. package/dist/web/form/slider.js +51 -0
  328. package/dist/web/form/switch.d.ts +11 -0
  329. package/dist/web/form/switch.js +50 -0
  330. package/dist/web/form/text-area.d.ts +10 -0
  331. package/dist/web/form/text-area.js +31 -0
  332. package/dist/web/form/text-input.d.ts +10 -0
  333. package/dist/web/form/text-input.js +42 -0
  334. package/dist/web/index.d.ts +1 -0
  335. package/dist/web/index.js +0 -0
  336. package/dist/web/layout/accordion.d.ts +26 -0
  337. package/dist/web/layout/accordion.js +29 -0
  338. package/dist/web/layout/alert-modal.d.ts +41 -0
  339. package/dist/web/layout/alert-modal.js +71 -0
  340. package/dist/web/layout/card.d.ts +17 -0
  341. package/dist/web/layout/card.js +35 -0
  342. package/dist/web/layout/description.d.ts +12 -0
  343. package/dist/web/layout/description.js +20 -0
  344. package/dist/web/layout/information.d.ts +36 -0
  345. package/dist/web/layout/information.js +53 -0
  346. package/dist/web/layout/modal.d.ts +16 -0
  347. package/dist/web/layout/modal.js +37 -0
  348. package/dist/web/layout/page-frame.d.ts +37 -0
  349. package/dist/web/layout/page-frame.js +79 -0
  350. package/dist/web/layout/scroll-area.d.ts +10 -0
  351. package/dist/web/layout/scroll-area.js +13 -0
  352. package/dist/web/layout/sheet.d.ts +32 -0
  353. package/dist/web/layout/sheet.js +68 -0
  354. package/dist/web/layout/simple-dialog.d.ts +11 -0
  355. package/dist/web/layout/simple-dialog.js +24 -0
  356. package/dist/web/layout/simple-table.d.ts +49 -0
  357. package/dist/web/layout/simple-table.js +58 -0
  358. package/dist/web/layout/tabs.d.ts +26 -0
  359. package/dist/web/layout/tabs.js +42 -0
  360. package/dist/web/layout/titled-modal.d.ts +32 -0
  361. package/dist/web/layout/titled-modal.js +58 -0
  362. package/dist/web/lib/css-vars.d.ts +14 -0
  363. package/dist/web/lib/css-vars.js +18 -0
  364. package/dist/web/lib/dialog.d.ts +13 -0
  365. package/dist/web/lib/dialog.js +0 -0
  366. package/dist/web/lib/form.d.ts +2 -0
  367. package/dist/web/lib/form.js +3 -0
  368. package/dist/web/lib/labels.d.ts +27 -0
  369. package/dist/web/lib/labels.js +29 -0
  370. package/dist/web/lib/modal-open-focus.d.ts +17 -0
  371. package/dist/web/lib/modal-open-focus.js +44 -0
  372. package/dist/web/lib/restore-focus.d.ts +12 -0
  373. package/dist/web/lib/restore-focus.js +32 -0
  374. package/dist/web/lib/utils.d.ts +4 -0
  375. package/dist/web/lib/utils.js +10 -0
  376. package/dist/web/styles.css +162 -0
  377. package/package.json +203 -4
@@ -0,0 +1,250 @@
1
+ /*
2
+ * This file is generated. Do not edit it directly.
3
+ * Source: src/tokens/definition.ts
4
+ * Regenerate: bun run generate
5
+ */
6
+
7
+ @custom-variant dark (&:is(.dark *));
8
+
9
+ :root {
10
+ /*
11
+ * Raw tokens: text ramp and background layers
12
+ * Text has 3 levels (primary = ink-900 / secondary = ink-700 / tertiary = ink-500). Backgrounds come "forward" in the order frame < paper < raised < overlay.
13
+ * Dark is not a separate palette but an inversion of the roles, built as layers of bluish near-black rather than pure black.
14
+ */
15
+ --ink-1000: #0f1012; /* Strongest text */
16
+ --ink-900: #1b1c20; /* Headings and primary text */
17
+ --ink-700: #40434a; /* Body text (secondary) */
18
+ --ink-500: #676b74; /* Tertiary, muted, placeholder */
19
+ --ink-300: #a3a6ad; /* Disabled, faint labels */
20
+ --line: #e6e7eb; /* 1px hairline border and divider */
21
+ --line-strong: #d5d7dd; /* Border of text inputs and stronger borders (a known exception that does not reach 3:1; borders of interactive controls use line-control) */
22
+ --line-control: #80858f; /* Border of unselected Checkbox / Radio / Switch. At least 3:1 on every surface (non-text AA) */
23
+ --frame: #f4f5f7; /* Outer frame, sidebar, page canvas */
24
+ --paper: #ffffff; /* Main content panel (base background) */
25
+ --raised: #ffffff; /* Surface of cards, inputs and secondary buttons */
26
+ --overlay: #ffffff; /* Popovers, dialogs, menus */
27
+ --wash: #f1f2f4; /* Light surface for hover and zebra rows */
28
+ --scrim: rgba(0, 0, 0, 0.32); /* Modal scrim. No blur */
29
+ --shadow-color: rgba(16, 24, 40, 0.1); /* Shadow color. Referenced by shadow-xs to shadow-2xl */
30
+
31
+ /*
32
+ * Primary action color (indigo)
33
+ * A calm indigo for the primary action, focus and selected states. The same value in light and dark.
34
+ * Text on the fill (action) is action-foreground (white). Placing action as "text or link" on a dark surface does not reach AA,
35
+ * so use action-ink for text. Hover deepens the fill slightly (keeping AA for white text).
36
+ */
37
+ --action: #5e6ad2; /* Fill of the primary action, and the ring */
38
+ --action-hover: #5059c2; /* Hover of the primary action */
39
+ --action-foreground: #ffffff;
40
+ --action-ink: #4a55c0; /* Indigo used as text or a link */
41
+
42
+ /*
43
+ * Brand color (<3 / Less Than Three)
44
+ * A brand color outside the indigo, used only by components that have a `<3` variant.
45
+ * Text on it is black (white is 2.98:1 and misses AA, while black clears it easily). Not inverted in dark.
46
+ */
47
+ --lt-three: #ff5c76;
48
+ --lt-three-foreground: #000000;
49
+
50
+ /*
51
+ * Semantic states
52
+ * Used for text, borders and small icons; badges and alerts can also use a light fill such as `bg-state-xxx/10`.
53
+ * A solid fill is only for the primary action of a destructive operation (destructive-solid). In dark they are brightened to stay readable on near-black.
54
+ */
55
+ --state-success: #187548;
56
+ --state-error: #c42b3a;
57
+ --state-warning: #8f5f00;
58
+ --destructive-solid: #c42b3a; /* Fill (solid) of a destructive action. Text on it is destructive-solid-foreground (white). state-error is for text: it is bright on dark surfaces and not suited to a fill */
59
+ --destructive-solid-foreground: #ffffff;
60
+
61
+ /*
62
+ * Typefaces
63
+ * Geist for Latin text, Geist Mono for numbers, IDs, code and data tables, and the OS-bundled Yu Gothic for Japanese text.
64
+ * Do not put a generic family (sans-serif) in --font-geist: it would appear in the composed stack before the Japanese fallback, and Japanese text would never reach Yu Gothic.
65
+ * Load the font files per platform (woff2 on web, ttf via expo-font on native).
66
+ */
67
+ --font-geist: "Geist Variable", "Geist";
68
+ --font-geist-mono: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;
69
+ --font-jp: "Yu Gothic Medium", "游ゴシック Medium", YuGothic, "游ゴシック体", "游ゴシック", "Yu Gothic", sans-serif;
70
+ --font-mono: var(--font-geist-mono);
71
+
72
+ /*
73
+ * Semantic tokens (shadcn-compatible aliases)
74
+ * They reference the raw tokens with var(), so swapping only the raw tokens moves the whole system (dark included).
75
+ */
76
+ --background: var(--paper); /* Main content panel */
77
+ --foreground: var(--ink-900);
78
+ --card: var(--raised); /* Cards are a raised surface plus a thin border (no shadow) */
79
+ --card-foreground: var(--ink-900);
80
+ --popover: var(--overlay); /* Floating things (popovers, menus, dialogs) */
81
+ --popover-foreground: var(--ink-900);
82
+ --primary: var(--action); /* Indigo fill of the primary action (shared by web and native) */
83
+ --primary-foreground: var(--action-foreground);
84
+ --secondary: var(--wash); /* secondary, accent and muted are wash */
85
+ --secondary-foreground: var(--ink-900);
86
+ --muted: var(--wash);
87
+ --muted-foreground: var(--ink-500);
88
+ --accent: var(--wash);
89
+ --accent-foreground: var(--ink-900);
90
+ --destructive: var(--state-error); /* Used by native (state-error for text and borders). The fill of a destructive action on web is destructive-solid */
91
+ --destructive-foreground: var(--paper);
92
+ --border: var(--line);
93
+ --input: var(--line-strong);
94
+ --ring: var(--action); /* Focus is an indigo ring */
95
+ --chart-1: #5e6ad2; /* Charts use color. Five colors that stay readable in dark */
96
+ --chart-2: #1f9d6a;
97
+ --chart-3: #bd7100;
98
+ --chart-4: #d6495c;
99
+ --chart-5: #7a8194;
100
+ --section: var(--frame); /* Canvas of pages and blocks */
101
+ --radius: 6px; /* The shadcn-compatible base radius. Same value as control (6px) */
102
+ --sidebar: var(--frame);
103
+ --sidebar-foreground: var(--ink-900);
104
+ --sidebar-primary: var(--action);
105
+ --sidebar-primary-foreground: var(--action-foreground);
106
+ --sidebar-accent: var(--wash);
107
+ --sidebar-accent-foreground: var(--ink-900);
108
+ --sidebar-border: var(--line);
109
+ --sidebar-ring: var(--action);
110
+ }
111
+
112
+ .dark {
113
+ --ink-1000: #f7f8f8; /* Strongest text */
114
+ --ink-900: #eceef0; /* Headings and primary text */
115
+ --ink-700: #cfd3da; /* Body text (secondary) */
116
+ --ink-500: #8a8f98; /* Tertiary, muted, placeholder */
117
+ --ink-300: #5b5f67; /* Disabled, faint labels */
118
+ --line: #25272c; /* 1px hairline border and divider */
119
+ --line-strong: #34363d; /* Border of text inputs and stronger borders (a known exception that does not reach 3:1; borders of interactive controls use line-control) */
120
+ --line-control: #6b707a; /* Border of unselected Checkbox / Radio / Switch. At least 3:1 on every surface (non-text AA) */
121
+ --frame: #0a0b0d; /* Outer frame, sidebar, page canvas */
122
+ --paper: #121316; /* Main content panel (base background) */
123
+ --raised: #17181c; /* Surface of cards, inputs and secondary buttons */
124
+ --overlay: #1d1e23; /* Popovers, dialogs, menus */
125
+ --wash: #1b1c20; /* Light surface for hover and zebra rows */
126
+ --scrim: rgba(0, 0, 0, 0.72); /* Modal scrim. No blur */
127
+ --shadow-color: rgba(0, 0, 0, 0.7); /* Shadow color. Referenced by shadow-xs to shadow-2xl */
128
+ --action-ink: #98a2f5; /* Indigo used as text or a link */
129
+ --state-success: #4cc38a;
130
+ --state-error: #f2707f;
131
+ --state-warning: #e0a53a;
132
+ --destructive-solid: #cf3345; /* Fill (solid) of a destructive action. Text on it is destructive-solid-foreground (white). state-error is for text: it is bright on dark surfaces and not suited to a fill */
133
+ --chart-1: #7c86e8; /* Charts use color. Five colors that stay readable in dark */
134
+ --chart-2: #4cc38a;
135
+ --chart-3: #e5a23f;
136
+ --chart-4: #f2707f;
137
+ --chart-5: #9aa1b3;
138
+ }
139
+
140
+ .theme-light {
141
+ --ink-1000: #0f1012; /* Strongest text */
142
+ --ink-900: #1b1c20; /* Headings and primary text */
143
+ --ink-700: #40434a; /* Body text (secondary) */
144
+ --ink-500: #676b74; /* Tertiary, muted, placeholder */
145
+ --ink-300: #a3a6ad; /* Disabled, faint labels */
146
+ --line: #e6e7eb; /* 1px hairline border and divider */
147
+ --line-strong: #d5d7dd; /* Border of text inputs and stronger borders (a known exception that does not reach 3:1; borders of interactive controls use line-control) */
148
+ --line-control: #80858f; /* Border of unselected Checkbox / Radio / Switch. At least 3:1 on every surface (non-text AA) */
149
+ --frame: #f4f5f7; /* Outer frame, sidebar, page canvas */
150
+ --paper: #ffffff; /* Main content panel (base background) */
151
+ --raised: #ffffff; /* Surface of cards, inputs and secondary buttons */
152
+ --overlay: #ffffff; /* Popovers, dialogs, menus */
153
+ --wash: #f1f2f4; /* Light surface for hover and zebra rows */
154
+ --scrim: rgba(0, 0, 0, 0.32); /* Modal scrim. No blur */
155
+ --shadow-color: rgba(16, 24, 40, 0.1); /* Shadow color. Referenced by shadow-xs to shadow-2xl */
156
+ --action-ink: #4a55c0; /* Indigo used as text or a link */
157
+ --state-success: #187548;
158
+ --state-error: #c42b3a;
159
+ --state-warning: #8f5f00;
160
+ --destructive-solid: #c42b3a; /* Fill (solid) of a destructive action. Text on it is destructive-solid-foreground (white). state-error is for text: it is bright on dark surfaces and not suited to a fill */
161
+ --chart-1: #5e6ad2; /* Charts use color. Five colors that stay readable in dark */
162
+ --chart-2: #1f9d6a;
163
+ --chart-3: #bd7100;
164
+ --chart-4: #d6495c;
165
+ --chart-5: #7a8194;
166
+ }
167
+
168
+ @theme inline {
169
+ --color-ink-1000: var(--ink-1000);
170
+ --color-ink-900: var(--ink-900);
171
+ --color-ink-700: var(--ink-700);
172
+ --color-ink-500: var(--ink-500);
173
+ --color-ink-300: var(--ink-300);
174
+ --color-line: var(--line);
175
+ --color-line-strong: var(--line-strong);
176
+ --color-line-control: var(--line-control);
177
+ --color-frame: var(--frame);
178
+ --color-paper: var(--paper);
179
+ --color-raised: var(--raised);
180
+ --color-overlay: var(--overlay);
181
+ --color-wash: var(--wash);
182
+ --color-scrim: var(--scrim);
183
+ --color-action: var(--action);
184
+ --color-action-hover: var(--action-hover);
185
+ --color-action-foreground: var(--action-foreground);
186
+ --color-action-ink: var(--action-ink);
187
+ --color-lt-three: var(--lt-three);
188
+ --color-lt-three-foreground: var(--lt-three-foreground);
189
+ --color-state-success: var(--state-success);
190
+ --color-state-error: var(--state-error);
191
+ --color-state-warning: var(--state-warning);
192
+ --color-destructive-solid: var(--destructive-solid);
193
+ --color-destructive-solid-foreground: var(--destructive-solid-foreground);
194
+ --color-background: var(--background);
195
+ --color-foreground: var(--foreground);
196
+ --color-card: var(--card);
197
+ --color-card-foreground: var(--card-foreground);
198
+ --color-popover: var(--popover);
199
+ --color-popover-foreground: var(--popover-foreground);
200
+ --color-primary: var(--primary);
201
+ --color-primary-foreground: var(--primary-foreground);
202
+ --color-secondary: var(--secondary);
203
+ --color-secondary-foreground: var(--secondary-foreground);
204
+ --color-muted: var(--muted);
205
+ --color-muted-foreground: var(--muted-foreground);
206
+ --color-accent: var(--accent);
207
+ --color-accent-foreground: var(--accent-foreground);
208
+ --color-destructive: var(--destructive);
209
+ --color-destructive-foreground: var(--destructive-foreground);
210
+ --color-border: var(--border);
211
+ --color-input: var(--input);
212
+ --color-ring: var(--ring);
213
+ --color-chart-1: var(--chart-1);
214
+ --color-chart-2: var(--chart-2);
215
+ --color-chart-3: var(--chart-3);
216
+ --color-chart-4: var(--chart-4);
217
+ --color-chart-5: var(--chart-5);
218
+ --color-section: var(--section);
219
+ --color-sidebar: var(--sidebar);
220
+ --color-sidebar-foreground: var(--sidebar-foreground);
221
+ --color-sidebar-primary: var(--sidebar-primary);
222
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
223
+ --color-sidebar-accent: var(--sidebar-accent);
224
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
225
+ --color-sidebar-border: var(--sidebar-border);
226
+ --color-sidebar-ring: var(--sidebar-ring);
227
+
228
+ --font-primary: var(--font-geist), var(--font-jp), sans-serif;
229
+ --font-sans: var(--font-geist), var(--font-jp), sans-serif;
230
+ --font-serif: var(--font-geist), var(--font-jp), sans-serif;
231
+ --font-mono: var(--font-geist-mono);
232
+ --font-geist: var(--font-geist);
233
+ --font-geist-mono: var(--font-geist-mono);
234
+ --font-jp: var(--font-jp);
235
+ }
236
+
237
+ @theme {
238
+ --radius-control: 6px;
239
+ --radius-surface: 10px;
240
+ --shadow-2xs: 0 1px 1px var(--shadow-color);
241
+ --shadow-xs: 0 1px 2px var(--shadow-color);
242
+ --shadow-sm: 0 1px 3px var(--shadow-color);
243
+ --shadow-md: 0 4px 12px var(--shadow-color);
244
+ --shadow-lg: 0 12px 32px var(--shadow-color);
245
+ --shadow-xl: 0 16px 40px var(--shadow-color);
246
+ --shadow-2xl: 0 24px 56px var(--shadow-color);
247
+ --shadow-inner: inset 0 1px 2px var(--shadow-color);
248
+ --text-body: 14px;
249
+ --text-body--line-height: 22px;
250
+ }
@@ -0,0 +1,141 @@
1
+ //#region src/tokens/tokens.gen.d.ts
2
+ /** Token names of love3 (the CSS variable names without the leading `--`). */
3
+ export declare const tokenNames: readonly ["ink-1000", "ink-900", "ink-700", "ink-500", "ink-300", "line", "line-strong", "line-control", "frame", "paper", "raised", "overlay", "wash", "scrim", "shadow-color", "action", "action-hover", "action-foreground", "action-ink", "lt-three", "lt-three-foreground", "state-success", "state-error", "state-warning", "destructive-solid", "destructive-solid-foreground", "font-geist", "font-geist-mono", "font-jp", "font-mono", "background", "foreground", "card", "card-foreground", "popover", "popover-foreground", "primary", "primary-foreground", "secondary", "secondary-foreground", "muted", "muted-foreground", "accent", "accent-foreground", "destructive", "destructive-foreground", "border", "input", "ring", "chart-1", "chart-2", "chart-3", "chart-4", "chart-5", "section", "radius", "sidebar", "sidebar-foreground", "sidebar-primary", "sidebar-primary-foreground", "sidebar-accent", "sidebar-accent-foreground", "sidebar-border", "sidebar-ring"];
4
+ export type TokenName = (typeof tokenNames)[number];
5
+ export type TokenValues = Readonly<Record<TokenName, string>>;
6
+ /** Values with `var()` resolved. For dark, every token with the dark overrides layered on. */
7
+ export declare const tokens: {
8
+ readonly light: {
9
+ readonly "ink-1000": "#0f1012";
10
+ readonly "ink-900": "#1b1c20";
11
+ readonly "ink-700": "#40434a";
12
+ readonly "ink-500": "#676b74";
13
+ readonly "ink-300": "#a3a6ad";
14
+ readonly line: "#e6e7eb";
15
+ readonly "line-strong": "#d5d7dd";
16
+ readonly "line-control": "#80858f";
17
+ readonly frame: "#f4f5f7";
18
+ readonly paper: "#ffffff";
19
+ readonly raised: "#ffffff";
20
+ readonly overlay: "#ffffff";
21
+ readonly wash: "#f1f2f4";
22
+ readonly scrim: "rgba(0, 0, 0, 0.32)";
23
+ readonly "shadow-color": "rgba(16, 24, 40, 0.1)";
24
+ readonly action: "#5e6ad2";
25
+ readonly "action-hover": "#5059c2";
26
+ readonly "action-foreground": "#ffffff";
27
+ readonly "action-ink": "#4a55c0";
28
+ readonly "lt-three": "#ff5c76";
29
+ readonly "lt-three-foreground": "#000000";
30
+ readonly "state-success": "#187548";
31
+ readonly "state-error": "#c42b3a";
32
+ readonly "state-warning": "#8f5f00";
33
+ readonly "destructive-solid": "#c42b3a";
34
+ readonly "destructive-solid-foreground": "#ffffff";
35
+ readonly "font-geist": "\"Geist Variable\", \"Geist\"";
36
+ readonly "font-geist-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace";
37
+ readonly "font-jp": "\"Yu Gothic Medium\", \"游ゴシック Medium\", YuGothic, \"游ゴシック体\", \"游ゴシック\", \"Yu Gothic\", sans-serif";
38
+ readonly "font-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace";
39
+ readonly background: "#ffffff";
40
+ readonly foreground: "#1b1c20";
41
+ readonly card: "#ffffff";
42
+ readonly "card-foreground": "#1b1c20";
43
+ readonly popover: "#ffffff";
44
+ readonly "popover-foreground": "#1b1c20";
45
+ readonly primary: "#5e6ad2";
46
+ readonly "primary-foreground": "#ffffff";
47
+ readonly secondary: "#f1f2f4";
48
+ readonly "secondary-foreground": "#1b1c20";
49
+ readonly muted: "#f1f2f4";
50
+ readonly "muted-foreground": "#676b74";
51
+ readonly accent: "#f1f2f4";
52
+ readonly "accent-foreground": "#1b1c20";
53
+ readonly destructive: "#c42b3a";
54
+ readonly "destructive-foreground": "#ffffff";
55
+ readonly border: "#e6e7eb";
56
+ readonly input: "#d5d7dd";
57
+ readonly ring: "#5e6ad2";
58
+ readonly "chart-1": "#5e6ad2";
59
+ readonly "chart-2": "#1f9d6a";
60
+ readonly "chart-3": "#bd7100";
61
+ readonly "chart-4": "#d6495c";
62
+ readonly "chart-5": "#7a8194";
63
+ readonly section: "#f4f5f7";
64
+ readonly radius: "6px";
65
+ readonly sidebar: "#f4f5f7";
66
+ readonly "sidebar-foreground": "#1b1c20";
67
+ readonly "sidebar-primary": "#5e6ad2";
68
+ readonly "sidebar-primary-foreground": "#ffffff";
69
+ readonly "sidebar-accent": "#f1f2f4";
70
+ readonly "sidebar-accent-foreground": "#1b1c20";
71
+ readonly "sidebar-border": "#e6e7eb";
72
+ readonly "sidebar-ring": "#5e6ad2";
73
+ };
74
+ readonly dark: {
75
+ readonly "ink-1000": "#f7f8f8";
76
+ readonly "ink-900": "#eceef0";
77
+ readonly "ink-700": "#cfd3da";
78
+ readonly "ink-500": "#8a8f98";
79
+ readonly "ink-300": "#5b5f67";
80
+ readonly line: "#25272c";
81
+ readonly "line-strong": "#34363d";
82
+ readonly "line-control": "#6b707a";
83
+ readonly frame: "#0a0b0d";
84
+ readonly paper: "#121316";
85
+ readonly raised: "#17181c";
86
+ readonly overlay: "#1d1e23";
87
+ readonly wash: "#1b1c20";
88
+ readonly scrim: "rgba(0, 0, 0, 0.72)";
89
+ readonly "shadow-color": "rgba(0, 0, 0, 0.7)";
90
+ readonly action: "#5e6ad2";
91
+ readonly "action-hover": "#5059c2";
92
+ readonly "action-foreground": "#ffffff";
93
+ readonly "action-ink": "#98a2f5";
94
+ readonly "lt-three": "#ff5c76";
95
+ readonly "lt-three-foreground": "#000000";
96
+ readonly "state-success": "#4cc38a";
97
+ readonly "state-error": "#f2707f";
98
+ readonly "state-warning": "#e0a53a";
99
+ readonly "destructive-solid": "#cf3345";
100
+ readonly "destructive-solid-foreground": "#ffffff";
101
+ readonly "font-geist": "\"Geist Variable\", \"Geist\"";
102
+ readonly "font-geist-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace";
103
+ readonly "font-jp": "\"Yu Gothic Medium\", \"游ゴシック Medium\", YuGothic, \"游ゴシック体\", \"游ゴシック\", \"Yu Gothic\", sans-serif";
104
+ readonly "font-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace";
105
+ readonly background: "#121316";
106
+ readonly foreground: "#eceef0";
107
+ readonly card: "#17181c";
108
+ readonly "card-foreground": "#eceef0";
109
+ readonly popover: "#1d1e23";
110
+ readonly "popover-foreground": "#eceef0";
111
+ readonly primary: "#5e6ad2";
112
+ readonly "primary-foreground": "#ffffff";
113
+ readonly secondary: "#1b1c20";
114
+ readonly "secondary-foreground": "#eceef0";
115
+ readonly muted: "#1b1c20";
116
+ readonly "muted-foreground": "#8a8f98";
117
+ readonly accent: "#1b1c20";
118
+ readonly "accent-foreground": "#eceef0";
119
+ readonly destructive: "#f2707f";
120
+ readonly "destructive-foreground": "#121316";
121
+ readonly border: "#25272c";
122
+ readonly input: "#34363d";
123
+ readonly ring: "#5e6ad2";
124
+ readonly "chart-1": "#7c86e8";
125
+ readonly "chart-2": "#4cc38a";
126
+ readonly "chart-3": "#e5a23f";
127
+ readonly "chart-4": "#f2707f";
128
+ readonly "chart-5": "#9aa1b3";
129
+ readonly section: "#0a0b0d";
130
+ readonly radius: "6px";
131
+ readonly sidebar: "#0a0b0d";
132
+ readonly "sidebar-foreground": "#eceef0";
133
+ readonly "sidebar-primary": "#5e6ad2";
134
+ readonly "sidebar-primary-foreground": "#ffffff";
135
+ readonly "sidebar-accent": "#1b1c20";
136
+ readonly "sidebar-accent-foreground": "#eceef0";
137
+ readonly "sidebar-border": "#25272c";
138
+ readonly "sidebar-ring": "#5e6ad2";
139
+ };
140
+ };
141
+ //#endregion
@@ -0,0 +1,206 @@
1
+ //#region src/tokens/tokens.gen.ts
2
+ /** Token names of love3 (the CSS variable names without the leading `--`). */
3
+ const tokenNames = [
4
+ "ink-1000",
5
+ "ink-900",
6
+ "ink-700",
7
+ "ink-500",
8
+ "ink-300",
9
+ "line",
10
+ "line-strong",
11
+ "line-control",
12
+ "frame",
13
+ "paper",
14
+ "raised",
15
+ "overlay",
16
+ "wash",
17
+ "scrim",
18
+ "shadow-color",
19
+ "action",
20
+ "action-hover",
21
+ "action-foreground",
22
+ "action-ink",
23
+ "lt-three",
24
+ "lt-three-foreground",
25
+ "state-success",
26
+ "state-error",
27
+ "state-warning",
28
+ "destructive-solid",
29
+ "destructive-solid-foreground",
30
+ "font-geist",
31
+ "font-geist-mono",
32
+ "font-jp",
33
+ "font-mono",
34
+ "background",
35
+ "foreground",
36
+ "card",
37
+ "card-foreground",
38
+ "popover",
39
+ "popover-foreground",
40
+ "primary",
41
+ "primary-foreground",
42
+ "secondary",
43
+ "secondary-foreground",
44
+ "muted",
45
+ "muted-foreground",
46
+ "accent",
47
+ "accent-foreground",
48
+ "destructive",
49
+ "destructive-foreground",
50
+ "border",
51
+ "input",
52
+ "ring",
53
+ "chart-1",
54
+ "chart-2",
55
+ "chart-3",
56
+ "chart-4",
57
+ "chart-5",
58
+ "section",
59
+ "radius",
60
+ "sidebar",
61
+ "sidebar-foreground",
62
+ "sidebar-primary",
63
+ "sidebar-primary-foreground",
64
+ "sidebar-accent",
65
+ "sidebar-accent-foreground",
66
+ "sidebar-border",
67
+ "sidebar-ring"
68
+ ];
69
+ /** Values with `var()` resolved. For dark, every token with the dark overrides layered on. */
70
+ const tokens = {
71
+ light: {
72
+ "ink-1000": "#0f1012",
73
+ "ink-900": "#1b1c20",
74
+ "ink-700": "#40434a",
75
+ "ink-500": "#676b74",
76
+ "ink-300": "#a3a6ad",
77
+ "line": "#e6e7eb",
78
+ "line-strong": "#d5d7dd",
79
+ "line-control": "#80858f",
80
+ "frame": "#f4f5f7",
81
+ "paper": "#ffffff",
82
+ "raised": "#ffffff",
83
+ "overlay": "#ffffff",
84
+ "wash": "#f1f2f4",
85
+ "scrim": "rgba(0, 0, 0, 0.32)",
86
+ "shadow-color": "rgba(16, 24, 40, 0.1)",
87
+ "action": "#5e6ad2",
88
+ "action-hover": "#5059c2",
89
+ "action-foreground": "#ffffff",
90
+ "action-ink": "#4a55c0",
91
+ "lt-three": "#ff5c76",
92
+ "lt-three-foreground": "#000000",
93
+ "state-success": "#187548",
94
+ "state-error": "#c42b3a",
95
+ "state-warning": "#8f5f00",
96
+ "destructive-solid": "#c42b3a",
97
+ "destructive-solid-foreground": "#ffffff",
98
+ "font-geist": "\"Geist Variable\", \"Geist\"",
99
+ "font-geist-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace",
100
+ "font-jp": "\"Yu Gothic Medium\", \"游ゴシック Medium\", YuGothic, \"游ゴシック体\", \"游ゴシック\", \"Yu Gothic\", sans-serif",
101
+ "font-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace",
102
+ "background": "#ffffff",
103
+ "foreground": "#1b1c20",
104
+ "card": "#ffffff",
105
+ "card-foreground": "#1b1c20",
106
+ "popover": "#ffffff",
107
+ "popover-foreground": "#1b1c20",
108
+ "primary": "#5e6ad2",
109
+ "primary-foreground": "#ffffff",
110
+ "secondary": "#f1f2f4",
111
+ "secondary-foreground": "#1b1c20",
112
+ "muted": "#f1f2f4",
113
+ "muted-foreground": "#676b74",
114
+ "accent": "#f1f2f4",
115
+ "accent-foreground": "#1b1c20",
116
+ "destructive": "#c42b3a",
117
+ "destructive-foreground": "#ffffff",
118
+ "border": "#e6e7eb",
119
+ "input": "#d5d7dd",
120
+ "ring": "#5e6ad2",
121
+ "chart-1": "#5e6ad2",
122
+ "chart-2": "#1f9d6a",
123
+ "chart-3": "#bd7100",
124
+ "chart-4": "#d6495c",
125
+ "chart-5": "#7a8194",
126
+ "section": "#f4f5f7",
127
+ "radius": "6px",
128
+ "sidebar": "#f4f5f7",
129
+ "sidebar-foreground": "#1b1c20",
130
+ "sidebar-primary": "#5e6ad2",
131
+ "sidebar-primary-foreground": "#ffffff",
132
+ "sidebar-accent": "#f1f2f4",
133
+ "sidebar-accent-foreground": "#1b1c20",
134
+ "sidebar-border": "#e6e7eb",
135
+ "sidebar-ring": "#5e6ad2"
136
+ },
137
+ dark: {
138
+ "ink-1000": "#f7f8f8",
139
+ "ink-900": "#eceef0",
140
+ "ink-700": "#cfd3da",
141
+ "ink-500": "#8a8f98",
142
+ "ink-300": "#5b5f67",
143
+ "line": "#25272c",
144
+ "line-strong": "#34363d",
145
+ "line-control": "#6b707a",
146
+ "frame": "#0a0b0d",
147
+ "paper": "#121316",
148
+ "raised": "#17181c",
149
+ "overlay": "#1d1e23",
150
+ "wash": "#1b1c20",
151
+ "scrim": "rgba(0, 0, 0, 0.72)",
152
+ "shadow-color": "rgba(0, 0, 0, 0.7)",
153
+ "action": "#5e6ad2",
154
+ "action-hover": "#5059c2",
155
+ "action-foreground": "#ffffff",
156
+ "action-ink": "#98a2f5",
157
+ "lt-three": "#ff5c76",
158
+ "lt-three-foreground": "#000000",
159
+ "state-success": "#4cc38a",
160
+ "state-error": "#f2707f",
161
+ "state-warning": "#e0a53a",
162
+ "destructive-solid": "#cf3345",
163
+ "destructive-solid-foreground": "#ffffff",
164
+ "font-geist": "\"Geist Variable\", \"Geist\"",
165
+ "font-geist-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace",
166
+ "font-jp": "\"Yu Gothic Medium\", \"游ゴシック Medium\", YuGothic, \"游ゴシック体\", \"游ゴシック\", \"Yu Gothic\", sans-serif",
167
+ "font-mono": "\"Geist Mono Variable\", \"Geist Mono\", ui-monospace, monospace",
168
+ "background": "#121316",
169
+ "foreground": "#eceef0",
170
+ "card": "#17181c",
171
+ "card-foreground": "#eceef0",
172
+ "popover": "#1d1e23",
173
+ "popover-foreground": "#eceef0",
174
+ "primary": "#5e6ad2",
175
+ "primary-foreground": "#ffffff",
176
+ "secondary": "#1b1c20",
177
+ "secondary-foreground": "#eceef0",
178
+ "muted": "#1b1c20",
179
+ "muted-foreground": "#8a8f98",
180
+ "accent": "#1b1c20",
181
+ "accent-foreground": "#eceef0",
182
+ "destructive": "#f2707f",
183
+ "destructive-foreground": "#121316",
184
+ "border": "#25272c",
185
+ "input": "#34363d",
186
+ "ring": "#5e6ad2",
187
+ "chart-1": "#7c86e8",
188
+ "chart-2": "#4cc38a",
189
+ "chart-3": "#e5a23f",
190
+ "chart-4": "#f2707f",
191
+ "chart-5": "#9aa1b3",
192
+ "section": "#0a0b0d",
193
+ "radius": "6px",
194
+ "sidebar": "#0a0b0d",
195
+ "sidebar-foreground": "#eceef0",
196
+ "sidebar-primary": "#5e6ad2",
197
+ "sidebar-primary-foreground": "#ffffff",
198
+ "sidebar-accent": "#1b1c20",
199
+ "sidebar-accent-foreground": "#eceef0",
200
+ "sidebar-border": "#25272c",
201
+ "sidebar-ring": "#5e6ad2"
202
+ }
203
+ };
204
+
205
+ //#endregion
206
+ export { tokenNames, tokens };
@@ -0,0 +1,27 @@
1
+ import { ColorToken, Mode, TuningCatalog } from "./types.js";
2
+ //#region src/tuning/catalog.d.ts
3
+ /**
4
+ * Builds what can be tuned from the definition.
5
+ *
6
+ * - Color tokens: those whose value is a color literal (`#…`, `rgba(…)`). Split into ramp, primary action, brand, state, and chart by name prefix
7
+ * - Default references of semantic tokens: read from **`:root` in the generated CSS** (`--background: var(--paper)`).
8
+ * `tokens` holds actual values with `var()` resolved, so the targets are not preserved. The CSS holds the values that actually run, so it is the source of truth here
9
+ * - Body size: `--text-body` / `--text-body--line-height` in the CSS `@theme`
10
+ *
11
+ * Throws if it cannot be read (so a change in the default shape that makes this reading stale is not silently missed).
12
+ */
13
+ export declare function buildCatalog({ tokens, tokenNames, css }: {
14
+ tokens: Readonly<Record<Mode, Readonly<Record<string, string>>>>;
15
+ tokenNames: readonly string[];
16
+ css: string;
17
+ }): TuningCatalog;
18
+ export declare function findColor(catalog: TuningCatalog, name: string): ColorToken | undefined;
19
+ /**
20
+ * Runs `buildCatalog` and returns instead of throwing on failure. When the generated CSS changes shape and the reading goes stale, **only tuning is disabled** and the rest of the screens keep working
21
+ * (the reason is in `error`. An empty catalog is returned, so tuning has no effect). The caller shows and records `error`.
22
+ */
23
+ export declare function buildCatalogSafe(input: Parameters<typeof buildCatalog>[0]): {
24
+ catalog: TuningCatalog;
25
+ error: string | null;
26
+ };
27
+ //#endregion
@@ -0,0 +1,4 @@
1
+ import { TuningCatalog } from "./types.js";
2
+ //#region src/tuning/catalog.gen.d.ts
3
+ export declare const catalog: TuningCatalog;
4
+ //#endregion