tyrell-components 1.0.0-RC11 → 1.0.0-RC13

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 (240) hide show
  1. package/README.md +1 -0
  2. package/css/tyrell-colors-static.css +316 -0
  3. package/css/tyrell-theme.css +1454 -0
  4. package/css/tyrell.css +112 -420
  5. package/dist/tyrell-colors-static.css +316 -0
  6. package/dist/tyrell-theme.css +1454 -0
  7. package/dist/tyrell.css +112 -420
  8. package/dist/tyrell.js +1 -1
  9. package/lib/base/ty-component.d.ts +7 -0
  10. package/lib/base/ty-component.d.ts.map +1 -1
  11. package/lib/base/ty-component.js +27 -0
  12. package/lib/base/ty-component.js.map +1 -1
  13. package/lib/components/button.d.ts +16 -1
  14. package/lib/components/button.d.ts.map +1 -1
  15. package/lib/components/button.js +34 -4
  16. package/lib/components/button.js.map +1 -1
  17. package/lib/components/calendar-month.d.ts +23 -0
  18. package/lib/components/calendar-month.d.ts.map +1 -1
  19. package/lib/components/calendar-month.js +168 -11
  20. package/lib/components/calendar-month.js.map +1 -1
  21. package/lib/components/calendar-navigation.d.ts +31 -5
  22. package/lib/components/calendar-navigation.d.ts.map +1 -1
  23. package/lib/components/calendar-navigation.js +71 -31
  24. package/lib/components/calendar-navigation.js.map +1 -1
  25. package/lib/components/calendar.d.ts +17 -2
  26. package/lib/components/calendar.d.ts.map +1 -1
  27. package/lib/components/calendar.js +83 -12
  28. package/lib/components/calendar.js.map +1 -1
  29. package/lib/components/checkbox.d.ts +14 -3
  30. package/lib/components/checkbox.d.ts.map +1 -1
  31. package/lib/components/checkbox.js +86 -57
  32. package/lib/components/checkbox.js.map +1 -1
  33. package/lib/components/copy.d.ts +14 -3
  34. package/lib/components/copy.d.ts.map +1 -1
  35. package/lib/components/copy.js +47 -25
  36. package/lib/components/copy.js.map +1 -1
  37. package/lib/components/date-picker.d.ts +26 -1
  38. package/lib/components/date-picker.d.ts.map +1 -1
  39. package/lib/components/date-picker.js +151 -32
  40. package/lib/components/date-picker.js.map +1 -1
  41. package/lib/components/input.d.ts +17 -2
  42. package/lib/components/input.d.ts.map +1 -1
  43. package/lib/components/input.js +104 -25
  44. package/lib/components/input.js.map +1 -1
  45. package/lib/components/modal.d.ts.map +1 -1
  46. package/lib/components/modal.js +28 -3
  47. package/lib/components/modal.js.map +1 -1
  48. package/lib/components/option.d.ts +0 -27
  49. package/lib/components/option.d.ts.map +1 -1
  50. package/lib/components/option.js +11 -102
  51. package/lib/components/option.js.map +1 -1
  52. package/lib/components/popup.d.ts.map +1 -1
  53. package/lib/components/popup.js +36 -2
  54. package/lib/components/popup.js.map +1 -1
  55. package/lib/components/radio.d.ts +6 -2
  56. package/lib/components/radio.d.ts.map +1 -1
  57. package/lib/components/radio.js +55 -13
  58. package/lib/components/radio.js.map +1 -1
  59. package/lib/components/scroll-container.d.ts +16 -0
  60. package/lib/components/scroll-container.d.ts.map +1 -1
  61. package/lib/components/scroll-container.js +105 -1
  62. package/lib/components/scroll-container.js.map +1 -1
  63. package/lib/components/select.d.ts +550 -0
  64. package/lib/components/select.d.ts.map +1 -0
  65. package/lib/components/select.js +2115 -0
  66. package/lib/components/select.js.map +1 -0
  67. package/lib/components/selected-tags.d.ts +93 -0
  68. package/lib/components/selected-tags.d.ts.map +1 -0
  69. package/lib/components/selected-tags.js +286 -0
  70. package/lib/components/selected-tags.js.map +1 -0
  71. package/lib/components/switch.d.ts +6 -3
  72. package/lib/components/switch.d.ts.map +1 -1
  73. package/lib/components/switch.js +54 -36
  74. package/lib/components/switch.js.map +1 -1
  75. package/lib/components/tabs.d.ts.map +1 -1
  76. package/lib/components/tabs.js +190 -25
  77. package/lib/components/tabs.js.map +1 -1
  78. package/lib/components/tag.d.ts +9 -1
  79. package/lib/components/tag.d.ts.map +1 -1
  80. package/lib/components/tag.js +41 -5
  81. package/lib/components/tag.js.map +1 -1
  82. package/lib/components/textarea.d.ts +3 -0
  83. package/lib/components/textarea.d.ts.map +1 -1
  84. package/lib/components/textarea.js +61 -6
  85. package/lib/components/textarea.js.map +1 -1
  86. package/lib/components/tooltip.d.ts +4 -2
  87. package/lib/components/tooltip.d.ts.map +1 -1
  88. package/lib/components/tooltip.js +109 -70
  89. package/lib/components/tooltip.js.map +1 -1
  90. package/lib/components/wizard.d.ts.map +1 -1
  91. package/lib/components/wizard.js +22 -3
  92. package/lib/components/wizard.js.map +1 -1
  93. package/lib/index.d.ts +3 -2
  94. package/lib/index.d.ts.map +1 -1
  95. package/lib/index.js +3 -2
  96. package/lib/index.js.map +1 -1
  97. package/lib/styles/button.d.ts +41 -6
  98. package/lib/styles/button.d.ts.map +1 -1
  99. package/lib/styles/button.js +294 -254
  100. package/lib/styles/button.js.map +1 -1
  101. package/lib/styles/calendar-month.d.ts +3 -1
  102. package/lib/styles/calendar-month.d.ts.map +1 -1
  103. package/lib/styles/calendar-month.js +100 -67
  104. package/lib/styles/calendar-month.js.map +1 -1
  105. package/lib/styles/calendar-navigation.d.ts +1 -1
  106. package/lib/styles/calendar-navigation.d.ts.map +1 -1
  107. package/lib/styles/calendar-navigation.js +20 -28
  108. package/lib/styles/calendar-navigation.js.map +1 -1
  109. package/lib/styles/checkbox.d.ts +7 -5
  110. package/lib/styles/checkbox.d.ts.map +1 -1
  111. package/lib/styles/checkbox.js +125 -8
  112. package/lib/styles/checkbox.js.map +1 -1
  113. package/lib/styles/copy.d.ts +3 -1
  114. package/lib/styles/copy.d.ts.map +1 -1
  115. package/lib/styles/copy.js +61 -6
  116. package/lib/styles/copy.js.map +1 -1
  117. package/lib/styles/custom-scrollbar.d.ts +1 -1
  118. package/lib/styles/custom-scrollbar.d.ts.map +1 -1
  119. package/lib/styles/custom-scrollbar.js +2 -2
  120. package/lib/styles/date-picker.d.ts +3 -1
  121. package/lib/styles/date-picker.d.ts.map +1 -1
  122. package/lib/styles/date-picker.js +65 -103
  123. package/lib/styles/date-picker.js.map +1 -1
  124. package/lib/styles/file-upload.d.ts +1 -1
  125. package/lib/styles/file-upload.d.ts.map +1 -1
  126. package/lib/styles/file-upload.js +3 -3
  127. package/lib/styles/input.d.ts +3 -1
  128. package/lib/styles/input.d.ts.map +1 -1
  129. package/lib/styles/input.js +93 -419
  130. package/lib/styles/input.js.map +1 -1
  131. package/lib/styles/multiselect.d.ts +3 -1
  132. package/lib/styles/multiselect.d.ts.map +1 -1
  133. package/lib/styles/multiselect.js +26 -2
  134. package/lib/styles/multiselect.js.map +1 -1
  135. package/lib/styles/option.d.ts +1 -1
  136. package/lib/styles/option.d.ts.map +1 -1
  137. package/lib/styles/option.js +20 -47
  138. package/lib/styles/option.js.map +1 -1
  139. package/lib/styles/radio.d.ts +3 -1
  140. package/lib/styles/radio.d.ts.map +1 -1
  141. package/lib/styles/radio.js +24 -21
  142. package/lib/styles/radio.js.map +1 -1
  143. package/lib/styles/scroll-container.d.ts +1 -1
  144. package/lib/styles/scroll-container.d.ts.map +1 -1
  145. package/lib/styles/scroll-container.js +6 -0
  146. package/lib/styles/scroll-container.js.map +1 -1
  147. package/lib/styles/select-base.d.ts +9 -0
  148. package/lib/styles/select-base.d.ts.map +1 -0
  149. package/lib/styles/select-base.js +973 -0
  150. package/lib/styles/select-base.js.map +1 -0
  151. package/lib/styles/select.d.ts +12 -0
  152. package/lib/styles/select.d.ts.map +1 -0
  153. package/lib/styles/select.js +308 -0
  154. package/lib/styles/select.js.map +1 -0
  155. package/lib/styles/step.d.ts +1 -1
  156. package/lib/styles/step.d.ts.map +1 -1
  157. package/lib/styles/switch.d.ts +3 -1
  158. package/lib/styles/switch.d.ts.map +1 -1
  159. package/lib/styles/switch.js +25 -10
  160. package/lib/styles/switch.js.map +1 -1
  161. package/lib/styles/tab.d.ts +1 -1
  162. package/lib/styles/tab.d.ts.map +1 -1
  163. package/lib/styles/tabs.d.ts +1 -1
  164. package/lib/styles/tabs.d.ts.map +1 -1
  165. package/lib/styles/tabs.js +71 -1
  166. package/lib/styles/tabs.js.map +1 -1
  167. package/lib/styles/tag.d.ts +1 -1
  168. package/lib/styles/tag.d.ts.map +1 -1
  169. package/lib/styles/tag.js +40 -141
  170. package/lib/styles/tag.js.map +1 -1
  171. package/lib/styles/textarea.d.ts +1 -1
  172. package/lib/styles/textarea.d.ts.map +1 -1
  173. package/lib/styles/textarea.js +71 -37
  174. package/lib/styles/textarea.js.map +1 -1
  175. package/lib/styles/tooltip.d.ts +4 -2
  176. package/lib/styles/tooltip.d.ts.map +1 -1
  177. package/lib/styles/tooltip.js +4 -119
  178. package/lib/styles/tooltip.js.map +1 -1
  179. package/lib/styles/wizard.d.ts +1 -1
  180. package/lib/styles/wizard.d.ts.map +1 -1
  181. package/lib/styles/wizard.js +18 -6
  182. package/lib/styles/wizard.js.map +1 -1
  183. package/lib/types/common.d.ts +2 -1
  184. package/lib/types/common.d.ts.map +1 -1
  185. package/lib/types/common.js +15 -1
  186. package/lib/types/common.js.map +1 -1
  187. package/lib/utils/calendar-utils.d.ts +0 -48
  188. package/lib/utils/calendar-utils.d.ts.map +1 -1
  189. package/lib/utils/calendar-utils.js +0 -69
  190. package/lib/utils/calendar-utils.js.map +1 -1
  191. package/lib/utils/flavor-sheet.d.ts +32 -0
  192. package/lib/utils/flavor-sheet.d.ts.map +1 -0
  193. package/lib/utils/flavor-sheet.js +40 -0
  194. package/lib/utils/flavor-sheet.js.map +1 -0
  195. package/lib/utils/icon-registry.d.ts +0 -13
  196. package/lib/utils/icon-registry.d.ts.map +1 -1
  197. package/lib/utils/icon-registry.js +0 -35
  198. package/lib/utils/icon-registry.js.map +1 -1
  199. package/lib/utils/icons.d.ts +10 -0
  200. package/lib/utils/icons.d.ts.map +1 -0
  201. package/lib/utils/icons.js +10 -0
  202. package/lib/utils/icons.js.map +1 -0
  203. package/lib/utils/loader-registry.d.ts +2 -2
  204. package/lib/utils/loader-registry.js +2 -2
  205. package/lib/utils/locale.d.ts +0 -57
  206. package/lib/utils/locale.d.ts.map +1 -1
  207. package/lib/utils/locale.js +0 -89
  208. package/lib/utils/locale.js.map +1 -1
  209. package/lib/utils/number-format.d.ts +0 -21
  210. package/lib/utils/number-format.d.ts.map +1 -1
  211. package/lib/utils/number-format.js +0 -27
  212. package/lib/utils/number-format.js.map +1 -1
  213. package/lib/utils/positioning.d.ts +29 -22
  214. package/lib/utils/positioning.d.ts.map +1 -1
  215. package/lib/utils/positioning.js +23 -87
  216. package/lib/utils/positioning.js.map +1 -1
  217. package/lib/utils/scroll-lock.d.ts.map +1 -1
  218. package/lib/utils/scroll-lock.js +0 -1
  219. package/lib/utils/scroll-lock.js.map +1 -1
  220. package/lib/utils/styles.d.ts +0 -5
  221. package/lib/utils/styles.d.ts.map +1 -1
  222. package/lib/utils/styles.js +0 -7
  223. package/lib/utils/styles.js.map +1 -1
  224. package/lib/version.d.ts +1 -1
  225. package/lib/version.js +1 -1
  226. package/package.json +22 -11
  227. package/css/tyrell-brand.css +0 -913
  228. package/dist/tyrell-brand.css +0 -913
  229. package/lib/components/dropdown.d.ts +0 -424
  230. package/lib/components/dropdown.d.ts.map +0 -1
  231. package/lib/components/dropdown.js +0 -1640
  232. package/lib/components/dropdown.js.map +0 -1
  233. package/lib/components/multiselect.d.ts +0 -397
  234. package/lib/components/multiselect.d.ts.map +0 -1
  235. package/lib/components/multiselect.js +0 -1595
  236. package/lib/components/multiselect.js.map +0 -1
  237. package/lib/styles/dropdown.d.ts +0 -12
  238. package/lib/styles/dropdown.d.ts.map +0 -1
  239. package/lib/styles/dropdown.js +0 -1081
  240. package/lib/styles/dropdown.js.map +0 -1
@@ -1,913 +0,0 @@
1
- /* =====================================================================
2
- * tyrell-brand.css — OKLCH-based brand layer for Tyrell Components
3
- * =====================================================================
4
- *
5
- * Opt-in. Load AFTER `tyrell.css`. Override a few variables to rebrand.
6
- *
7
- * <link rel="stylesheet" href=".../tyrell.css">
8
- * <link rel="stylesheet" href=".../tyrell-brand.css">
9
- *
10
- * :root {
11
- * --ty-brand-hue: 200; // teal. Try 260 indigo, 30 orange, 145 emerald.
12
- * --ty-brand-chroma: 0.13;
13
- * }
14
- *
15
- * =====================================================================
16
- * THE FORMULA
17
- * =====================================================================
18
- *
19
- * Every color in the library is one formula on five axes:
20
- *
21
- * oklch(
22
- * L = L-curve[shade] × flavor-l-factor ← Tier 3 × Tier 5
23
- * C = flavor-chroma × saturation-curve[shade] ← Tier 2 × Tier 4
24
- * H = flavor-hue ← Tier 2
25
- * )
26
- *
27
- * Pick a flavor (primary / secondary / success / warning / danger /
28
- * neutral). Pick a shade (strong / bold / base / soft / faint). That's
29
- * the cell; the formula gives you its color.
30
- *
31
- * FLAVOR axis — which semantic role (carries its own hue, chroma,
32
- * l-factor seeds)
33
- * SHADE axis — 5 emphasis stops shared across flavors
34
- * (strong / bold / base / soft / faint)
35
- * HUE axis — what color family (0°–360°)
36
- * CHROMA axis — how saturated (0 = grey, ~0.4 = max vivid)
37
- * L axis — how dark or light (0 = black, 1 = white)
38
- * Light mode: low L = more emphasis.
39
- * Dark mode: high L = more emphasis (curve flips).
40
- *
41
- * Worked example — `--ty-color-warning-bold` in LIGHT mode:
42
- *
43
- * L = 0.46 × 1 = 0.46 ← l-bold × warning-l-factor
44
- * C = 0.26 × 1.00 = 0.26 ← warning-chroma × c-bold-mult
45
- * H = 75° ← warning-hue
46
- * → oklch(0.46 0.26 75) (a punchy amber for +1 emphasis text)
47
- *
48
- * Want warning a notch darker without touching anything else? Set
49
- * `--ty-warning-l-factor: 0.85` and the new L becomes 0.46 × 0.85 =
50
- * 0.39. Every warning shade shifts in step; primary / success / danger
51
- * are untouched.
52
- *
53
- * =====================================================================
54
- * FILE LAYOUT
55
- * =====================================================================
56
- *
57
- * SECTION 1 — KNOBS (~lines 80–225)
58
- * The variables you might want to override. Five tiers from drop-in
59
- * rebrand (Tier 1) to surgical per-flavor tweak (Tier 5).
60
- *
61
- * SECTION 2 — IMPLEMENTATION
62
- * The oklch() expressions that wire the knobs through to the actual
63
- * color tokens. Rarely needs editing — Section 1 is the contract.
64
- *
65
- * Browser support: OKLCH is in every evergreen browser since mid-2023.
66
- *
67
- * ===================================================================== */
68
-
69
- /* =====================================================================
70
- * SECTION 1 — KNOBS
71
- * =====================================================================
72
- *
73
- * Five tiers, ordered by how often you'd touch them. Override any of
74
- * these in your own `:root` (or `html.dark` for per-mode tuning) —
75
- * your declaration wins by source order.
76
- *
77
- * Tier 1 — SEEDS brand-hue + chroma. Rebrand in 2 lines.
78
- * Tier 2 — PER-FLAVOR ANCHORS each flavor's hue + chroma.
79
- * Tier 3 — L-CURVE 5 lightness stops for the emphasis ramp.
80
- * Tier 4 — SATURATION CURVE per-shade chroma multipliers.
81
- * Tier 5 — PER-FLAVOR L-FACTOR per-flavor lightness multiplier — push
82
- * one flavor up or down without touching
83
- * the others. Default 1.
84
- * ===================================================================== */
85
-
86
- :root {
87
- /* ----------------------------------------------------------------
88
- * Tier 1 — SEEDS
89
- * Brand-hue + chroma drive primary, neutral, surfaces, inputs,
90
- * solid buttons. One slider rebrands the page.
91
- * --------------------------------------------------------------*/
92
-
93
- --ty-brand-hue: 230;
94
- --ty-brand-chroma: 0.13;
95
-
96
- /* Secondary rotates from brand by an exposed offset. Default +60°
97
- * (sibling accent). Try 30° for a close sibling, 120° for triadic,
98
- * 180° for complement. Set --ty-secondary-hue to a literal number
99
- * to detach completely. */
100
- --ty-secondary-offset: 60;
101
-
102
- /* ----------------------------------------------------------------
103
- * Tier 2 — PER-FLAVOR ANCHORS
104
- * Semantic colors (success/warning/danger/neutral) have their own
105
- * hue + chroma seeds so they keep meaning across brand changes.
106
- * Override any individually:
107
- * --ty-success-hue: 160; (more teal)
108
- * --ty-warning-chroma: 0.2; (more vivid)
109
- * --------------------------------------------------------------*/
110
-
111
- --ty-secondary-hue: calc(var(--ty-brand-hue) + var(--ty-secondary-offset));
112
- --ty-secondary-chroma: var(--ty-brand-chroma);
113
-
114
- --ty-success-hue: 145;
115
- --ty-success-chroma: calc(var(--ty-brand-chroma) * 1.08);
116
-
117
- --ty-warning-hue: 75;
118
- --ty-warning-chroma: calc(var(--ty-brand-chroma) * 2);
119
-
120
- --ty-danger-hue: 25;
121
- --ty-danger-chroma: calc(var(--ty-brand-chroma) * 1.31);
122
-
123
- --ty-neutral-hue: var(--ty-brand-hue);
124
- --ty-neutral-chroma: calc(var(--ty-brand-chroma) * 0.04);
125
-
126
- /* ----------------------------------------------------------------
127
- * Tier 3 — L-CURVE (light mode)
128
- * 5 lightness stops per flavor for the emphasis ramp.
129
- * Lower L = darker = more emphasis in light mode.
130
- * Plus 3 bg L stops for the soft-tint backgrounds.
131
- * --------------------------------------------------------------*/
132
-
133
- --ty-l-strong: 0.38; /* ++ max emphasis */
134
- --ty-l-bold: 0.46; /* + high emphasis */
135
- --ty-l-base: 0.54; /* body */
136
- --ty-l-soft: 0.72; /* - low emphasis */
137
- --ty-l-faint: 0.88; /* -- min emphasis */
138
-
139
- --ty-l-bg-base: 0.96;
140
- --ty-l-bg-bold: 0.92;
141
- --ty-l-bg-soft: 0.98;
142
-
143
- /* ----------------------------------------------------------------
144
- * Tier 4 — SATURATION CURVE
145
- * Per-shade chroma multipliers. Each shade's chroma =
146
- * flavor-chroma × multiplier. Drops near the extremes so
147
- * near-white and near-black can hold their tint.
148
- * --------------------------------------------------------------*/
149
-
150
- --ty-c-strong-mult: 0.77;
151
- --ty-c-bold-mult: 1;
152
- --ty-c-base-mult: 0.92;
153
- --ty-c-soft-mult: 0.77;
154
- --ty-c-faint-mult: 0.46;
155
-
156
- --ty-c-bg-base-mult: 0.15;
157
- --ty-c-bg-bold-mult: 0.38;
158
- --ty-c-bg-soft-mult: 0.08;
159
-
160
- /* ----------------------------------------------------------------
161
- * Tier 5 — PER-FLAVOR L-FACTOR
162
- * Multiplies the L-curve values for that flavor only. Default 1 =
163
- * no change. Useful when one flavor's brand-default sits too close
164
- * to brand-hue on the wheel and the buttons blend.
165
- *
166
- * Example: brand-hue: 47° (gold). Warning sits at 75° (amber).
167
- * Both render as similar warm browns at brand-chroma. Drop warning
168
- * a notch and it darkens enough to stand apart:
169
- * --ty-warning-l-factor: 0.85;
170
- *
171
- * NOTE: the L-curve flips between light and dark mode, so a factor
172
- * < 1 darkens in light mode but DIMS in dark mode. If you want
173
- * symmetric "more emphatic" in both modes, set the factor here for
174
- * light AND set its inverse (1 / factor, roughly) in `html.dark`.
175
- * --------------------------------------------------------------*/
176
-
177
- --ty-primary-l-factor: 1;
178
- --ty-secondary-l-factor: 1;
179
- --ty-success-l-factor: 1;
180
- --ty-warning-l-factor: 1.15;
181
- --ty-danger-l-factor: 1;
182
- --ty-neutral-l-factor: 1;
183
- }
184
-
185
- /* Dark mode overrides for the L-curve and saturation curve. Tier 1 + 2
186
- * seeds and Tier 5 L-factors carry through unchanged from :root. */
187
- html.dark,
188
- html[data-theme="dark"] {
189
- /* Tier 3 dark — inverted curve. Higher L = lighter text = more
190
- * emphasis on a dark background. */
191
- --ty-l-strong: 0.86;
192
- --ty-l-bold: 0.74;
193
- --ty-l-base: 0.62;
194
- --ty-l-soft: 0.46;
195
- --ty-l-faint: 0.3;
196
-
197
- --ty-l-bg-base: 0.22;
198
- --ty-l-bg-bold: 0.26;
199
- --ty-l-bg-soft: 0.19;
200
-
201
- /* Tier 4 dark — dim shades hold more chroma so they don't grey out;
202
- * strong shades trim chroma so bright tones don't over-pop. */
203
- --ty-c-strong-mult: 0.77;
204
- --ty-c-bold-mult: 1;
205
- --ty-c-base-mult: 0.92;
206
- --ty-c-soft-mult: 0.77;
207
- --ty-c-faint-mult: 0.5;
208
-
209
- --ty-c-bg-base-mult: 0.38;
210
- --ty-c-bg-bold-mult: 0.54;
211
- --ty-c-bg-soft-mult: 0.23;
212
- }
213
-
214
- /* =====================================================================
215
- * SECTION 2 — IMPLEMENTATION
216
- * =====================================================================
217
- *
218
- * The oklch() expressions that turn Section 1's knobs into the actual
219
- * --ty-color-*, --ty-bg-*, --ty-border-*, --ty-surface-*, --ty-input-*,
220
- * and --ty-solid-* tokens that components read.
221
- *
222
- * Pattern for each flavor's 5-shade fg ramp + 3-shade bg ramp:
223
- *
224
- * --ty-color-{flavor}-{shade}: oklch(
225
- * calc(var(--ty-l-{shade}) * var(--ty-{flavor}-l-factor)) ← L
226
- * calc(var(--ty-{flavor}-chroma) * var(--ty-c-{shade}-mult)) ← C
227
- * var(--ty-{flavor}-hue) ← H
228
- * );
229
- *
230
- * Computed tokens are declared in BOTH `:root` and `html.dark` blocks
231
- * because tyrell.css ships hardcoded dark-mode hexes at html.dark
232
- * specificity (0,1,1); our brand-layer `:root` (0,1,0) would lose
233
- * source-order otherwise. Same math both blocks — just different L/C
234
- * inputs from Tier 3/4.
235
- * ===================================================================== */
236
-
237
- :root {
238
- /* ----------------------------------------------------------------
239
- * Flavor color ramps (fg + bg + border)
240
- * --------------------------------------------------------------*/
241
-
242
- /* Primary */
243
- --ty-color-primary-strong: oklch(
244
- calc(var(--ty-l-strong) * var(--ty-primary-l-factor))
245
- calc(var(--ty-brand-chroma) * var(--ty-c-strong-mult)) var(--ty-brand-hue)
246
- );
247
- --ty-color-primary-bold: oklch(
248
- calc(var(--ty-l-bold) * var(--ty-primary-l-factor))
249
- calc(var(--ty-brand-chroma) * var(--ty-c-bold-mult)) var(--ty-brand-hue)
250
- );
251
- --ty-color-primary: oklch(
252
- calc(var(--ty-l-base) * var(--ty-primary-l-factor))
253
- calc(var(--ty-brand-chroma) * var(--ty-c-base-mult)) var(--ty-brand-hue)
254
- );
255
- --ty-color-primary-soft: oklch(
256
- calc(var(--ty-l-soft) * var(--ty-primary-l-factor))
257
- calc(var(--ty-brand-chroma) * var(--ty-c-soft-mult)) var(--ty-brand-hue)
258
- );
259
- --ty-color-primary-faint: oklch(
260
- calc(var(--ty-l-faint) * var(--ty-primary-l-factor))
261
- calc(var(--ty-brand-chroma) * var(--ty-c-faint-mult)) var(--ty-brand-hue)
262
- );
263
- --ty-bg-primary: oklch(
264
- calc(var(--ty-l-bg-base) * var(--ty-primary-l-factor))
265
- calc(var(--ty-brand-chroma) * var(--ty-c-bg-base-mult))
266
- var(--ty-brand-hue)
267
- );
268
- --ty-bg-primary-bold: oklch(
269
- calc(var(--ty-l-bg-bold) * var(--ty-primary-l-factor))
270
- calc(var(--ty-brand-chroma) * var(--ty-c-bg-bold-mult))
271
- var(--ty-brand-hue)
272
- );
273
- --ty-bg-primary-soft: oklch(
274
- calc(var(--ty-l-bg-soft) * var(--ty-primary-l-factor))
275
- calc(var(--ty-brand-chroma) * var(--ty-c-bg-soft-mult))
276
- var(--ty-brand-hue)
277
- );
278
- --ty-border-primary: var(--ty-color-primary-soft);
279
-
280
- /* Secondary */
281
- --ty-color-secondary-strong: oklch(
282
- calc(var(--ty-l-strong) * var(--ty-secondary-l-factor))
283
- calc(var(--ty-secondary-chroma) * var(--ty-c-strong-mult))
284
- var(--ty-secondary-hue)
285
- );
286
- --ty-color-secondary-bold: oklch(
287
- calc(var(--ty-l-bold) * var(--ty-secondary-l-factor))
288
- calc(var(--ty-secondary-chroma) * var(--ty-c-bold-mult))
289
- var(--ty-secondary-hue)
290
- );
291
- --ty-color-secondary: oklch(
292
- calc(var(--ty-l-base) * var(--ty-secondary-l-factor))
293
- calc(var(--ty-secondary-chroma) * var(--ty-c-base-mult))
294
- var(--ty-secondary-hue)
295
- );
296
- --ty-color-secondary-soft: oklch(
297
- calc(var(--ty-l-soft) * var(--ty-secondary-l-factor))
298
- calc(var(--ty-secondary-chroma) * var(--ty-c-soft-mult))
299
- var(--ty-secondary-hue)
300
- );
301
- --ty-color-secondary-faint: oklch(
302
- calc(var(--ty-l-faint) * var(--ty-secondary-l-factor))
303
- calc(var(--ty-secondary-chroma) * var(--ty-c-faint-mult))
304
- var(--ty-secondary-hue)
305
- );
306
- --ty-bg-secondary: oklch(
307
- calc(var(--ty-l-bg-base) * var(--ty-secondary-l-factor))
308
- calc(var(--ty-secondary-chroma) * var(--ty-c-bg-base-mult))
309
- var(--ty-secondary-hue)
310
- );
311
- --ty-bg-secondary-bold: oklch(
312
- calc(var(--ty-l-bg-bold) * var(--ty-secondary-l-factor))
313
- calc(var(--ty-secondary-chroma) * var(--ty-c-bg-bold-mult))
314
- var(--ty-secondary-hue)
315
- );
316
- --ty-bg-secondary-soft: oklch(
317
- calc(var(--ty-l-bg-soft) * var(--ty-secondary-l-factor))
318
- calc(var(--ty-secondary-chroma) * var(--ty-c-bg-soft-mult))
319
- var(--ty-secondary-hue)
320
- );
321
- --ty-border-secondary: var(--ty-color-secondary-soft);
322
-
323
- /* Success */
324
- --ty-color-success-strong: oklch(
325
- calc(var(--ty-l-strong) * var(--ty-success-l-factor))
326
- calc(var(--ty-success-chroma) * var(--ty-c-strong-mult))
327
- var(--ty-success-hue)
328
- );
329
- --ty-color-success-bold: oklch(
330
- calc(var(--ty-l-bold) * var(--ty-success-l-factor))
331
- calc(var(--ty-success-chroma) * var(--ty-c-bold-mult))
332
- var(--ty-success-hue)
333
- );
334
- --ty-color-success: oklch(
335
- calc(var(--ty-l-base) * var(--ty-success-l-factor))
336
- calc(var(--ty-success-chroma) * var(--ty-c-base-mult))
337
- var(--ty-success-hue)
338
- );
339
- --ty-color-success-soft: oklch(
340
- calc(var(--ty-l-soft) * var(--ty-success-l-factor))
341
- calc(var(--ty-success-chroma) * var(--ty-c-soft-mult))
342
- var(--ty-success-hue)
343
- );
344
- --ty-color-success-faint: oklch(
345
- calc(var(--ty-l-faint) * var(--ty-success-l-factor))
346
- calc(var(--ty-success-chroma) * var(--ty-c-faint-mult))
347
- var(--ty-success-hue)
348
- );
349
- --ty-bg-success: oklch(
350
- calc(var(--ty-l-bg-base) * var(--ty-success-l-factor))
351
- calc(var(--ty-success-chroma) * var(--ty-c-bg-base-mult))
352
- var(--ty-success-hue)
353
- );
354
- --ty-bg-success-bold: oklch(
355
- calc(var(--ty-l-bg-bold) * var(--ty-success-l-factor))
356
- calc(var(--ty-success-chroma) * var(--ty-c-bg-bold-mult))
357
- var(--ty-success-hue)
358
- );
359
- --ty-bg-success-soft: oklch(
360
- calc(var(--ty-l-bg-soft) * var(--ty-success-l-factor))
361
- calc(var(--ty-success-chroma) * var(--ty-c-bg-soft-mult))
362
- var(--ty-success-hue)
363
- );
364
- --ty-border-success: var(--ty-color-success-soft);
365
-
366
- /* Danger */
367
- --ty-color-danger-strong: oklch(
368
- calc(var(--ty-l-strong) * var(--ty-danger-l-factor))
369
- calc(var(--ty-danger-chroma) * var(--ty-c-strong-mult))
370
- var(--ty-danger-hue)
371
- );
372
- --ty-color-danger-bold: oklch(
373
- calc(var(--ty-l-bold) * var(--ty-danger-l-factor))
374
- calc(var(--ty-danger-chroma) * var(--ty-c-bold-mult)) var(--ty-danger-hue)
375
- );
376
- --ty-color-danger: oklch(
377
- calc(var(--ty-l-base) * var(--ty-danger-l-factor))
378
- calc(var(--ty-danger-chroma) * var(--ty-c-base-mult)) var(--ty-danger-hue)
379
- );
380
- --ty-color-danger-soft: oklch(
381
- calc(var(--ty-l-soft) * var(--ty-danger-l-factor))
382
- calc(var(--ty-danger-chroma) * var(--ty-c-soft-mult)) var(--ty-danger-hue)
383
- );
384
- --ty-color-danger-faint: oklch(
385
- calc(var(--ty-l-faint) * var(--ty-danger-l-factor))
386
- calc(var(--ty-danger-chroma) * var(--ty-c-faint-mult))
387
- var(--ty-danger-hue)
388
- );
389
- --ty-bg-danger: oklch(
390
- calc(var(--ty-l-bg-base) * var(--ty-danger-l-factor))
391
- calc(var(--ty-danger-chroma) * var(--ty-c-bg-base-mult))
392
- var(--ty-danger-hue)
393
- );
394
- --ty-bg-danger-bold: oklch(
395
- calc(var(--ty-l-bg-bold) * var(--ty-danger-l-factor))
396
- calc(var(--ty-danger-chroma) * var(--ty-c-bg-bold-mult))
397
- var(--ty-danger-hue)
398
- );
399
- --ty-bg-danger-soft: oklch(
400
- calc(var(--ty-l-bg-soft) * var(--ty-danger-l-factor))
401
- calc(var(--ty-danger-chroma) * var(--ty-c-bg-soft-mult))
402
- var(--ty-danger-hue)
403
- );
404
- --ty-border-danger: var(--ty-color-danger-soft);
405
-
406
- /* Warning */
407
- --ty-color-warning-strong: oklch(
408
- calc(var(--ty-l-strong) * var(--ty-warning-l-factor))
409
- calc(var(--ty-warning-chroma) * var(--ty-c-strong-mult))
410
- var(--ty-warning-hue)
411
- );
412
- --ty-color-warning-bold: oklch(
413
- calc(var(--ty-l-bold) * var(--ty-warning-l-factor))
414
- calc(var(--ty-warning-chroma) * var(--ty-c-bold-mult))
415
- var(--ty-warning-hue)
416
- );
417
- --ty-color-warning: oklch(
418
- calc(var(--ty-l-base) * var(--ty-warning-l-factor))
419
- calc(var(--ty-warning-chroma) * var(--ty-c-base-mult))
420
- var(--ty-warning-hue)
421
- );
422
- --ty-color-warning-soft: oklch(
423
- calc(var(--ty-l-soft) * var(--ty-warning-l-factor))
424
- calc(var(--ty-warning-chroma) * var(--ty-c-soft-mult))
425
- var(--ty-warning-hue)
426
- );
427
- --ty-color-warning-faint: oklch(
428
- calc(var(--ty-l-faint) * var(--ty-warning-l-factor))
429
- calc(var(--ty-warning-chroma) * var(--ty-c-faint-mult))
430
- var(--ty-warning-hue)
431
- );
432
- --ty-bg-warning: oklch(
433
- calc(var(--ty-l-bg-base) * var(--ty-warning-l-factor))
434
- calc(var(--ty-warning-chroma) * var(--ty-c-bg-base-mult))
435
- var(--ty-warning-hue)
436
- );
437
- --ty-bg-warning-bold: oklch(
438
- calc(var(--ty-l-bg-bold) * var(--ty-warning-l-factor))
439
- calc(var(--ty-warning-chroma) * var(--ty-c-bg-bold-mult))
440
- var(--ty-warning-hue)
441
- );
442
- --ty-bg-warning-soft: oklch(
443
- calc(var(--ty-l-bg-soft) * var(--ty-warning-l-factor))
444
- calc(var(--ty-warning-chroma) * var(--ty-c-bg-soft-mult))
445
- var(--ty-warning-hue)
446
- );
447
- --ty-border-warning: var(--ty-color-warning-soft);
448
-
449
- /* Neutral — same L curve, near-zero chroma so the grey scale stays grey. */
450
- --ty-color-neutral-strong: oklch(
451
- calc(var(--ty-l-strong) * var(--ty-neutral-l-factor))
452
- calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
453
- var(--ty-neutral-hue)
454
- );
455
- --ty-color-neutral-bold: oklch(
456
- calc(var(--ty-l-bold) * var(--ty-neutral-l-factor))
457
- calc(var(--ty-neutral-chroma) * var(--ty-c-bold-mult))
458
- var(--ty-neutral-hue)
459
- );
460
- --ty-color-neutral: oklch(
461
- calc(var(--ty-l-base) * var(--ty-neutral-l-factor))
462
- calc(var(--ty-neutral-chroma) * var(--ty-c-base-mult))
463
- var(--ty-neutral-hue)
464
- );
465
- --ty-color-neutral-soft: oklch(
466
- calc(var(--ty-l-soft) * var(--ty-neutral-l-factor))
467
- calc(var(--ty-neutral-chroma) * var(--ty-c-soft-mult))
468
- var(--ty-neutral-hue)
469
- );
470
- --ty-color-neutral-faint: oklch(
471
- calc(var(--ty-l-faint) * var(--ty-neutral-l-factor))
472
- calc(var(--ty-neutral-chroma) * var(--ty-c-faint-mult))
473
- var(--ty-neutral-hue)
474
- );
475
- --ty-bg-neutral: oklch(
476
- calc(var(--ty-l-bg-base) * var(--ty-neutral-l-factor))
477
- calc(var(--ty-neutral-chroma) * var(--ty-c-bg-base-mult))
478
- var(--ty-neutral-hue)
479
- );
480
- --ty-bg-neutral-bold: oklch(
481
- calc(var(--ty-l-bg-bold) * var(--ty-neutral-l-factor))
482
- calc(var(--ty-neutral-chroma) * var(--ty-c-bg-bold-mult))
483
- var(--ty-neutral-hue)
484
- );
485
- --ty-bg-neutral-soft: oklch(
486
- calc(var(--ty-l-bg-soft) * var(--ty-neutral-l-factor))
487
- calc(var(--ty-neutral-chroma) * var(--ty-c-bg-soft-mult))
488
- var(--ty-neutral-hue)
489
- );
490
- --ty-bg-neutral-strong: oklch(
491
- 0.25 calc(var(--ty-neutral-chroma) * 2) var(--ty-neutral-hue)
492
- );
493
- --ty-bg-neutral-faint: oklch(
494
- 0.99 calc(var(--ty-neutral-chroma) * 0.4) var(--ty-neutral-hue)
495
- );
496
-
497
- /* ----------------------------------------------------------------
498
- * Global neutral borders — read off the neutral color ramp.
499
- * --------------------------------------------------------------*/
500
- --ty-border-strong: var(--ty-color-neutral-bold);
501
- --ty-border: var(--ty-color-neutral-soft);
502
- --ty-border-bold: var(--ty-color-neutral-soft);
503
- --ty-border-soft: var(--ty-color-neutral-faint);
504
- --ty-border-faint: var(--ty-color-neutral-faint);
505
-
506
- /* ----------------------------------------------------------------
507
- * Surfaces — canvas tinted slightly toward brand for warmth.
508
- * --------------------------------------------------------------*/
509
- --ty-surface-canvas: oklch(0.985 0.005 var(--ty-brand-hue));
510
- --ty-surface-content: oklch(1 0 0);
511
- --ty-surface-elevated: oklch(1 0 0);
512
- --ty-surface-floating: oklch(1 0 0);
513
- --ty-surface-input: oklch(1 0 0);
514
-
515
- /* ----------------------------------------------------------------
516
- * Inputs — tied to neutral ramp so form controls retint with brand.
517
- * --------------------------------------------------------------*/
518
- --ty-input-bg: var(--ty-surface-input);
519
- --ty-input-color: var(--ty-color-neutral-strong);
520
- --ty-input-border: var(--ty-color-neutral-soft);
521
- --ty-input-border-hover: var(--ty-color-neutral-bold);
522
- --ty-input-border-focus: var(--ty-color-primary);
523
- --ty-input-placeholder: var(--ty-color-neutral-soft);
524
- --ty-input-disabled-bg: var(--ty-color-neutral-faint);
525
- --ty-input-disabled-border: var(--ty-color-neutral-faint);
526
- --ty-input-disabled-color: var(--ty-color-neutral-bold);
527
- --ty-input-shadow-focus: color-mix(
528
- in oklab,
529
- var(--ty-color-primary) 5%,
530
- transparent
531
- );
532
-
533
- /* ----------------------------------------------------------------
534
- * Solid buttons — re-route through --ty-color-*.
535
- * --------------------------------------------------------------*/
536
- --ty-solid-primary: var(--ty-color-primary);
537
- --ty-solid-primary-strong: var(--ty-color-primary-bold);
538
- --ty-solid-primary-soft: var(--ty-color-primary-soft);
539
- --ty-solid-primary-fg: white;
540
-
541
- --ty-solid-secondary: var(--ty-color-secondary);
542
- --ty-solid-secondary-strong: var(--ty-color-secondary-bold);
543
- --ty-solid-secondary-soft: var(--ty-color-secondary-soft);
544
- --ty-solid-secondary-fg: white;
545
-
546
- --ty-solid-success: var(--ty-color-success);
547
- --ty-solid-success-strong: var(--ty-color-success-bold);
548
- --ty-solid-success-soft: var(--ty-color-success-soft);
549
- --ty-solid-success-fg: white;
550
-
551
- --ty-solid-danger: var(--ty-color-danger);
552
- --ty-solid-danger-strong: var(--ty-color-danger-bold);
553
- --ty-solid-danger-soft: var(--ty-color-danger-soft);
554
- --ty-solid-danger-fg: white;
555
-
556
- --ty-solid-warning: var(--ty-color-warning);
557
- --ty-solid-warning-strong: var(--ty-color-warning-bold);
558
- --ty-solid-warning-soft: var(--ty-color-warning-soft);
559
- --ty-solid-warning-fg: white;
560
-
561
- /* Solid neutral routes to a darker shade than neutral-base. The "soft"
562
- * solid-neutral softens to a mid-grey for inactive states. */
563
- --ty-solid-neutral-soft: oklch(
564
- 0.6 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
565
- var(--ty-neutral-hue)
566
- );
567
- --ty-solid-neutral: oklch(
568
- 0.4 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
569
- var(--ty-neutral-hue)
570
- );
571
- --ty-solid-neutral-strong: oklch(
572
- 0.2 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
573
- var(--ty-neutral-hue)
574
- );
575
- }
576
-
577
- /* =====================================================================
578
- * SECTION 2 DARK — same computations re-declared so html.dark (0,1,1)
579
- * matches tyrell.css's hardcoded dark-mode hexes at source-order
580
- * specificity. The math is identical to the :root block above; only
581
- * the L/C inputs differ (from html.dark's Tier 3/4 overrides).
582
- * ===================================================================== */
583
-
584
- html.dark,
585
- html[data-theme="dark"] {
586
- /* Primary */
587
- --ty-color-primary-strong: oklch(
588
- calc(var(--ty-l-strong) * var(--ty-primary-l-factor))
589
- calc(var(--ty-brand-chroma) * var(--ty-c-strong-mult)) var(--ty-brand-hue)
590
- );
591
- --ty-color-primary-bold: oklch(
592
- calc(var(--ty-l-bold) * var(--ty-primary-l-factor))
593
- calc(var(--ty-brand-chroma) * var(--ty-c-bold-mult)) var(--ty-brand-hue)
594
- );
595
- --ty-color-primary: oklch(
596
- calc(var(--ty-l-base) * var(--ty-primary-l-factor))
597
- calc(var(--ty-brand-chroma) * var(--ty-c-base-mult)) var(--ty-brand-hue)
598
- );
599
- --ty-color-primary-soft: oklch(
600
- calc(var(--ty-l-soft) * var(--ty-primary-l-factor))
601
- calc(var(--ty-brand-chroma) * var(--ty-c-soft-mult)) var(--ty-brand-hue)
602
- );
603
- --ty-color-primary-faint: oklch(
604
- calc(var(--ty-l-faint) * var(--ty-primary-l-factor))
605
- calc(var(--ty-brand-chroma) * var(--ty-c-faint-mult)) var(--ty-brand-hue)
606
- );
607
- --ty-bg-primary: oklch(
608
- calc(var(--ty-l-bg-base) * var(--ty-primary-l-factor))
609
- calc(var(--ty-brand-chroma) * var(--ty-c-bg-base-mult))
610
- var(--ty-brand-hue)
611
- );
612
- --ty-bg-primary-bold: oklch(
613
- calc(var(--ty-l-bg-bold) * var(--ty-primary-l-factor))
614
- calc(var(--ty-brand-chroma) * var(--ty-c-bg-bold-mult))
615
- var(--ty-brand-hue)
616
- );
617
- --ty-bg-primary-soft: oklch(
618
- calc(var(--ty-l-bg-soft) * var(--ty-primary-l-factor))
619
- calc(var(--ty-brand-chroma) * var(--ty-c-bg-soft-mult))
620
- var(--ty-brand-hue)
621
- );
622
- --ty-border-primary: var(--ty-color-primary-soft);
623
-
624
- /* Secondary */
625
- --ty-color-secondary-strong: oklch(
626
- calc(var(--ty-l-strong) * var(--ty-secondary-l-factor))
627
- calc(var(--ty-secondary-chroma) * var(--ty-c-strong-mult))
628
- var(--ty-secondary-hue)
629
- );
630
- --ty-color-secondary-bold: oklch(
631
- calc(var(--ty-l-bold) * var(--ty-secondary-l-factor))
632
- calc(var(--ty-secondary-chroma) * var(--ty-c-bold-mult))
633
- var(--ty-secondary-hue)
634
- );
635
- --ty-color-secondary: oklch(
636
- calc(var(--ty-l-base) * var(--ty-secondary-l-factor))
637
- calc(var(--ty-secondary-chroma) * var(--ty-c-base-mult))
638
- var(--ty-secondary-hue)
639
- );
640
- --ty-color-secondary-soft: oklch(
641
- calc(var(--ty-l-soft) * var(--ty-secondary-l-factor))
642
- calc(var(--ty-secondary-chroma) * var(--ty-c-soft-mult))
643
- var(--ty-secondary-hue)
644
- );
645
- --ty-color-secondary-faint: oklch(
646
- calc(var(--ty-l-faint) * var(--ty-secondary-l-factor))
647
- calc(var(--ty-secondary-chroma) * var(--ty-c-faint-mult))
648
- var(--ty-secondary-hue)
649
- );
650
- --ty-bg-secondary: oklch(
651
- calc(var(--ty-l-bg-base) * var(--ty-secondary-l-factor))
652
- calc(var(--ty-secondary-chroma) * var(--ty-c-bg-base-mult))
653
- var(--ty-secondary-hue)
654
- );
655
- --ty-bg-secondary-bold: oklch(
656
- calc(var(--ty-l-bg-bold) * var(--ty-secondary-l-factor))
657
- calc(var(--ty-secondary-chroma) * var(--ty-c-bg-bold-mult))
658
- var(--ty-secondary-hue)
659
- );
660
- --ty-bg-secondary-soft: oklch(
661
- calc(var(--ty-l-bg-soft) * var(--ty-secondary-l-factor))
662
- calc(var(--ty-secondary-chroma) * var(--ty-c-bg-soft-mult))
663
- var(--ty-secondary-hue)
664
- );
665
- --ty-border-secondary: var(--ty-color-secondary-soft);
666
-
667
- /* Success */
668
- --ty-color-success-strong: oklch(
669
- calc(var(--ty-l-strong) * var(--ty-success-l-factor))
670
- calc(var(--ty-success-chroma) * var(--ty-c-strong-mult))
671
- var(--ty-success-hue)
672
- );
673
- --ty-color-success-bold: oklch(
674
- calc(var(--ty-l-bold) * var(--ty-success-l-factor))
675
- calc(var(--ty-success-chroma) * var(--ty-c-bold-mult))
676
- var(--ty-success-hue)
677
- );
678
- --ty-color-success: oklch(
679
- calc(var(--ty-l-base) * var(--ty-success-l-factor))
680
- calc(var(--ty-success-chroma) * var(--ty-c-base-mult))
681
- var(--ty-success-hue)
682
- );
683
- --ty-color-success-soft: oklch(
684
- calc(var(--ty-l-soft) * var(--ty-success-l-factor))
685
- calc(var(--ty-success-chroma) * var(--ty-c-soft-mult))
686
- var(--ty-success-hue)
687
- );
688
- --ty-color-success-faint: oklch(
689
- calc(var(--ty-l-faint) * var(--ty-success-l-factor))
690
- calc(var(--ty-success-chroma) * var(--ty-c-faint-mult))
691
- var(--ty-success-hue)
692
- );
693
- --ty-bg-success: oklch(
694
- calc(var(--ty-l-bg-base) * var(--ty-success-l-factor))
695
- calc(var(--ty-success-chroma) * var(--ty-c-bg-base-mult))
696
- var(--ty-success-hue)
697
- );
698
- --ty-bg-success-bold: oklch(
699
- calc(var(--ty-l-bg-bold) * var(--ty-success-l-factor))
700
- calc(var(--ty-success-chroma) * var(--ty-c-bg-bold-mult))
701
- var(--ty-success-hue)
702
- );
703
- --ty-bg-success-soft: oklch(
704
- calc(var(--ty-l-bg-soft) * var(--ty-success-l-factor))
705
- calc(var(--ty-success-chroma) * var(--ty-c-bg-soft-mult))
706
- var(--ty-success-hue)
707
- );
708
- --ty-border-success: var(--ty-color-success-soft);
709
-
710
- /* Danger */
711
- --ty-color-danger-strong: oklch(
712
- calc(var(--ty-l-strong) * var(--ty-danger-l-factor))
713
- calc(var(--ty-danger-chroma) * var(--ty-c-strong-mult))
714
- var(--ty-danger-hue)
715
- );
716
- --ty-color-danger-bold: oklch(
717
- calc(var(--ty-l-bold) * var(--ty-danger-l-factor))
718
- calc(var(--ty-danger-chroma) * var(--ty-c-bold-mult)) var(--ty-danger-hue)
719
- );
720
- --ty-color-danger: oklch(
721
- calc(var(--ty-l-base) * var(--ty-danger-l-factor))
722
- calc(var(--ty-danger-chroma) * var(--ty-c-base-mult)) var(--ty-danger-hue)
723
- );
724
- --ty-color-danger-soft: oklch(
725
- calc(var(--ty-l-soft) * var(--ty-danger-l-factor))
726
- calc(var(--ty-danger-chroma) * var(--ty-c-soft-mult)) var(--ty-danger-hue)
727
- );
728
- --ty-color-danger-faint: oklch(
729
- calc(var(--ty-l-faint) * var(--ty-danger-l-factor))
730
- calc(var(--ty-danger-chroma) * var(--ty-c-faint-mult))
731
- var(--ty-danger-hue)
732
- );
733
- --ty-bg-danger: oklch(
734
- calc(var(--ty-l-bg-base) * var(--ty-danger-l-factor))
735
- calc(var(--ty-danger-chroma) * var(--ty-c-bg-base-mult))
736
- var(--ty-danger-hue)
737
- );
738
- --ty-bg-danger-bold: oklch(
739
- calc(var(--ty-l-bg-bold) * var(--ty-danger-l-factor))
740
- calc(var(--ty-danger-chroma) * var(--ty-c-bg-bold-mult))
741
- var(--ty-danger-hue)
742
- );
743
- --ty-bg-danger-soft: oklch(
744
- calc(var(--ty-l-bg-soft) * var(--ty-danger-l-factor))
745
- calc(var(--ty-danger-chroma) * var(--ty-c-bg-soft-mult))
746
- var(--ty-danger-hue)
747
- );
748
- --ty-border-danger: var(--ty-color-danger-soft);
749
-
750
- /* Warning */
751
- --ty-color-warning-strong: oklch(
752
- calc(var(--ty-l-strong) * var(--ty-warning-l-factor))
753
- calc(var(--ty-warning-chroma) * var(--ty-c-strong-mult))
754
- var(--ty-warning-hue)
755
- );
756
- --ty-color-warning-bold: oklch(
757
- calc(var(--ty-l-bold) * var(--ty-warning-l-factor))
758
- calc(var(--ty-warning-chroma) * var(--ty-c-bold-mult))
759
- var(--ty-warning-hue)
760
- );
761
- --ty-color-warning: oklch(
762
- calc(var(--ty-l-base) * var(--ty-warning-l-factor))
763
- calc(var(--ty-warning-chroma) * var(--ty-c-base-mult))
764
- var(--ty-warning-hue)
765
- );
766
- --ty-color-warning-soft: oklch(
767
- calc(var(--ty-l-soft) * var(--ty-warning-l-factor))
768
- calc(var(--ty-warning-chroma) * var(--ty-c-soft-mult))
769
- var(--ty-warning-hue)
770
- );
771
- --ty-color-warning-faint: oklch(
772
- calc(var(--ty-l-faint) * var(--ty-warning-l-factor))
773
- calc(var(--ty-warning-chroma) * var(--ty-c-faint-mult))
774
- var(--ty-warning-hue)
775
- );
776
- --ty-bg-warning: oklch(
777
- calc(var(--ty-l-bg-base) * var(--ty-warning-l-factor))
778
- calc(var(--ty-warning-chroma) * var(--ty-c-bg-base-mult))
779
- var(--ty-warning-hue)
780
- );
781
- --ty-bg-warning-bold: oklch(
782
- calc(var(--ty-l-bg-bold) * var(--ty-warning-l-factor))
783
- calc(var(--ty-warning-chroma) * var(--ty-c-bg-bold-mult))
784
- var(--ty-warning-hue)
785
- );
786
- --ty-bg-warning-soft: oklch(
787
- calc(var(--ty-l-bg-soft) * var(--ty-warning-l-factor))
788
- calc(var(--ty-warning-chroma) * var(--ty-c-bg-soft-mult))
789
- var(--ty-warning-hue)
790
- );
791
- --ty-border-warning: var(--ty-color-warning-soft);
792
-
793
- /* Neutral */
794
- --ty-color-neutral-strong: oklch(
795
- calc(var(--ty-l-strong) * var(--ty-neutral-l-factor))
796
- calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
797
- var(--ty-neutral-hue)
798
- );
799
- --ty-color-neutral-bold: oklch(
800
- calc(var(--ty-l-bold) * var(--ty-neutral-l-factor))
801
- calc(var(--ty-neutral-chroma) * var(--ty-c-bold-mult))
802
- var(--ty-neutral-hue)
803
- );
804
- --ty-color-neutral: oklch(
805
- calc(var(--ty-l-base) * var(--ty-neutral-l-factor))
806
- calc(var(--ty-neutral-chroma) * var(--ty-c-base-mult))
807
- var(--ty-neutral-hue)
808
- );
809
- --ty-color-neutral-soft: oklch(
810
- calc(var(--ty-l-soft) * var(--ty-neutral-l-factor))
811
- calc(var(--ty-neutral-chroma) * var(--ty-c-soft-mult))
812
- var(--ty-neutral-hue)
813
- );
814
- --ty-color-neutral-faint: oklch(
815
- calc(var(--ty-l-faint) * var(--ty-neutral-l-factor))
816
- calc(var(--ty-neutral-chroma) * var(--ty-c-faint-mult))
817
- var(--ty-neutral-hue)
818
- );
819
- --ty-bg-neutral: oklch(
820
- calc(var(--ty-l-bg-base) * var(--ty-neutral-l-factor))
821
- calc(var(--ty-neutral-chroma) * var(--ty-c-bg-base-mult))
822
- var(--ty-neutral-hue)
823
- );
824
- --ty-bg-neutral-bold: oklch(
825
- calc(var(--ty-l-bg-bold) * var(--ty-neutral-l-factor))
826
- calc(var(--ty-neutral-chroma) * var(--ty-c-bg-bold-mult))
827
- var(--ty-neutral-hue)
828
- );
829
- --ty-bg-neutral-soft: oklch(
830
- calc(var(--ty-l-bg-soft) * var(--ty-neutral-l-factor))
831
- calc(var(--ty-neutral-chroma) * var(--ty-c-bg-soft-mult))
832
- var(--ty-neutral-hue)
833
- );
834
- --ty-bg-neutral-strong: oklch(
835
- 0.95 calc(var(--ty-neutral-chroma) * 2) var(--ty-neutral-hue)
836
- );
837
- --ty-bg-neutral-faint: oklch(
838
- 0.15 calc(var(--ty-neutral-chroma) * 2) var(--ty-neutral-hue)
839
- );
840
-
841
- /* Global neutral borders */
842
- --ty-border-strong: var(--ty-color-neutral-bold);
843
- --ty-border: var(--ty-color-neutral-soft);
844
- --ty-border-bold: var(--ty-color-neutral-soft);
845
- --ty-border-soft: var(--ty-color-neutral-faint);
846
- --ty-border-faint: var(--ty-color-neutral-faint);
847
-
848
- /* Surfaces — flip dark with a hint of brand chroma. */
849
- --ty-surface-canvas: oklch(0.12 0.012 var(--ty-brand-hue));
850
- --ty-surface-content: oklch(0.16 0.012 var(--ty-brand-hue));
851
- --ty-surface-elevated: oklch(0.19 0.013 var(--ty-brand-hue));
852
- --ty-surface-floating: oklch(0.22 0.015 var(--ty-brand-hue));
853
- --ty-surface-input: oklch(0.18 0.012 var(--ty-brand-hue));
854
-
855
- /* Inputs — re-declared at html.dark specificity. */
856
- --ty-input-bg: var(--ty-surface-input);
857
- --ty-input-color: var(--ty-color-neutral-strong);
858
- --ty-input-border: var(--ty-color-neutral-faint);
859
- --ty-input-border-hover: var(--ty-color-neutral-bold);
860
- --ty-input-border-focus: var(--ty-color-primary);
861
- --ty-input-placeholder: var(--ty-color-neutral-soft);
862
- --ty-input-disabled-bg: var(--ty-color-neutral-faint);
863
- --ty-input-disabled-border: var(--ty-color-neutral-faint);
864
- --ty-input-disabled-color: var(--ty-color-neutral-bold);
865
- --ty-input-shadow-focus: color-mix(
866
- in oklab,
867
- var(--ty-color-primary) 20%,
868
- transparent
869
- );
870
-
871
- /* Solid buttons */
872
- --ty-solid-primary: var(--ty-color-primary);
873
- --ty-solid-primary-strong: var(--ty-color-primary-bold);
874
- --ty-solid-primary-soft: var(--ty-color-primary-soft);
875
- --ty-solid-primary-fg: white;
876
-
877
- --ty-solid-secondary: var(--ty-color-secondary);
878
- --ty-solid-secondary-strong: var(--ty-color-secondary-bold);
879
- --ty-solid-secondary-soft: var(--ty-color-secondary-soft);
880
- --ty-solid-secondary-fg: white;
881
-
882
- --ty-solid-success: var(--ty-color-success);
883
- --ty-solid-success-strong: var(--ty-color-success-bold);
884
- --ty-solid-success-soft: var(--ty-color-success-soft);
885
- --ty-solid-success-fg: white;
886
-
887
- --ty-solid-danger: var(--ty-color-danger);
888
- --ty-solid-danger-strong: var(--ty-color-danger-bold);
889
- --ty-solid-danger-soft: var(--ty-color-danger-soft);
890
- --ty-solid-danger-fg: white;
891
-
892
- --ty-solid-warning: var(--ty-color-warning);
893
- --ty-solid-warning-strong: var(--ty-color-warning-bold);
894
- --ty-solid-warning-soft: var(--ty-color-warning-soft);
895
- --ty-solid-warning-fg: white;
896
-
897
- /* Solid neutral — in dark mode, "dark grey" lives at the other end
898
- * of the ramp. Both modes get a shade darker than the page surface
899
- * for a punchy default action. */
900
- --ty-solid-neutral-soft: oklch(
901
- 0.2 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
902
- var(--ty-neutral-hue)
903
- );
904
- --ty-solid-neutral: oklch(
905
- 0.3 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
906
- var(--ty-neutral-hue)
907
- );
908
- --ty-solid-neutral-strong: oklch(
909
- 0.4 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
910
- var(--ty-neutral-hue)
911
- );
912
- --ty-solid-neutral-fg: white;
913
- }