@sproutsocial/seeds-react-theme 4.3.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,8 +26,8 @@ yarn add @sproutsocial/seeds-react-theme
26
26
  ### React (styled-components)
27
27
 
28
28
  ```jsx
29
- import { ThemeProvider } from 'styled-components';
30
- import theme from '@sproutsocial/seeds-react-theme';
29
+ import { ThemeProvider } from "styled-components";
30
+ import theme from "@sproutsocial/seeds-react-theme";
31
31
 
32
32
  function App() {
33
33
  return (
@@ -47,11 +47,9 @@ See [MULTI_FRAMEWORK_GUIDE.md](./MULTI_FRAMEWORK_GUIDE.md) for complete document
47
47
  ```javascript
48
48
  // tailwind.config.js
49
49
  module.exports = {
50
- presets: [
51
- require('@sproutsocial/seeds-react-theme/dist/tailwind-preset'),
52
- ],
53
- content: ['./src/**/*.{js,jsx,ts,tsx}'],
54
- }
50
+ presets: [require("@sproutsocial/seeds-react-theme/dist/tailwind-preset")],
51
+ content: ["./src/**/*.{js,jsx,ts,tsx}"],
52
+ };
55
53
  ```
56
54
 
57
55
  ```jsx
@@ -63,14 +61,19 @@ module.exports = {
63
61
  ### CSS Custom Properties
64
62
 
65
63
  ```html
66
- <link rel="stylesheet" href="node_modules/@sproutsocial/seeds-react-theme/dist/theme.css">
64
+ <link
65
+ rel="stylesheet"
66
+ href="node_modules/@sproutsocial/seeds-react-theme/dist/theme.css"
67
+ />
67
68
 
68
- <button style="
69
+ <button
70
+ style="
69
71
  background: var(--color-button-primary-bg-base);
70
72
  color: var(--color-button-primary-text-base);
71
73
  padding: var(--space-400);
72
74
  border-radius: var(--radius-500);
73
- ">
75
+ "
76
+ >
74
77
  Primary Button
75
78
  </button>
76
79
  ```
@@ -109,9 +112,9 @@ Use the dark mode preset:
109
112
  ```javascript
110
113
  module.exports = {
111
114
  presets: [
112
- require('@sproutsocial/seeds-react-theme/dist/tailwind-preset-dark'),
115
+ require("@sproutsocial/seeds-react-theme/dist/tailwind-preset-dark"),
113
116
  ],
114
- }
117
+ };
115
118
  ```
116
119
 
117
120
  ### CSS Variables
@@ -128,15 +131,16 @@ Toggle with JavaScript:
128
131
 
129
132
  ```javascript
130
133
  // Enable dark mode
131
- document.documentElement.setAttribute('data-theme', 'dark');
134
+ document.documentElement.setAttribute("data-theme", "dark");
132
135
 
133
136
  // Disable dark mode
134
- document.documentElement.removeAttribute('data-theme');
137
+ document.documentElement.removeAttribute("data-theme");
135
138
  ```
136
139
 
137
140
  ## Available Tokens
138
141
 
139
142
  ### Colors
143
+
140
144
  - Button colors (primary, secondary, destructive, etc.)
141
145
  - Text colors (headline, body, subtext, inverse)
142
146
  - Link colors
@@ -145,14 +149,17 @@ document.documentElement.removeAttribute('data-theme');
145
149
  - Icon colors
146
150
 
147
151
  ### Spacing
152
+
148
153
  - `0`, `100`, `200`, `300`, `350`, `400`, `450`, `500`, `600`
149
154
 
150
155
  ### Typography
156
+
151
157
  - Font sizes and line heights (`100` - `1200`)
152
158
  - Font families
153
159
  - Font weights (normal, semibold, bold, extrabold)
154
160
 
155
161
  ### Other
162
+
156
163
  - Border radius values
157
164
  - Box shadows
158
165
  - Motion (easing, duration)
@@ -123,6 +123,11 @@ function generateCSSVariables(themeObj, mode) {
123
123
  variables.push.apply(variables, _toConsumableArray(objectToCSSVariables(radii, "radius")));
124
124
  console.log(" - Mapped ".concat(Object.keys(radii).length, " border radius values"));
125
125
 
126
+ // Border width
127
+ var borderWidths = (0, _utils.flattenBorderWidths)(themeObj.borderWidths);
128
+ variables.push.apply(variables, _toConsumableArray(objectToCSSVariables(borderWidths, "border-width")));
129
+ console.log(" - Mapped ".concat(Object.keys(borderWidths).length, " border width values"));
130
+
126
131
  // Shadows
127
132
  var shadows = (0, _utils.flattenShadows)(themeObj.shadows);
128
133
  variables.push.apply(variables, _toConsumableArray(objectToCSSVariables(shadows, "shadow")));
@@ -42,7 +42,7 @@ function buildTailwindV4Preset() {
42
42
  }
43
43
  function _buildTailwindV4Preset() {
44
44
  _buildTailwindV4Preset = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
45
- var distDir, lines, spacingMap, _i, _Object$entries, _Object$entries$_i, key, value, radiusMap, _i2, _Object$entries2, _Object$entries2$_i, _key, _value, typographyScales, _i3, _typographyScales, scale, _key2, val, buttonColors, _i4, _Object$entries3, _Object$entries3$_i, _key3, _value2, semanticColors, _i5, _Object$entries4, _Object$entries4$_i, _key4, _value3, darkButtonColors, _i6, _Object$entries5, _Object$entries5$_i, _key5, _value4, css, outPath;
45
+ var distDir, lines, spacingMap, _i, _Object$entries, _Object$entries$_i, key, value, radiusMap, _i2, _Object$entries2, _Object$entries2$_i, _key, _value, borderWidthMap, _i3, _Object$entries3, _Object$entries3$_i, _key2, _value2, typographyScales, _i4, _typographyScales, scale, _key3, val, buttonColors, _i5, _Object$entries4, _Object$entries4$_i, _key4, _value3, semanticColors, _i6, _Object$entries5, _Object$entries5$_i, _key5, _value4, darkButtonColors, _i7, _Object$entries6, _Object$entries6$_i, _key6, _value5, css, outPath;
46
46
  return _regenerator().w(function (_context) {
47
47
  while (1) switch (_context.n) {
48
48
  case 0:
@@ -99,16 +99,34 @@ function _buildTailwindV4Preset() {
99
99
  console.log(" - Mapped ".concat(Object.keys(radiusMap).length, " border radius tokens"));
100
100
  lines.push("");
101
101
 
102
+ // -------------------------------------------------------------------------
103
+ // Border width — from @sproutsocial/seeds-border
104
+ // Seeds' own `border-w-{key}` utility (not Tailwind's numeric border-<n>
105
+ // scale) — see seeds-react-system-props/src/scales.ts SCALE_PROPS.borderWidth
106
+ // -------------------------------------------------------------------------
107
+ lines.push(" /* Border width — from @sproutsocial/seeds-border */");
108
+ borderWidthMap = {
109
+ 500: BORDER.BORDER_WIDTH_500,
110
+ 600: BORDER.BORDER_WIDTH_600,
111
+ 700: BORDER.BORDER_WIDTH_700
112
+ };
113
+ for (_i3 = 0, _Object$entries3 = Object.entries(borderWidthMap); _i3 < _Object$entries3.length; _i3++) {
114
+ _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2), _key2 = _Object$entries3$_i[0], _value2 = _Object$entries3$_i[1];
115
+ lines.push(" --border-width-".concat(_key2, ": ").concat(_value2, ";"));
116
+ }
117
+ console.log(" - Mapped ".concat(Object.keys(borderWidthMap).length, " border width tokens"));
118
+ lines.push("");
119
+
102
120
  // -------------------------------------------------------------------------
103
121
  // Font size — from @sproutsocial/seeds-typography
104
122
  // Tailwind v4: --text-{key}--font-size + --text-{key}--line-height → text-{key}
105
123
  // -------------------------------------------------------------------------
106
124
  lines.push(" /* Font size — from @sproutsocial/seeds-typography */");
107
125
  typographyScales = [100, 200, 300, 400, 500, 600, 700];
108
- for (_i3 = 0, _typographyScales = typographyScales; _i3 < _typographyScales.length; _i3++) {
109
- scale = _typographyScales[_i3];
110
- _key2 = "TYPOGRAPHY_SIZE_".concat(scale);
111
- val = TYPOGRAPHY[_key2];
126
+ for (_i4 = 0, _typographyScales = typographyScales; _i4 < _typographyScales.length; _i4++) {
127
+ scale = _typographyScales[_i4];
128
+ _key3 = "TYPOGRAPHY_SIZE_".concat(scale);
129
+ val = TYPOGRAPHY[_key3];
112
130
  if (val && val.fontSize && val.lineHeight) {
113
131
  // Tailwind v4 uses --text-*--font-size and --text-*--line-height for
114
132
  // the two-value tuple equivalent
@@ -154,9 +172,9 @@ function _buildTailwindV4Preset() {
154
172
  "color-button-placeholder-text-hover": COLORS.COLOR_BLUE_800,
155
173
  "color-button-placeholder-border-base": COLORS.COLOR_NEUTRAL_500
156
174
  };
157
- for (_i4 = 0, _Object$entries3 = Object.entries(buttonColors); _i4 < _Object$entries3.length; _i4++) {
158
- _Object$entries3$_i = _slicedToArray(_Object$entries3[_i4], 2), _key3 = _Object$entries3$_i[0], _value2 = _Object$entries3$_i[1];
159
- lines.push(" --".concat(_key3, ": ").concat(_value2, ";"));
175
+ for (_i5 = 0, _Object$entries4 = Object.entries(buttonColors); _i5 < _Object$entries4.length; _i5++) {
176
+ _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2), _key4 = _Object$entries4$_i[0], _value3 = _Object$entries4$_i[1];
177
+ lines.push(" --".concat(_key4, ": ").concat(_value3, ";"));
160
178
  }
161
179
  console.log(" - Mapped ".concat(Object.keys(buttonColors).length, " button color tokens"));
162
180
  lines.push("");
@@ -186,9 +204,9 @@ function _buildTailwindV4Preset() {
186
204
  "color-form-border-selected": "var(--color-form-border-selected)",
187
205
  "color-form-placeholder-base": "var(--color-form-placeholder-base)"
188
206
  };
189
- for (_i5 = 0, _Object$entries4 = Object.entries(semanticColors); _i5 < _Object$entries4.length; _i5++) {
190
- _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2), _key4 = _Object$entries4$_i[0], _value3 = _Object$entries4$_i[1];
191
- lines.push(" --".concat(_key4, ": ").concat(_value3, ";"));
207
+ for (_i6 = 0, _Object$entries5 = Object.entries(semanticColors); _i6 < _Object$entries5.length; _i6++) {
208
+ _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2), _key5 = _Object$entries5$_i[0], _value4 = _Object$entries5$_i[1];
209
+ lines.push(" --".concat(_key5, ": ").concat(_value4, ";"));
192
210
  }
193
211
  console.log(" - Mapped ".concat(Object.keys(semanticColors).length, " semantic color tokens"));
194
212
 
@@ -217,9 +235,9 @@ function _buildTailwindV4Preset() {
217
235
  "color-button-placeholder-text-base-dark": COLORS.COLOR_BLUE_400,
218
236
  "color-button-placeholder-text-hover-dark": COLORS.COLOR_BLUE_300
219
237
  };
220
- for (_i6 = 0, _Object$entries5 = Object.entries(darkButtonColors); _i6 < _Object$entries5.length; _i6++) {
221
- _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2), _key5 = _Object$entries5$_i[0], _value4 = _Object$entries5$_i[1];
222
- lines.push(" --".concat(_key5, ": ").concat(_value4, ";"));
238
+ for (_i7 = 0, _Object$entries6 = Object.entries(darkButtonColors); _i7 < _Object$entries6.length; _i7++) {
239
+ _Object$entries6$_i = _slicedToArray(_Object$entries6[_i7], 2), _key6 = _Object$entries6$_i[0], _value5 = _Object$entries6$_i[1];
240
+ lines.push(" --".concat(_key6, ": ").concat(_value5, ";"));
223
241
  }
224
242
  console.log(" - Mapped ".concat(Object.keys(darkButtonColors).length, " dark mode button color tokens"));
225
243
  lines.push("}");
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.filterComplexColors = filterComplexColors;
7
+ exports.flattenBorderWidths = flattenBorderWidths;
7
8
  exports.flattenColors = flattenColors;
8
9
  exports.flattenDuration = flattenDuration;
9
10
  exports.flattenEasing = flattenEasing;
@@ -134,11 +135,11 @@ function flattenRadii(radii) {
134
135
  }
135
136
 
136
137
  /**
137
- * Flatten shadows
138
+ * Flatten border widths
138
139
  */
139
- function flattenShadows(shadows) {
140
+ function flattenBorderWidths(borderWidths) {
140
141
  var flattened = {};
141
- for (var _i5 = 0, _Object$entries5 = Object.entries(shadows); _i5 < _Object$entries5.length; _i5++) {
142
+ for (var _i5 = 0, _Object$entries5 = Object.entries(borderWidths); _i5 < _Object$entries5.length; _i5++) {
142
143
  var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i5], 2),
143
144
  key = _Object$entries5$_i[0],
144
145
  value = _Object$entries5$_i[1];
@@ -150,15 +151,15 @@ function flattenShadows(shadows) {
150
151
  }
151
152
 
152
153
  /**
153
- * Flatten font weights
154
+ * Flatten shadows
154
155
  */
155
- function flattenFontWeights(fontWeights) {
156
+ function flattenShadows(shadows) {
156
157
  var flattened = {};
157
- for (var _i6 = 0, _Object$entries6 = Object.entries(fontWeights); _i6 < _Object$entries6.length; _i6++) {
158
+ for (var _i6 = 0, _Object$entries6 = Object.entries(shadows); _i6 < _Object$entries6.length; _i6++) {
158
159
  var _Object$entries6$_i = _slicedToArray(_Object$entries6[_i6], 2),
159
160
  key = _Object$entries6$_i[0],
160
161
  value = _Object$entries6$_i[1];
161
- if (typeof value === "string" || typeof value === "number") {
162
+ if (typeof value === "string") {
162
163
  flattened[key] = value;
163
164
  }
164
165
  }
@@ -166,15 +167,15 @@ function flattenFontWeights(fontWeights) {
166
167
  }
167
168
 
168
169
  /**
169
- * Flatten easing (transition timing functions)
170
+ * Flatten font weights
170
171
  */
171
- function flattenEasing(easing) {
172
+ function flattenFontWeights(fontWeights) {
172
173
  var flattened = {};
173
- for (var _i7 = 0, _Object$entries7 = Object.entries(easing); _i7 < _Object$entries7.length; _i7++) {
174
+ for (var _i7 = 0, _Object$entries7 = Object.entries(fontWeights); _i7 < _Object$entries7.length; _i7++) {
174
175
  var _Object$entries7$_i = _slicedToArray(_Object$entries7[_i7], 2),
175
176
  key = _Object$entries7$_i[0],
176
177
  value = _Object$entries7$_i[1];
177
- if (typeof value === "string") {
178
+ if (typeof value === "string" || typeof value === "number") {
178
179
  flattened[key] = value;
179
180
  }
180
181
  }
@@ -182,11 +183,11 @@ function flattenEasing(easing) {
182
183
  }
183
184
 
184
185
  /**
185
- * Flatten duration (transition durations)
186
+ * Flatten easing (transition timing functions)
186
187
  */
187
- function flattenDuration(duration) {
188
+ function flattenEasing(easing) {
188
189
  var flattened = {};
189
- for (var _i8 = 0, _Object$entries8 = Object.entries(duration); _i8 < _Object$entries8.length; _i8++) {
190
+ for (var _i8 = 0, _Object$entries8 = Object.entries(easing); _i8 < _Object$entries8.length; _i8++) {
190
191
  var _Object$entries8$_i = _slicedToArray(_Object$entries8[_i8], 2),
191
192
  key = _Object$entries8$_i[0],
192
193
  value = _Object$entries8$_i[1];
@@ -197,6 +198,22 @@ function flattenDuration(duration) {
197
198
  return flattened;
198
199
  }
199
200
 
201
+ /**
202
+ * Flatten duration (transition durations)
203
+ */
204
+ function flattenDuration(duration) {
205
+ var flattened = {};
206
+ for (var _i9 = 0, _Object$entries9 = Object.entries(duration); _i9 < _Object$entries9.length; _i9++) {
207
+ var _Object$entries9$_i = _slicedToArray(_Object$entries9[_i9], 2),
208
+ key = _Object$entries9$_i[0],
209
+ value = _Object$entries9$_i[1];
210
+ if (typeof value === "string") {
211
+ flattened[key] = value;
212
+ }
213
+ }
214
+ return flattened;
215
+ }
216
+
200
217
  /**
201
218
  * Check if a value is a valid CSS color
202
219
  * Filters out complex values like color-mix() which may not work everywhere
@@ -210,10 +227,10 @@ function isSimpleColor(value) {
210
227
  */
211
228
  function filterComplexColors(colors) {
212
229
  var filtered = {};
213
- for (var _i9 = 0, _Object$entries9 = Object.entries(colors); _i9 < _Object$entries9.length; _i9++) {
214
- var _Object$entries9$_i = _slicedToArray(_Object$entries9[_i9], 2),
215
- key = _Object$entries9$_i[0],
216
- value = _Object$entries9$_i[1];
230
+ for (var _i0 = 0, _Object$entries0 = Object.entries(colors); _i0 < _Object$entries0.length; _i0++) {
231
+ var _Object$entries0$_i = _slicedToArray(_Object$entries0[_i0], 2),
232
+ key = _Object$entries0$_i[0],
233
+ value = _Object$entries0$_i[1];
217
234
  if (isSimpleColor(value)) {
218
235
  filtered[key] = value;
219
236
  } else {
@@ -96,7 +96,12 @@ var colors = exports.colors = _objectSpread(_objectSpread({}, _theme.default.col
96
96
  // contrast against the dark surface (Figma Sprout Variables, "Trellis" dark).
97
97
  gradient: {
98
98
  ai: "radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%)",
99
- "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)"
99
+ "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)",
100
+ // Discrete stops for SVG paint servers — see the light theme for why these
101
+ // exist alongside the composed gradient strings.
102
+ "ai-stop-1": "#679eff",
103
+ "ai-stop-2": "#b984ff",
104
+ "ai-stop-3": "#f282f5"
100
105
  },
101
106
  button: {
102
107
  primary: {
@@ -105,7 +105,16 @@ var colors = exports.colors = _objectSpread(_objectSpread({
105
105
  ai: "radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%)",
106
106
  // 20% tint — AI secondary (composited over a white base in CSS).
107
107
  // Kebab key so it flattens to --color-gradient-ai-subtle.
108
- "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)"
108
+ "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)",
109
+ // The same three stops as discrete colors, flattening to
110
+ // --color-gradient-ai-stop-{1,2,3}. SVG needs a real <radialGradient> with
111
+ // separate <stop> elements to use as a paint server, and a CSS
112
+ // radial-gradient() string can't be decomposed back into stops. Consumed by
113
+ // seeds-react-icon's gradient defs (see icon.css) so gradient-filled icons
114
+ // pick up dark mode through the usual .dark variable swap.
115
+ "ai-stop-1": "#205bc3",
116
+ "ai-stop-2": "#9747ff",
117
+ "ai-stop-3": "#f282f5"
109
118
  },
110
119
  button: {
111
120
  primary: {
@@ -32,6 +32,11 @@
32
32
  --radius-inner: 4px;
33
33
  --radius-outer: 8px;
34
34
 
35
+ /* Border width — from @sproutsocial/seeds-border */
36
+ --border-width-500: 1px;
37
+ --border-width-600: 2px;
38
+ --border-width-700: 3px;
39
+
35
40
  /* Font size — from @sproutsocial/seeds-typography */
36
41
  --text-100--font-size: 11px;
37
42
  --text-100--line-height: 18.666666666666668px;
@@ -50,6 +50,9 @@
50
50
  --color-container-border-ai_generated: #6f5ed3;
51
51
  --color-gradient-ai: radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%);
52
52
  --color-gradient-ai-subtle: radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%);
53
+ --color-gradient-ai-stop-1: #205bc3;
54
+ --color-gradient-ai-stop-2: #9747ff;
55
+ --color-gradient-ai-stop-3: #f282f5;
53
56
  --color-button-primary-bg-base: #205bc3;
54
57
  --color-button-primary-bg-hover: #1150aa;
55
58
  --color-button-primary-bg-active: #0c3f89;
@@ -468,6 +471,9 @@
468
471
  --radius-inner: 6px;
469
472
  --radius-outer: 8px;
470
473
  --radius-pill: 999999px;
474
+ --border-width-500: 1px;
475
+ --border-width-600: 2px;
476
+ --border-width-700: 3px;
471
477
  --shadow-low: 0px 2px 4px #2733333D;
472
478
  --shadow-medium: 0px 8px 16px #2733333D;
473
479
  --shadow-high: 0px 16px 32px #2733333D;
@@ -531,6 +537,9 @@
531
537
  --color-container-border-ai_generated: #6f5ed3;
532
538
  --color-gradient-ai: radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%);
533
539
  --color-gradient-ai-subtle: radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%);
540
+ --color-gradient-ai-stop-1: #679eff;
541
+ --color-gradient-ai-stop-2: #b984ff;
542
+ --color-gradient-ai-stop-3: #f282f5;
534
543
  --color-button-primary-bg-base: #679eff;
535
544
  --color-button-primary-bg-hover: #a1c2f8;
536
545
  --color-button-primary-bg-active: #c7dbf9;
@@ -949,6 +958,9 @@
949
958
  --radius-inner: 6px;
950
959
  --radius-outer: 8px;
951
960
  --radius-pill: 999999px;
961
+ --border-width-500: 1px;
962
+ --border-width-600: 2px;
963
+ --border-width-700: 3px;
952
964
  --shadow-low: 0px 2px 4px #040404FF;
953
965
  --shadow-medium: 0px 8px 16px #040404FF;
954
966
  --shadow-high: 0px 16px 32px #040404FF;
@@ -50,6 +50,9 @@
50
50
  --color-container-border-ai_generated: #6f5ed3;
51
51
  --color-gradient-ai: radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%);
52
52
  --color-gradient-ai-subtle: radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%);
53
+ --color-gradient-ai-stop-1: #679eff;
54
+ --color-gradient-ai-stop-2: #b984ff;
55
+ --color-gradient-ai-stop-3: #f282f5;
53
56
  --color-button-primary-bg-base: #679eff;
54
57
  --color-button-primary-bg-hover: #a1c2f8;
55
58
  --color-button-primary-bg-active: #c7dbf9;
@@ -468,6 +471,9 @@
468
471
  --radius-inner: 6px;
469
472
  --radius-outer: 8px;
470
473
  --radius-pill: 999999px;
474
+ --border-width-500: 1px;
475
+ --border-width-600: 2px;
476
+ --border-width-700: 3px;
471
477
  --shadow-low: 0px 2px 4px #040404FF;
472
478
  --shadow-medium: 0px 8px 16px #040404FF;
473
479
  --shadow-high: 0px 16px 32px #040404FF;
package/dist/theme.css CHANGED
@@ -50,6 +50,9 @@
50
50
  --color-container-border-ai_generated: #6f5ed3;
51
51
  --color-gradient-ai: radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%);
52
52
  --color-gradient-ai-subtle: radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%);
53
+ --color-gradient-ai-stop-1: #205bc3;
54
+ --color-gradient-ai-stop-2: #9747ff;
55
+ --color-gradient-ai-stop-3: #f282f5;
53
56
  --color-button-primary-bg-base: #205bc3;
54
57
  --color-button-primary-bg-hover: #1150aa;
55
58
  --color-button-primary-bg-active: #0c3f89;
@@ -468,6 +471,9 @@
468
471
  --radius-inner: 6px;
469
472
  --radius-outer: 8px;
470
473
  --radius-pill: 999999px;
474
+ --border-width-500: 1px;
475
+ --border-width-600: 2px;
476
+ --border-width-700: 3px;
471
477
  --shadow-low: 0px 2px 4px #2733333D;
472
478
  --shadow-medium: 0px 8px 16px #2733333D;
473
479
  --shadow-high: 0px 16px 32px #2733333D;
@@ -60,7 +60,10 @@ $theme: (
60
60
  ),
61
61
  "gradient": (
62
62
  "ai": radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%),
63
- "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)
63
+ "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%),
64
+ "ai-stop-1": #679eff,
65
+ "ai-stop-2": #b984ff,
66
+ "ai-stop-3": #f282f5
64
67
  ),
65
68
  "button": (
66
69
  "primary": (
@@ -629,7 +632,10 @@ $theme: (
629
632
  ),
630
633
  "gradient": (
631
634
  "ai": radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%),
632
- "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)
635
+ "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%),
636
+ "ai-stop-1": #679eff,
637
+ "ai-stop-2": #b984ff,
638
+ "ai-stop-3": #f282f5
633
639
  ),
634
640
  "button": (
635
641
  "primary": (
@@ -114,7 +114,10 @@ $theme: (
114
114
  ),
115
115
  "gradient": (
116
116
  "ai": radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%),
117
- "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)
117
+ "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%),
118
+ "ai-stop-1": #679eff,
119
+ "ai-stop-2": #b984ff,
120
+ "ai-stop-3": #f282f5
118
121
  ),
119
122
  "button": (
120
123
  "primary": (
@@ -114,7 +114,10 @@ $theme: (
114
114
  ),
115
115
  "gradient": (
116
116
  "ai": radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%),
117
- "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)
117
+ "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%),
118
+ "ai-stop-1": #205bc3,
119
+ "ai-stop-2": #9747ff,
120
+ "ai-stop-3": #f282f5
118
121
  ),
119
122
  "button": (
120
123
  "primary": (
@@ -71,7 +71,10 @@ $theme: (
71
71
  ),
72
72
  "gradient": (
73
73
  "ai": radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%),
74
- "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)
74
+ "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%),
75
+ "ai-stop-1": #205bc3,
76
+ "ai-stop-2": #9747ff,
77
+ "ai-stop-3": #f282f5
75
78
  ),
76
79
  "button": (
77
80
  "primary": (
@@ -640,7 +643,10 @@ $theme: (
640
643
  ),
641
644
  "gradient": (
642
645
  "ai": radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%),
643
- "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)
646
+ "ai-subtle": radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%),
647
+ "ai-stop-1": #205bc3,
648
+ "ai-stop-2": #9747ff,
649
+ "ai-stop-3": #f282f5
644
650
  ),
645
651
  "button": (
646
652
  "primary": (
@@ -1 +1 @@
1
- {"version":3,"file":"buildCSS.d.ts","sourceRoot":"","sources":["../../../src/builders/buildCSS.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4JH;;GAEG;AACH,wBAAsB,iBAAiB,kBAkCtC"}
1
+ {"version":3,"file":"buildCSS.d.ts","sourceRoot":"","sources":["../../../src/builders/buildCSS.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoKH;;GAEG;AACH,wBAAsB,iBAAiB,kBAkCtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildTailwindV4.d.ts","sourceRoot":"","sources":["../../../src/builders/buildTailwindV4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;GAEG;AACH,wBAAsB,qBAAqB,kBA4N1C"}
1
+ {"version":3,"file":"buildTailwindV4.d.ts","sourceRoot":"","sources":["../../../src/builders/buildTailwindV4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;GAEG;AACH,wBAAsB,qBAAqB,kBAgP1C"}
@@ -25,6 +25,10 @@ export declare function flattenTypography(typography: any): Record<string, [stri
25
25
  * Flatten radii (border radius)
26
26
  */
27
27
  export declare function flattenRadii(radii: any): Record<string, string>;
28
+ /**
29
+ * Flatten border widths
30
+ */
31
+ export declare function flattenBorderWidths(borderWidths: any): Record<string, string>;
28
32
  /**
29
33
  * Flatten shadows
30
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/builders/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,MAAW,EACnB,SAAS,GAAE,MAAY,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,GAAG,GACd,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkBlD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,GAAG,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAUjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/builders/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,MAAW,EACnB,SAAS,GAAE,MAAY,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,GAAG,GACd,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkBlD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,GAAG,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAUjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB"}
@@ -91,6 +91,9 @@ export declare const colors: {
91
91
  gradient: {
92
92
  ai: string;
93
93
  "ai-subtle": string;
94
+ "ai-stop-1": string;
95
+ "ai-stop-2": string;
96
+ "ai-stop-3": string;
94
97
  };
95
98
  button: {
96
99
  primary: {
@@ -662,6 +665,9 @@ declare const darkTheme: {
662
665
  gradient: {
663
666
  ai: string;
664
667
  "ai-subtle": string;
668
+ "ai-stop-1": string;
669
+ "ai-stop-2": string;
670
+ "ai-stop-3": string;
665
671
  };
666
672
  button: {
667
673
  primary: {
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/dark/theme.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAIF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAeb,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;YA8BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsMrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGtD,CAAC;AAEF,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA5UT,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsMrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6GtD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/dark/theme.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAIF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAeb,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;YA8BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2MrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGtD,CAAC;AAEF,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAjVT,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2MrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6GtD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -249,6 +249,9 @@ export declare const colors: {
249
249
  gradient: {
250
250
  ai: string;
251
251
  "ai-subtle": string;
252
+ "ai-stop-1": string;
253
+ "ai-stop-2": string;
254
+ "ai-stop-3": string;
252
255
  };
253
256
  button: {
254
257
  primary: {
@@ -923,6 +926,9 @@ declare const theme: {
923
926
  gradient: {
924
927
  ai: string;
925
928
  "ai-subtle": string;
929
+ "ai-stop-1": string;
930
+ "ai-stop-2": string;
931
+ "ai-stop-3": string;
926
932
  };
927
933
  button: {
928
934
  primary: {
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/light/theme.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,WAAW;;;;;CAGvB,CAAC;AAMF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAcb,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;YA6BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyMrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ItD,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAatB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAarB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE1C,eAAO,MAAM,UAAU,QAA+B,CAAC;AAEvD,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;CAIlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC;AAEF,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBApeL,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;gBA6BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAyMrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6RtD,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/light/theme.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,WAAW;;;;;CAGvB,CAAC;AAMF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAcb,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;YA6BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkNrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ItD,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAatB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAarB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE1C,eAAO,MAAM,UAAU,QAA+B,CAAC;AAEvD,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;CAIlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC;AAEF,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA7eL,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;gBA6BnD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkNrD,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6RtD,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -21,7 +21,7 @@ import fs from "fs";
21
21
  import path from "path";
22
22
  import lightTheme from "../light/theme";
23
23
  import darkTheme from "../dark/theme";
24
- import { flattenColors, flattenSpacing, flattenRadii, flattenShadows, flattenFontWeights, flattenEasing, flattenDuration } from "./utils";
24
+ import { flattenColors, flattenSpacing, flattenRadii, flattenBorderWidths, flattenShadows, flattenFontWeights, flattenEasing, flattenDuration } from "./utils";
25
25
 
26
26
  /**
27
27
  * Convert a flat object into CSS custom properties
@@ -119,6 +119,11 @@ function generateCSSVariables(themeObj, mode) {
119
119
  variables.push.apply(variables, _toConsumableArray(objectToCSSVariables(radii, "radius")));
120
120
  console.log(" - Mapped ".concat(Object.keys(radii).length, " border radius values"));
121
121
 
122
+ // Border width
123
+ var borderWidths = flattenBorderWidths(themeObj.borderWidths);
124
+ variables.push.apply(variables, _toConsumableArray(objectToCSSVariables(borderWidths, "border-width")));
125
+ console.log(" - Mapped ".concat(Object.keys(borderWidths).length, " border width values"));
126
+
122
127
  // Shadows
123
128
  var shadows = flattenShadows(themeObj.shadows);
124
129
  variables.push.apply(variables, _toConsumableArray(objectToCSSVariables(shadows, "shadow")));
@@ -37,7 +37,7 @@ export function buildTailwindV4Preset() {
37
37
  }
38
38
  function _buildTailwindV4Preset() {
39
39
  _buildTailwindV4Preset = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
40
- var distDir, lines, spacingMap, _i, _Object$entries, _Object$entries$_i, key, value, radiusMap, _i2, _Object$entries2, _Object$entries2$_i, _key, _value, typographyScales, _i3, _typographyScales, scale, _key2, val, buttonColors, _i4, _Object$entries3, _Object$entries3$_i, _key3, _value2, semanticColors, _i5, _Object$entries4, _Object$entries4$_i, _key4, _value3, darkButtonColors, _i6, _Object$entries5, _Object$entries5$_i, _key5, _value4, css, outPath;
40
+ var distDir, lines, spacingMap, _i, _Object$entries, _Object$entries$_i, key, value, radiusMap, _i2, _Object$entries2, _Object$entries2$_i, _key, _value, borderWidthMap, _i3, _Object$entries3, _Object$entries3$_i, _key2, _value2, typographyScales, _i4, _typographyScales, scale, _key3, val, buttonColors, _i5, _Object$entries4, _Object$entries4$_i, _key4, _value3, semanticColors, _i6, _Object$entries5, _Object$entries5$_i, _key5, _value4, darkButtonColors, _i7, _Object$entries6, _Object$entries6$_i, _key6, _value5, css, outPath;
41
41
  return _regenerator().w(function (_context) {
42
42
  while (1) switch (_context.n) {
43
43
  case 0:
@@ -94,16 +94,34 @@ function _buildTailwindV4Preset() {
94
94
  console.log(" - Mapped ".concat(Object.keys(radiusMap).length, " border radius tokens"));
95
95
  lines.push("");
96
96
 
97
+ // -------------------------------------------------------------------------
98
+ // Border width — from @sproutsocial/seeds-border
99
+ // Seeds' own `border-w-{key}` utility (not Tailwind's numeric border-<n>
100
+ // scale) — see seeds-react-system-props/src/scales.ts SCALE_PROPS.borderWidth
101
+ // -------------------------------------------------------------------------
102
+ lines.push(" /* Border width — from @sproutsocial/seeds-border */");
103
+ borderWidthMap = {
104
+ 500: BORDER.BORDER_WIDTH_500,
105
+ 600: BORDER.BORDER_WIDTH_600,
106
+ 700: BORDER.BORDER_WIDTH_700
107
+ };
108
+ for (_i3 = 0, _Object$entries3 = Object.entries(borderWidthMap); _i3 < _Object$entries3.length; _i3++) {
109
+ _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2), _key2 = _Object$entries3$_i[0], _value2 = _Object$entries3$_i[1];
110
+ lines.push(" --border-width-".concat(_key2, ": ").concat(_value2, ";"));
111
+ }
112
+ console.log(" - Mapped ".concat(Object.keys(borderWidthMap).length, " border width tokens"));
113
+ lines.push("");
114
+
97
115
  // -------------------------------------------------------------------------
98
116
  // Font size — from @sproutsocial/seeds-typography
99
117
  // Tailwind v4: --text-{key}--font-size + --text-{key}--line-height → text-{key}
100
118
  // -------------------------------------------------------------------------
101
119
  lines.push(" /* Font size — from @sproutsocial/seeds-typography */");
102
120
  typographyScales = [100, 200, 300, 400, 500, 600, 700];
103
- for (_i3 = 0, _typographyScales = typographyScales; _i3 < _typographyScales.length; _i3++) {
104
- scale = _typographyScales[_i3];
105
- _key2 = "TYPOGRAPHY_SIZE_".concat(scale);
106
- val = TYPOGRAPHY[_key2];
121
+ for (_i4 = 0, _typographyScales = typographyScales; _i4 < _typographyScales.length; _i4++) {
122
+ scale = _typographyScales[_i4];
123
+ _key3 = "TYPOGRAPHY_SIZE_".concat(scale);
124
+ val = TYPOGRAPHY[_key3];
107
125
  if (val && val.fontSize && val.lineHeight) {
108
126
  // Tailwind v4 uses --text-*--font-size and --text-*--line-height for
109
127
  // the two-value tuple equivalent
@@ -149,9 +167,9 @@ function _buildTailwindV4Preset() {
149
167
  "color-button-placeholder-text-hover": COLORS.COLOR_BLUE_800,
150
168
  "color-button-placeholder-border-base": COLORS.COLOR_NEUTRAL_500
151
169
  };
152
- for (_i4 = 0, _Object$entries3 = Object.entries(buttonColors); _i4 < _Object$entries3.length; _i4++) {
153
- _Object$entries3$_i = _slicedToArray(_Object$entries3[_i4], 2), _key3 = _Object$entries3$_i[0], _value2 = _Object$entries3$_i[1];
154
- lines.push(" --".concat(_key3, ": ").concat(_value2, ";"));
170
+ for (_i5 = 0, _Object$entries4 = Object.entries(buttonColors); _i5 < _Object$entries4.length; _i5++) {
171
+ _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2), _key4 = _Object$entries4$_i[0], _value3 = _Object$entries4$_i[1];
172
+ lines.push(" --".concat(_key4, ": ").concat(_value3, ";"));
155
173
  }
156
174
  console.log(" - Mapped ".concat(Object.keys(buttonColors).length, " button color tokens"));
157
175
  lines.push("");
@@ -181,9 +199,9 @@ function _buildTailwindV4Preset() {
181
199
  "color-form-border-selected": "var(--color-form-border-selected)",
182
200
  "color-form-placeholder-base": "var(--color-form-placeholder-base)"
183
201
  };
184
- for (_i5 = 0, _Object$entries4 = Object.entries(semanticColors); _i5 < _Object$entries4.length; _i5++) {
185
- _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2), _key4 = _Object$entries4$_i[0], _value3 = _Object$entries4$_i[1];
186
- lines.push(" --".concat(_key4, ": ").concat(_value3, ";"));
202
+ for (_i6 = 0, _Object$entries5 = Object.entries(semanticColors); _i6 < _Object$entries5.length; _i6++) {
203
+ _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2), _key5 = _Object$entries5$_i[0], _value4 = _Object$entries5$_i[1];
204
+ lines.push(" --".concat(_key5, ": ").concat(_value4, ";"));
187
205
  }
188
206
  console.log(" - Mapped ".concat(Object.keys(semanticColors).length, " semantic color tokens"));
189
207
 
@@ -212,9 +230,9 @@ function _buildTailwindV4Preset() {
212
230
  "color-button-placeholder-text-base-dark": COLORS.COLOR_BLUE_400,
213
231
  "color-button-placeholder-text-hover-dark": COLORS.COLOR_BLUE_300
214
232
  };
215
- for (_i6 = 0, _Object$entries5 = Object.entries(darkButtonColors); _i6 < _Object$entries5.length; _i6++) {
216
- _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2), _key5 = _Object$entries5$_i[0], _value4 = _Object$entries5$_i[1];
217
- lines.push(" --".concat(_key5, ": ").concat(_value4, ";"));
233
+ for (_i7 = 0, _Object$entries6 = Object.entries(darkButtonColors); _i7 < _Object$entries6.length; _i7++) {
234
+ _Object$entries6$_i = _slicedToArray(_Object$entries6[_i7], 2), _key6 = _Object$entries6$_i[0], _value5 = _Object$entries6$_i[1];
235
+ lines.push(" --".concat(_key6, ": ").concat(_value5, ";"));
218
236
  }
219
237
  console.log(" - Mapped ".concat(Object.keys(darkButtonColors).length, " dark mode button color tokens"));
220
238
  lines.push("}");
@@ -118,11 +118,11 @@ export function flattenRadii(radii) {
118
118
  }
119
119
 
120
120
  /**
121
- * Flatten shadows
121
+ * Flatten border widths
122
122
  */
123
- export function flattenShadows(shadows) {
123
+ export function flattenBorderWidths(borderWidths) {
124
124
  var flattened = {};
125
- for (var _i5 = 0, _Object$entries5 = Object.entries(shadows); _i5 < _Object$entries5.length; _i5++) {
125
+ for (var _i5 = 0, _Object$entries5 = Object.entries(borderWidths); _i5 < _Object$entries5.length; _i5++) {
126
126
  var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i5], 2),
127
127
  key = _Object$entries5$_i[0],
128
128
  value = _Object$entries5$_i[1];
@@ -134,15 +134,15 @@ export function flattenShadows(shadows) {
134
134
  }
135
135
 
136
136
  /**
137
- * Flatten font weights
137
+ * Flatten shadows
138
138
  */
139
- export function flattenFontWeights(fontWeights) {
139
+ export function flattenShadows(shadows) {
140
140
  var flattened = {};
141
- for (var _i6 = 0, _Object$entries6 = Object.entries(fontWeights); _i6 < _Object$entries6.length; _i6++) {
141
+ for (var _i6 = 0, _Object$entries6 = Object.entries(shadows); _i6 < _Object$entries6.length; _i6++) {
142
142
  var _Object$entries6$_i = _slicedToArray(_Object$entries6[_i6], 2),
143
143
  key = _Object$entries6$_i[0],
144
144
  value = _Object$entries6$_i[1];
145
- if (typeof value === "string" || typeof value === "number") {
145
+ if (typeof value === "string") {
146
146
  flattened[key] = value;
147
147
  }
148
148
  }
@@ -150,15 +150,15 @@ export function flattenFontWeights(fontWeights) {
150
150
  }
151
151
 
152
152
  /**
153
- * Flatten easing (transition timing functions)
153
+ * Flatten font weights
154
154
  */
155
- export function flattenEasing(easing) {
155
+ export function flattenFontWeights(fontWeights) {
156
156
  var flattened = {};
157
- for (var _i7 = 0, _Object$entries7 = Object.entries(easing); _i7 < _Object$entries7.length; _i7++) {
157
+ for (var _i7 = 0, _Object$entries7 = Object.entries(fontWeights); _i7 < _Object$entries7.length; _i7++) {
158
158
  var _Object$entries7$_i = _slicedToArray(_Object$entries7[_i7], 2),
159
159
  key = _Object$entries7$_i[0],
160
160
  value = _Object$entries7$_i[1];
161
- if (typeof value === "string") {
161
+ if (typeof value === "string" || typeof value === "number") {
162
162
  flattened[key] = value;
163
163
  }
164
164
  }
@@ -166,11 +166,11 @@ export function flattenEasing(easing) {
166
166
  }
167
167
 
168
168
  /**
169
- * Flatten duration (transition durations)
169
+ * Flatten easing (transition timing functions)
170
170
  */
171
- export function flattenDuration(duration) {
171
+ export function flattenEasing(easing) {
172
172
  var flattened = {};
173
- for (var _i8 = 0, _Object$entries8 = Object.entries(duration); _i8 < _Object$entries8.length; _i8++) {
173
+ for (var _i8 = 0, _Object$entries8 = Object.entries(easing); _i8 < _Object$entries8.length; _i8++) {
174
174
  var _Object$entries8$_i = _slicedToArray(_Object$entries8[_i8], 2),
175
175
  key = _Object$entries8$_i[0],
176
176
  value = _Object$entries8$_i[1];
@@ -181,6 +181,22 @@ export function flattenDuration(duration) {
181
181
  return flattened;
182
182
  }
183
183
 
184
+ /**
185
+ * Flatten duration (transition durations)
186
+ */
187
+ export function flattenDuration(duration) {
188
+ var flattened = {};
189
+ for (var _i9 = 0, _Object$entries9 = Object.entries(duration); _i9 < _Object$entries9.length; _i9++) {
190
+ var _Object$entries9$_i = _slicedToArray(_Object$entries9[_i9], 2),
191
+ key = _Object$entries9$_i[0],
192
+ value = _Object$entries9$_i[1];
193
+ if (typeof value === "string") {
194
+ flattened[key] = value;
195
+ }
196
+ }
197
+ return flattened;
198
+ }
199
+
184
200
  /**
185
201
  * Check if a value is a valid CSS color
186
202
  * Filters out complex values like color-mix() which may not work everywhere
@@ -194,10 +210,10 @@ export function isSimpleColor(value) {
194
210
  */
195
211
  export function filterComplexColors(colors) {
196
212
  var filtered = {};
197
- for (var _i9 = 0, _Object$entries9 = Object.entries(colors); _i9 < _Object$entries9.length; _i9++) {
198
- var _Object$entries9$_i = _slicedToArray(_Object$entries9[_i9], 2),
199
- key = _Object$entries9$_i[0],
200
- value = _Object$entries9$_i[1];
213
+ for (var _i0 = 0, _Object$entries0 = Object.entries(colors); _i0 < _Object$entries0.length; _i0++) {
214
+ var _Object$entries0$_i = _slicedToArray(_Object$entries0[_i0], 2),
215
+ key = _Object$entries0$_i[0],
216
+ value = _Object$entries0$_i[1];
201
217
  if (isSimpleColor(value)) {
202
218
  filtered[key] = value;
203
219
  } else {
package/lib/dark/theme.js CHANGED
@@ -91,7 +91,12 @@ export var colors = _objectSpread(_objectSpread({}, lightTheme.colors), {}, {
91
91
  // contrast against the dark surface (Figma Sprout Variables, "Trellis" dark).
92
92
  gradient: {
93
93
  ai: "radial-gradient(circle at bottom left, #679eff 0%, #b984ff 61%, #f282f5 100%)",
94
- "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)"
94
+ "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #679eff, transparent 80%) 0%, color-mix(in srgb, #b984ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)",
95
+ // Discrete stops for SVG paint servers — see the light theme for why these
96
+ // exist alongside the composed gradient strings.
97
+ "ai-stop-1": "#679eff",
98
+ "ai-stop-2": "#b984ff",
99
+ "ai-stop-3": "#f282f5"
95
100
  },
96
101
  button: {
97
102
  primary: {
@@ -100,7 +100,16 @@ export var colors = _objectSpread(_objectSpread({
100
100
  ai: "radial-gradient(circle at bottom left, #205bc3 0%, #9747ff 61%, #f282f5 100%)",
101
101
  // 20% tint — AI secondary (composited over a white base in CSS).
102
102
  // Kebab key so it flattens to --color-gradient-ai-subtle.
103
- "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)"
103
+ "ai-subtle": "radial-gradient(circle at bottom left, color-mix(in srgb, #205bc3, transparent 80%) 0%, color-mix(in srgb, #9747ff, transparent 80%) 61%, color-mix(in srgb, #f282f5, transparent 80%) 100%)",
104
+ // The same three stops as discrete colors, flattening to
105
+ // --color-gradient-ai-stop-{1,2,3}. SVG needs a real <radialGradient> with
106
+ // separate <stop> elements to use as a paint server, and a CSS
107
+ // radial-gradient() string can't be decomposed back into stops. Consumed by
108
+ // seeds-react-icon's gradient defs (see icon.css) so gradient-filled icons
109
+ // pick up dark mode through the usual .dark variable swap.
110
+ "ai-stop-1": "#205bc3",
111
+ "ai-stop-2": "#9747ff",
112
+ "ai-stop-3": "#f282f5"
104
113
  },
105
114
  button: {
106
115
  primary: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/seeds-react-theme",
3
- "version": "4.3.1",
3
+ "version": "4.4.0",
4
4
  "description": "Seeds Theme",
5
5
  "main": "commonjs/index.js",
6
6
  "module": "lib/index.js",