sh-ui-cli 0.34.0 → 0.39.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/data/changelog/versions.json +36 -0
- package/data/registry/react/components/date-picker/index.tsx +21 -4
- package/data/registry/react/components/date-picker/styles.css +12 -12
- package/package.json +1 -1
- package/src/api.d.ts +31 -0
- package/src/api.js +1 -0
- package/src/create/generator.js +77 -2
- package/src/create/index.mjs +4 -1
- package/src/create/theme/decode.js +106 -3
- package/src/create/theme/inject.js +317 -33
- package/src/create/theme/presets.js +160 -0
- package/src/mcp.mjs +3 -1
- package/templates/flutter-standalone/lib/sh_ui/foundation/sh_ui_tokens.dart +43 -2
- package/templates/nextjs-standalone/src/shared/styles/tokens.css +21 -0
- package/templates/ui-app-template/src/styles/tokens.css +21 -0
|
@@ -122,6 +122,7 @@ class ShUiSpacingTokens {
|
|
|
122
122
|
});
|
|
123
123
|
|
|
124
124
|
static const tokens = ShUiSpacingTokens(
|
|
125
|
+
// sh-ui:theme-space-start
|
|
125
126
|
s0: 0.0,
|
|
126
127
|
s1: 4.0,
|
|
127
128
|
s2: 8.0,
|
|
@@ -133,6 +134,7 @@ class ShUiSpacingTokens {
|
|
|
133
134
|
s10: 40.0,
|
|
134
135
|
s12: 48.0,
|
|
135
136
|
s16: 64.0,
|
|
137
|
+
// sh-ui:theme-space-end
|
|
136
138
|
);
|
|
137
139
|
}
|
|
138
140
|
|
|
@@ -159,6 +161,7 @@ class ShUiTextTokens {
|
|
|
159
161
|
});
|
|
160
162
|
|
|
161
163
|
static const tokens = ShUiTextTokens(
|
|
164
|
+
// sh-ui:theme-text-start
|
|
162
165
|
xs: 12.0,
|
|
163
166
|
sm: 14.0,
|
|
164
167
|
base: 16.0,
|
|
@@ -167,6 +170,7 @@ class ShUiTextTokens {
|
|
|
167
170
|
xl2: 24.0,
|
|
168
171
|
xl3: 30.0,
|
|
169
172
|
xl4: 36.0,
|
|
173
|
+
// sh-ui:theme-text-end
|
|
170
174
|
);
|
|
171
175
|
}
|
|
172
176
|
|
|
@@ -185,10 +189,12 @@ class ShUiWeightTokens {
|
|
|
185
189
|
});
|
|
186
190
|
|
|
187
191
|
static const tokens = ShUiWeightTokens(
|
|
192
|
+
// sh-ui:theme-weight-start
|
|
188
193
|
regular: FontWeight.w400,
|
|
189
194
|
medium: FontWeight.w500,
|
|
190
195
|
semibold: FontWeight.w600,
|
|
191
196
|
bold: FontWeight.w700,
|
|
197
|
+
// sh-ui:theme-weight-end
|
|
192
198
|
);
|
|
193
199
|
}
|
|
194
200
|
|
|
@@ -207,10 +213,12 @@ class ShUiShadowTokens {
|
|
|
207
213
|
});
|
|
208
214
|
|
|
209
215
|
static const tokens = ShUiShadowTokens(
|
|
216
|
+
// sh-ui:theme-shadow-start
|
|
210
217
|
sm: <BoxShadow>[BoxShadow(offset: Offset(0.0, 1.0), blurRadius: 2.0, spreadRadius: 0.0, color: Color(0x14000000))],
|
|
211
218
|
md: <BoxShadow>[BoxShadow(offset: Offset(0.0, 4.0), blurRadius: 12.0, spreadRadius: 0.0, color: Color(0x1F000000))],
|
|
212
219
|
lg: <BoxShadow>[BoxShadow(offset: Offset(0.0, 8.0), blurRadius: 24.0, spreadRadius: 0.0, color: Color(0x26000000))],
|
|
213
220
|
xl: <BoxShadow>[BoxShadow(offset: Offset(0.0, 16.0), blurRadius: 48.0, spreadRadius: 0.0, color: Color(0x2E000000))],
|
|
221
|
+
// sh-ui:theme-shadow-end
|
|
214
222
|
);
|
|
215
223
|
}
|
|
216
224
|
|
|
@@ -227,9 +235,11 @@ class ShUiDurationTokens {
|
|
|
227
235
|
});
|
|
228
236
|
|
|
229
237
|
static const tokens = ShUiDurationTokens(
|
|
238
|
+
// sh-ui:theme-duration-start
|
|
230
239
|
fast: Duration(milliseconds: 120),
|
|
231
240
|
base: Duration(milliseconds: 160),
|
|
232
241
|
slow: Duration(milliseconds: 200),
|
|
242
|
+
// sh-ui:theme-duration-end
|
|
233
243
|
);
|
|
234
244
|
}
|
|
235
245
|
|
|
@@ -244,8 +254,10 @@ class ShUiEaseTokens {
|
|
|
244
254
|
});
|
|
245
255
|
|
|
246
256
|
static const tokens = ShUiEaseTokens(
|
|
257
|
+
// sh-ui:theme-ease-start
|
|
247
258
|
standard: Cubic(0.4, 0, 0.2, 1),
|
|
248
259
|
emphasized: Cubic(0.2, 0, 0, 1),
|
|
260
|
+
// sh-ui:theme-ease-end
|
|
249
261
|
);
|
|
250
262
|
}
|
|
251
263
|
|
|
@@ -262,9 +274,11 @@ class ShUiControlTokens {
|
|
|
262
274
|
});
|
|
263
275
|
|
|
264
276
|
static const tokens = ShUiControlTokens(
|
|
277
|
+
// sh-ui:theme-control-start
|
|
265
278
|
sm: 32.0,
|
|
266
279
|
md: 40.0,
|
|
267
280
|
lg: 48.0,
|
|
281
|
+
// sh-ui:theme-control-end
|
|
268
282
|
);
|
|
269
283
|
}
|
|
270
284
|
|
|
@@ -279,8 +293,10 @@ class ShUiBorderWidthTokens {
|
|
|
279
293
|
});
|
|
280
294
|
|
|
281
295
|
static const tokens = ShUiBorderWidthTokens(
|
|
296
|
+
// sh-ui:theme-border-width-start
|
|
282
297
|
normal: 1.0,
|
|
283
298
|
strong: 2.0,
|
|
299
|
+
// sh-ui:theme-border-width-end
|
|
284
300
|
);
|
|
285
301
|
}
|
|
286
302
|
|
|
@@ -297,6 +313,27 @@ class ShUiOpacityTokens {
|
|
|
297
313
|
);
|
|
298
314
|
}
|
|
299
315
|
|
|
316
|
+
@immutable
|
|
317
|
+
class ShUiGradientTokens {
|
|
318
|
+
final LinearGradient primary;
|
|
319
|
+
final LinearGradient surface;
|
|
320
|
+
final LinearGradient overlay;
|
|
321
|
+
|
|
322
|
+
const ShUiGradientTokens({
|
|
323
|
+
required this.primary,
|
|
324
|
+
required this.surface,
|
|
325
|
+
required this.overlay,
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
static const tokens = ShUiGradientTokens(
|
|
329
|
+
// sh-ui:theme-gradient-start
|
|
330
|
+
primary: LinearGradient(begin: Alignment(-0.707, 0.707), end: Alignment(0.707, -0.707), colors: <Color>[Color(0xFF171717), Color(0xFF525252)], stops: <double>[0.00, 1.00]),
|
|
331
|
+
surface: LinearGradient(begin: Alignment(0.0, -1.0), end: Alignment(0.0, 1.0), colors: <Color>[Color(0xFFFFFFFF), Color(0xFFF5F5F5)], stops: <double>[0.00, 1.00]),
|
|
332
|
+
overlay: LinearGradient(begin: Alignment(0.0, -1.0), end: Alignment(0.0, 1.0), colors: <Color>[Color(0xFF000000), Color(0xFF1F1F1F)], stops: <double>[0.00, 1.00]),
|
|
333
|
+
// sh-ui:theme-gradient-end
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
|
|
300
337
|
@immutable
|
|
301
338
|
class ShUiBreakpointTokens {
|
|
302
339
|
final double sm;
|
|
@@ -330,6 +367,7 @@ class ShUiTheme extends ThemeExtension<ShUiTheme> {
|
|
|
330
367
|
final ShUiEaseTokens ease;
|
|
331
368
|
final ShUiControlTokens control;
|
|
332
369
|
final ShUiBorderWidthTokens borderWidth;
|
|
370
|
+
final ShUiGradientTokens gradient;
|
|
333
371
|
final ShUiOpacityTokens opacity;
|
|
334
372
|
final ShUiBreakpointTokens breakpoint;
|
|
335
373
|
|
|
@@ -344,6 +382,7 @@ class ShUiTheme extends ThemeExtension<ShUiTheme> {
|
|
|
344
382
|
required this.ease,
|
|
345
383
|
required this.control,
|
|
346
384
|
required this.borderWidth,
|
|
385
|
+
required this.gradient,
|
|
347
386
|
required this.opacity,
|
|
348
387
|
required this.breakpoint,
|
|
349
388
|
});
|
|
@@ -359,6 +398,7 @@ class ShUiTheme extends ThemeExtension<ShUiTheme> {
|
|
|
359
398
|
ease: ShUiEaseTokens.tokens,
|
|
360
399
|
control: ShUiControlTokens.tokens,
|
|
361
400
|
borderWidth: ShUiBorderWidthTokens.tokens,
|
|
401
|
+
gradient: ShUiGradientTokens.tokens,
|
|
362
402
|
opacity: ShUiOpacityTokens.tokens,
|
|
363
403
|
breakpoint: ShUiBreakpointTokens.tokens,
|
|
364
404
|
);
|
|
@@ -373,13 +413,14 @@ class ShUiTheme extends ThemeExtension<ShUiTheme> {
|
|
|
373
413
|
ease: ShUiEaseTokens.tokens,
|
|
374
414
|
control: ShUiControlTokens.tokens,
|
|
375
415
|
borderWidth: ShUiBorderWidthTokens.tokens,
|
|
416
|
+
gradient: ShUiGradientTokens.tokens,
|
|
376
417
|
opacity: ShUiOpacityTokens.tokens,
|
|
377
418
|
breakpoint: ShUiBreakpointTokens.tokens,
|
|
378
419
|
);
|
|
379
420
|
|
|
380
421
|
@override
|
|
381
|
-
ShUiTheme copyWith({ShUiColorTokens? colors, ShUiRadiusTokens? radius, ShUiSpacingTokens? spacing, ShUiTextTokens? text, ShUiWeightTokens? weight, ShUiShadowTokens? shadow, ShUiDurationTokens? duration, ShUiEaseTokens? ease, ShUiControlTokens? control, ShUiBorderWidthTokens? borderWidth, ShUiOpacityTokens? opacity, ShUiBreakpointTokens? breakpoint}) =>
|
|
382
|
-
ShUiTheme(colors: colors ?? this.colors, radius: radius ?? this.radius, spacing: spacing ?? this.spacing, text: text ?? this.text, weight: weight ?? this.weight, shadow: shadow ?? this.shadow, duration: duration ?? this.duration, ease: ease ?? this.ease, control: control ?? this.control, borderWidth: borderWidth ?? this.borderWidth, opacity: opacity ?? this.opacity, breakpoint: breakpoint ?? this.breakpoint);
|
|
422
|
+
ShUiTheme copyWith({ShUiColorTokens? colors, ShUiRadiusTokens? radius, ShUiSpacingTokens? spacing, ShUiTextTokens? text, ShUiWeightTokens? weight, ShUiShadowTokens? shadow, ShUiDurationTokens? duration, ShUiEaseTokens? ease, ShUiControlTokens? control, ShUiBorderWidthTokens? borderWidth, ShUiGradientTokens? gradient, ShUiOpacityTokens? opacity, ShUiBreakpointTokens? breakpoint}) =>
|
|
423
|
+
ShUiTheme(colors: colors ?? this.colors, radius: radius ?? this.radius, spacing: spacing ?? this.spacing, text: text ?? this.text, weight: weight ?? this.weight, shadow: shadow ?? this.shadow, duration: duration ?? this.duration, ease: ease ?? this.ease, control: control ?? this.control, borderWidth: borderWidth ?? this.borderWidth, gradient: gradient ?? this.gradient, opacity: opacity ?? this.opacity, breakpoint: breakpoint ?? this.breakpoint);
|
|
383
424
|
|
|
384
425
|
@override
|
|
385
426
|
ShUiTheme lerp(ThemeExtension<ShUiTheme>? other, double t) {
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
/* sh-ui:theme-radius-start */
|
|
43
43
|
--radius: 0.5rem;
|
|
44
44
|
/* sh-ui:theme-radius-end */
|
|
45
|
+
/* sh-ui:theme-space-start */
|
|
45
46
|
--space-0: 0px;
|
|
46
47
|
--space-1: 4px;
|
|
47
48
|
--space-2: 8px;
|
|
@@ -53,6 +54,8 @@
|
|
|
53
54
|
--space-10: 40px;
|
|
54
55
|
--space-12: 48px;
|
|
55
56
|
--space-16: 64px;
|
|
57
|
+
/* sh-ui:theme-space-end */
|
|
58
|
+
/* sh-ui:theme-text-start */
|
|
56
59
|
--text-xs: 12px;
|
|
57
60
|
--text-sm: 14px;
|
|
58
61
|
--text-base: 16px;
|
|
@@ -61,24 +64,42 @@
|
|
|
61
64
|
--text-2xl: 24px;
|
|
62
65
|
--text-3xl: 30px;
|
|
63
66
|
--text-4xl: 36px;
|
|
67
|
+
/* sh-ui:theme-text-end */
|
|
68
|
+
/* sh-ui:theme-weight-start */
|
|
64
69
|
--weight-regular: 400;
|
|
65
70
|
--weight-medium: 500;
|
|
66
71
|
--weight-semibold: 600;
|
|
67
72
|
--weight-bold: 700;
|
|
73
|
+
/* sh-ui:theme-weight-end */
|
|
74
|
+
/* sh-ui:theme-shadow-start */
|
|
68
75
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
69
76
|
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.12);
|
|
70
77
|
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
71
78
|
--shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.18);
|
|
79
|
+
/* sh-ui:theme-shadow-end */
|
|
80
|
+
/* sh-ui:theme-duration-start */
|
|
72
81
|
--duration-fast: 120ms;
|
|
73
82
|
--duration-base: 160ms;
|
|
74
83
|
--duration-slow: 200ms;
|
|
84
|
+
/* sh-ui:theme-duration-end */
|
|
85
|
+
/* sh-ui:theme-ease-start */
|
|
75
86
|
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
76
87
|
--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
88
|
+
/* sh-ui:theme-ease-end */
|
|
89
|
+
/* sh-ui:theme-control-start */
|
|
77
90
|
--control-sm: 32px;
|
|
78
91
|
--control-md: 40px;
|
|
79
92
|
--control-lg: 48px;
|
|
93
|
+
/* sh-ui:theme-control-end */
|
|
94
|
+
/* sh-ui:theme-border-width-start */
|
|
80
95
|
--border-width: 1px;
|
|
81
96
|
--border-width-strong: 2px;
|
|
97
|
+
/* sh-ui:theme-border-width-end */
|
|
98
|
+
/* sh-ui:theme-gradient-start */
|
|
99
|
+
--gradient-primary: linear-gradient(135deg, #171717 0%, #525252 100%);
|
|
100
|
+
--gradient-surface: linear-gradient(180deg, #FFFFFF 0%, #F5F5F5 100%);
|
|
101
|
+
--gradient-overlay: linear-gradient(180deg, #000000 0%, #1F1F1F 100%);
|
|
102
|
+
/* sh-ui:theme-gradient-end */
|
|
82
103
|
--opacity-disabled: 0.5;
|
|
83
104
|
--z-base: 0;
|
|
84
105
|
--z-sticky: 100;
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
/* sh-ui:theme-radius-start */
|
|
43
43
|
--radius: 0.5rem;
|
|
44
44
|
/* sh-ui:theme-radius-end */
|
|
45
|
+
/* sh-ui:theme-space-start */
|
|
45
46
|
--space-0: 0px;
|
|
46
47
|
--space-1: 4px;
|
|
47
48
|
--space-2: 8px;
|
|
@@ -53,6 +54,8 @@
|
|
|
53
54
|
--space-10: 40px;
|
|
54
55
|
--space-12: 48px;
|
|
55
56
|
--space-16: 64px;
|
|
57
|
+
/* sh-ui:theme-space-end */
|
|
58
|
+
/* sh-ui:theme-text-start */
|
|
56
59
|
--text-xs: 12px;
|
|
57
60
|
--text-sm: 14px;
|
|
58
61
|
--text-base: 16px;
|
|
@@ -61,24 +64,42 @@
|
|
|
61
64
|
--text-2xl: 24px;
|
|
62
65
|
--text-3xl: 30px;
|
|
63
66
|
--text-4xl: 36px;
|
|
67
|
+
/* sh-ui:theme-text-end */
|
|
68
|
+
/* sh-ui:theme-weight-start */
|
|
64
69
|
--weight-regular: 400;
|
|
65
70
|
--weight-medium: 500;
|
|
66
71
|
--weight-semibold: 600;
|
|
67
72
|
--weight-bold: 700;
|
|
73
|
+
/* sh-ui:theme-weight-end */
|
|
74
|
+
/* sh-ui:theme-shadow-start */
|
|
68
75
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
69
76
|
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.12);
|
|
70
77
|
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
71
78
|
--shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.18);
|
|
79
|
+
/* sh-ui:theme-shadow-end */
|
|
80
|
+
/* sh-ui:theme-duration-start */
|
|
72
81
|
--duration-fast: 120ms;
|
|
73
82
|
--duration-base: 160ms;
|
|
74
83
|
--duration-slow: 200ms;
|
|
84
|
+
/* sh-ui:theme-duration-end */
|
|
85
|
+
/* sh-ui:theme-ease-start */
|
|
75
86
|
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
76
87
|
--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
88
|
+
/* sh-ui:theme-ease-end */
|
|
89
|
+
/* sh-ui:theme-control-start */
|
|
77
90
|
--control-sm: 32px;
|
|
78
91
|
--control-md: 40px;
|
|
79
92
|
--control-lg: 48px;
|
|
93
|
+
/* sh-ui:theme-control-end */
|
|
94
|
+
/* sh-ui:theme-border-width-start */
|
|
80
95
|
--border-width: 1px;
|
|
81
96
|
--border-width-strong: 2px;
|
|
97
|
+
/* sh-ui:theme-border-width-end */
|
|
98
|
+
/* sh-ui:theme-gradient-start */
|
|
99
|
+
--gradient-primary: linear-gradient(135deg, #171717 0%, #525252 100%);
|
|
100
|
+
--gradient-surface: linear-gradient(180deg, #FFFFFF 0%, #F5F5F5 100%);
|
|
101
|
+
--gradient-overlay: linear-gradient(180deg, #000000 0%, #1F1F1F 100%);
|
|
102
|
+
/* sh-ui:theme-gradient-end */
|
|
82
103
|
--opacity-disabled: 0.5;
|
|
83
104
|
--z-base: 0;
|
|
84
105
|
--z-sticky: 100;
|