@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,45 +1,53 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "link",
3
4
  "element": "a",
4
5
  "modifiers": {
5
6
  "variant": {
6
7
  "values": ["muted", "subtle"]
7
8
  },
8
- "external": {
9
+ "disabled": {
9
10
  "type": "boolean"
10
11
  },
11
- "disabled": {
12
+ "external": {
12
13
  "type": "boolean"
13
14
  }
14
15
  },
15
16
  "cssVars": [
16
17
  {
17
18
  "name": "--ui-link-color",
18
- "default": "var(--ui-color-primary)"
19
+ "default": "var(--ui-color-primary)",
20
+ "description": "Text color"
19
21
  },
20
22
  {
21
23
  "name": "--ui-link-color-hover",
22
- "default": "var(--ui-color-primary-hover)"
24
+ "default": "var(--ui-color-primary-hover)",
25
+ "description": "Color hover"
23
26
  },
24
27
  {
25
28
  "name": "--ui-link-color-visited",
26
- "default": "var(--_color)"
29
+ "default": "var(--_color)",
30
+ "description": "Color visited"
27
31
  },
28
32
  {
29
33
  "name": "--ui-link-decoration",
30
- "default": "underline"
34
+ "default": "underline",
35
+ "description": "Decoration"
31
36
  },
32
37
  {
33
38
  "name": "--ui-link-decoration-hover",
34
- "default": "underline"
39
+ "default": "underline",
40
+ "description": "Decoration hover"
35
41
  },
36
42
  {
37
43
  "name": "--ui-link-color-muted",
38
- "default": "var(--ui-color-text-muted)"
44
+ "default": "var(--ui-color-text-muted)",
45
+ "description": "Color muted"
39
46
  },
40
47
  {
41
48
  "name": "--ui-link-color-muted-hover",
42
- "default": "var(--ui-color-text)"
49
+ "default": "var(--ui-color-text)",
50
+ "description": "Color muted hover"
43
51
  }
44
52
  ]
45
53
  }
@@ -1,12 +1,18 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component list
3
+ // @element ul
2
4
 
3
5
  // Ordered and unordered lists with spacing and layout variants
4
6
 
5
7
  @layer components.tokens {
6
8
  .list {
9
+ // @desc Spacing
7
10
  --_spacing: var(--ui-list-spacing, #{t.$unit});
11
+ // @desc Marker color
8
12
  --_marker-color: var(--ui-list-marker-color, var(--ui-color-text-muted, #{t.$color-text-muted}));
13
+ // @desc Indent
9
14
  --_indent: var(--ui-list-indent, var(--ui-space-3, #{t.$space-3}));
15
+ // @desc Line height
10
16
  --_line-height: var(--ui-list-line-height, var(--ui-leading-md, #{t.$leading-md}));
11
17
  }
12
18
 
@@ -38,6 +44,7 @@
38
44
  }
39
45
 
40
46
  // Removes markers and indent
47
+ // @modifier style
41
48
  .list--unstyled {
42
49
  padding-inline-start: 0;
43
50
 
@@ -1,12 +1,13 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "list",
3
4
  "element": "ul",
4
5
  "modifiers": {
5
- "style": {
6
- "values": ["unstyled", "inline"]
7
- },
8
6
  "spacing": {
9
7
  "values": ["compact", "loose"]
8
+ },
9
+ "style": {
10
+ "values": ["unstyled", "inline"]
10
11
  }
11
12
  },
12
13
  "elements": {
@@ -15,19 +16,23 @@
15
16
  "cssVars": [
16
17
  {
17
18
  "name": "--ui-list-spacing",
18
- "default": "var(--ui-unit)"
19
+ "default": "var(--ui-unit)",
20
+ "description": "Spacing"
19
21
  },
20
22
  {
21
23
  "name": "--ui-list-marker-color",
22
- "default": "var(--ui-color-text-muted)"
24
+ "default": "var(--ui-color-text-muted)",
25
+ "description": "Marker color"
23
26
  },
24
27
  {
25
28
  "name": "--ui-list-indent",
26
- "default": "var(--ui-space-3)"
29
+ "default": "var(--ui-space-3)",
30
+ "description": "Indent"
27
31
  },
28
32
  {
29
33
  "name": "--ui-list-line-height",
30
- "default": "var(--ui-leading-md)"
34
+ "default": "var(--ui-leading-md)",
35
+ "description": "Line height"
31
36
  }
32
37
  ]
33
38
  }
@@ -17,14 +17,17 @@
17
17
  "children": [
18
18
  {
19
19
  "tag": "li",
20
+ "class": "ui-list__item",
20
21
  "text": "First item in the list"
21
22
  },
22
23
  {
23
24
  "tag": "li",
25
+ "class": "ui-list__item",
24
26
  "text": "Second item in the list"
25
27
  },
26
28
  {
27
29
  "tag": "li",
30
+ "class": "ui-list__item",
28
31
  "text": "Third item in the list"
29
32
  }
30
33
  ]
@@ -1,11 +1,18 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component mark
3
+ // @element mark
2
4
 
3
5
  @layer components.tokens {
4
6
  .mark {
7
+ // @desc Background color
5
8
  --_bg: var(--ui-mark-bg, var(--ui-color-warning, #{t.$color-warning}));
9
+ // @desc Text color
6
10
  --_color: var(--ui-mark-color, var(--ui-color-text, #{t.$color-text}));
11
+ // @desc Horizontal padding
7
12
  --_padding-x: var(--ui-mark-padding-x, var(--ui-space-quarter, #{t.$space-quarter}));
13
+ // @desc Vertical padding
8
14
  --_padding-y: var(--ui-mark-padding-y, 0);
15
+ // @desc Corner radius
9
16
  --_radius: var(--ui-mark-radius, var(--ui-radius-sm, #{t.$radius-sm}));
10
17
  }
11
18
  }
@@ -1,12 +1,33 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "mark",
3
4
  "element": "mark",
4
5
  "modifiers": {},
5
6
  "cssVars": [
6
- { "name": "--ui-mark-bg", "default": "var(--ui-color-warning)" },
7
- { "name": "--ui-mark-color", "default": "var(--ui-color-text)" },
8
- { "name": "--ui-mark-padding-x", "default": "var(--ui-space-quarter)" },
9
- { "name": "--ui-mark-padding-y", "default": "0" },
10
- { "name": "--ui-mark-radius", "default": "var(--ui-radius-sm)" }
7
+ {
8
+ "name": "--ui-mark-bg",
9
+ "default": "var(--ui-color-warning)",
10
+ "description": "Background color"
11
+ },
12
+ {
13
+ "name": "--ui-mark-color",
14
+ "default": "var(--ui-color-text)",
15
+ "description": "Text color"
16
+ },
17
+ {
18
+ "name": "--ui-mark-padding-x",
19
+ "default": "var(--ui-space-quarter)",
20
+ "description": "Horizontal padding"
21
+ },
22
+ {
23
+ "name": "--ui-mark-padding-y",
24
+ "default": "0",
25
+ "description": "Vertical padding"
26
+ },
27
+ {
28
+ "name": "--ui-mark-radius",
29
+ "default": "var(--ui-radius-sm)",
30
+ "description": "Corner radius"
31
+ }
11
32
  ]
12
33
  }
@@ -133,6 +133,50 @@ $color-interactive-hover: $color-primary-dark;
133
133
 
134
134
  $color-focus: $color-primary-light;
135
135
 
136
+ // Motion - duration scale (matches config/tokens/motion)
137
+ $duration-instant: 50ms;
138
+ $duration-fast: 100ms;
139
+ $duration-base: 150ms;
140
+ $duration-normal: 200ms;
141
+ $duration-slow: 250ms;
142
+ $duration-slower: 400ms;
143
+
144
+ // Z-index scale (matches config/tokens/zindex)
145
+ $z-base: 0;
146
+ $z-sticky: 100;
147
+ $z-dropdown: 200;
148
+ $z-overlay: 300;
149
+ $z-modal: 400;
150
+ $z-popover: 500;
151
+ $z-tooltip: 600;
152
+ $z-toast: 700;
153
+ $z-drawer: 800;
154
+ $z-debug: 9999;
155
+
156
+ // Theming
157
+ $hue-primary: 220;
158
+
136
159
  // State opacity
137
160
  $opacity-disabled: 0.5;
138
161
  $opacity-loading: 0.7;
162
+
163
+ // Overlay backgrounds
164
+ $overlay-bg: rgb(0 0 0 / 0.5);
165
+ $overlay-bg-light: rgb(255 255 255 / 0.7);
166
+ $overlay-bg-blur: rgb(0 0 0 / 0.3);
167
+ $overlay-bg-subtle: rgb(0 0 0 / 0.1);
168
+
169
+ // Component defaults - icons
170
+ $icon-stroke: 2;
171
+ $icon-stroke-thin: 1;
172
+ $icon-stroke-thick: 2.5;
173
+
174
+ // Component defaults - feedback
175
+ $spinner-duration: 750ms;
176
+ $progress-circle-stroke-width: 8;
177
+ $skeleton-shimmer: rgb(255 255 255 / 0.5);
178
+
179
+ // Component defaults - misc
180
+ $slider-thumb-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
181
+ $toast-viewport-max-width: 420px;
182
+ $spacer-size: 1;
@@ -4,6 +4,7 @@
4
4
  --ui-duration-instant: 50ms;
5
5
  --ui-duration-fast: 100ms;
6
6
  --ui-duration-base: 150ms;
7
+ --ui-duration-normal: 200ms;
7
8
  --ui-duration-slow: 250ms;
8
9
  --ui-duration-slower: 400ms;
9
10
 
@@ -18,6 +19,7 @@
18
19
  --ui-duration-instant: 0ms;
19
20
  --ui-duration-fast: 0ms;
20
21
  --ui-duration-base: 0ms;
22
+ --ui-duration-normal: 0ms;
21
23
  --ui-duration-slow: 0ms;
22
24
  --ui-duration-slower: 0ms;
23
25
  }
@@ -9,6 +9,7 @@
9
9
  --ui-z-popover: 500;
10
10
  --ui-z-tooltip: 600;
11
11
  --ui-z-toast: 700;
12
+ --ui-z-drawer: 800;
12
13
  --ui-z-debug: 9999;
13
14
  }
14
15
  }
@@ -1,3 +1,4 @@
1
+ @use '../config/tokens/variables' as t;
1
2
  // Debug grid overlay - add class="debug-grid" to body or any container
2
3
  .debug-grid,
3
4
  .debug-grid-rows,
@@ -7,7 +8,7 @@
7
8
 
8
9
  .debug-grid {
9
10
  // Fallback hue 220 (blue) when --ui-hue-primary not set
10
- --debug-color: hsl(var(--ui-hue-primary, 220) 80% 50% / 0.15);
11
+ --debug-color: hsl(var(--ui-hue-primary, #{t.$hue-primary}) 80% 50% / 0.15);
11
12
  }
12
13
 
13
14
  .debug-grid::after {
@@ -30,8 +31,8 @@
30
31
 
31
32
  // Stronger grid at row intervals
32
33
  .debug-grid-rows {
33
- --debug-color: hsl(var(--ui-hue-primary, 220) 80% 50% / 0.1);
34
- --debug-color-strong: hsl(var(--ui-hue-primary, 220) 80% 50% / 0.25);
34
+ --debug-color: hsl(var(--ui-hue-primary, #{t.$hue-primary}) 80% 50% / 0.1);
35
+ --debug-color-strong: hsl(var(--ui-hue-primary, #{t.$hue-primary}) 80% 50% / 0.25);
35
36
  }
36
37
 
37
38
  .debug-grid-rows::after {
@@ -1,43 +1,23 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "app-shell",
3
4
  "element": "body",
4
5
  "modifiers": {},
5
6
  "relatedComponents": [
6
7
  {
7
- "name": "topbar",
8
- "modifiers": {
9
- "sticky": { "type": "boolean" },
10
- "fixed": { "type": "boolean" },
11
- "bordered": { "type": "boolean" },
12
- "raised": { "type": "boolean" }
13
- }
8
+ "name": "topbar"
14
9
  },
15
10
  {
16
- "name": "sidebar",
17
- "modifiers": {
18
- "end": { "type": "boolean" }
19
- }
11
+ "name": "sidebar"
20
12
  },
21
13
  {
22
- "name": "main",
23
- "modifiers": {
24
- "sidebar-end": { "type": "boolean" }
25
- }
14
+ "name": "main"
26
15
  },
27
16
  {
28
- "name": "container",
29
- "modifiers": {
30
- "center": { "type": "boolean" }
31
- }
17
+ "name": "container"
32
18
  },
33
19
  {
34
- "name": "footer",
35
- "modifiers": {
36
- "sticky": { "type": "boolean" },
37
- "fixed": { "type": "boolean" },
38
- "bordered": { "type": "boolean" },
39
- "raised": { "type": "boolean" }
40
- }
20
+ "name": "footer"
41
21
  }
42
22
  ],
43
23
  "cssVars": []
@@ -125,6 +125,24 @@
125
125
  }
126
126
  ]
127
127
  },
128
+ {
129
+ "title": "Topbar Variants",
130
+ "description": "Sticky stays in flow, raised adds shadow.",
131
+ "examples": [
132
+ {
133
+ "code": "<header class=\"ui-topbar ui-topbar--sticky ui-topbar--bordered\">...</header>\n<header class=\"ui-topbar ui-topbar--raised\">...</header>"
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "title": "Footer Variants",
139
+ "description": "Sticky, fixed, and raised options.",
140
+ "examples": [
141
+ {
142
+ "code": "<footer class=\"ui-footer ui-footer--sticky ui-footer--bordered\">...</footer>\n<footer class=\"ui-footer ui-footer--fixed\">...</footer>\n<footer class=\"ui-footer ui-footer--raised\">...</footer>"
143
+ }
144
+ ]
145
+ },
128
146
  {
129
147
  "title": "Centered Container",
130
148
  "examples": [
@@ -1,3 +1,7 @@
1
+ // @component app-shell
2
+ // @element body
3
+ // @related topbar, sidebar, main, container, footer
4
+
1
5
  @layer primitives {
2
6
  .app-shell {
3
7
  min-block-size: 100vh;
@@ -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": "aspect-ratio",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -6,11 +7,5 @@
6
7
  "values": ["square", "video", "photo", "wide", "portrait"]
7
8
  }
8
9
  },
9
- "cssVars": [
10
- {
11
- "name": "--ui-aspect-ratio",
12
- "description": "Custom aspect ratio",
13
- "default": "1 / 1"
14
- }
15
- ]
10
+ "cssVars": []
16
11
  }
@@ -1,3 +1,6 @@
1
+ // @component aspect-ratio
2
+ // @element div
3
+
1
4
  @layer primitives {
2
5
  .aspect-ratio {
3
6
  aspect-ratio: var(--aspect-ratio, 1 / 1);
@@ -15,6 +18,7 @@
15
18
  }
16
19
 
17
20
  // Preset ratios — functional names, not math
21
+ // @modifier ratio
18
22
  .aspect-ratio--square { --aspect-ratio: 1 / 1; }
19
23
  .aspect-ratio--video { --aspect-ratio: 16 / 9; }
20
24
  .aspect-ratio--photo { --aspect-ratio: 4 / 3; }
@@ -1,15 +1,32 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "box",
3
4
  "element": "div",
4
5
  "modifiers": {
5
- "p-1": { "type": "boolean" },
6
- "p-2": { "type": "boolean" },
7
- "p-3": { "type": "boolean" },
8
- "p-4": { "type": "boolean" },
9
- "bg-subtle": { "type": "boolean" },
10
- "bg-muted": { "type": "boolean" },
11
- "rounded": { "type": "boolean" },
12
- "rounded-lg": { "type": "boolean" }
6
+ "p-1": {
7
+ "type": "boolean"
8
+ },
9
+ "p-2": {
10
+ "type": "boolean"
11
+ },
12
+ "p-3": {
13
+ "type": "boolean"
14
+ },
15
+ "p-4": {
16
+ "type": "boolean"
17
+ },
18
+ "bg-subtle": {
19
+ "type": "boolean"
20
+ },
21
+ "bg-muted": {
22
+ "type": "boolean"
23
+ },
24
+ "rounded": {
25
+ "type": "boolean"
26
+ },
27
+ "rounded-lg": {
28
+ "type": "boolean"
29
+ }
13
30
  },
14
31
  "cssVars": []
15
32
  }
@@ -1,10 +1,20 @@
1
1
  @use '../../config/tokens/variables' as t;
2
+ // @component box
3
+ // @element div
2
4
 
3
5
  // Box - base container with style props
4
6
  // Foundation for other layout primitives
5
7
 
6
8
  @layer primitives {
7
9
  .box {
10
+ --_space-1: var(--ui-space-1, #{t.$space-1});
11
+ --_space-2: var(--ui-space-2, #{t.$space-2});
12
+ --_space-3: var(--ui-space-3, #{t.$space-3});
13
+ --_space-4: var(--ui-space-4, #{t.$space-4});
14
+ --_color-bg-subtle: var(--ui-color-bg-subtle, #{t.$color-bg-subtle});
15
+ --_color-bg-muted: var(--ui-color-bg-muted, #{t.$color-bg-muted});
16
+ --_radius-md: var(--ui-radius-md, #{t.$radius-md});
17
+ --_radius-lg: var(--ui-radius-lg, #{t.$radius-lg});
8
18
  --_padding: var(--box-padding, 0);
9
19
  --_bg: var(--box-bg, transparent);
10
20
  --_color: var(--box-color, inherit);
@@ -19,16 +29,24 @@
19
29
  }
20
30
 
21
31
  // Padding modifiers
22
- .box--p-1 { --_padding: var(--ui-space-1, #{t.$space-1}); }
23
- .box--p-2 { --_padding: var(--ui-space-2, #{t.$space-2}); }
24
- .box--p-3 { --_padding: var(--ui-space-3, #{t.$space-3}); }
25
- .box--p-4 { --_padding: var(--ui-space-4, #{t.$space-4}); }
32
+ // @modifier boolean p-1
33
+ .box--p-1 { --_padding: var(--_space-1); }
34
+ // @modifier boolean p-2
35
+ .box--p-2 { --_padding: var(--_space-2); }
36
+ // @modifier boolean p-3
37
+ .box--p-3 { --_padding: var(--_space-3); }
38
+ // @modifier boolean p-4
39
+ .box--p-4 { --_padding: var(--_space-4); }
26
40
 
27
41
  // Background modifiers
28
- .box--bg-subtle { --_bg: var(--ui-color-bg-subtle, #{t.$color-bg-subtle}); }
29
- .box--bg-muted { --_bg: var(--ui-color-bg-muted, #{t.$color-bg-muted}); }
42
+ // @modifier boolean bg-subtle
43
+ .box--bg-subtle { --_bg: var(--_color-bg-subtle); }
44
+ // @modifier boolean bg-muted
45
+ .box--bg-muted { --_bg: var(--_color-bg-muted); }
30
46
 
31
47
  // Border radius modifiers
32
- .box--rounded { --_radius: var(--ui-radius-md, #{t.$radius-md}); }
33
- .box--rounded-lg { --_radius: var(--ui-radius-lg, #{t.$radius-lg}); }
48
+ // @modifier boolean rounded
49
+ .box--rounded { --_radius: var(--_radius-md); }
50
+ // @modifier boolean rounded-lg
51
+ .box--rounded-lg { --_radius: var(--_radius-lg); }
34
52
  }
@@ -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": "center",
3
4
  "element": "div",
4
5
  "modifiers": {},
@@ -1,3 +1,6 @@
1
+ // @component center
2
+ // @element div
3
+
1
4
  @layer primitives {
2
5
  .center {
3
6
  display: flex;
@@ -1,9 +1,10 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "column",
3
4
  "element": "div",
4
5
  "modifiers": {
5
6
  "size": {
6
- "values": ["xs", "sm", "md", "lg"]
7
+ "values": ["xs", "sm", "md", "lg", "xl"]
7
8
  }
8
9
  },
9
10
  "cssVars": []
@@ -1,13 +1,22 @@
1
+ // @component column
2
+ // @element div
3
+
1
4
  @layer primitives {
2
5
  .column {
6
+ --_space-2: var(--ui-space-2);
7
+ --_space-1: var(--ui-space-1);
8
+ --_space-4: var(--ui-space-4);
9
+ --_space-6: var(--ui-space-6);
10
+ --_space-8: var(--ui-space-8);
3
11
  display: flex;
4
12
  flex-direction: column;
5
- gap: var(--column-gap, var(--ui-space-2));
13
+ gap: var(--column-gap, var(--_space-2));
6
14
  }
7
15
 
8
- .column--xs { --column-gap: var(--ui-space-1); }
9
- .column--sm { --column-gap: var(--ui-space-2); }
10
- .column--md { --column-gap: var(--ui-space-4); }
11
- .column--lg { --column-gap: var(--ui-space-6); }
12
- .column--xl { --column-gap: var(--ui-space-8); }
16
+ // @modifier size
17
+ .column--xs { --column-gap: var(--_space-1); }
18
+ .column--sm { --column-gap: var(--_space-2); }
19
+ .column--md { --column-gap: var(--_space-4); }
20
+ .column--lg { --column-gap: var(--_space-6); }
21
+ .column--xl { --column-gap: var(--_space-8); }
13
22
  }
@@ -1,12 +1,13 @@
1
1
  {
2
+ "$schema": "Auto-generated from index.scss annotations. Do not edit manually — run: pnpm generate:api",
2
3
  "name": "container",
3
4
  "element": "div",
4
5
  "modifiers": {
5
- "size": {
6
- "values": ["sm", "md", "lg", "xl", "full"]
7
- },
8
6
  "center": {
9
7
  "type": "boolean"
8
+ },
9
+ "size": {
10
+ "values": ["sm", "md", "lg", "xl", "full"]
10
11
  }
11
12
  },
12
13
  "cssVars": []
@@ -1,17 +1,24 @@
1
+ // @component container
2
+ // @element div
3
+
1
4
  @layer primitives {
2
5
  .container {
3
- max-inline-size: var(--container-width, calc(var(--ui-unit) * 120));
4
- padding-inline: var(--ui-space-4);
6
+ --_unit: var(--ui-unit);
7
+ --_space-4: var(--ui-space-4);
8
+ max-inline-size: var(--container-width, calc(var(--_unit) * 120));
9
+ padding-inline: var(--_space-4);
5
10
  }
6
11
 
12
+ // @modifier boolean center
7
13
  .container--center {
8
14
  margin-inline: auto;
9
15
  }
10
16
 
11
17
  // Size modifiers
12
- .container--sm { --container-width: calc(var(--ui-unit) * 80); }
13
- .container--md { --container-width: calc(var(--ui-unit) * 100); }
14
- .container--lg { --container-width: calc(var(--ui-unit) * 120); }
15
- .container--xl { --container-width: calc(var(--ui-unit) * 160); }
18
+ // @modifier size
19
+ .container--sm { --container-width: calc(var(--_unit) * 80); }
20
+ .container--md { --container-width: calc(var(--_unit) * 100); }
21
+ .container--lg { --container-width: calc(var(--_unit) * 120); }
22
+ .container--xl { --container-width: calc(var(--_unit) * 160); }
16
23
  .container--full { max-inline-size: none; }
17
24
  }