@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": "input",
3
4
  "element": "input",
4
5
  "modifiers": {
@@ -18,99 +19,96 @@
18
19
  "relatedComponents": [
19
20
  {
20
21
  "name": "input-group",
21
- "modifiers": {
22
- "has-prefix": {
23
- "type": "boolean"
24
- },
25
- "has-suffix": {
26
- "type": "boolean"
27
- }
28
- },
29
22
  "elements": {
30
- "addon": {
31
- "modifiers": {
32
- "start": {
33
- "type": "boolean"
34
- },
35
- "end": {
36
- "type": "boolean"
37
- },
38
- "interactive": {
39
- "type": "boolean"
40
- }
41
- }
42
- }
23
+ "addon": {}
43
24
  }
44
25
  }
45
26
  ],
46
27
  "cssVars": [
47
28
  {
48
29
  "name": "--ui-input-height",
49
- "default": "var(--ui-row-2)"
30
+ "default": "var(--ui-row-2)",
31
+ "description": "Overall height"
50
32
  },
51
33
  {
52
34
  "name": "--ui-input-padding-x",
53
- "default": "var(--ui-space-1)"
35
+ "default": "var(--ui-space-1)",
36
+ "description": "Horizontal padding"
54
37
  },
55
38
  {
56
39
  "name": "--ui-input-font-size",
57
- "default": "var(--ui-font-size-sm)"
40
+ "default": "var(--ui-font-size-sm)",
41
+ "description": "Font size"
58
42
  },
59
43
  {
60
44
  "name": "--ui-input-radius",
61
- "default": "var(--ui-radius-md)"
45
+ "default": "var(--ui-radius-md)",
46
+ "description": "Corner radius"
62
47
  },
63
48
  {
64
49
  "name": "--ui-input-bg",
65
- "default": "var(--ui-color-bg)"
50
+ "default": "var(--ui-color-bg)",
51
+ "description": "Background color"
66
52
  },
67
53
  {
68
54
  "name": "--ui-input-border-color",
69
- "default": "var(--ui-color-border-strong)"
55
+ "default": "var(--ui-color-border-strong)",
56
+ "description": "Border color"
70
57
  },
71
58
  {
72
59
  "name": "--ui-input-border-color-focus",
73
- "default": "var(--ui-color-primary)"
60
+ "default": "var(--ui-color-primary)",
61
+ "description": "Border color focus"
74
62
  },
75
63
  {
76
64
  "name": "--ui-input-color",
77
- "default": "var(--ui-color-text)"
65
+ "default": "var(--ui-color-text)",
66
+ "description": "Text color"
78
67
  },
79
68
  {
80
69
  "name": "--ui-input-placeholder",
81
- "default": "var(--ui-color-text-muted)"
70
+ "default": "var(--ui-color-text-muted)",
71
+ "description": "Placeholder"
82
72
  },
83
73
  {
84
74
  "name": "--ui-input-height-sm",
85
- "default": "calc(var(--ui-row) * 1.5"
75
+ "default": "calc(var(--ui-row) * 1.5)",
76
+ "description": "Overall height at small size"
86
77
  },
87
78
  {
88
79
  "name": "--ui-input-font-size-sm",
89
- "default": "var(--ui-font-size-xs)"
80
+ "default": "var(--ui-font-size-xs)",
81
+ "description": "Font size at small size"
90
82
  },
91
83
  {
92
84
  "name": "--ui-input-height-lg",
93
- "default": "calc(var(--ui-row) * 2.5"
85
+ "default": "calc(var(--ui-row) * 2.5)",
86
+ "description": "Overall height at large size"
94
87
  },
95
88
  {
96
89
  "name": "--ui-input-padding-x-lg",
97
- "default": "var(--ui-space-2)"
90
+ "default": "var(--ui-space-2)",
91
+ "description": "Horizontal padding at large size"
98
92
  },
99
93
  {
100
94
  "name": "--ui-input-font-size-lg",
101
- "default": "var(--ui-font-size-md)"
95
+ "default": "var(--ui-font-size-md)",
96
+ "description": "Font size at large size"
102
97
  },
103
98
  {
104
99
  "name": "--ui-input-filled-bg",
105
- "default": "var(--ui-color-bg-muted)"
100
+ "default": "var(--ui-color-bg-muted)",
101
+ "description": "Filled bg"
106
102
  },
107
103
  {
108
104
  "name": "--ui-input-error-border",
109
- "default": "var(--ui-color-danger)"
105
+ "default": "var(--ui-color-danger)",
106
+ "description": "Error border"
110
107
  },
111
108
  {
112
109
  "name": "--ui-input-success-border",
113
- "default": "var(--ui-color-success)"
110
+ "default": "var(--ui-color-success)",
111
+ "description": "Success border"
114
112
  }
115
113
  ]
116
114
  }
@@ -5,13 +5,22 @@
5
5
 
6
6
  @layer components.tokens {
7
7
  .label {
8
+ --_weight-medium: var(--ui-weight-medium, #{t.$weight-medium});
9
+ --_leading-tight-sm: var(--ui-leading-tight-sm, var(--ui-row-1));
10
+ --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
11
+ --_weight-normal: var(--ui-weight-normal, #{t.$weight-normal});
12
+ --_color-text-muted: var(--ui-color-text-muted, #{t.$color-text-muted});
13
+ // @desc Font size
8
14
  --_font-size: var(--ui-label-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
15
+ // @desc Text color
9
16
  --_color: var(--ui-label-color, var(--ui-color-text, #{t.$color-text}));
17
+ // @desc Required color
10
18
  --_required-color: var(--ui-label-required-color, var(--ui-color-danger, #{t.$color-danger}));
11
19
  }
12
20
 
13
21
  // @modifier size
14
22
  .label--lg {
23
+ // @desc Font size at large size
15
24
  --_font-size: var(--ui-label-font-size-lg, var(--ui-font-size-md, #{t.$font-size-md}));
16
25
  }
17
26
  }
@@ -23,14 +32,14 @@
23
32
  gap: 0;
24
33
 
25
34
  font-size: var(--_font-size);
26
- font-weight: var(--ui-weight-medium, #{t.$weight-medium});
27
- line-height: var(--ui-leading-tight-sm, var(--ui-row-1));
35
+ font-weight: var(--_weight-medium);
36
+ line-height: var(--_leading-tight-sm);
28
37
  color: var(--_color);
29
38
 
30
39
  cursor: pointer;
31
40
 
32
41
  &[aria-disabled='true'] {
33
- opacity: var(--ui-opacity-disabled, 0.5);
42
+ opacity: var(--_opacity-disabled);
34
43
  cursor: not-allowed;
35
44
  }
36
45
  }
@@ -40,7 +49,7 @@
40
49
  }
41
50
 
42
51
  .label__optional {
43
- font-weight: var(--ui-weight-normal, #{t.$weight-normal});
44
- color: var(--ui-color-text-muted, #{t.$color-text-muted});
52
+ font-weight: var(--_weight-normal);
53
+ color: var(--_color-text-muted);
45
54
  }
46
55
  }
@@ -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": "label",
3
4
  "element": "label",
4
5
  "modifiers": {
@@ -13,19 +14,23 @@
13
14
  "cssVars": [
14
15
  {
15
16
  "name": "--ui-label-font-size",
16
- "default": "var(--ui-font-size-sm)"
17
+ "default": "var(--ui-font-size-sm)",
18
+ "description": "Font size"
17
19
  },
18
20
  {
19
21
  "name": "--ui-label-color",
20
- "default": "var(--ui-color-text)"
22
+ "default": "var(--ui-color-text)",
23
+ "description": "Text color"
21
24
  },
22
25
  {
23
26
  "name": "--ui-label-required-color",
24
- "default": "var(--ui-color-danger)"
27
+ "default": "var(--ui-color-danger)",
28
+ "description": "Required color"
25
29
  },
26
30
  {
27
31
  "name": "--ui-label-font-size-lg",
28
- "default": "var(--ui-font-size-md)"
32
+ "default": "var(--ui-font-size-md)",
33
+ "description": "Font size at large size"
29
34
  }
30
35
  ]
31
36
  }
@@ -5,28 +5,51 @@
5
5
 
6
6
  @layer components.tokens {
7
7
  .number-input {
8
+ --_border-width-sm: var(--ui-border-width-sm, #{t.$border-width-sm});
9
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
10
+ --_ease-default: var(--ui-ease-default, ease);
11
+ --_border-width-md: var(--ui-border-width-md, #{t.$border-width-md});
12
+ --_color-focus: var(--ui-color-focus, #{t.$color-focus});
13
+ --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
14
+ --_size-sm: var(--ui-size-sm, #{t.size(sm)});
15
+ // @desc Overall height
8
16
  --_height: var(--ui-number-input-height, var(--ui-row-2, #{t.$row-2}));
17
+ // @desc Horizontal padding
9
18
  --_padding-x: var(--ui-number-input-padding-x, var(--ui-space-1, #{t.$space-1}));
19
+ // @desc Font size
10
20
  --_font-size: var(--ui-number-input-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
21
+ // @desc Corner radius
11
22
  --_radius: var(--ui-number-input-radius, var(--ui-radius-md, #{t.$radius-md}));
23
+ // @desc Background color
12
24
  --_bg: var(--ui-number-input-bg, var(--ui-color-bg, #{t.$color-bg}));
25
+ // @desc Border color
13
26
  --_border-color: var(--ui-number-input-border-color, var(--ui-color-border-strong, #{t.$color-border-strong}));
27
+ // @desc Border color focus
14
28
  --_border-color-focus: var(--ui-number-input-border-color-focus, var(--ui-color-primary, #{t.$color-primary}));
29
+ // @desc Text
15
30
  --_text: var(--ui-number-input-text, var(--ui-color-text, #{t.$color-text}));
31
+ // @desc Button color
16
32
  --_button-color: var(--ui-number-input-button-color, var(--ui-color-text-muted, #{t.$color-text-muted}));
33
+ // @desc Button bg
17
34
  --_button-bg: var(--ui-number-input-button-bg, var(--ui-color-bg-muted, #{t.$color-bg-muted}));
35
+ // @desc Button hover bg
18
36
  --_button-hover-bg: var(--ui-number-input-button-hover-bg, var(--ui-color-border, #{t.$color-border}));
19
37
  }
20
38
 
21
39
  // @modifier size
22
40
  .number-input--sm {
41
+ // @desc Overall height at small size
23
42
  --_height: var(--ui-number-input-height-sm, calc(#{t.$row} * 1.5));
43
+ // @desc Font size at small size
24
44
  --_font-size: var(--ui-number-input-font-size-sm, var(--ui-font-size-xs, #{t.$font-size-xs}));
25
45
  }
26
46
 
27
47
  .number-input--lg {
48
+ // @desc Overall height at large size
28
49
  --_height: var(--ui-number-input-height-lg, calc(#{t.$row} * 2.5));
50
+ // @desc Horizontal padding at large size
29
51
  --_padding-x: var(--ui-number-input-padding-x-lg, var(--ui-space-2, #{t.$space-2}));
52
+ // @desc Font size at large size
30
53
  --_font-size: var(--ui-number-input-font-size-lg, var(--ui-font-size-md, #{t.$font-size-md}));
31
54
  }
32
55
  }
@@ -39,25 +62,27 @@
39
62
  block-size: var(--_height);
40
63
 
41
64
  background: var(--_bg);
42
- border: var(--ui-border-width-sm, #{t.$border-width-sm}) solid var(--_border-color);
65
+ border: var(--_border-width-sm) solid var(--_border-color);
43
66
  border-radius: var(--_radius);
44
67
 
45
68
  transition:
46
- border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease),
47
- box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
69
+ border-color var(--_duration-fast) var(--_ease-default),
70
+ box-shadow var(--_duration-fast) var(--_ease-default);
48
71
 
49
72
  &:focus-within {
50
73
  border-color: var(--_border-color-focus);
51
- box-shadow: 0 0 0 var(--ui-border-width-md, #{t.$border-width-md}) var(--ui-color-focus, #{t.$color-focus});
74
+ box-shadow: 0 0 0 var(--_border-width-md) var(--_color-focus);
52
75
  }
53
76
 
77
+ // @modifier boolean block
54
78
  &--block {
55
79
  inline-size: 100%;
56
80
  }
57
81
 
82
+ // @modifier boolean disabled
58
83
  &--disabled,
59
84
  &:has(.number-input__field:disabled) {
60
- opacity: var(--ui-opacity-disabled, 0.5);
85
+ opacity: var(--_opacity-disabled);
61
86
  cursor: not-allowed;
62
87
  }
63
88
  }
@@ -110,14 +135,14 @@
110
135
  border: none;
111
136
  cursor: pointer;
112
137
 
113
- transition: background var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
138
+ transition: background var(--_duration-fast) var(--_ease-default);
114
139
 
115
140
  &:hover:not(:disabled) {
116
141
  background: var(--_button-hover-bg);
117
142
  }
118
143
 
119
144
  &:focus-visible {
120
- outline: 2px solid var(--ui-color-focus, #{t.$color-focus});
145
+ outline: 2px solid var(--_color-focus);
121
146
  outline-offset: -2px;
122
147
  }
123
148
 
@@ -126,8 +151,8 @@
126
151
  }
127
152
 
128
153
  svg {
129
- block-size: var(--ui-size-sm, #{t.size(sm)});
130
- inline-size: var(--ui-size-sm, #{t.size(sm)});
154
+ block-size: var(--_size-sm);
155
+ inline-size: var(--_size-sm);
131
156
 
132
157
  fill: none;
133
158
  stroke: currentcolor;
@@ -138,16 +163,16 @@
138
163
  }
139
164
 
140
165
  .number-input__decrement {
141
- border-start-start-radius: calc(var(--_radius) - var(--ui-border-width-sm, #{t.$border-width-sm}));
142
- border-end-start-radius: calc(var(--_radius) - var(--ui-border-width-sm, #{t.$border-width-sm}));
166
+ border-start-start-radius: calc(var(--_radius) - var(--_border-width-sm));
167
+ border-end-start-radius: calc(var(--_radius) - var(--_border-width-sm));
143
168
 
144
- border-inline-end: var(--ui-border-width-sm, #{t.$border-width-sm}) solid var(--_border-color);
169
+ border-inline-end: var(--_border-width-sm) solid var(--_border-color);
145
170
  }
146
171
 
147
172
  .number-input__increment {
148
- border-start-end-radius: calc(var(--_radius) - var(--ui-border-width-sm, #{t.$border-width-sm}));
149
- border-end-end-radius: calc(var(--_radius) - var(--ui-border-width-sm, #{t.$border-width-sm}));
173
+ border-start-end-radius: calc(var(--_radius) - var(--_border-width-sm));
174
+ border-end-end-radius: calc(var(--_radius) - var(--_border-width-sm));
150
175
 
151
- border-inline-start: var(--ui-border-width-sm, #{t.$border-width-sm}) solid var(--_border-color);
176
+ border-inline-start: var(--_border-width-sm) solid var(--_border-color);
152
177
  }
153
178
  }
@@ -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": "number-input",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -20,55 +21,83 @@
20
21
  "cssVars": [
21
22
  {
22
23
  "name": "--ui-number-input-height",
23
- "default": "var(--ui-row-2)"
24
- },
25
- {
26
- "name": "--ui-number-input-height-sm",
27
- "default": "calc(var(--ui-row) * 1.5)"
28
- },
29
- {
30
- "name": "--ui-number-input-height-lg",
31
- "default": "calc(var(--ui-row) * 2.5)"
24
+ "default": "var(--ui-row-2)",
25
+ "description": "Overall height"
32
26
  },
33
27
  {
34
28
  "name": "--ui-number-input-padding-x",
35
- "default": "var(--ui-space-1)"
29
+ "default": "var(--ui-space-1)",
30
+ "description": "Horizontal padding"
36
31
  },
37
32
  {
38
33
  "name": "--ui-number-input-font-size",
39
- "default": "var(--ui-font-size-sm)"
34
+ "default": "var(--ui-font-size-sm)",
35
+ "description": "Font size"
40
36
  },
41
37
  {
42
38
  "name": "--ui-number-input-radius",
43
- "default": "var(--ui-radius-md)"
39
+ "default": "var(--ui-radius-md)",
40
+ "description": "Corner radius"
44
41
  },
45
42
  {
46
43
  "name": "--ui-number-input-bg",
47
- "default": "var(--ui-color-bg)"
44
+ "default": "var(--ui-color-bg)",
45
+ "description": "Background color"
48
46
  },
49
47
  {
50
48
  "name": "--ui-number-input-border-color",
51
- "default": "var(--ui-color-border-strong)"
49
+ "default": "var(--ui-color-border-strong)",
50
+ "description": "Border color"
52
51
  },
53
52
  {
54
53
  "name": "--ui-number-input-border-color-focus",
55
- "default": "var(--ui-color-primary)"
54
+ "default": "var(--ui-color-primary)",
55
+ "description": "Border color focus"
56
56
  },
57
57
  {
58
58
  "name": "--ui-number-input-text",
59
- "default": "var(--ui-color-text)"
59
+ "default": "var(--ui-color-text)",
60
+ "description": "Text"
60
61
  },
61
62
  {
62
63
  "name": "--ui-number-input-button-color",
63
- "default": "var(--ui-color-text-muted)"
64
+ "default": "var(--ui-color-text-muted)",
65
+ "description": "Button color"
64
66
  },
65
67
  {
66
68
  "name": "--ui-number-input-button-bg",
67
- "default": "var(--ui-color-bg-muted)"
69
+ "default": "var(--ui-color-bg-muted)",
70
+ "description": "Button bg"
68
71
  },
69
72
  {
70
73
  "name": "--ui-number-input-button-hover-bg",
71
- "default": "var(--ui-color-border)"
74
+ "default": "var(--ui-color-border)",
75
+ "description": "Button hover bg"
76
+ },
77
+ {
78
+ "name": "--ui-number-input-height-sm",
79
+ "default": "calc(var(--ui-row) * 1.5)",
80
+ "description": "Overall height at small size"
81
+ },
82
+ {
83
+ "name": "--ui-number-input-font-size-sm",
84
+ "default": "var(--ui-font-size-xs)",
85
+ "description": "Font size at small size"
86
+ },
87
+ {
88
+ "name": "--ui-number-input-height-lg",
89
+ "default": "calc(var(--ui-row) * 2.5)",
90
+ "description": "Overall height at large size"
91
+ },
92
+ {
93
+ "name": "--ui-number-input-padding-x-lg",
94
+ "default": "var(--ui-space-2)",
95
+ "description": "Horizontal padding at large size"
96
+ },
97
+ {
98
+ "name": "--ui-number-input-font-size-lg",
99
+ "default": "var(--ui-font-size-md)",
100
+ "description": "Font size at large size"
72
101
  }
73
102
  ]
74
103
  }
@@ -178,6 +178,55 @@
178
178
  }
179
179
  ]
180
180
  },
181
+ {
182
+ "title": "Block",
183
+ "description": "Full-width layout.",
184
+ "examples": [
185
+ {
186
+ "items": [
187
+ {
188
+ "tag": "div",
189
+ "class": "ui-number-input ui-number-input--block",
190
+ "children": [
191
+ {
192
+ "tag": "button",
193
+ "class": "ui-number-input__decrement",
194
+ "attrs": { "type": "button", "aria-label": "Decrease" },
195
+ "children": [
196
+ {
197
+ "tag": "svg",
198
+ "attrs": { "viewBox": "0 0 24 24" },
199
+ "children": [{ "tag": "path", "attrs": { "d": "M5 12h14" } }]
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "tag": "input",
205
+ "class": "ui-number-input__field",
206
+ "attrs": { "type": "number", "value": "5" }
207
+ },
208
+ {
209
+ "tag": "button",
210
+ "class": "ui-number-input__increment",
211
+ "attrs": { "type": "button", "aria-label": "Increase" },
212
+ "children": [
213
+ {
214
+ "tag": "svg",
215
+ "attrs": { "viewBox": "0 0 24 24" },
216
+ "children": [
217
+ { "tag": "path", "attrs": { "d": "M12 5v14" } },
218
+ { "tag": "path", "attrs": { "d": "M5 12h14" } }
219
+ ]
220
+ }
221
+ ]
222
+ }
223
+ ]
224
+ }
225
+ ],
226
+ "code": "<div class=\"ui-number-input ui-number-input--block\">...</div>"
227
+ }
228
+ ]
229
+ },
181
230
  {
182
231
  "title": "Disabled",
183
232
  "examples": [
@@ -5,39 +5,68 @@
5
5
 
6
6
  @layer components.tokens {
7
7
  .password-input {
8
+ --_border-width-sm: var(--ui-border-width-sm, #{t.$border-width-sm});
9
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
10
+ --_ease-default: var(--ui-ease-default, ease);
11
+ --_border-width-md: var(--ui-border-width-md, #{t.$border-width-md});
12
+ --_color-focus: var(--ui-color-focus, #{t.$color-focus});
13
+ --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
14
+ --_space-half: var(--ui-space-half, #{t.$space-0});
15
+ --_radius-sm: var(--ui-radius-sm, #{t.$radius-sm});
16
+ --_size-md: var(--ui-size-md, #{t.size(md)});
17
+ // @desc Overall height
8
18
  --_height: var(--ui-password-input-height, var(--ui-row-2, #{t.$row-2}));
19
+ // @desc Horizontal padding
9
20
  --_padding-x: var(--ui-password-input-padding-x, var(--ui-space-1, #{t.$space-1}));
21
+ // @desc Font size
10
22
  --_font-size: var(--ui-password-input-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
23
+ // @desc Corner radius
11
24
  --_radius: var(--ui-password-input-radius, var(--ui-radius-md, #{t.$radius-md}));
25
+ // @desc Background color
12
26
  --_bg: var(--ui-password-input-bg, var(--ui-color-bg, #{t.$color-bg}));
27
+ // @desc Border color
13
28
  --_border-color: var(--ui-password-input-border-color, var(--ui-color-border-strong, #{t.$color-border-strong}));
29
+ // @desc Border color focus
14
30
  --_border-color-focus: var(--ui-password-input-border-color-focus, var(--ui-color-primary, #{t.$color-primary}));
31
+ // @desc Text
15
32
  --_text: var(--ui-password-input-text, var(--ui-color-text, #{t.$color-text}));
33
+ // @desc Placeholder
16
34
  --_placeholder: var(--ui-password-input-placeholder, var(--ui-color-text-muted, #{t.$color-text-muted}));
35
+ // @desc Toggle color
17
36
  --_toggle-color: var(--ui-password-input-toggle-color, var(--ui-color-text-muted, #{t.$color-text-muted}));
37
+ // @desc Toggle hover bg
18
38
  --_toggle-hover-bg: var(--ui-password-input-toggle-hover-bg, var(--ui-color-bg-muted, #{t.$color-bg-muted}));
19
39
  }
20
40
 
21
41
  // @modifier size
22
42
  .password-input--sm {
43
+ // @desc Overall height at small size
23
44
  --_height: var(--ui-password-input-height-sm, calc(#{t.$row} * 1.5));
45
+ // @desc Font size at small size
24
46
  --_font-size: var(--ui-password-input-font-size-sm, var(--ui-font-size-xs, #{t.$font-size-xs}));
25
47
  }
26
48
 
27
49
  .password-input--lg {
50
+ // @desc Overall height at large size
28
51
  --_height: var(--ui-password-input-height-lg, calc(#{t.$row} * 2.5));
52
+ // @desc Horizontal padding at large size
29
53
  --_padding-x: var(--ui-password-input-padding-x-lg, var(--ui-space-2, #{t.$space-2}));
54
+ // @desc Font size at large size
30
55
  --_font-size: var(--ui-password-input-font-size-lg, var(--ui-font-size-md, #{t.$font-size-md}));
31
56
  }
32
57
 
33
58
  // @modifier state
34
59
  .password-input--error {
60
+ // @desc Error border
35
61
  --_border-color: var(--ui-password-input-error-border, var(--ui-color-danger, #{t.$color-danger}));
62
+ // @desc Error border
36
63
  --_border-color-focus: var(--ui-password-input-error-border, var(--ui-color-danger, #{t.$color-danger}));
37
64
  }
38
65
 
39
66
  .password-input--success {
67
+ // @desc Success border
40
68
  --_border-color: var(--ui-password-input-success-border, var(--ui-color-success, #{t.$color-success}));
69
+ // @desc Success border
41
70
  --_border-color-focus: var(--ui-password-input-success-border, var(--ui-color-success, #{t.$color-success}));
42
71
  }
43
72
  }
@@ -50,26 +79,28 @@
50
79
  block-size: var(--_height);
51
80
 
52
81
  background: var(--_bg);
53
- border: var(--ui-border-width-sm, #{t.$border-width-sm}) solid var(--_border-color);
82
+ border: var(--_border-width-sm) solid var(--_border-color);
54
83
  border-radius: var(--_radius);
55
84
 
56
85
  transition:
57
- border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease),
58
- box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
86
+ border-color var(--_duration-fast) var(--_ease-default),
87
+ box-shadow var(--_duration-fast) var(--_ease-default);
59
88
 
60
89
  &:focus-within,
61
90
  &--focus {
62
91
  border-color: var(--_border-color-focus);
63
- box-shadow: 0 0 0 var(--ui-border-width-md, #{t.$border-width-md}) var(--ui-color-focus, #{t.$color-focus});
92
+ box-shadow: 0 0 0 var(--_border-width-md) var(--_color-focus);
64
93
  }
65
94
 
95
+ // @modifier boolean block
66
96
  &--block {
67
97
  inline-size: 100%;
68
98
  }
69
99
 
100
+ // @modifier boolean disabled
70
101
  &--disabled,
71
102
  &:has(.password-input__field:disabled) {
72
- opacity: var(--ui-opacity-disabled, 0.5);
103
+ opacity: var(--_opacity-disabled);
73
104
  cursor: not-allowed;
74
105
  }
75
106
  }
@@ -102,31 +133,31 @@
102
133
  align-items: center;
103
134
  justify-content: center;
104
135
 
105
- block-size: calc(var(--_height) - var(--ui-space-half, #{t.$space-0}) * 2);
106
- inline-size: calc(var(--_height) - var(--ui-space-half, #{t.$space-0}) * 2);
107
- margin-inline-end: calc(var(--ui-space-half, #{t.$space-0}));
136
+ block-size: calc(var(--_height) - var(--_space-half) * 2);
137
+ inline-size: calc(var(--_height) - var(--_space-half) * 2);
138
+ margin-inline-end: calc(var(--_space-half));
108
139
 
109
140
  color: var(--_toggle-color);
110
141
 
111
142
  background: transparent;
112
143
  border: none;
113
- border-radius: var(--ui-radius-sm, #{t.$radius-sm});
144
+ border-radius: var(--_radius-sm);
114
145
  cursor: pointer;
115
146
 
116
- transition: background var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
147
+ transition: background var(--_duration-fast) var(--_ease-default);
117
148
 
118
149
  &:hover {
119
150
  background: var(--_toggle-hover-bg);
120
151
  }
121
152
 
122
153
  &:focus-visible {
123
- outline: 2px solid var(--ui-color-focus, #{t.$color-focus});
154
+ outline: 2px solid var(--_color-focus);
124
155
  outline-offset: -2px;
125
156
  }
126
157
 
127
158
  svg {
128
- block-size: var(--ui-size-md, #{t.size(md)});
129
- inline-size: var(--ui-size-md, #{t.size(md)});
159
+ block-size: var(--_size-md);
160
+ inline-size: var(--_size-md);
130
161
 
131
162
  fill: none;
132
163
  stroke: currentcolor;