@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
@@ -5,33 +5,59 @@
5
5
 
6
6
  @layer components.tokens {
7
7
  .textarea {
8
+ --_row-1: var(--ui-row-1, #{t.$row});
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
+ // @desc Minimum height
8
18
  --_min-height: var(--ui-textarea-min-height, calc(#{t.$row} * 4));
19
+ // @desc Horizontal padding
9
20
  --_padding-x: var(--ui-textarea-padding-x, var(--ui-space-1, #{t.$space-1}));
21
+ // @desc Vertical padding
10
22
  --_padding-y: var(--ui-textarea-padding-y, var(--ui-space-1, #{t.$space-1}));
23
+ // @desc Font size
11
24
  --_font-size: var(--ui-textarea-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
25
+ // @desc Corner radius
12
26
  --_radius: var(--ui-textarea-radius, var(--ui-radius-md, #{t.$radius-md}));
27
+ // @desc Background color
13
28
  --_bg: var(--ui-textarea-bg, var(--ui-color-bg, #{t.$color-bg}));
29
+ // @desc Border color
14
30
  --_border-color: var(--ui-textarea-border-color, var(--ui-color-border-strong, #{t.$color-border-strong}));
31
+ // @desc Border color focus
15
32
  --_border-color-focus: var(--ui-textarea-border-color-focus, var(--ui-color-primary, #{t.$color-primary}));
33
+ // @desc Text color
16
34
  --_color: var(--ui-textarea-color, var(--ui-color-text, #{t.$color-text}));
35
+ // @desc Placeholder
17
36
  --_placeholder: var(--ui-textarea-placeholder, var(--ui-color-text-muted, #{t.$color-text-muted}));
18
37
  }
19
38
 
20
39
  // @modifier size
21
40
  .textarea--sm {
41
+ // @desc Minimum height at small size
22
42
  --_min-height: var(--ui-textarea-min-height-sm, calc(#{t.$row} * 3));
43
+ // @desc Font size at small size
23
44
  --_font-size: var(--ui-textarea-font-size-sm, var(--ui-font-size-xs, #{t.$font-size-xs}));
24
45
  }
25
46
 
26
47
  .textarea--lg {
48
+ // @desc Minimum height at large size
27
49
  --_min-height: var(--ui-textarea-min-height-lg, calc(#{t.$row} * 6));
50
+ // @desc Horizontal padding at large size
28
51
  --_padding-x: var(--ui-textarea-padding-x-lg, var(--ui-space-2, #{t.$space-2}));
52
+ // @desc Vertical padding at large size
29
53
  --_padding-y: var(--ui-textarea-padding-y-lg, var(--ui-space-2, #{t.$space-2}));
54
+ // @desc Font size at large size
30
55
  --_font-size: var(--ui-textarea-font-size-lg, var(--ui-font-size-md, #{t.$font-size-md}));
31
56
  }
32
57
 
33
58
  // @modifier variant
34
59
  .textarea--filled {
60
+ // @desc Filled bg
35
61
  --_bg: var(--ui-textarea-filled-bg, var(--ui-color-bg-muted, #{t.$color-bg-muted}));
36
62
  --_border-color: transparent;
37
63
  }
@@ -43,12 +69,16 @@
43
69
 
44
70
  // @modifier state
45
71
  .textarea--error {
72
+ // @desc Error border
46
73
  --_border-color: var(--ui-textarea-error-border, var(--ui-color-danger, #{t.$color-danger}));
74
+ // @desc Error border
47
75
  --_border-color-focus: var(--ui-textarea-error-border, var(--ui-color-danger, #{t.$color-danger}));
48
76
  }
49
77
 
50
78
  .textarea--success {
79
+ // @desc Success border
51
80
  --_border-color: var(--ui-textarea-success-border, var(--ui-color-success, #{t.$color-success}));
81
+ // @desc Success border
52
82
  --_border-color-focus: var(--ui-textarea-success-border, var(--ui-color-success, #{t.$color-success}));
53
83
  }
54
84
  }
@@ -65,18 +95,18 @@
65
95
 
66
96
  font-family: inherit;
67
97
  font-size: var(--_font-size);
68
- line-height: var(--ui-row-1, #{t.$row});
98
+ line-height: var(--_row-1);
69
99
  color: var(--_color);
70
100
 
71
101
  background: var(--_bg);
72
102
  border: none;
73
103
  border-radius: var(--_radius);
74
- outline: var(--ui-border-width-sm, #{t.$border-width-sm}) solid var(--_border-color);
104
+ outline: var(--_border-width-sm) solid var(--_border-color);
75
105
 
76
106
  transition:
77
- border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease),
78
- box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
79
- outline-offset: calc(var(--ui-border-width-sm, #{t.$border-width-sm}) * -1);
107
+ border-color var(--_duration-fast) var(--_ease-default),
108
+ box-shadow var(--_duration-fast) var(--_ease-default);
109
+ outline-offset: calc(var(--_border-width-sm) * -1);
80
110
 
81
111
  // Default resize behavior
82
112
  resize: vertical;
@@ -86,29 +116,30 @@
86
116
  }
87
117
 
88
118
  &:hover:not(:disabled, :focus-visible) {
89
- outline-color: var(--ui-color-border-strong, #{t.$color-border-strong});
119
+ outline-color: var(--_color-border-strong);
90
120
  }
91
121
 
92
122
  &:focus-visible,
93
123
  &--focus {
94
124
  outline-color: var(--_border-color-focus);
95
125
 
96
- box-shadow: 0 0 0 var(--ui-border-width-md, #{t.$border-width-md}) var(--ui-color-focus, #{t.$color-focus});
126
+ box-shadow: 0 0 0 var(--_border-width-md) var(--_color-focus);
97
127
  }
98
128
 
99
129
  &:disabled,
100
130
  &--disabled {
101
- opacity: var(--ui-opacity-disabled, 0.5);
131
+ opacity: var(--_opacity-disabled);
102
132
  cursor: not-allowed;
103
133
  resize: none;
104
134
  }
105
135
 
106
136
  &:read-only {
107
- background: var(--ui-color-bg-subtle, #{t.$color-bg-subtle});
137
+ background: var(--_color-bg-subtle);
108
138
  resize: none;
109
139
  }
110
140
 
111
141
  // Resize variants
142
+ // @modifier resize
112
143
  &--resize-none {
113
144
  resize: none;
114
145
  }
@@ -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": "textarea",
3
4
  "element": "textarea",
4
5
  "modifiers": {
@@ -12,85 +13,104 @@
12
13
  "values": ["error", "success"]
13
14
  },
14
15
  "resize": {
15
- "values": ["resize-none", "resize-both"]
16
+ "values": ["resize-none", "resize-horizontal", "resize-both"]
16
17
  }
17
18
  },
18
19
  "cssVars": [
19
20
  {
20
21
  "name": "--ui-textarea-min-height",
21
- "default": "calc(var(--ui-row) * 4"
22
+ "default": "calc(var(--ui-row) * 4)",
23
+ "description": "Minimum height"
22
24
  },
23
25
  {
24
26
  "name": "--ui-textarea-padding-x",
25
- "default": "var(--ui-space-1)"
27
+ "default": "var(--ui-space-1)",
28
+ "description": "Horizontal padding"
26
29
  },
27
30
  {
28
31
  "name": "--ui-textarea-padding-y",
29
- "default": "var(--ui-space-1)"
32
+ "default": "var(--ui-space-1)",
33
+ "description": "Vertical padding"
30
34
  },
31
35
  {
32
36
  "name": "--ui-textarea-font-size",
33
- "default": "var(--ui-font-size-sm)"
37
+ "default": "var(--ui-font-size-sm)",
38
+ "description": "Font size"
34
39
  },
35
40
  {
36
41
  "name": "--ui-textarea-radius",
37
- "default": "var(--ui-radius-md)"
42
+ "default": "var(--ui-radius-md)",
43
+ "description": "Corner radius"
38
44
  },
39
45
  {
40
46
  "name": "--ui-textarea-bg",
41
- "default": "var(--ui-color-bg)"
47
+ "default": "var(--ui-color-bg)",
48
+ "description": "Background color"
42
49
  },
43
50
  {
44
51
  "name": "--ui-textarea-border-color",
45
- "default": "var(--ui-color-border-strong)"
52
+ "default": "var(--ui-color-border-strong)",
53
+ "description": "Border color"
46
54
  },
47
55
  {
48
56
  "name": "--ui-textarea-border-color-focus",
49
- "default": "var(--ui-color-primary)"
57
+ "default": "var(--ui-color-primary)",
58
+ "description": "Border color focus"
50
59
  },
51
60
  {
52
61
  "name": "--ui-textarea-color",
53
- "default": "var(--ui-color-text)"
62
+ "default": "var(--ui-color-text)",
63
+ "description": "Text color"
54
64
  },
55
65
  {
56
66
  "name": "--ui-textarea-placeholder",
57
- "default": "var(--ui-color-text-muted)"
67
+ "default": "var(--ui-color-text-muted)",
68
+ "description": "Placeholder"
58
69
  },
59
70
  {
60
71
  "name": "--ui-textarea-min-height-sm",
61
- "default": "calc(var(--ui-row) * 3"
72
+ "default": "calc(var(--ui-row) * 3)",
73
+ "description": "Minimum height at small size"
62
74
  },
63
75
  {
64
76
  "name": "--ui-textarea-font-size-sm",
65
- "default": "var(--ui-font-size-xs)"
77
+ "default": "var(--ui-font-size-xs)",
78
+ "description": "Font size at small size"
66
79
  },
67
80
  {
68
81
  "name": "--ui-textarea-min-height-lg",
69
- "default": "calc(var(--ui-row) * 6"
82
+ "default": "calc(var(--ui-row) * 6)",
83
+ "description": "Minimum height at large size"
70
84
  },
71
85
  {
72
86
  "name": "--ui-textarea-padding-x-lg",
73
- "default": "var(--ui-space-2)"
87
+ "default": "var(--ui-space-2)",
88
+ "description": "Horizontal padding at large size"
74
89
  },
75
90
  {
76
91
  "name": "--ui-textarea-padding-y-lg",
77
- "default": "var(--ui-space-2)"
92
+ "default": "var(--ui-space-2)",
93
+ "description": "Vertical padding at large size"
78
94
  },
79
95
  {
80
96
  "name": "--ui-textarea-font-size-lg",
81
- "default": "var(--ui-font-size-md)"
97
+ "default": "var(--ui-font-size-md)",
98
+ "description": "Font size at large size"
82
99
  },
83
100
  {
84
101
  "name": "--ui-textarea-filled-bg",
85
- "default": "var(--ui-color-bg-muted)"
102
+ "default": "var(--ui-color-bg-muted)",
103
+ "description": "Filled bg"
86
104
  },
87
105
  {
88
106
  "name": "--ui-textarea-error-border",
89
- "default": "var(--ui-color-danger)"
107
+ "default": "var(--ui-color-danger)",
108
+ "description": "Error border"
90
109
  },
91
110
  {
92
111
  "name": "--ui-textarea-success-border",
93
- "default": "var(--ui-color-success)"
112
+ "default": "var(--ui-color-success)",
113
+ "description": "Success border"
94
114
  }
95
115
  ]
96
116
  }
@@ -5,13 +5,25 @@
5
5
 
6
6
  @layer components.tokens {
7
7
  .toggle {
8
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
9
+ --_ease-default: var(--ui-ease-default, ease);
10
+ --_color-focus: var(--ui-color-focus, var(--ui-color-primary));
11
+ --_opacity-disabled: var(--ui-opacity-disabled, #{t.$opacity-disabled});
12
+ // @desc Track width
8
13
  --_track-width: var(--ui-toggle-track-width, calc(#{t.$unit} * 5));
14
+ // @desc Track height
9
15
  --_track-height: var(--ui-toggle-track-height, calc(#{t.$unit} * 3));
10
- --_track-bg: var(--ui-toggle-track-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
16
+ // @desc Track background
17
+ --_track-bg: var(--ui-toggle-track-bg, var(--ui-color-bg-subtle, #{t.$overlay-bg-subtle}));
18
+ // @desc Track bg checked
11
19
  --_track-bg-checked: var(--ui-toggle-track-bg-checked, var(--ui-color-primary));
20
+ // @desc Track corner radius
12
21
  --_track-radius: var(--ui-toggle-track-radius, calc(#{t.$unit} * 1.5));
22
+ // @desc Thumb control size
13
23
  --_thumb-size: var(--ui-toggle-thumb-size, calc(#{t.$unit} * 2.5));
24
+ // @desc Thumb background
14
25
  --_thumb-bg: var(--ui-toggle-thumb-bg, var(--ui-color-bg, #{t.$color-bg}));
26
+ // @desc Thumb control offset from anchor
15
27
  --_thumb-offset: var(--ui-toggle-thumb-offset, calc(#{t.$unit} / 4));
16
28
  }
17
29
 
@@ -46,7 +58,7 @@
46
58
  border-radius: var(--_track-radius);
47
59
  cursor: pointer;
48
60
 
49
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
61
+ transition: background var(--_duration-fast) var(--_ease-default);
50
62
  }
51
63
 
52
64
  // Hidden checkbox input
@@ -70,7 +82,7 @@
70
82
  background: var(--_track-bg);
71
83
  border-radius: var(--_track-radius);
72
84
 
73
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
85
+ transition: background var(--_duration-fast) var(--_ease-default);
74
86
  }
75
87
 
76
88
  // Thumb (sliding indicator)
@@ -86,7 +98,7 @@
86
98
  border-radius: 50%;
87
99
  box-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
88
100
 
89
- transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
101
+ transition: transform var(--_duration-fast) var(--_ease-default);
90
102
  }
91
103
 
92
104
  // Checked state
@@ -100,14 +112,14 @@
100
112
 
101
113
  // Focus state
102
114
  .toggle__input:focus-visible ~ .toggle__track {
103
- outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
115
+ outline: 2px solid var(--_color-focus);
104
116
  outline-offset: calc(#{t.$unit} / 4);
105
117
  }
106
118
 
107
119
  // Disabled state
108
120
  .toggle__input:disabled ~ .toggle__track,
109
121
  .toggle__input:disabled ~ .toggle__thumb {
110
- opacity: var(--ui-opacity-disabled, 0.5);
122
+ opacity: var(--_opacity-disabled);
111
123
  cursor: not-allowed;
112
124
  }
113
125
 
@@ -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": "toggle",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -14,35 +15,43 @@
14
15
  "cssVars": [
15
16
  {
16
17
  "name": "--ui-toggle-track-width",
17
- "default": "calc(var(--ui-unit) * 5"
18
+ "default": "calc(var(--ui-unit) * 5)",
19
+ "description": "Track width"
18
20
  },
19
21
  {
20
22
  "name": "--ui-toggle-track-height",
21
- "default": "calc(var(--ui-unit) * 3"
23
+ "default": "calc(var(--ui-unit) * 3)",
24
+ "description": "Track height"
22
25
  },
23
26
  {
24
27
  "name": "--ui-toggle-track-bg",
25
- "default": "var(--ui-color-bg-subtle)"
28
+ "default": "var(--ui-color-bg-subtle)",
29
+ "description": "Track background"
26
30
  },
27
31
  {
28
32
  "name": "--ui-toggle-track-bg-checked",
29
- "default": "var(--ui-color-primary)"
33
+ "default": "var(--ui-color-primary)",
34
+ "description": "Track bg checked"
30
35
  },
31
36
  {
32
37
  "name": "--ui-toggle-track-radius",
33
- "default": "calc(var(--ui-unit) * 1.5"
38
+ "default": "calc(var(--ui-unit) * 1.5)",
39
+ "description": "Track corner radius"
34
40
  },
35
41
  {
36
42
  "name": "--ui-toggle-thumb-size",
37
- "default": "calc(var(--ui-unit) * 2.5"
43
+ "default": "calc(var(--ui-unit) * 2.5)",
44
+ "description": "Thumb control size"
38
45
  },
39
46
  {
40
47
  "name": "--ui-toggle-thumb-bg",
41
- "default": "white"
48
+ "default": "var(--ui-color-bg)",
49
+ "description": "Thumb background"
42
50
  },
43
51
  {
44
52
  "name": "--ui-toggle-thumb-offset",
45
- "default": "calc(var(--ui-unit) / 4"
53
+ "default": "calc(var(--ui-unit) / 4)",
54
+ "description": "Thumb control offset from anchor"
46
55
  }
47
56
  ]
48
57
  }
@@ -1,36 +1,50 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "breadcrumb",
3
4
  "element": "div",
4
5
  "modifiers": {},
5
6
  "elements": {
6
- "item": {},
7
+ "item": {
8
+ "modifiers": {
9
+ "hidden": {
10
+ "type": "boolean"
11
+ }
12
+ }
13
+ },
7
14
  "link": {},
8
- "current": {}
15
+ "current": {},
16
+ "ellipsis": {}
9
17
  },
10
18
  "cssVars": [
19
+ {
20
+ "name": "--ui-breadcrumb-separator",
21
+ "default": "\"/\"",
22
+ "description": "Separator"
23
+ },
11
24
  {
12
25
  "name": "--ui-breadcrumb-height",
13
- "default": "var(--ui-row-1)"
26
+ "default": "var(--ui-row-1)",
27
+ "description": "Overall height"
14
28
  },
15
29
  {
16
30
  "name": "--ui-breadcrumb-gap",
17
- "default": "calc(var(--ui-unit) * 1"
31
+ "default": "calc(var(--ui-unit) * 1)",
32
+ "description": "Gap between children"
18
33
  },
19
34
  {
20
35
  "name": "--ui-breadcrumb-separator-color",
21
- "default": "var(--ui-color-text-muted)"
36
+ "default": "var(--ui-color-text-muted)",
37
+ "description": "Separator text color"
22
38
  },
23
39
  {
24
40
  "name": "--ui-breadcrumb-link-color",
25
- "default": "var(--ui-color-text-muted)"
41
+ "default": "var(--ui-color-text-muted)",
42
+ "description": "Link text color"
26
43
  },
27
44
  {
28
45
  "name": "--ui-breadcrumb-current-color",
29
- "default": "var(--ui-color-text)"
30
- },
31
- {
32
- "name": "--ui-breadcrumb-separator",
33
- "default": "\"/\""
46
+ "default": "var(--ui-color-text)",
47
+ "description": "Current color"
34
48
  }
35
49
  ]
36
50
  }
@@ -1,14 +1,27 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component breadcrumb
3
+ // @element div
2
4
 
3
5
  // Breadcrumb - navigation hierarchy
4
6
  // Shows current page location in site structure
5
7
 
6
8
  @layer components.tokens {
7
9
  .breadcrumb {
10
+ --_font-size-sm: var(--ui-font-size-sm, #{t.$font-size-sm});
11
+ // @desc Separator
12
+ --_breadcrumb-separator: var(--ui-breadcrumb-separator, "/");
13
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
14
+ --_ease-default: var(--ui-ease-default, ease);
15
+ --_color-primary: var(--ui-color-primary);
16
+ // @desc Overall height
8
17
  --_height: var(--ui-breadcrumb-height, var(--ui-row-1, #{t.$row}));
18
+ // @desc Gap between children
9
19
  --_gap: var(--ui-breadcrumb-gap, calc(#{t.$unit} * 1));
20
+ // @desc Separator text color
10
21
  --_separator-color: var(--ui-breadcrumb-separator-color, var(--ui-color-text-muted));
22
+ // @desc Link text color
11
23
  --_link-color: var(--ui-breadcrumb-link-color, var(--ui-color-text-muted));
24
+ // @desc Current color
12
25
  --_current-color: var(--ui-breadcrumb-current-color, var(--ui-color-text));
13
26
  }
14
27
  }
@@ -24,7 +37,7 @@
24
37
  padding: 0;
25
38
  margin: 0;
26
39
 
27
- font-size: var(--ui-font-size-sm, #{t.$font-size-sm});
40
+ font-size: var(--_font-size-sm);
28
41
  line-height: 1;
29
42
 
30
43
  list-style: none;
@@ -41,7 +54,7 @@
41
54
  // Separator after each item except last
42
55
  .breadcrumb__item:not(:last-child)::after {
43
56
 
44
- content: var(--ui-breadcrumb-separator, "/");
57
+ content: var(--_breadcrumb-separator);
45
58
 
46
59
  color: var(--_separator-color);
47
60
  }
@@ -50,11 +63,11 @@
50
63
  text-decoration: none;
51
64
  color: var(--_link-color);
52
65
 
53
- transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
66
+ transition: color var(--_duration-fast) var(--_ease-default);
54
67
 
55
68
  &:hover {
56
69
  text-decoration: underline;
57
- color: var(--ui-color-primary);
70
+ color: var(--_color-primary);
58
71
  }
59
72
  }
60
73
 
@@ -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": "dropdown-menu",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -23,15 +24,18 @@
23
24
  "cssVars": [
24
25
  {
25
26
  "name": "--ui-dropdown-menu-z",
26
- "default": "200"
27
+ "default": "var(--ui-z-dropdown)",
28
+ "description": "Z-index stacking order"
27
29
  },
28
30
  {
29
31
  "name": "--ui-dropdown-menu-panel-offset",
30
- "default": "var(--ui-space-1)"
32
+ "default": "var(--ui-space-1)",
33
+ "description": "Panel offset from anchor"
31
34
  },
32
35
  {
33
36
  "name": "--ui-dropdown-menu-panel-min-width",
34
- "default": "auto"
37
+ "default": "auto",
38
+ "description": "Panel minimum width"
35
39
  }
36
40
  ]
37
41
  }
@@ -171,6 +171,24 @@
171
171
  }
172
172
  ]
173
173
  },
174
+ {
175
+ "title": "Top Position",
176
+ "description": "Opens panel above the trigger.",
177
+ "examples": [
178
+ {
179
+ "code": "<div class=\"ui-dropdown-menu ui-dropdown-menu--open ui-dropdown-menu--top\">\n <button class=\"ui-dropdown-menu__trigger ui-button\">Actions</button>\n <div class=\"ui-dropdown-menu__panel\" role=\"menu\">\n <div class=\"ui-menu\">...</div>\n </div>\n</div>"
180
+ }
181
+ ]
182
+ },
183
+ {
184
+ "title": "Full Width",
185
+ "description": "Panel stretches to match trigger width.",
186
+ "examples": [
187
+ {
188
+ "code": "<div class=\"ui-dropdown-menu ui-dropdown-menu--open ui-dropdown-menu--full-width\">\n <button class=\"ui-dropdown-menu__trigger ui-button\">Select option</button>\n <div class=\"ui-dropdown-menu__panel\" role=\"menu\">\n <div class=\"ui-menu\">...</div>\n </div>\n</div>"
189
+ }
190
+ ]
191
+ },
174
192
  {
175
193
  "title": "Align End",
176
194
  "examples": [
@@ -6,8 +6,14 @@
6
6
 
7
7
  @layer components.tokens {
8
8
  .dropdown-menu {
9
- --_z: var(--ui-dropdown-menu-z, 200);
9
+ --_space-0: var(--ui-space-0, #{t.$space-0});
10
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
11
+ --_ease-default: var(--ui-ease-default, ease);
12
+ // @desc Z-index stacking order
13
+ --_z: var(--ui-dropdown-menu-z, #{t.$z-dropdown});
14
+ // @desc Panel offset from anchor
10
15
  --_panel-offset: var(--ui-dropdown-menu-panel-offset, var(--ui-space-1, #{t.$space-1}));
16
+ // @desc Panel minimum width
11
17
  --_panel-min-width: var(--ui-dropdown-menu-panel-min-width, auto);
12
18
  }
13
19
  }
@@ -21,7 +27,7 @@
21
27
  .dropdown-menu__trigger {
22
28
  display: inline-flex;
23
29
  align-items: center;
24
- gap: var(--ui-space-0, #{t.$space-0});
30
+ gap: var(--_space-0);
25
31
  }
26
32
 
27
33
  .dropdown-menu__trigger-icon {
@@ -29,9 +35,10 @@
29
35
 
30
36
  font-size: 0.6em;
31
37
 
32
- transition: transform var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
38
+ transition: transform var(--_duration-fast) var(--_ease-default);
33
39
  }
34
40
 
41
+ // @modifier boolean open
35
42
  .dropdown-menu--open .dropdown-menu__trigger-icon {
36
43
  transform: rotate(180deg);
37
44
  }
@@ -49,8 +56,8 @@
49
56
  transform: translateY(calc(#{t.$unit} * -1));
50
57
 
51
58
  transition:
52
- opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease),
53
- transform var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
59
+ opacity var(--_duration-fast) var(--_ease-default),
60
+ transform var(--_duration-fast) var(--_ease-default);
54
61
  }
55
62
 
56
63
  .dropdown-menu--open .dropdown-menu__panel {
@@ -60,6 +67,7 @@
60
67
  }
61
68
 
62
69
  // Position above trigger
70
+ // @modifier boolean top
63
71
  .dropdown-menu--top .dropdown-menu__panel {
64
72
  inset-block-start: auto;
65
73
  inset-block-end: calc(100% + var(--_panel-offset));
@@ -72,12 +80,14 @@
72
80
  }
73
81
 
74
82
  // Align to end edge
83
+ // @modifier boolean align-end
75
84
  .dropdown-menu--align-end .dropdown-menu__panel {
76
85
  inset-inline-start: auto;
77
86
  inset-inline-end: 0;
78
87
  }
79
88
 
80
89
  // Full-width panel matches trigger width
90
+ // @modifier boolean full-width
81
91
  .dropdown-menu--full-width .dropdown-menu__panel {
82
92
  min-inline-size: 100%;
83
93
  }