@teseor/css 1.8.0 → 1.9.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,28 +1,55 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component tabs
3
+ // @element div
2
4
 
3
5
  // Token definitions
4
6
  @layer components.tokens {
5
7
  .tabs {
8
+ --_space-1: var(--ui-space-1, #{t.$space-1});
9
+ --_border-width-sm: var(--ui-border-width-sm, #{t.$border-width-sm});
10
+ --_font-sans: var(--ui-font-sans, #{t.$font-sans});
11
+ --_weight-medium: var(--ui-weight-medium, #{t.$weight-medium});
12
+ --_color-text-muted: var(--ui-color-text-muted, #{t.$color-text-muted});
13
+ --_border-width-md: var(--ui-border-width-md, #{t.$border-width-md});
14
+ --_duration-base: var(--ui-duration-base);
15
+ --_ease-default: var(--ui-ease-default);
16
+ --_color-text: var(--ui-color-text, #{t.$color-text});
17
+ --_color-primary: var(--ui-color-primary, #{t.$color-primary});
18
+ --_row-1: var(--ui-row-1, #{t.$row});
19
+ // @desc Border color
6
20
  --_border-color: var(--ui-tabs-border-color, var(--ui-color-border, #{t.$color-border}));
21
+ // @desc Tab height
7
22
  --_tab-height: var(--ui-tabs-tab-height, var(--ui-row-2, #{t.$row-2}));
23
+ // @desc Tab padding x
8
24
  --_tab-padding-x: var(--ui-tabs-tab-padding-x, var(--ui-space-2, #{t.$space-2}));
25
+ // @desc Tab padding y
9
26
  --_tab-padding-y: var(--ui-tabs-tab-padding-y, var(--ui-space-1, #{t.$space-1}));
27
+ // @desc Tab font size
10
28
  --_tab-font-size: var(--ui-tabs-tab-font-size, var(--ui-font-size-sm, #{t.$font-size-sm}));
29
+ // @desc Tab bg
11
30
  --_tab-bg: var(--ui-tabs-tab-bg, transparent);
31
+ // @desc Tab bg active
12
32
  --_tab-bg-active: var(--ui-tabs-tab-bg-active, var(--ui-color-bg, #{t.$color-bg}));
33
+ // @desc Panel padding on all sides
13
34
  --_panel-padding: var(--ui-tabs-panel-padding, var(--ui-space-3, #{t.$space-3}));
14
35
  }
15
36
 
16
37
  // @modifier size
17
38
  .tabs--sm {
39
+ // @desc Tab height sm
18
40
  --_tab-height: var(--ui-tabs-tab-height-sm, var(--ui-row-1, #{t.$row}));
41
+ // @desc Tab padding x sm
19
42
  --_tab-padding-x: var(--ui-tabs-tab-padding-x-sm, var(--ui-space-1, #{t.$space-1}));
43
+ // @desc Tab font size sm
20
44
  --_tab-font-size: var(--ui-tabs-tab-font-size-sm, var(--ui-font-size-xs, #{t.$font-size-xs}));
21
45
  }
22
46
 
23
47
  .tabs--lg {
48
+ // @desc Tab height lg
24
49
  --_tab-height: var(--ui-tabs-tab-height-lg, calc(#{t.$row} * 2.5));
50
+ // @desc Tab padding x lg
25
51
  --_tab-padding-x: var(--ui-tabs-tab-padding-x-lg, var(--ui-space-3, #{t.$space-3}));
52
+ // @desc Tab font size lg
26
53
  --_tab-font-size: var(--ui-tabs-tab-font-size-lg, var(--ui-font-size-md, #{t.$font-size-md}));
27
54
  }
28
55
  }
@@ -32,13 +59,13 @@
32
59
  .tabs__list {
33
60
  display: flex;
34
61
  align-items: stretch;
35
- gap: var(--ui-space-1, #{t.$space-1});
62
+ gap: var(--_space-1);
36
63
 
37
64
  box-sizing: border-box;
38
65
  block-size: var(--_tab-height);
39
66
 
40
67
  // Use box-shadow instead of border to avoid affecting height
41
- box-shadow: inset 0 calc(var(--ui-border-width-sm, #{t.$border-width-sm}) * -1) 0 var(--_border-color);
68
+ box-shadow: inset 0 calc(var(--_border-width-sm) * -1) 0 var(--_border-color);
42
69
  }
43
70
 
44
71
  .tabs__tab {
@@ -50,31 +77,31 @@
50
77
  padding-inline: var(--_tab-padding-x);
51
78
  margin: 0;
52
79
 
53
- font-family: var(--ui-font-sans, #{t.$font-sans});
80
+ font-family: var(--_font-sans);
54
81
  font-size: var(--_tab-font-size);
55
- font-weight: var(--ui-weight-medium, #{t.$weight-medium});
82
+ font-weight: var(--_weight-medium);
56
83
  line-height: 1;
57
- color: var(--ui-color-text-muted, #{t.$color-text-muted});
84
+ color: var(--_color-text-muted);
58
85
 
59
86
  background: var(--_tab-bg);
60
87
  border: none;
61
88
  // Use box-shadow for indicator to avoid affecting height
62
- box-shadow: inset 0 calc(var(--ui-border-width-md, #{t.$border-width-md}) * -1) 0 transparent;
89
+ box-shadow: inset 0 calc(var(--_border-width-md) * -1) 0 transparent;
63
90
  cursor: pointer;
64
91
 
65
92
  transition:
66
- color var(--ui-duration-base) var(--ui-ease-default),
67
- box-shadow var(--ui-duration-base) var(--ui-ease-default);
93
+ color var(--_duration-base) var(--_ease-default),
94
+ box-shadow var(--_duration-base) var(--_ease-default);
68
95
 
69
96
  &:hover {
70
- color: var(--ui-color-text, #{t.$color-text});
97
+ color: var(--_color-text);
71
98
  }
72
99
 
73
100
  &--active {
74
- color: var(--ui-color-primary, #{t.$color-primary});
101
+ color: var(--_color-primary);
75
102
 
76
103
  background: var(--_tab-bg-active);
77
- box-shadow: inset 0 calc(var(--ui-border-width-md, #{t.$border-width-md}) * -1) 0 var(--ui-color-primary, #{t.$color-primary});
104
+ box-shadow: inset 0 calc(var(--_border-width-md) * -1) 0 var(--_color-primary);
78
105
  }
79
106
  }
80
107
 
@@ -83,7 +110,7 @@
83
110
 
84
111
  padding: var(--_panel-padding);
85
112
 
86
- line-height: var(--ui-row-1, #{t.$row});
113
+ line-height: var(--_row-1);
87
114
 
88
115
  &--active {
89
116
  display: block;
@@ -91,6 +118,7 @@
91
118
  }
92
119
 
93
120
  // Vertical orientation
121
+ // @modifier boolean vertical
94
122
  .tabs--vertical {
95
123
  display: flex;
96
124
 
@@ -101,16 +129,16 @@
101
129
  inline-size: auto;
102
130
 
103
131
  // Move indicator to inline-start instead of block-end
104
- box-shadow: inset calc(var(--ui-border-width-sm, #{t.$border-width-sm}) * -1) 0 0 var(--_border-color);
132
+ box-shadow: inset calc(var(--_border-width-sm) * -1) 0 0 var(--_border-color);
105
133
  }
106
134
 
107
135
  > .tabs__list > .tabs__tab {
108
136
  block-size: var(--_tab-height);
109
137
 
110
- box-shadow: inset calc(var(--ui-border-width-md, #{t.$border-width-md}) * -1) 0 0 transparent;
138
+ box-shadow: inset calc(var(--_border-width-md) * -1) 0 0 transparent;
111
139
 
112
140
  &--active {
113
- box-shadow: inset calc(var(--ui-border-width-md, #{t.$border-width-md}) * -1) 0 0 var(--ui-color-primary, #{t.$color-primary});
141
+ box-shadow: inset calc(var(--_border-width-md) * -1) 0 0 var(--_color-primary);
114
142
  }
115
143
  }
116
144
 
@@ -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": "tabs",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -11,53 +12,79 @@
11
12
  },
12
13
  "elements": {
13
14
  "list": {},
14
- "tab": {
15
- "modifiers": {
16
- "active": {
17
- "type": "boolean"
18
- }
19
- }
20
- },
21
- "panel": {
22
- "modifiers": {
23
- "active": {
24
- "type": "boolean"
25
- }
26
- }
27
- }
15
+ "tab": {},
16
+ "panel": {}
28
17
  },
29
18
  "cssVars": [
30
19
  {
31
20
  "name": "--ui-tabs-border-color",
32
- "default": "var(--ui-color-border)"
21
+ "default": "var(--ui-color-border)",
22
+ "description": "Border color"
33
23
  },
34
24
  {
35
25
  "name": "--ui-tabs-tab-height",
36
- "default": "var(--ui-row-2)"
26
+ "default": "var(--ui-row-2)",
27
+ "description": "Tab height"
37
28
  },
38
29
  {
39
30
  "name": "--ui-tabs-tab-padding-x",
40
- "default": "var(--ui-space-2)"
31
+ "default": "var(--ui-space-2)",
32
+ "description": "Tab padding x"
41
33
  },
42
34
  {
43
35
  "name": "--ui-tabs-tab-padding-y",
44
- "default": "var(--ui-space-1)"
36
+ "default": "var(--ui-space-1)",
37
+ "description": "Tab padding y"
45
38
  },
46
39
  {
47
40
  "name": "--ui-tabs-tab-font-size",
48
- "default": "var(--ui-font-size-sm)"
41
+ "default": "var(--ui-font-size-sm)",
42
+ "description": "Tab font size"
49
43
  },
50
44
  {
51
45
  "name": "--ui-tabs-tab-bg",
52
- "default": "transparent"
46
+ "default": "transparent",
47
+ "description": "Tab bg"
53
48
  },
54
49
  {
55
50
  "name": "--ui-tabs-tab-bg-active",
56
- "default": "var(--ui-color-bg)"
51
+ "default": "var(--ui-color-bg)",
52
+ "description": "Tab bg active"
57
53
  },
58
54
  {
59
55
  "name": "--ui-tabs-panel-padding",
60
- "default": "var(--ui-space-3)"
56
+ "default": "var(--ui-space-3)",
57
+ "description": "Panel padding on all sides"
58
+ },
59
+ {
60
+ "name": "--ui-tabs-tab-height-sm",
61
+ "default": "var(--ui-row-1)",
62
+ "description": "Tab height sm"
63
+ },
64
+ {
65
+ "name": "--ui-tabs-tab-padding-x-sm",
66
+ "default": "var(--ui-space-1)",
67
+ "description": "Tab padding x sm"
68
+ },
69
+ {
70
+ "name": "--ui-tabs-tab-font-size-sm",
71
+ "default": "var(--ui-font-size-xs)",
72
+ "description": "Tab font size sm"
73
+ },
74
+ {
75
+ "name": "--ui-tabs-tab-height-lg",
76
+ "default": "calc(var(--ui-row) * 2.5)",
77
+ "description": "Tab height lg"
78
+ },
79
+ {
80
+ "name": "--ui-tabs-tab-padding-x-lg",
81
+ "default": "var(--ui-space-3)",
82
+ "description": "Tab padding x lg"
83
+ },
84
+ {
85
+ "name": "--ui-tabs-tab-font-size-lg",
86
+ "default": "var(--ui-font-size-md)",
87
+ "description": "Tab font size lg"
61
88
  }
62
89
  ]
63
90
  }
@@ -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": "dialog",
3
4
  "element": "div",
4
5
  "modifiers": {
@@ -16,19 +17,23 @@
16
17
  "cssVars": [
17
18
  {
18
19
  "name": "--ui-dialog-header-padding",
19
- "default": "calc(var(--ui-unit) * 2"
20
+ "default": "calc(var(--ui-unit) * 2) calc(var(--ui-unit) * 3)",
21
+ "description": "Header padding on all sides"
20
22
  },
21
23
  {
22
24
  "name": "--ui-dialog-body-padding",
23
- "default": "calc(var(--ui-unit) * 3"
25
+ "default": "calc(var(--ui-unit) * 3)",
26
+ "description": "Body area padding on all sides"
24
27
  },
25
28
  {
26
29
  "name": "--ui-dialog-footer-padding",
27
- "default": "calc(var(--ui-unit) * 2"
30
+ "default": "calc(var(--ui-unit) * 2) calc(var(--ui-unit) * 3)",
31
+ "description": "Footer padding on all sides"
28
32
  },
29
33
  {
30
34
  "name": "--ui-dialog-border-color",
31
- "default": "var(--ui-color-border)"
35
+ "default": "var(--ui-color-border)",
36
+ "description": "Border color"
32
37
  }
33
38
  ]
34
39
  }
@@ -1,14 +1,22 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component dialog
3
+ // @element div
2
4
 
3
5
  // Dialog - structured modal with header, body, footer
4
6
  // Extends modal with semantic sections
5
7
 
6
8
  @layer components.tokens {
7
9
  .dialog {
10
+ --_font-size-lg: var(--ui-font-size-lg, #{t.$font-size-lg});
11
+ --_weight-semibold: var(--ui-weight-semibold, #{t.$weight-semibold});
12
+ // @desc Header padding on all sides
8
13
  --_header-padding: var(--ui-dialog-header-padding, calc(#{t.$unit} * 2) calc(#{t.$unit} * 3));
14
+ // @desc Body area padding on all sides
9
15
  --_body-padding: var(--ui-dialog-body-padding, calc(#{t.$unit} * 3));
16
+ // @desc Footer padding on all sides
10
17
  --_footer-padding: var(--ui-dialog-footer-padding, calc(#{t.$unit} * 2) calc(#{t.$unit} * 3));
11
- --_border-color: var(--ui-dialog-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
18
+ // @desc Border color
19
+ --_border-color: var(--ui-dialog-border-color, var(--ui-color-border, #{t.$color-border}));
12
20
  }
13
21
  }
14
22
 
@@ -33,8 +41,8 @@
33
41
  .dialog__title {
34
42
  margin: 0;
35
43
 
36
- font-size: var(--ui-font-size-lg, #{t.$font-size-lg});
37
- font-weight: var(--ui-weight-semibold, 600);
44
+ font-size: var(--_font-size-lg);
45
+ font-weight: var(--_weight-semibold);
38
46
  line-height: calc(#{t.$unit} * 3);
39
47
  }
40
48
 
@@ -64,6 +72,7 @@
64
72
  }
65
73
 
66
74
  // Variant without borders
75
+ // @modifier boolean borderless
67
76
  .dialog--borderless .dialog__header {
68
77
  border-block-end: none;
69
78
  }
@@ -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": "drawer",
3
4
  "element": "div",
4
5
  "modifiers": {
5
- "position": {
6
- "values": ["start", "end", "top", "bottom"]
7
- },
8
6
  "size": {
9
- "values": ["sm", "lg"]
7
+ "values": ["sm", "lg", "full"]
8
+ },
9
+ "position": {
10
+ "values": ["end", "start", "top", "bottom"]
10
11
  }
11
12
  },
12
13
  "elements": {
@@ -17,39 +18,51 @@
17
18
  "body": {},
18
19
  "footer": {}
19
20
  },
20
- "relatedComponents": ["drawer-overlay"],
21
+ "relatedComponents": [
22
+ {
23
+ "name": "drawer-overlay"
24
+ }
25
+ ],
21
26
  "cssVars": [
22
27
  {
23
28
  "name": "--ui-drawer-size",
24
- "default": "calc(var(--ui-unit) * 40"
29
+ "default": "calc(var(--ui-unit) * 40)",
30
+ "description": "Overall size"
25
31
  },
26
32
  {
27
33
  "name": "--ui-drawer-max-size",
28
- "default": "90%"
34
+ "default": "90%",
35
+ "description": "Max size"
29
36
  },
30
37
  {
31
38
  "name": "--ui-drawer-bg",
32
- "default": "var(--ui-color-bg)"
39
+ "default": "var(--ui-color-bg)",
40
+ "description": "Background color"
33
41
  },
34
42
  {
35
43
  "name": "--ui-drawer-shadow",
36
- "default": "var(--shadow-lg)"
44
+ "default": "var(--ui-shadow-lg)",
45
+ "description": "Box shadow"
37
46
  },
38
47
  {
39
48
  "name": "--ui-drawer-header-padding",
40
- "default": "calc(var(--ui-unit) * 2"
49
+ "default": "calc(var(--ui-unit) * 2) calc(var(--ui-unit) * 3)",
50
+ "description": "Header padding on all sides"
41
51
  },
42
52
  {
43
53
  "name": "--ui-drawer-body-padding",
44
- "default": "calc(var(--ui-unit) * 3"
54
+ "default": "calc(var(--ui-unit) * 3)",
55
+ "description": "Body area padding on all sides"
45
56
  },
46
57
  {
47
58
  "name": "--ui-drawer-footer-padding",
48
- "default": "calc(var(--ui-unit) * 2"
59
+ "default": "calc(var(--ui-unit) * 2) calc(var(--ui-unit) * 3)",
60
+ "description": "Footer padding on all sides"
49
61
  },
50
62
  {
51
63
  "name": "--ui-drawer-border-color",
52
- "default": "var(--ui-color-border)"
64
+ "default": "var(--ui-color-border)",
65
+ "description": "Border color"
53
66
  }
54
67
  ]
55
68
  }
@@ -1,20 +1,44 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component drawer
3
+ // @element div
4
+ // @related drawer-overlay
2
5
 
3
6
  // Drawer - slide-out panel
4
7
  // Side panel that slides in from edge
5
8
 
6
9
  @layer components.tokens {
7
10
  .drawer {
11
+ --_z-drawer: var(--ui-z-drawer, #{t.$z-drawer});
12
+ --_overlay-bg: var(--ui-overlay-bg, #{t.$overlay-bg});
13
+ --_duration-normal: var(--ui-duration-normal, #{t.$duration-normal});
14
+ --_ease-out: var(--ui-ease-out, ease-out);
15
+ --_duration-fast: var(--ui-duration-fast, #{t.$duration-fast});
16
+ --_ease-in: var(--ui-ease-in, ease-in);
17
+ --_border-width-sm: var(--ui-border-width-sm, #{t.$border-width-sm});
18
+ --_font-size-lg: var(--ui-font-size-lg, #{t.$font-size-lg});
19
+ --_weight-semibold: var(--ui-weight-semibold, #{t.$weight-semibold});
20
+ --_row-1: var(--ui-row-1, #{t.$row});
21
+ --_font-size-sm: var(--ui-font-size-sm, #{t.$font-size-sm});
22
+ --_color-text-muted: var(--ui-color-text-muted, #{t.$color-text-muted});
23
+ // @desc Overall size
8
24
  --_size: var(--ui-drawer-size, calc(#{t.$unit} * 40));
25
+ // @desc Max size
9
26
  --_max-size: var(--ui-drawer-max-size, 90%);
27
+ // @desc Background color
10
28
  --_bg: var(--ui-drawer-bg, var(--ui-color-bg, #{t.$color-bg}));
29
+ // @desc Box shadow
11
30
  --_shadow: var(--ui-drawer-shadow, var(--ui-shadow-lg));
31
+ // @desc Header padding on all sides
12
32
  --_header-padding: var(--ui-drawer-header-padding, calc(#{t.$unit} * 2) calc(#{t.$unit} * 3));
33
+ // @desc Body area padding on all sides
13
34
  --_body-padding: var(--ui-drawer-body-padding, calc(#{t.$unit} * 3));
35
+ // @desc Footer padding on all sides
14
36
  --_footer-padding: var(--ui-drawer-footer-padding, calc(#{t.$unit} * 2) calc(#{t.$unit} * 3));
37
+ // @desc Border color
15
38
  --_border-color: var(--ui-drawer-border-color, var(--ui-color-border, #{t.$color-border}));
16
39
  }
17
40
 
41
+ // @modifier size
18
42
  .drawer--sm {
19
43
  --_size: calc(#{t.$unit} * 30);
20
44
  }
@@ -34,17 +58,17 @@
34
58
  .drawer-overlay {
35
59
  position: fixed;
36
60
  inset: 0;
37
- z-index: var(--ui-z-drawer, 900);
61
+ z-index: var(--_z-drawer);
38
62
 
39
- background: var(--ui-overlay-bg, rgb(0 0 0 / 0.5));
63
+ background: var(--_overlay-bg);
40
64
  }
41
65
 
42
66
  .drawer-overlay[data-state="open"] {
43
- animation: drawer-overlay-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
67
+ animation: drawer-overlay-in var(--_duration-normal) var(--_ease-out);
44
68
  }
45
69
 
46
70
  .drawer-overlay[data-state="closed"] {
47
- animation: drawer-overlay-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
71
+ animation: drawer-overlay-out var(--_duration-fast) var(--_ease-in);
48
72
  }
49
73
 
50
74
  @keyframes drawer-overlay-in {
@@ -65,13 +89,14 @@
65
89
  display: flex;
66
90
  flex-direction: column;
67
91
  position: fixed;
68
- z-index: var(--ui-z-drawer, 900);
92
+ z-index: var(--_z-drawer);
69
93
 
70
94
  background: var(--_bg);
71
95
  box-shadow: var(--_shadow);
72
96
  }
73
97
 
74
98
  // Direction variants
99
+ // @modifier position
75
100
  .drawer--end {
76
101
  inset-block: 0;
77
102
  inset-inline-end: 0;
@@ -79,7 +104,7 @@
79
104
  inline-size: var(--_size);
80
105
  max-inline-size: var(--_max-size);
81
106
 
82
- box-shadow: calc(var(--ui-border-width-sm, 1px) * -1) 0 0 var(--_border-color);
107
+ box-shadow: calc(var(--_border-width-sm) * -1) 0 0 var(--_border-color);
83
108
  }
84
109
 
85
110
  .drawer--start {
@@ -89,7 +114,7 @@
89
114
  inline-size: var(--_size);
90
115
  max-inline-size: var(--_max-size);
91
116
 
92
- box-shadow: var(--ui-border-width-sm, 1px) 0 0 var(--_border-color);
117
+ box-shadow: var(--_border-width-sm) 0 0 var(--_border-color);
93
118
  }
94
119
 
95
120
  .drawer--top {
@@ -99,7 +124,7 @@
99
124
  block-size: var(--_size);
100
125
  max-block-size: var(--_max-size);
101
126
 
102
- box-shadow: 0 var(--ui-border-width-sm, 1px) 0 var(--_border-color);
127
+ box-shadow: 0 var(--_border-width-sm) 0 var(--_border-color);
103
128
  }
104
129
 
105
130
  .drawer--bottom {
@@ -109,40 +134,40 @@
109
134
  block-size: var(--_size);
110
135
  max-block-size: var(--_max-size);
111
136
 
112
- box-shadow: 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--_border-color);
137
+ box-shadow: 0 calc(var(--_border-width-sm) * -1) 0 var(--_border-color);
113
138
  }
114
139
 
115
140
  // Animation states
116
141
  .drawer--end[data-state="open"] {
117
- animation: drawer-slide-in-end var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
142
+ animation: drawer-slide-in-end var(--_duration-normal) var(--_ease-out);
118
143
  }
119
144
 
120
145
  .drawer--end[data-state="closed"] {
121
- animation: drawer-slide-out-end var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
146
+ animation: drawer-slide-out-end var(--_duration-fast) var(--_ease-in);
122
147
  }
123
148
 
124
149
  .drawer--start[data-state="open"] {
125
- animation: drawer-slide-in-start var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
150
+ animation: drawer-slide-in-start var(--_duration-normal) var(--_ease-out);
126
151
  }
127
152
 
128
153
  .drawer--start[data-state="closed"] {
129
- animation: drawer-slide-out-start var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
154
+ animation: drawer-slide-out-start var(--_duration-fast) var(--_ease-in);
130
155
  }
131
156
 
132
157
  .drawer--top[data-state="open"] {
133
- animation: drawer-slide-in-top var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
158
+ animation: drawer-slide-in-top var(--_duration-normal) var(--_ease-out);
134
159
  }
135
160
 
136
161
  .drawer--top[data-state="closed"] {
137
- animation: drawer-slide-out-top var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
162
+ animation: drawer-slide-out-top var(--_duration-fast) var(--_ease-in);
138
163
  }
139
164
 
140
165
  .drawer--bottom[data-state="open"] {
141
- animation: drawer-slide-in-bottom var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
166
+ animation: drawer-slide-in-bottom var(--_duration-normal) var(--_ease-out);
142
167
  }
143
168
 
144
169
  .drawer--bottom[data-state="closed"] {
145
- animation: drawer-slide-out-bottom var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
170
+ animation: drawer-slide-out-bottom var(--_duration-fast) var(--_ease-in);
146
171
  }
147
172
 
148
173
  @keyframes drawer-slide-in-end {
@@ -203,23 +228,23 @@
203
228
 
204
229
  padding: var(--_header-padding);
205
230
 
206
- box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--_border-color);
231
+ box-shadow: inset 0 calc(var(--_border-width-sm) * -1) 0 var(--_border-color);
207
232
  }
208
233
 
209
234
  .drawer__title {
210
235
  margin: 0;
211
236
 
212
- font-size: var(--ui-font-size-lg, #{t.$font-size-lg});
213
- font-weight: var(--ui-weight-semibold, 600);
214
- line-height: var(--ui-row-1, #{t.$row});
237
+ font-size: var(--_font-size-lg);
238
+ font-weight: var(--_weight-semibold);
239
+ line-height: var(--_row-1);
215
240
  }
216
241
 
217
242
  .drawer__description {
218
243
  margin: 0;
219
244
 
220
- font-size: var(--ui-font-size-sm, #{t.$font-size-sm});
221
- line-height: var(--ui-row-1, #{t.$row});
222
- color: var(--ui-color-text-muted, #{t.$color-text-muted});
245
+ font-size: var(--_font-size-sm);
246
+ line-height: var(--_row-1);
247
+ color: var(--_color-text-muted);
223
248
  }
224
249
 
225
250
  .drawer__close {
@@ -234,7 +259,7 @@
234
259
  padding: var(--_body-padding);
235
260
  overflow-y: auto;
236
261
 
237
- line-height: var(--ui-row-1, #{t.$row});
262
+ line-height: var(--_row-1);
238
263
  }
239
264
 
240
265
  .drawer__footer {
@@ -246,7 +271,7 @@
246
271
 
247
272
  padding: var(--_footer-padding);
248
273
 
249
- box-shadow: inset 0 var(--ui-border-width-sm, 1px) 0 var(--_border-color);
274
+ box-shadow: inset 0 var(--_border-width-sm) 0 var(--_border-color);
250
275
  }
251
276
 
252
277
  @media (prefers-reduced-motion: reduce) {
@@ -1,24 +1,38 @@
1
1
  @use '../../../config/tokens/variables' as t;
2
+ // @component modal
3
+ // @element div
2
4
 
3
5
  // Modal - container for modal dialogs
4
6
  // Centered container with backdrop that appears over page content
5
7
 
6
8
  @layer components.tokens {
7
9
  .modal {
10
+ --_duration-normal: var(--ui-duration-normal, #{t.$duration-normal});
11
+ --_ease-default: var(--ui-ease-default, ease);
12
+ // @desc Background color
8
13
  --_bg: var(--ui-modal-bg, var(--ui-color-bg, #{t.$color-bg}));
14
+ // @desc Corner radius
9
15
  --_radius: var(--ui-modal-radius, var(--ui-radius-lg, calc(#{t.$unit} * 1.5)));
16
+ // @desc Box shadow
10
17
  --_shadow: var(--ui-modal-shadow, 0 calc(#{t.$unit} * 3) calc(#{t.$unit} * 6) rgb(0 0 0 / 0.25));
18
+ // @desc Padding on all sides
11
19
  --_padding: var(--ui-modal-padding, calc(#{t.$unit} * 3));
20
+ // @desc Maximum width
12
21
  --_max-width: var(--ui-modal-max-width, calc(#{t.$unit} * 60));
22
+ // @desc Maximum height
13
23
  --_max-height: var(--ui-modal-max-height, calc(100vh - #{t.$unit} * 8));
14
- --_z: var(--ui-modal-z, var(--ui-z-modal, 400));
24
+ // @desc Z-index stacking order
25
+ --_z: var(--ui-modal-z, var(--ui-z-modal, #{t.$z-modal}));
15
26
  }
16
27
 
28
+ // @modifier size
17
29
  .modal--sm {
30
+ // @desc Maximum width at small size
18
31
  --_max-width: var(--ui-modal-max-width-sm, calc(#{t.$unit} * 40));
19
32
  }
20
33
 
21
34
  .modal--lg {
35
+ // @desc Maximum width at large size
22
36
  --_max-width: var(--ui-modal-max-width-lg, calc(#{t.$unit} * 80));
23
37
  }
24
38
 
@@ -68,6 +82,7 @@
68
82
 
69
83
  // Animation states
70
84
  .modal--entering .modal__content,
85
+ // @modifier boolean visible
71
86
  .modal--visible .modal__content {
72
87
  opacity: 1;
73
88
  transform: scale(1);
@@ -81,8 +96,8 @@
81
96
 
82
97
  .modal--animate .modal__content {
83
98
  transition:
84
- opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease),
85
- transform var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
99
+ opacity var(--_duration-normal) var(--_ease-default),
100
+ transform var(--_duration-normal) var(--_ease-default);
86
101
  }
87
102
 
88
103
  // Hidden state hides entire modal