@teseor/css 1.8.0 → 1.10.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 (183) hide show
  1. package/dist/compiled.css +1 -1
  2. package/dist/index.css +115 -115
  3. package/package.json +1 -1
  4. package/src/components/actions/button/button.api.json +29 -32
  5. package/src/components/actions/button/index.scss +36 -11
  6. package/src/components/actions/button-group/button-group.api.json +3 -1
  7. package/src/components/actions/button-group/index.scss +4 -0
  8. package/src/components/actions/close-button/close-button.api.json +31 -18
  9. package/src/components/actions/close-button/index.scss +26 -6
  10. package/src/components/content/divider/divider.api.json +12 -7
  11. package/src/components/content/divider/index.scss +11 -4
  12. package/src/components/content/scroll-area/index.scss +15 -1
  13. package/src/components/content/scroll-area/scroll-area-visual.png +0 -0
  14. package/src/components/content/scroll-area/scroll-area.api.json +33 -22
  15. package/src/components/content/scroll-area/scroll-area.docs.json +70 -1
  16. package/src/components/content/spacer/index.scss +6 -1
  17. package/src/components/content/spacer/spacer.api.json +8 -1
  18. package/src/components/data-display/avatar/avatar.api.json +36 -17
  19. package/src/components/data-display/avatar/index.scss +20 -2
  20. package/src/components/data-display/badge/badge.api.json +30 -48
  21. package/src/components/data-display/badge/index.scss +13 -0
  22. package/src/components/data-display/card/card.api.json +21 -23
  23. package/src/components/data-display/card/index.scss +19 -4
  24. package/src/components/data-display/data-list/data-list.api.json +9 -4
  25. package/src/components/data-display/data-list/index.scss +28 -11
  26. package/src/components/data-display/icon/icon.api.json +11 -22
  27. package/src/components/data-display/icon/index.scss +9 -4
  28. package/src/components/data-display/image/image.api.json +40 -26
  29. package/src/components/data-display/image/image.docs.json +1 -1
  30. package/src/components/data-display/image/index.scss +15 -1
  31. package/src/components/data-display/stat/index.scss +13 -1
  32. package/src/components/data-display/stat/stat.api.json +45 -7
  33. package/src/components/data-display/status/index.scss +8 -0
  34. package/src/components/data-display/status/status.api.json +10 -6
  35. package/src/components/data-display/table/index.scss +20 -6
  36. package/src/components/data-display/table/table.api.json +11 -5
  37. package/src/components/data-display/tag/index.scss +28 -3
  38. package/src/components/data-display/tag/tag.api.json +48 -22
  39. package/src/components/disclosure/accordion/accordion.api.json +7 -3
  40. package/src/components/disclosure/accordion/index.scss +8 -2
  41. package/src/components/disclosure/disclosure/disclosure.api.json +15 -8
  42. package/src/components/disclosure/disclosure/index.scss +21 -6
  43. package/src/components/feedback/alert/alert.api.json +40 -65
  44. package/src/components/feedback/alert/index.scss +26 -7
  45. package/src/components/feedback/progress/index.scss +16 -3
  46. package/src/components/feedback/progress/progress.api.json +13 -8
  47. package/src/components/feedback/progress-circle/index.scss +15 -2
  48. package/src/components/feedback/progress-circle/progress-circle.api.json +17 -8
  49. package/src/components/feedback/skeleton/index.scss +9 -2
  50. package/src/components/feedback/skeleton/skeleton.api.json +8 -4
  51. package/src/components/feedback/spinner/index.scss +14 -1
  52. package/src/components/feedback/spinner/spinner.api.json +27 -13
  53. package/src/components/feedback/toast/index.scss +39 -15
  54. package/src/components/feedback/toast/toast.api.json +39 -13
  55. package/src/components/forms/checkbox/checkbox.api.json +22 -11
  56. package/src/components/forms/checkbox/index.scss +27 -9
  57. package/src/components/forms/checkbox-group/checkbox-group.api.json +33 -14
  58. package/src/components/forms/checkbox-group/index.scss +22 -5
  59. package/src/components/forms/field/field.api.json +5 -3
  60. package/src/components/forms/field/index.scss +4 -0
  61. package/src/components/forms/fieldset/fieldset.api.json +29 -10
  62. package/src/components/forms/fieldset/index.scss +21 -4
  63. package/src/components/forms/form/form.api.json +15 -11
  64. package/src/components/forms/form/index.scss +10 -0
  65. package/src/components/forms/form-error/form-error.api.json +7 -3
  66. package/src/components/forms/form-error/index.scss +7 -1
  67. package/src/components/forms/form-helper/form-helper.api.json +7 -3
  68. package/src/components/forms/form-helper/index.scss +7 -1
  69. package/src/components/forms/input/index.scss +43 -12
  70. package/src/components/forms/input/input.api.json +36 -38
  71. package/src/components/forms/label/index.scss +14 -5
  72. package/src/components/forms/label/label.api.json +9 -4
  73. package/src/components/forms/number-input/index.scss +40 -15
  74. package/src/components/forms/number-input/number-input-visual.png +0 -0
  75. package/src/components/forms/number-input/number-input.api.json +48 -19
  76. package/src/components/forms/number-input/number-input.docs.json +49 -0
  77. package/src/components/forms/password-input/index.scss +44 -13
  78. package/src/components/forms/password-input/password-input-visual.png +0 -0
  79. package/src/components/forms/password-input/password-input.api.json +56 -25
  80. package/src/components/forms/password-input/password-input.docs.json +40 -0
  81. package/src/components/forms/radio/index.scss +27 -10
  82. package/src/components/forms/radio/radio.api.json +20 -10
  83. package/src/components/forms/radio-group/index.scss +22 -5
  84. package/src/components/forms/radio-group/radio-group.api.json +33 -14
  85. package/src/components/forms/search-input/index.scss +42 -11
  86. package/src/components/forms/search-input/search-input-visual.png +0 -0
  87. package/src/components/forms/search-input/search-input.api.json +66 -25
  88. package/src/components/forms/search-input/search-input.docs.json +36 -0
  89. package/src/components/forms/select/index.scss +40 -11
  90. package/src/components/forms/select/select.api.json +35 -17
  91. package/src/components/forms/slider/index.scss +28 -10
  92. package/src/components/forms/slider/slider.api.json +35 -20
  93. package/src/components/forms/textarea/index.scss +40 -9
  94. package/src/components/forms/textarea/textarea.api.json +40 -20
  95. package/src/components/forms/toggle/index.scss +18 -6
  96. package/src/components/forms/toggle/toggle.api.json +17 -8
  97. package/src/components/navigation/breadcrumb/breadcrumb.api.json +25 -11
  98. package/src/components/navigation/breadcrumb/index.scss +17 -4
  99. package/src/components/navigation/dropdown-menu/dropdown-menu-visual.png +0 -0
  100. package/src/components/navigation/dropdown-menu/dropdown-menu.api.json +7 -3
  101. package/src/components/navigation/dropdown-menu/dropdown-menu.docs.json +18 -0
  102. package/src/components/navigation/dropdown-menu/index.scss +15 -5
  103. package/src/components/navigation/menu/index.scss +41 -17
  104. package/src/components/navigation/menu/menu.api.json +24 -13
  105. package/src/components/navigation/nav/index.scss +30 -11
  106. package/src/components/navigation/nav/nav.api.json +42 -18
  107. package/src/components/navigation/pagination/index.scss +21 -5
  108. package/src/components/navigation/pagination/pagination.api.json +21 -12
  109. package/src/components/navigation/tabs/index.scss +43 -15
  110. package/src/components/navigation/tabs/tabs.api.json +49 -22
  111. package/src/components/overlays/dialog/dialog.api.json +9 -4
  112. package/src/components/overlays/dialog/index.scss +12 -3
  113. package/src/components/overlays/drawer/drawer-visual.png +0 -0
  114. package/src/components/overlays/drawer/drawer.api.json +26 -13
  115. package/src/components/overlays/drawer/index.scss +51 -26
  116. package/src/components/overlays/modal/index.scss +18 -3
  117. package/src/components/overlays/modal/modal.api.json +22 -12
  118. package/src/components/overlays/overlay/index.scss +17 -5
  119. package/src/components/overlays/overlay/overlay.api.json +11 -6
  120. package/src/components/overlays/popover/index.scss +26 -9
  121. package/src/components/overlays/popover/popover.api.json +18 -9
  122. package/src/components/overlays/tooltip/index.scss +17 -2
  123. package/src/components/overlays/tooltip/tooltip.api.json +19 -10
  124. package/src/components/typography/blockquote/blockquote.api.json +34 -7
  125. package/src/components/typography/blockquote/index.scss +17 -4
  126. package/src/components/typography/code/code.api.json +26 -11
  127. package/src/components/typography/code/index.scss +23 -6
  128. package/src/components/typography/code-block/code-block-visual.png +0 -0
  129. package/src/components/typography/code-block/code-block.api.json +31 -12
  130. package/src/components/typography/code-block/code-block.docs.json +18 -0
  131. package/src/components/typography/code-block/index.scss +26 -7
  132. package/src/components/typography/heading/heading.api.json +37 -18
  133. package/src/components/typography/heading/index.scss +18 -0
  134. package/src/components/typography/kbd/index.scss +14 -2
  135. package/src/components/typography/kbd/kbd.api.json +41 -8
  136. package/src/components/typography/link/index.scss +16 -3
  137. package/src/components/typography/link/link.api.json +17 -9
  138. package/src/components/typography/list/index.scss +7 -0
  139. package/src/components/typography/list/list.api.json +12 -7
  140. package/src/components/typography/list/list.docs.json +3 -0
  141. package/src/components/typography/mark/index.scss +7 -0
  142. package/src/components/typography/mark/mark.api.json +26 -5
  143. package/src/config/tokens/_variables.scss +44 -0
  144. package/src/config/tokens/motion/index.scss +2 -0
  145. package/src/config/tokens/zindex/index.scss +1 -0
  146. package/src/debug/grid-overlay.scss +4 -3
  147. package/src/layout/app-shell/app-shell-visual.png +0 -0
  148. package/src/layout/app-shell/app-shell.api.json +6 -26
  149. package/src/layout/app-shell/app-shell.docs.json +18 -0
  150. package/src/layout/app-shell/index.scss +4 -0
  151. package/src/layout/aspect-ratio/aspect-ratio.api.json +2 -7
  152. package/src/layout/aspect-ratio/index.scss +4 -0
  153. package/src/layout/box/box.api.json +25 -8
  154. package/src/layout/box/index.scss +26 -8
  155. package/src/layout/center/center.api.json +1 -0
  156. package/src/layout/center/index.scss +3 -0
  157. package/src/layout/column/column.api.json +2 -1
  158. package/src/layout/column/index.scss +15 -6
  159. package/src/layout/container/container.api.json +4 -3
  160. package/src/layout/container/index.scss +13 -6
  161. package/src/layout/content/content.api.json +7 -3
  162. package/src/layout/content/index.scss +10 -1
  163. package/src/layout/footer/footer-visual.png +0 -0
  164. package/src/layout/footer/footer.api.json +11 -5
  165. package/src/layout/footer/footer.docs.json +9 -0
  166. package/src/layout/footer/index.scss +21 -5
  167. package/src/layout/grid/grid.api.json +2 -1
  168. package/src/layout/grid/index.scss +6 -1
  169. package/src/layout/main/index.scss +8 -2
  170. package/src/layout/main/main.api.json +1 -0
  171. package/src/layout/nav-rail/index.scss +14 -3
  172. package/src/layout/nav-rail/nav-rail.api.json +11 -5
  173. package/src/layout/page-header/index.scss +21 -6
  174. package/src/layout/page-header/page-header.api.json +9 -4
  175. package/src/layout/row/index.scss +13 -5
  176. package/src/layout/row/row.api.json +2 -1
  177. package/src/layout/sidebar/index.scss +18 -8
  178. package/src/layout/sidebar/sidebar.api.json +1 -0
  179. package/src/layout/sidebar/sidebar.docs.json +2 -1
  180. package/src/layout/sidebar-nav/index.scss +56 -18
  181. package/src/layout/sidebar-nav/sidebar-nav.api.json +90 -11
  182. package/src/layout/topbar/index.scss +20 -5
  183. package/src/layout/topbar/topbar.api.json +11 -5
@@ -1,4 +1,5 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "field",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -7,13 +8,14 @@
7
8
  }
8
9
  },
9
10
  "elements": {
10
- "label": {},
11
- "control": {}
11
+ "control": {},
12
+ "label": {}
12
13
  },
13
14
  "cssVars": [
14
15
  {
15
16
  "name": "--ui-field-gap",
16
- "default": "0"
17
+ "default": "0",
18
+ "description": "Gap between children"
17
19
  }
18
20
  ]
19
21
  }
@@ -1,10 +1,13 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component field
3
+ // @element div
2
4
 
3
5
  // Field - form field wrapper
4
6
  // Combines label, control, helper text, and error message
5
7
 
6
8
  @layer components.tokens {
7
9
  .field {
10
+ // @desc Gap between children
8
11
  --_gap: var(--ui-field-gap, 0);
9
12
  }
10
13
  }
@@ -23,6 +26,7 @@
23
26
  }
24
27
 
25
28
  // Horizontal layout variant
29
+ // @modifier boolean horizontal
26
30
  .field--horizontal {
27
31
  flex-direction: row;
28
32
  flex-wrap: wrap;
@@ -1,11 +1,12 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "fieldset",
3
4
  "element": "fieldset",
4
5
  "modifiers": {
5
- "bordered": {
6
+ "compact": {
6
7
  "type": "boolean"
7
8
  },
8
- "compact": {
9
+ "bordered": {
9
10
  "type": "boolean"
10
11
  }
11
12
  },
@@ -15,35 +16,53 @@
15
16
  "cssVars": [
16
17
  {
17
18
  "name": "--ui-fieldset-spacing",
18
- "default": "var(--ui-space-2)"
19
+ "default": "var(--ui-space-2)",
20
+ "description": "Spacing"
19
21
  },
20
22
  {
21
23
  "name": "--ui-fieldset-border-color",
22
- "default": "var(--ui-color-border)"
24
+ "default": "var(--ui-color-border)",
25
+ "description": "Border color"
23
26
  },
24
27
  {
25
28
  "name": "--ui-fieldset-border-width",
26
- "default": "var(--ui-border-width-sm)"
29
+ "default": "var(--ui-border-width-sm)",
30
+ "description": "Border thickness"
27
31
  },
28
32
  {
29
33
  "name": "--ui-fieldset-border-radius",
30
- "default": "var(--ui-radius-md)"
34
+ "default": "var(--ui-radius-md)",
35
+ "description": "Border radius"
31
36
  },
32
37
  {
33
38
  "name": "--ui-fieldset-padding",
34
- "default": "var(--ui-space-2)"
39
+ "default": "var(--ui-space-2)",
40
+ "description": "Padding on all sides"
35
41
  },
36
42
  {
37
43
  "name": "--ui-fieldset-legend-size",
38
- "default": "var(--ui-font-size-sm)"
44
+ "default": "var(--ui-font-size-sm)",
45
+ "description": "Legend size"
39
46
  },
40
47
  {
41
48
  "name": "--ui-fieldset-legend-weight",
42
- "default": "var(--ui-weight-medium)"
49
+ "default": "var(--ui-weight-medium)",
50
+ "description": "Legend weight"
43
51
  },
44
52
  {
45
53
  "name": "--ui-fieldset-legend-color",
46
- "default": "var(--ui-color-text)"
54
+ "default": "var(--ui-color-text)",
55
+ "description": "Legend color"
56
+ },
57
+ {
58
+ "name": "--ui-fieldset-spacing-compact",
59
+ "default": "var(--ui-space-1)",
60
+ "description": "Spacing compact"
61
+ },
62
+ {
63
+ "name": "--ui-fieldset-padding-compact",
64
+ "default": "var(--ui-space-1)",
65
+ "description": "Padding compact"
47
66
  }
48
67
  ]
49
68
  }
@@ -1,22 +1,38 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component fieldset
3
+ // @element fieldset
2
4
 
3
5
  // Fieldset - groups related form fields
4
6
  // Resets native fieldset chrome, provides consistent spacing and optional border
5
7
 
6
8
  @layer components.tokens {
7
9
  .fieldset {
10
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1, #{t.$leading-tight-sm}));
11
+ --_space-half: var(--ui-space-half, #{t.$space-0});
12
+ --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
13
+ // @desc Spacing
8
14
  --_spacing: var(--ui-fieldset-spacing, var(--ui-space-2, #{t.$space-2}));
15
+ // @desc Border color
9
16
  --_border-color: var(--ui-fieldset-border-color, var(--ui-color-border, #{t.$color-border}));
17
+ // @desc Border thickness
10
18
  --_border-width: var(--ui-fieldset-border-width, var(--ui-border-width-sm, #{t.$border-width-sm}));
19
+ // @desc Border radius
11
20
  --_border-radius: var(--ui-fieldset-border-radius, var(--ui-radius-md, #{t.$radius-md}));
21
+ // @desc Padding on all sides
12
22
  --_padding: var(--ui-fieldset-padding, var(--ui-space-2, #{t.$space-2}));
23
+ // @desc Legend size
13
24
  --_legend-size: var(--ui-fieldset-legend-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
25
+ // @desc Legend weight
14
26
  --_legend-weight: var(--ui-fieldset-legend-weight, var(--ui-weight-medium, #{t.$weight-medium}));
27
+ // @desc Legend color
15
28
  --_legend-color: var(--ui-fieldset-legend-color, var(--ui-color-text, #{t.$color-text}));
16
29
  }
17
30
 
31
+ // @modifier boolean compact
18
32
  .fieldset--compact {
33
+ // @desc Spacing compact
19
34
  --_spacing: var(--ui-fieldset-spacing-compact, var(--ui-space-1, #{t.$space-1}));
35
+ // @desc Padding compact
20
36
  --_padding: var(--ui-fieldset-padding-compact, var(--ui-space-1, #{t.$space-1}));
21
37
  }
22
38
  }
@@ -40,12 +56,13 @@
40
56
 
41
57
  font-size: var(--_legend-size);
42
58
  font-weight: var(--_legend-weight);
43
- line-height: var(--ui-leading-tight-sm, var(--ui-row-1, #{t.$leading-tight-sm}));
59
+ line-height: var(--_leading-tight-sm);
44
60
  color: var(--_legend-color);
45
61
  }
46
62
 
47
63
  // Bordered variant - visible border wrapping the group
48
64
  // Legend absorbs the top border; compensate bottom border to keep grid rhythm
65
+ // @modifier boolean bordered
49
66
  .fieldset--bordered {
50
67
  padding: var(--_padding);
51
68
  padding-block-end: calc(var(--_padding) - var(--_border-width));
@@ -56,14 +73,14 @@
56
73
 
57
74
  .fieldset--bordered > .fieldset__legend {
58
75
  inline-size: auto;
59
- padding-inline: var(--ui-space-half, #{t.$space-0});
60
- margin-inline-start: calc(-1 * var(--ui-space-half, #{t.$space-0}));
76
+ padding-inline: var(--_space-half);
77
+ margin-inline-start: calc(-1 * var(--_space-half));
61
78
  }
62
79
 
63
80
  // Disabled state - fieldset[disabled] natively disables children
64
81
  .fieldset:disabled,
65
82
  .fieldset[aria-disabled='true'] {
66
- opacity: var(--ui-opacity-disabled, 0.5);
83
+ opacity: var(--_opacity-disabled);
67
84
  cursor: not-allowed;
68
85
  }
69
86
  }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "form",
3
4
  "element": "form",
4
5
  "modifiers": {
@@ -13,26 +14,29 @@
13
14
  "section": {},
14
15
  "actions": {}
15
16
  },
17
+ "relatedComponents": [
18
+ {
19
+ "name": "form-error"
20
+ },
21
+ {
22
+ "name": "form-helper"
23
+ }
24
+ ],
16
25
  "cssVars": [
17
26
  {
18
27
  "name": "--ui-form-spacing",
19
- "default": "var(--ui-space-3)"
28
+ "default": "var(--ui-space-3)",
29
+ "description": "Spacing"
20
30
  },
21
31
  {
22
32
  "name": "--ui-form-actions-gap",
23
- "default": "var(--ui-space-2)"
33
+ "default": "var(--ui-space-2)",
34
+ "description": "Actions gap"
24
35
  },
25
36
  {
26
37
  "name": "--ui-form-section-spacing",
27
- "default": "var(--ui-space-4)"
28
- },
29
- {
30
- "name": "--ui-form-spacing-compact",
31
- "default": "var(--ui-space-2)"
32
- },
33
- {
34
- "name": "--ui-form-section-spacing-compact",
35
- "default": "var(--ui-space-3)"
38
+ "default": "var(--ui-space-4)",
39
+ "description": "Section spacing"
36
40
  }
37
41
  ]
38
42
  }
@@ -1,12 +1,18 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component form
3
+ // @element form
4
+ // @related form-error, form-helper
2
5
 
3
6
  // Form - layout container for form fields
4
7
  // Provides consistent vertical spacing between fields, sections, and actions
5
8
 
6
9
  @layer components.tokens {
7
10
  .form {
11
+ // @desc Spacing
8
12
  --_spacing: var(--ui-form-spacing, var(--ui-space-3, calc(#{t.$unit} * 3)));
13
+ // @desc Actions gap
9
14
  --_actions-gap: var(--ui-form-actions-gap, var(--ui-space-2, calc(#{t.$unit} * 2)));
15
+ // @desc Section spacing
10
16
  --_section-spacing: var(--ui-form-section-spacing, var(--ui-space-4, calc(#{t.$unit} * 4)));
11
17
  }
12
18
  }
@@ -44,12 +50,16 @@
44
50
  }
45
51
 
46
52
  // Compact variant - tighter spacing
53
+ // @modifier boolean compact
47
54
  .form--compact {
55
+ // @desc Spacing compact
48
56
  --_spacing: var(--ui-form-spacing-compact, var(--ui-space-2, calc(#{t.$unit} * 2)));
57
+ // @desc Section spacing compact
49
58
  --_section-spacing: var(--ui-form-section-spacing-compact, var(--ui-space-3, calc(#{t.$unit} * 3)));
50
59
  }
51
60
 
52
61
  // Inline variant - horizontal layout for short forms (search, filters)
62
+ // @modifier boolean inline
53
63
  .form--inline {
54
64
  flex-direction: row;
55
65
  flex-wrap: wrap;
@@ -1,4 +1,5 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "form-error",
3
4
  "element": "div",
4
5
  "modifiers": {},
@@ -8,15 +9,18 @@
8
9
  "cssVars": [
9
10
  {
10
11
  "name": "--ui-form-error-color",
11
- "default": "var(--ui-color-danger)"
12
+ "default": "var(--ui-color-danger)",
13
+ "description": "Text color"
12
14
  },
13
15
  {
14
16
  "name": "--ui-form-error-size",
15
- "default": "var(--ui-font-size-sm)"
17
+ "default": "var(--ui-font-size-sm)",
18
+ "description": "Overall size"
16
19
  },
17
20
  {
18
21
  "name": "--ui-form-error-gap",
19
- "default": "0"
22
+ "default": "0",
23
+ "description": "Gap between children"
20
24
  }
21
25
  ]
22
26
  }
@@ -1,12 +1,18 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component form-error
3
+ // @element div
2
4
 
3
5
  // Form Error - validation error message for form fields
4
6
  // Displays error text with danger color
5
7
 
6
8
  @layer components.tokens {
7
9
  .form-error {
10
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1));
11
+ // @desc Text color
8
12
  --_color: var(--ui-form-error-color, var(--ui-color-danger));
13
+ // @desc Overall size
9
14
  --_size: var(--ui-form-error-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
15
+ // @desc Gap between children
10
16
  --_gap: var(--ui-form-error-gap, 0);
11
17
  }
12
18
  }
@@ -20,7 +26,7 @@
20
26
  margin-block-start: var(--_gap);
21
27
 
22
28
  font-size: var(--_size);
23
- line-height: var(--ui-leading-tight-sm, var(--ui-row-1));
29
+ line-height: var(--_leading-tight-sm);
24
30
  color: var(--_color);
25
31
  }
26
32
 
@@ -1,19 +1,23 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "form-helper",
3
4
  "element": "div",
4
5
  "modifiers": {},
5
6
  "cssVars": [
6
7
  {
7
8
  "name": "--ui-form-helper-color",
8
- "default": "var(--ui-color-text-muted)"
9
+ "default": "var(--ui-color-text-muted)",
10
+ "description": "Text color"
9
11
  },
10
12
  {
11
13
  "name": "--ui-form-helper-size",
12
- "default": "var(--ui-font-size-sm)"
14
+ "default": "var(--ui-font-size-sm)",
15
+ "description": "Overall size"
13
16
  },
14
17
  {
15
18
  "name": "--ui-form-helper-gap",
16
- "default": "0"
19
+ "default": "0",
20
+ "description": "Gap between children"
17
21
  }
18
22
  ]
19
23
  }
@@ -1,12 +1,18 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component form-helper
3
+ // @element div
2
4
 
3
5
  // Form Helper - helper text for form fields
4
6
  // Displays muted text below form controls
5
7
 
6
8
  @layer components.tokens {
7
9
  .form-helper {
10
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1));
11
+ // @desc Text color
8
12
  --_color: var(--ui-form-helper-color, var(--ui-color-text-muted));
13
+ // @desc Overall size
9
14
  --_size: var(--ui-form-helper-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
15
+ // @desc Gap between children
10
16
  --_gap: var(--ui-form-helper-gap, 0);
11
17
  }
12
18
  }
@@ -18,7 +24,7 @@
18
24
  margin-block-start: var(--_gap);
19
25
 
20
26
  font-size: var(--_size);
21
- line-height: var(--ui-leading-tight-sm, var(--ui-row-1));
27
+ line-height: var(--_leading-tight-sm);
22
28
  color: var(--_color);
23
29
  }
24
30
  }
@@ -2,34 +2,60 @@
2
2
 
3
3
  // @component input
4
4
  // @element input
5
+ // @related input-group
5
6
 
6
7
  @layer components.tokens {
7
8
  .input {
9
+ --_border-width-sm: var(--ui-border-width-sm, #{t.$border-width-sm});
10
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
11
+ --_ease-default: var(--ui-ease-default, ease);
12
+ --_color-border-strong: var(--ui-color-border-strong, #{t.$color-border-strong});
13
+ --_border-width-md: var(--ui-border-width-md, #{t.$border-width-md});
14
+ --_color-focus: var(--ui-color-focus, #{t.$color-focus});
15
+ --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
16
+ --_color-bg-subtle: var(--ui-color-bg-subtle, #{t.$color-bg-subtle});
17
+ --_space-half: var(--ui-space-half, #{t.$space-0});
18
+ --_color-text-muted: var(--ui-color-text-muted, #{t.$color-text-muted});
19
+ // @desc Overall height
8
20
  --_height: var(--ui-input-height, var(--ui-row-2, #{t.$row-2}));
21
+ // @desc Horizontal padding
9
22
  --_padding-x: var(--ui-input-padding-x, var(--ui-space-1, #{t.$space-1}));
23
+ // @desc Font size
10
24
  --_font-size: var(--ui-input-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
25
+ // @desc Corner radius
11
26
  --_radius: var(--ui-input-radius, var(--ui-radius-md, #{t.$radius-md}));
27
+ // @desc Background color
12
28
  --_bg: var(--ui-input-bg, var(--ui-color-bg, #{t.$color-bg}));
29
+ // @desc Border color
13
30
  --_border-color: var(--ui-input-border-color, var(--ui-color-border-strong, #{t.$color-border-strong}));
31
+ // @desc Border color focus
14
32
  --_border-color-focus: var(--ui-input-border-color-focus, var(--ui-color-primary, #{t.$color-primary}));
33
+ // @desc Text color
15
34
  --_color: var(--ui-input-color, var(--ui-color-text, #{t.$color-text}));
35
+ // @desc Placeholder
16
36
  --_placeholder: var(--ui-input-placeholder, var(--ui-color-text-muted, #{t.$color-text-muted}));
17
37
  }
18
38
 
19
39
  // @modifier size
20
40
  .input--sm {
41
+ // @desc Overall height at small size
21
42
  --_height: var(--ui-input-height-sm, calc(#{t.$row} * 1.5));
43
+ // @desc Font size at small size
22
44
  --_font-size: var(--ui-input-font-size-sm, var(--ui-font-size-xs, #{t.$font-size-xs}));
23
45
  }
24
46
 
25
47
  .input--lg {
48
+ // @desc Overall height at large size
26
49
  --_height: var(--ui-input-height-lg, calc(#{t.$row} * 2.5));
50
+ // @desc Horizontal padding at large size
27
51
  --_padding-x: var(--ui-input-padding-x-lg, var(--ui-space-2, #{t.$space-2}));
52
+ // @desc Font size at large size
28
53
  --_font-size: var(--ui-input-font-size-lg, var(--ui-font-size-md, #{t.$font-size-md}));
29
54
  }
30
55
 
31
56
  // @modifier variant
32
57
  .input--filled {
58
+ // @desc Filled bg
33
59
  --_bg: var(--ui-input-filled-bg, var(--ui-color-bg-muted, #{t.$color-bg-muted}));
34
60
  --_border-color: transparent;
35
61
  }
@@ -41,12 +67,16 @@
41
67
 
42
68
  // @modifier state
43
69
  .input--error {
70
+ // @desc Error border
44
71
  --_border-color: var(--ui-input-error-border, var(--ui-color-danger, #{t.$color-danger}));
72
+ // @desc Error border
45
73
  --_border-color-focus: var(--ui-input-error-border, var(--ui-color-danger, #{t.$color-danger}));
46
74
  }
47
75
 
48
76
  .input--success {
77
+ // @desc Success border
49
78
  --_border-color: var(--ui-input-success-border, var(--ui-color-success, #{t.$color-success}));
79
+ // @desc Success border
50
80
  --_border-color-focus: var(--ui-input-success-border, var(--ui-color-success, #{t.$color-success}));
51
81
  }
52
82
  }
@@ -65,41 +95,42 @@
65
95
  color: var(--_color);
66
96
 
67
97
  background: var(--_bg);
68
- border: var(--ui-border-width-sm, #{t.$border-width-sm}) solid var(--_border-color);
98
+ border: var(--_border-width-sm) solid var(--_border-color);
69
99
  border-radius: var(--_radius);
70
100
 
71
101
  transition:
72
- border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease),
73
- box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
102
+ border-color var(--_duration-fast) var(--_ease-default),
103
+ box-shadow var(--_duration-fast) var(--_ease-default);
74
104
 
75
105
  &::placeholder {
76
106
  color: var(--_placeholder);
77
107
  }
78
108
 
79
109
  &:hover:not(:disabled, :focus-visible) {
80
- border-color: var(--ui-color-border-strong, #{t.$color-border-strong});
110
+ border-color: var(--_color-border-strong);
81
111
  }
82
112
 
83
113
  &:focus-visible,
84
114
  &--focus {
85
115
  border-color: var(--_border-color-focus);
86
- outline: var(--ui-border-width-md, #{t.$border-width-md}) solid transparent;
87
- outline-offset: var(--ui-border-width-sm, #{t.$border-width-sm});
116
+ outline: var(--_border-width-md) solid transparent;
117
+ outline-offset: var(--_border-width-sm);
88
118
 
89
- box-shadow: 0 0 0 var(--ui-border-width-md, #{t.$border-width-md}) var(--ui-color-focus, #{t.$color-focus});
119
+ box-shadow: 0 0 0 var(--_border-width-md) var(--_color-focus);
90
120
  }
91
121
 
92
122
  &:disabled,
93
123
  &--disabled {
94
- opacity: var(--ui-opacity-disabled, 0.5);
124
+ opacity: var(--_opacity-disabled);
95
125
  cursor: not-allowed;
96
126
  }
97
127
 
98
128
  &:read-only {
99
- background: var(--ui-color-bg-subtle, #{t.$color-bg-subtle});
129
+ background: var(--_color-bg-subtle);
100
130
  }
101
131
 
102
132
  // Full width
133
+ // @modifier boolean block
103
134
  &--block {
104
135
  inline-size: 100%;
105
136
  }
@@ -117,12 +148,12 @@
117
148
 
118
149
  // With prefix
119
150
  &--has-prefix .input {
120
- padding-inline-start: calc(var(--_height) + var(--ui-space-half, #{t.$space-0}));
151
+ padding-inline-start: calc(var(--_height) + var(--_space-half));
121
152
  }
122
153
 
123
154
  // With suffix
124
155
  &--has-suffix .input {
125
- padding-inline-end: calc(var(--_height) + var(--ui-space-half, #{t.$space-0}));
156
+ padding-inline-end: calc(var(--_height) + var(--_space-half));
126
157
  }
127
158
  }
128
159
 
@@ -135,7 +166,7 @@
135
166
 
136
167
  inline-size: var(--_height, #{t.$row-2});
137
168
 
138
- color: var(--ui-color-text-muted, #{t.$color-text-muted});
169
+ color: var(--_color-text-muted);
139
170
 
140
171
  pointer-events: none;
141
172