@teseor/css 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/compiled.css +1 -1
  2. package/dist/index.css +35 -34
  3. package/package.json +1 -1
  4. package/src/components/actions/button/button.docs.json +62 -0
  5. package/src/components/actions/button/index.scss +4 -4
  6. package/src/components/content/divider/index.scss +1 -1
  7. package/src/components/data-display/card/index.scss +17 -15
  8. package/src/components/data-display/data-list/data-list-visual.png +0 -0
  9. package/src/components/data-display/data-list/data-list.api.json +3 -3
  10. package/src/components/data-display/data-list/index.scss +13 -6
  11. package/src/components/data-display/image/index.scss +1 -1
  12. package/src/components/data-display/status/index.scss +17 -17
  13. package/src/components/data-display/status/status.api.json +3 -3
  14. package/src/components/disclosure/accordion/index.scss +5 -2
  15. package/src/components/disclosure/disclosure/disclosure.api.json +2 -2
  16. package/src/components/disclosure/disclosure/index.scss +6 -2
  17. package/src/components/feedback/progress/index.scss +5 -5
  18. package/src/components/feedback/progress-circle/index.scss +10 -10
  19. package/src/components/feedback/spinner/index.scss +10 -10
  20. package/src/components/feedback/toast/index.scss +5 -5
  21. package/src/components/forms/form-error/index.scss +2 -2
  22. package/src/components/forms/form-helper/form-helper-visual.png +0 -0
  23. package/src/components/forms/form-helper/form-helper.docs.json +118 -0
  24. package/src/components/forms/form-helper/index.scss +2 -2
  25. package/src/components/forms/label/index.scss +1 -1
  26. package/src/components/forms/slider/index.scss +9 -9
  27. package/src/components/forms/toggle/index.scss +3 -3
  28. package/src/components/navigation/breadcrumb/index.scss +5 -5
  29. package/src/components/navigation/menu/index.scss +1 -1
  30. package/src/components/navigation/nav/index.scss +2 -2
  31. package/src/components/navigation/nav/nav.docs.json +62 -0
  32. package/src/components/navigation/pagination/index.scss +13 -13
  33. package/src/components/navigation/tabs/index.scss +2 -2
  34. package/src/components/overlays/drawer/index.scss +1 -1
  35. package/src/components/typography/heading/index.scss +1 -0
  36. package/src/components/typography/link/index.scss +6 -6
  37. package/src/config/tokens/_variables.scss +8 -0
  38. package/src/config/tokens/accessibility.docs.json +21 -0
  39. package/src/config/tokens/semantic/colors/index.scss +25 -0
  40. package/src/layout/center/center-visual.png +0 -0
  41. package/src/layout/center/center.docs.json +40 -1
  42. package/src/layout/container/container.docs.json +85 -0
  43. package/src/layout/main/main.docs.json +87 -0
  44. package/src/utilities/display/display.docs.json +55 -0
  45. package/src/utilities/index.scss +1 -0
  46. package/src/utilities/scroll-snap/index.scss +66 -0
  47. package/src/utilities/scroll-snap/scroll-snap.api.json +19 -0
  48. package/src/utilities/scroll-snap/scroll-snap.docs.json +144 -0
  49. package/src/utilities/spacing/spacing.docs.json +92 -2
  50. package/src/utilities/text/text.api.json +7 -1
  51. package/src/utilities/text/text.docs.json +59 -0
  52. package/src/utilities/text/text.scss +42 -0
@@ -8,13 +8,13 @@
8
8
  .button {
9
9
  --_space-1: var(--ui-space-1, #{t.$space-1});
10
10
  --_font-sans: var(--ui-font-sans, #{t.$font-sans});
11
- --_duration-base: var(--ui-duration-base);
12
- --_ease-default: var(--ui-ease-default);
13
- --_duration-fast: var(--ui-duration-fast);
11
+ --_duration-base: var(--ui-duration-base, #{t.$duration-base});
12
+ --_ease-default: var(--ui-ease-default, #{t.$ease-default});
13
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
14
14
  --_border-width-md: var(--ui-border-width-md, #{t.$border-width-md});
15
15
  --_color-focus: var(--ui-color-focus, #{t.$color-focus});
16
16
  --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
17
- --_space-quarter: var(--ui-space-quarter);
17
+ --_space-quarter: var(--ui-space-quarter, #{t.$space-quarter});
18
18
  --_opacity-loading: var(--ui-opacity-loading, #{t.$opacity-loading});
19
19
  // Single accent color - all shades derived via color-mix
20
20
  // @desc Primary accent color. All shades auto-generated via color-mix.
@@ -6,7 +6,7 @@
6
6
  @layer components.tokens {
7
7
  .divider {
8
8
  --_font-size-sm: var(--ui-font-size-sm, #{t.$font-size-sm});
9
- --_color-text-muted: var(--ui-color-text-muted);
9
+ --_color-text-muted: var(--ui-color-text-muted, #{t.$color-text-muted});
10
10
  // @desc Text color
11
11
  --_color: var(--ui-divider-color, var(--ui-color-border, #{t.$color-border}));
12
12
  // @desc Line size
@@ -1,34 +1,36 @@
1
+ @use '../../../config/tokens/variables' as t;
2
+
1
3
  // @component card
2
4
  // @element div
3
5
 
4
6
  @layer components.tokens {
5
7
  .card {
6
- --_row-1: var(--ui-row-1);
7
- --_duration-fast: var(--ui-duration-fast);
8
- --_ease-default: var(--ui-ease-default);
8
+ --_row-1: var(--ui-row-1, #{t.$row-1});
9
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
10
+ --_ease-default: var(--ui-ease-default, #{t.$ease-default});
9
11
  // @desc Padding on all sides
10
- --_padding: var(--ui-card-padding, var(--ui-space-4));
12
+ --_padding: var(--ui-card-padding, var(--ui-space-4, #{t.$space-4}));
11
13
  // @desc Border thickness
12
- --_border-width: var(--ui-card-border-width, var(--ui-border-width-sm));
14
+ --_border-width: var(--ui-card-border-width, var(--ui-border-width-sm, #{t.$border-width-sm}));
13
15
  // @desc Background color
14
- --_bg: var(--ui-card-bg, var(--ui-color-bg));
16
+ --_bg: var(--ui-card-bg, var(--ui-color-bg, #{t.$color-bg}));
15
17
  // @desc Border color
16
- --_border-color: var(--ui-card-border-color, var(--ui-color-border));
18
+ --_border-color: var(--ui-card-border-color, var(--ui-color-border, #{t.$color-border}));
17
19
  // @desc Corner radius
18
- --_radius: var(--ui-card-radius, var(--ui-radius-md));
20
+ --_radius: var(--ui-card-radius, var(--ui-radius-md, #{t.$radius-md}));
19
21
  }
20
22
 
21
23
  // @modifier variant
22
24
  // @desc Bg subtle
23
- .card--subtle { --_bg: var(--ui-card-bg-subtle, var(--ui-color-bg-subtle)); }
25
+ .card--subtle { --_bg: var(--ui-card-bg-subtle, var(--ui-color-bg-subtle, #{t.$color-bg-subtle})); }
24
26
  // @desc Bg muted
25
- .card--muted { --_bg: var(--ui-card-bg-muted, var(--ui-color-bg-muted)); }
27
+ .card--muted { --_bg: var(--ui-card-bg-muted, var(--ui-color-bg-muted, #{t.$color-bg-muted})); }
26
28
 
27
29
  // @modifier size
28
30
  // @desc Padding on all sides at small size
29
- .card--sm { --_padding: var(--ui-card-padding-sm, var(--ui-space-2)); }
31
+ .card--sm { --_padding: var(--ui-card-padding-sm, var(--ui-space-2, #{t.$space-2})); }
30
32
  // @desc Padding on all sides at large size
31
- .card--lg { --_padding: var(--ui-card-padding-lg, var(--ui-space-6)); }
33
+ .card--lg { --_padding: var(--ui-card-padding-lg, var(--ui-space-6, #{t.$space-6})); }
32
34
 
33
35
  // @modifier boolean interactive
34
36
  .card--interactive {
@@ -63,14 +65,14 @@
63
65
 
64
66
  &:hover {
65
67
  // @desc Bg hover
66
- --_bg: var(--ui-card-bg-hover, var(--ui-color-bg-subtle));
68
+ --_bg: var(--ui-card-bg-hover, var(--ui-color-bg-subtle, #{t.$color-bg-subtle}));
67
69
  // @desc Border color hover
68
- --_border-color: var(--ui-card-border-color-hover, var(--ui-color-border-strong));
70
+ --_border-color: var(--ui-card-border-color-hover, var(--ui-color-border-strong, #{t.$color-border-strong}));
69
71
  }
70
72
 
71
73
  &:active {
72
74
  // @desc Bg active
73
- --_bg: var(--ui-card-bg-active, var(--ui-color-bg-muted));
75
+ --_bg: var(--ui-card-bg-active, var(--ui-color-bg-muted, #{t.$color-bg-muted}));
74
76
  }
75
77
  }
76
78
  }
@@ -3,14 +3,14 @@
3
3
  "name": "data-list",
4
4
  "element": "div",
5
5
  "modifiers": {
6
+ "size": {
7
+ "values": ["sm", "lg"]
8
+ },
6
9
  "layout": {
7
10
  "values": ["horizontal"]
8
11
  },
9
12
  "style": {
10
13
  "values": ["divided", "striped"]
11
- },
12
- "size": {
13
- "values": ["sm", "lg"]
14
14
  }
15
15
  },
16
16
  "elements": {
@@ -24,6 +24,19 @@
24
24
  // @desc Value display text color
25
25
  --_value-color: var(--ui-data-list-value-color, var(--ui-color-text, #{t.$color-text}));
26
26
  }
27
+
28
+ // Compact size
29
+ // @modifier size
30
+ .data-list--sm {
31
+ --_gap: calc(#{t.$unit} * 1);
32
+ --_item-gap: 0;
33
+ }
34
+
35
+ // Large size
36
+ .data-list--lg {
37
+ --_gap: calc(#{t.$unit} * 3);
38
+ --_item-gap: calc(#{t.$unit} * 1);
39
+ }
27
40
  }
28
41
 
29
42
  @layer components.styles {
@@ -100,17 +113,11 @@
100
113
  // Compact size
101
114
  // @modifier size
102
115
  .data-list--sm {
103
- --_gap: calc(#{t.$unit} * 1);
104
- --_item-gap: 0;
105
-
106
116
  font-size: var(--_font-size-sm);
107
117
  }
108
118
 
109
119
  // Large size
110
120
  .data-list--lg {
111
- --_gap: calc(#{t.$unit} * 3);
112
- --_item-gap: calc(#{t.$unit} * 1);
113
-
114
121
  font-size: var(--_font-size-lg);
115
122
  }
116
123
  }
@@ -19,7 +19,7 @@
19
19
  // @desc Caption font size
20
20
  --_caption-font-size: var(--ui-image-caption-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
21
21
  // @desc Caption spacing
22
- --_caption-spacing: var(--ui-image-caption-spacing, var(--ui-space-1));
22
+ --_caption-spacing: var(--ui-image-caption-spacing, var(--ui-space-1, #{t.$space-1}));
23
23
  }
24
24
 
25
25
  // @modifier size
@@ -10,26 +10,38 @@
10
10
  // @desc Overall size
11
11
  --_size: var(--ui-status-size, calc(#{t.$unit} * 1));
12
12
  // @desc Text color
13
- --_color: var(--ui-status-color, var(--ui-color-text-muted));
13
+ --_color: var(--ui-status-color, var(--ui-color-text-muted, #{t.$color-text-muted}));
14
14
  // @desc Gap between children
15
15
  --_gap: var(--ui-status-gap, calc(#{t.$unit} * 1));
16
16
  }
17
17
 
18
18
  // @modifier variant
19
19
  .status--success {
20
- --_color: var(--ui-color-success);
20
+ --_color: var(--ui-color-success, #{t.$color-success});
21
21
  }
22
22
 
23
23
  .status--warning {
24
- --_color: var(--ui-color-warning);
24
+ --_color: var(--ui-color-warning, #{t.$color-warning});
25
25
  }
26
26
 
27
27
  .status--danger {
28
- --_color: var(--ui-color-danger);
28
+ --_color: var(--ui-color-danger, #{t.$color-danger});
29
29
  }
30
30
 
31
31
  .status--info {
32
- --_color: var(--ui-color-primary);
32
+ --_color: var(--ui-color-primary, #{t.$color-primary});
33
+ }
34
+
35
+ // Size variants
36
+ // @modifier size
37
+ .status--sm {
38
+ --_size: calc(#{t.$unit} * 0.75);
39
+ --_gap: calc(#{t.$unit} * 0.75);
40
+ }
41
+
42
+ .status--lg {
43
+ --_size: calc(#{t.$unit} * 1.5);
44
+ --_gap: calc(#{t.$unit} * 1.5);
33
45
  }
34
46
  }
35
47
 
@@ -84,16 +96,4 @@
84
96
  animation: none;
85
97
  }
86
98
  }
87
-
88
- // Size variants
89
- // @modifier size
90
- .status--sm {
91
- --_size: calc(#{t.$unit} * 0.75);
92
- --_gap: calc(#{t.$unit} * 0.75);
93
- }
94
-
95
- .status--lg {
96
- --_size: calc(#{t.$unit} * 1.5);
97
- --_gap: calc(#{t.$unit} * 1.5);
98
- }
99
99
  }
@@ -6,11 +6,11 @@
6
6
  "variant": {
7
7
  "values": ["success", "warning", "danger", "info"]
8
8
  },
9
- "pulse": {
10
- "type": "boolean"
11
- },
12
9
  "size": {
13
10
  "values": ["sm", "lg"]
11
+ },
12
+ "pulse": {
13
+ "type": "boolean"
14
14
  }
15
15
  },
16
16
  "elements": {
@@ -14,6 +14,11 @@
14
14
  // @desc Corner radius
15
15
  --_radius: var(--ui-accordion-radius, var(--ui-radius-md, calc(#{t.$unit} * 1)));
16
16
  }
17
+
18
+ // Remove individual borders from nested disclosures
19
+ .accordion > .disclosure {
20
+ --_border-width: 0;
21
+ }
17
22
  }
18
23
 
19
24
  @layer components.styles {
@@ -26,8 +31,6 @@
26
31
 
27
32
  // Remove individual borders from nested disclosures
28
33
  .accordion > .disclosure {
29
- // Reset disclosure's border-width token so its height calculation is correct
30
- --_border-width: 0;
31
34
  border: none;
32
35
  border-radius: 0;
33
36
  }
@@ -3,10 +3,10 @@
3
3
  "name": "disclosure",
4
4
  "element": "div",
5
5
  "modifiers": {
6
- "animate": {
6
+ "borderless": {
7
7
  "type": "boolean"
8
8
  },
9
- "borderless": {
9
+ "animate": {
10
10
  "type": "boolean"
11
11
  }
12
12
  },
@@ -25,6 +25,12 @@
25
25
  // @desc Vertical padding
26
26
  --_padding-y: var(--ui-disclosure-padding-y, calc(#{t.$unit} * 2));
27
27
  }
28
+
29
+ // Borderless variant
30
+ // @modifier boolean borderless
31
+ .disclosure--borderless {
32
+ --_border-width: 0;
33
+ }
28
34
  }
29
35
 
30
36
  @layer components.styles {
@@ -109,8 +115,6 @@
109
115
  // Borderless variant
110
116
  // @modifier boolean borderless
111
117
  .disclosure--borderless {
112
- --_border-width: 0;
113
-
114
118
  border: none;
115
119
  border-radius: 0;
116
120
  }
@@ -8,13 +8,13 @@
8
8
  @layer components.tokens {
9
9
  .progress {
10
10
  --_duration-normal: var(--ui-duration-normal, #{t.$duration-normal});
11
- --_ease-default: var(--ui-ease-default, ease);
11
+ --_ease-default: var(--ui-ease-default, #{t.$ease-default});
12
12
  // @desc Overall height
13
13
  --_height: var(--ui-progress-height, calc(#{t.$unit} * 1));
14
14
  // @desc Background color
15
15
  --_bg: var(--ui-progress-bg, var(--ui-color-bg-subtle, #{t.$overlay-bg-subtle}));
16
16
  // @desc Fill
17
- --_fill: var(--ui-progress-fill, var(--ui-color-primary));
17
+ --_fill: var(--ui-progress-fill, var(--ui-color-primary, #{t.$color-primary}));
18
18
  // @desc Corner radius
19
19
  --_radius: var(--ui-progress-radius, var(--ui-radius-full, #{t.$radius-full}));
20
20
  }
@@ -112,14 +112,14 @@
112
112
  // Color variants
113
113
  // @modifier variant
114
114
  .progress--success {
115
- --_fill: var(--ui-color-success);
115
+ --_fill: var(--ui-color-success, #{t.$color-success});
116
116
  }
117
117
 
118
118
  .progress--warning {
119
- --_fill: var(--ui-color-warning);
119
+ --_fill: var(--ui-color-warning, #{t.$color-warning});
120
120
  }
121
121
 
122
122
  .progress--danger {
123
- --_fill: var(--ui-color-danger);
123
+ --_fill: var(--ui-color-danger, #{t.$color-danger});
124
124
  }
125
125
  }
@@ -8,15 +8,15 @@
8
8
  @layer components.tokens {
9
9
  .progress-circle {
10
10
  --_duration-slow: var(--ui-duration-slow, #{t.$duration-slow});
11
- --_ease-default: var(--ui-ease-default, ease);
11
+ --_ease-default: var(--ui-ease-default, #{t.$ease-default});
12
12
  // @desc Overall size
13
- --_size: var(--ui-progress-circle-size, calc(var(--ui-unit) * 6));
13
+ --_size: var(--ui-progress-circle-size, calc(var(--ui-unit, #{t.$unit}) * 6));
14
14
  // @desc Stroke width
15
15
  --_stroke-width: var(--ui-progress-circle-stroke-width, #{t.$progress-circle-stroke-width});
16
16
  // @desc Fill area text color
17
- --_fill-color: var(--ui-progress-circle-fill-color, var(--ui-color-primary));
17
+ --_fill-color: var(--ui-progress-circle-fill-color, var(--ui-color-primary, #{t.$color-primary}));
18
18
  // @desc Track text color
19
- --_track-color: var(--ui-progress-circle-track-color, var(--ui-color-border));
19
+ --_track-color: var(--ui-progress-circle-track-color, var(--ui-color-border, #{t.$color-border}));
20
20
  // @desc Value
21
21
  --_value: var(--ui-progress-circle-value, 0);
22
22
  --_circumference: 282.743;
@@ -25,30 +25,30 @@
25
25
  // @modifier size
26
26
  .progress-circle--sm {
27
27
  // @desc Overall size at small size
28
- --_size: var(--ui-progress-circle-size-sm, calc(var(--ui-unit) * 4));
28
+ --_size: var(--ui-progress-circle-size-sm, calc(var(--ui-unit, #{t.$unit}) * 4));
29
29
  }
30
30
 
31
31
  .progress-circle--lg {
32
32
  // @desc Overall size at large size
33
- --_size: var(--ui-progress-circle-size-lg, calc(var(--ui-unit) * 8));
33
+ --_size: var(--ui-progress-circle-size-lg, calc(var(--ui-unit, #{t.$unit}) * 8));
34
34
  }
35
35
 
36
36
  .progress-circle--xl {
37
37
  // @desc Overall size at extra-large size
38
- --_size: var(--ui-progress-circle-size-xl, calc(var(--ui-unit) * 12));
38
+ --_size: var(--ui-progress-circle-size-xl, calc(var(--ui-unit, #{t.$unit}) * 12));
39
39
  }
40
40
 
41
41
  // @modifier variant
42
42
  .progress-circle--success {
43
- --_fill-color: var(--ui-color-success);
43
+ --_fill-color: var(--ui-color-success, #{t.$color-success});
44
44
  }
45
45
 
46
46
  .progress-circle--warning {
47
- --_fill-color: var(--ui-color-warning);
47
+ --_fill-color: var(--ui-color-warning, #{t.$color-warning});
48
48
  }
49
49
 
50
50
  .progress-circle--danger {
51
- --_fill-color: var(--ui-color-danger);
51
+ --_fill-color: var(--ui-color-danger, #{t.$color-danger});
52
52
  }
53
53
  }
54
54
 
@@ -6,9 +6,9 @@
6
6
  @layer components.tokens {
7
7
  .spinner {
8
8
  // @desc Overall size
9
- --_size: var(--ui-spinner-size, calc(var(--ui-unit) * 4));
9
+ --_size: var(--ui-spinner-size, calc(var(--ui-unit, #{t.$unit}) * 4));
10
10
  // @desc Border thickness
11
- --_border-width: var(--ui-spinner-border-width, var(--ui-border-width-md));
11
+ --_border-width: var(--ui-spinner-border-width, var(--ui-border-width-md, #{t.$border-width-md}));
12
12
  // @desc Text color
13
13
  --_color: var(--ui-spinner-color, currentcolor);
14
14
  // @desc Track text color
@@ -20,30 +20,30 @@
20
20
  // @modifier size
21
21
  .spinner--xs {
22
22
  // @desc Overall size at extra-small size
23
- --_size: var(--ui-spinner-size-xs, calc(var(--ui-unit) * 2));
23
+ --_size: var(--ui-spinner-size-xs, calc(var(--ui-unit, #{t.$unit}) * 2));
24
24
  // @desc Border thickness at extra-small size
25
- --_border-width: var(--ui-spinner-border-width-xs, var(--ui-border-width-sm));
25
+ --_border-width: var(--ui-spinner-border-width-xs, var(--ui-border-width-sm, #{t.$border-width-sm}));
26
26
  }
27
27
 
28
28
  .spinner--sm {
29
29
  // @desc Overall size at small size
30
- --_size: var(--ui-spinner-size-sm, calc(var(--ui-unit) * 3));
30
+ --_size: var(--ui-spinner-size-sm, calc(var(--ui-unit, #{t.$unit}) * 3));
31
31
  // @desc Border thickness at small size
32
- --_border-width: var(--ui-spinner-border-width-sm, var(--ui-border-width-md));
32
+ --_border-width: var(--ui-spinner-border-width-sm, var(--ui-border-width-md, #{t.$border-width-md}));
33
33
  }
34
34
 
35
35
  .spinner--lg {
36
36
  // @desc Overall size at large size
37
- --_size: var(--ui-spinner-size-lg, calc(var(--ui-unit) * 5));
37
+ --_size: var(--ui-spinner-size-lg, calc(var(--ui-unit, #{t.$unit}) * 5));
38
38
  // @desc Border thickness at large size
39
- --_border-width: var(--ui-spinner-border-width-lg, var(--ui-border-width-md));
39
+ --_border-width: var(--ui-spinner-border-width-lg, var(--ui-border-width-md, #{t.$border-width-md}));
40
40
  }
41
41
 
42
42
  .spinner--xl {
43
43
  // @desc Overall size at extra-large size
44
- --_size: var(--ui-spinner-size-xl, calc(var(--ui-unit) * 6));
44
+ --_size: var(--ui-spinner-size-xl, calc(var(--ui-unit, #{t.$unit}) * 6));
45
45
  // @desc Border thickness at extra-large size
46
- --_border-width: var(--ui-spinner-border-width-xl, var(--ui-border-width-lg));
46
+ --_border-width: var(--ui-spinner-border-width-xl, var(--ui-border-width-lg, #{t.$border-width-lg}));
47
47
  }
48
48
  }
49
49
 
@@ -39,24 +39,24 @@
39
39
  // @desc Border color
40
40
  --_border-color: var(--ui-toast-border-color, var(--ui-color-border, #{t.$color-border}));
41
41
  // @desc Box shadow
42
- --_shadow: var(--ui-toast-shadow, var(--ui-shadow-lg));
42
+ --_shadow: var(--ui-toast-shadow, var(--ui-shadow-lg, #{t.$shadow-lg}));
43
43
  }
44
44
 
45
45
  // @modifier variant
46
46
  .toast--success {
47
- --_border-color: var(--ui-color-success);
47
+ --_border-color: var(--ui-color-success, #{t.$color-success});
48
48
  }
49
49
 
50
50
  .toast--warning {
51
- --_border-color: var(--ui-color-warning);
51
+ --_border-color: var(--ui-color-warning, #{t.$color-warning});
52
52
  }
53
53
 
54
54
  .toast--danger {
55
- --_border-color: var(--ui-color-danger);
55
+ --_border-color: var(--ui-color-danger, #{t.$color-danger});
56
56
  }
57
57
 
58
58
  .toast--info {
59
- --_border-color: var(--ui-color-primary);
59
+ --_border-color: var(--ui-color-primary, #{t.$color-primary});
60
60
  }
61
61
  }
62
62
 
@@ -7,9 +7,9 @@
7
7
 
8
8
  @layer components.tokens {
9
9
  .form-error {
10
- --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1));
10
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1, #{t.$row-1}));
11
11
  // @desc Text color
12
- --_color: var(--ui-form-error-color, var(--ui-color-danger));
12
+ --_color: var(--ui-form-error-color, var(--ui-color-danger, #{t.$color-danger}));
13
13
  // @desc Overall size
14
14
  --_size: var(--ui-form-error-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
15
15
  // @desc Gap between children
@@ -15,6 +15,124 @@
15
15
  "code": "<span class=\"ui-form-helper\">Must be at least 8 characters</span>"
16
16
  }
17
17
  ]
18
+ },
19
+ {
20
+ "title": "With Input Field",
21
+ "description": "Helper text paired with a form input for context.",
22
+ "examples": [
23
+ {
24
+ "layout": "column",
25
+ "items": [
26
+ {
27
+ "tag": "div",
28
+ "class": "ui-column ui-column--xs",
29
+ "children": [
30
+ {
31
+ "tag": "input",
32
+ "class": "ui-input",
33
+ "attrs": { "type": "email", "placeholder": "Email address" }
34
+ },
35
+ {
36
+ "tag": "span",
37
+ "class": "ui-form-helper",
38
+ "text": "We will never share your email"
39
+ }
40
+ ]
41
+ }
42
+ ],
43
+ "code": "<input class=\"ui-input\" type=\"email\" placeholder=\"Email address\">\n<span class=\"ui-form-helper\">We will never share your email</span>"
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "title": "Error State",
49
+ "description": "Helper text styled for validation errors using the input error context.",
50
+ "examples": [
51
+ {
52
+ "layout": "column",
53
+ "items": [
54
+ {
55
+ "tag": "div",
56
+ "class": "ui-column ui-column--xs",
57
+ "children": [
58
+ {
59
+ "tag": "input",
60
+ "class": "ui-input ui-input--error",
61
+ "attrs": { "type": "text", "value": "abc" }
62
+ },
63
+ {
64
+ "tag": "span",
65
+ "class": "ui-form-helper",
66
+ "attrs": { "style": "color: var(--ui-color-danger);" },
67
+ "text": "Password must be at least 8 characters"
68
+ }
69
+ ]
70
+ }
71
+ ],
72
+ "code": "<input class=\"ui-input ui-input--error\" value=\"abc\">\n<span class=\"ui-form-helper\" style=\"color: var(--ui-color-danger);\">Password must be at least 8 characters</span>"
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "title": "Success State",
78
+ "description": "Helper text for successful validation.",
79
+ "examples": [
80
+ {
81
+ "layout": "column",
82
+ "items": [
83
+ {
84
+ "tag": "div",
85
+ "class": "ui-column ui-column--xs",
86
+ "children": [
87
+ {
88
+ "tag": "input",
89
+ "class": "ui-input ui-input--success",
90
+ "attrs": { "type": "text", "value": "strongpassword123" }
91
+ },
92
+ {
93
+ "tag": "span",
94
+ "class": "ui-form-helper",
95
+ "attrs": { "style": "color: var(--ui-color-success);" },
96
+ "text": "Password strength: strong"
97
+ }
98
+ ]
99
+ }
100
+ ],
101
+ "code": "<input class=\"ui-input ui-input--success\" value=\"strongpassword123\">\n<span class=\"ui-form-helper\" style=\"color: var(--ui-color-success);\">Password strength: strong</span>"
102
+ }
103
+ ]
104
+ },
105
+ {
106
+ "title": "With Select",
107
+ "description": "Helper text paired with a select field.",
108
+ "examples": [
109
+ {
110
+ "layout": "column",
111
+ "items": [
112
+ {
113
+ "tag": "div",
114
+ "class": "ui-column ui-column--xs",
115
+ "children": [
116
+ {
117
+ "tag": "select",
118
+ "class": "ui-select",
119
+ "children": [
120
+ { "tag": "option", "text": "Choose a country" },
121
+ { "tag": "option", "text": "United States" },
122
+ { "tag": "option", "text": "Canada" }
123
+ ]
124
+ },
125
+ {
126
+ "tag": "span",
127
+ "class": "ui-form-helper",
128
+ "text": "Required for shipping calculations"
129
+ }
130
+ ]
131
+ }
132
+ ],
133
+ "code": "<select class=\"ui-select\">\n <option>Choose a country</option>\n</select>\n<span class=\"ui-form-helper\">Required for shipping calculations</span>"
134
+ }
135
+ ]
18
136
  }
19
137
  ],
20
138
  "customization": [
@@ -7,9 +7,9 @@
7
7
 
8
8
  @layer components.tokens {
9
9
  .form-helper {
10
- --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1));
10
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1, #{t.$row-1}));
11
11
  // @desc Text color
12
- --_color: var(--ui-form-helper-color, var(--ui-color-text-muted));
12
+ --_color: var(--ui-form-helper-color, var(--ui-color-text-muted, #{t.$color-text-muted}));
13
13
  // @desc Overall size
14
14
  --_size: var(--ui-form-helper-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
15
15
  // @desc Gap between children
@@ -6,7 +6,7 @@
6
6
  @layer components.tokens {
7
7
  .label {
8
8
  --_weight-medium: var(--ui-weight-medium, #{t.$weight-medium});
9
- --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1));
9
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1, #{t.$row-1}));
10
10
  --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
11
11
  --_weight-normal: var(--ui-weight-normal, #{t.$weight-normal});
12
12
  --_color-text-muted: var(--ui-color-text-muted, #{t.$color-text-muted});