@teseor/css 1.15.7 → 2.0.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 (107) hide show
  1. package/dist/compiled.css +1 -1
  2. package/dist/index.css +51 -52
  3. package/package.json +1 -1
  4. package/src/base/docs.html +1 -1
  5. package/src/base/root.scss +1 -1
  6. package/src/base/typography/typography.scss +6 -6
  7. package/src/components/actions/button/api.json +1 -1
  8. package/src/components/actions/button/index.scss +1 -1
  9. package/src/components/content/divider/docs.html +1 -1
  10. package/src/components/content/scroll-area/docs.html +2 -2
  11. package/src/components/data-display/avatar/index.scss +1 -1
  12. package/src/components/data-display/badge/api.json +1 -1
  13. package/src/components/data-display/badge/index.scss +1 -1
  14. package/src/components/data-display/data-list/index.scss +1 -1
  15. package/src/components/data-display/stat/api.json +3 -3
  16. package/src/components/data-display/stat/index.scss +5 -5
  17. package/src/components/data-display/status/docs.html +2 -2
  18. package/src/components/data-display/table/index.scss +1 -1
  19. package/src/components/data-display/tag/index.scss +1 -1
  20. package/src/components/disclosure/disclosure/index.scss +1 -1
  21. package/src/components/feedback/alert/index.scss +1 -1
  22. package/src/components/feedback/skeleton/docs.html +2 -2
  23. package/src/components/feedback/toast/docs.html +12 -12
  24. package/src/components/feedback/toast/index.scss +2 -2
  25. package/src/components/forms/checkbox/docs.html +1 -1
  26. package/src/components/forms/checkbox-group/api.json +1 -1
  27. package/src/components/forms/checkbox-group/index.scss +2 -2
  28. package/src/components/forms/fieldset/api.json +1 -1
  29. package/src/components/forms/fieldset/index.scss +2 -2
  30. package/src/components/forms/form-error/index.scss +1 -1
  31. package/src/components/forms/form-helper/index.scss +1 -1
  32. package/src/components/forms/label/index.scss +3 -3
  33. package/src/components/forms/radio/docs.html +5 -5
  34. package/src/components/forms/radio-group/api.json +1 -1
  35. package/src/components/forms/radio-group/index.scss +2 -2
  36. package/src/components/forms/toggle/docs.html +3 -3
  37. package/src/components/navigation/dropdown-menu/api.json +1 -1
  38. package/src/components/navigation/dropdown-menu/docs.html +1 -1
  39. package/src/components/navigation/dropdown-menu/index.scss +1 -1
  40. package/src/components/navigation/menu/index.scss +2 -2
  41. package/src/components/navigation/nav/api.json +1 -1
  42. package/src/components/navigation/nav/index.scss +1 -1
  43. package/src/components/navigation/tabs/index.scss +1 -1
  44. package/src/components/overlays/dialog/docs.html +6 -6
  45. package/src/components/overlays/dialog/index.scss +1 -1
  46. package/src/components/overlays/drawer/docs.html +17 -17
  47. package/src/components/overlays/drawer/index.scss +2 -2
  48. package/src/components/overlays/modal/api.json +1 -1
  49. package/src/components/overlays/modal/docs.html +12 -12
  50. package/src/components/overlays/modal/index.scss +1 -1
  51. package/src/components/overlays/overlay/api.json +1 -1
  52. package/src/components/overlays/overlay/docs.html +8 -8
  53. package/src/components/overlays/overlay/index.scss +1 -1
  54. package/src/components/overlays/popover/api.json +1 -1
  55. package/src/components/overlays/popover/docs.html +6 -6
  56. package/src/components/overlays/popover/index.scss +2 -2
  57. package/src/components/overlays/tooltip/api.json +1 -1
  58. package/src/components/overlays/tooltip/docs.html +10 -10
  59. package/src/components/overlays/tooltip/index.scss +1 -1
  60. package/src/components/typography/blockquote/api.json +1 -1
  61. package/src/components/typography/blockquote/index.scss +2 -2
  62. package/src/components/typography/code/index.scss +1 -1
  63. package/src/components/typography/code-block/api.json +1 -1
  64. package/src/components/typography/code-block/index.scss +1 -1
  65. package/src/components/typography/heading/api.json +9 -9
  66. package/src/components/typography/heading/index.scss +9 -9
  67. package/src/components/typography/list/api.json +1 -1
  68. package/src/components/typography/list/index.scss +1 -1
  69. package/src/config/guides/accessibility.docs.html +1 -1
  70. package/src/config/guides/getting-started.docs.html +1 -1
  71. package/src/config/guides/theming.docs.html +53 -20
  72. package/src/config/guides/token-architecture.docs.html +87 -0
  73. package/src/config/tokens/_variables.scss +60 -53
  74. package/src/config/tokens/colors/index.scss +18 -0
  75. package/src/config/tokens/docs.html +10 -21
  76. package/src/config/tokens/index.scss +0 -1
  77. package/src/config/tokens/radius.scss +5 -4
  78. package/src/config/tokens/shadows.scss +4 -3
  79. package/src/config/tokens/typography.scss +47 -47
  80. package/src/config/tokens/zindex.scss +10 -10
  81. package/src/debug/docs.html +3 -3
  82. package/src/debug/index.scss +7 -8
  83. package/src/layout/aspect-ratio/docs.html +7 -7
  84. package/src/layout/center/docs.html +3 -3
  85. package/src/layout/footer/api.json +1 -1
  86. package/src/layout/footer/index.scss +3 -3
  87. package/src/layout/main/docs.html +3 -3
  88. package/src/layout/nav-rail/api.json +1 -1
  89. package/src/layout/nav-rail/docs.html +1 -1
  90. package/src/layout/nav-rail/index.scss +1 -1
  91. package/src/layout/page-header/index.scss +1 -1
  92. package/src/layout/sidebar/docs.html +3 -3
  93. package/src/layout/sidebar/index.scss +1 -1
  94. package/src/layout/sidebar-nav/api.json +2 -2
  95. package/src/layout/sidebar-nav/docs.html +6 -6
  96. package/src/layout/sidebar-nav/index.scss +4 -4
  97. package/src/layout/topbar/api.json +1 -1
  98. package/src/layout/topbar/index.scss +1 -1
  99. package/src/utilities/position/api.json +6 -0
  100. package/src/utilities/position/docs.html +29 -0
  101. package/src/utilities/position/position.scss +74 -0
  102. package/src/utilities/scroll-animation/docs.html +1 -1
  103. package/src/utilities/scroll-animation/index.scss +1 -1
  104. package/src/utilities/scroll-snap/docs.html +33 -33
  105. package/src/utilities/text/docs.html +5 -5
  106. package/src/utilities/text/text.scss +15 -15
  107. package/src/config/tokens/semantic-spacing.scss +0 -12
@@ -23,35 +23,35 @@
23
23
  // ==========================================================================
24
24
 
25
25
  // Tight line-heights for compact UI elements
26
- --ui-leading-tight-xs: var(--ui-row-1);
27
- --ui-leading-tight-sm: var(--ui-row-1);
28
- --ui-leading-tight-md: calc(var(--ui-unit) * 3);
29
- --ui-leading-tight-lg: calc(var(--ui-unit) * 3);
26
+ --ui-line-height-tight-xs: var(--ui-row-1);
27
+ --ui-line-height-tight-sm: var(--ui-row-1);
28
+ --ui-line-height-tight-md: calc(var(--ui-unit) * 3);
29
+ --ui-line-height-tight-lg: calc(var(--ui-unit) * 3);
30
30
 
31
31
  // Normal line-heights for readable body text
32
- --ui-leading-xs: var(--ui-row-1);
33
- --ui-leading-sm: calc(var(--ui-unit) * 3);
34
- --ui-leading-md: calc(var(--ui-unit) * 3);
35
- --ui-leading-lg: var(--ui-row-2);
36
- --ui-leading-xl: var(--ui-row-2);
37
- --ui-leading-2xl: var(--ui-row-2);
38
- --ui-leading-3xl: calc(var(--ui-unit) * 5);
39
- --ui-leading-4xl: calc(var(--ui-unit) * 6);
32
+ --ui-line-height-xs: var(--ui-row-1);
33
+ --ui-line-height-sm: calc(var(--ui-unit) * 3);
34
+ --ui-line-height-md: calc(var(--ui-unit) * 3);
35
+ --ui-line-height-lg: var(--ui-row-2);
36
+ --ui-line-height-xl: var(--ui-row-2);
37
+ --ui-line-height-2xl: var(--ui-row-2);
38
+ --ui-line-height-3xl: calc(var(--ui-unit) * 5);
39
+ --ui-line-height-4xl: calc(var(--ui-unit) * 6);
40
40
 
41
41
  // ==========================================================================
42
42
  // PRIMITIVE TOKENS - Font Weights
43
43
  // ==========================================================================
44
- --ui-weight-normal: 400;
45
- --ui-weight-medium: 500;
46
- --ui-weight-semibold: 600;
47
- --ui-weight-bold: 700;
44
+ --ui-font-weight-normal: 400;
45
+ --ui-font-weight-medium: 500;
46
+ --ui-font-weight-semibold: 600;
47
+ --ui-font-weight-bold: 700;
48
48
 
49
49
  // ==========================================================================
50
50
  // PRIMITIVE TOKENS - Letter Spacing
51
51
  // ==========================================================================
52
- --ui-tracking-display: -0.02em;
53
- --ui-tracking-body: 0;
54
- --ui-tracking-caps: 0.08em;
52
+ --ui-letter-spacing-display: -0.02em;
53
+ --ui-letter-spacing-body: 0;
54
+ --ui-letter-spacing-caps: 0.08em;
55
55
 
56
56
  // ==========================================================================
57
57
  // SEMANTIC TOKENS - Text Roles
@@ -59,62 +59,62 @@
59
59
 
60
60
  // Heading 1
61
61
  --ui-heading-1-size: var(--ui-font-size-4xl);
62
- --ui-heading-1-line-height: var(--ui-leading-4xl);
63
- --ui-heading-1-weight: var(--ui-weight-bold);
64
- --ui-heading-1-tracking: var(--ui-tracking-display);
62
+ --ui-heading-1-line-height: var(--ui-line-height-4xl);
63
+ --ui-heading-1-weight: var(--ui-font-weight-bold);
64
+ --ui-heading-1-tracking: var(--ui-letter-spacing-display);
65
65
 
66
66
  // Heading 2
67
67
  --ui-heading-2-size: var(--ui-font-size-3xl);
68
- --ui-heading-2-line-height: var(--ui-leading-3xl);
69
- --ui-heading-2-weight: var(--ui-weight-bold);
68
+ --ui-heading-2-line-height: var(--ui-line-height-3xl);
69
+ --ui-heading-2-weight: var(--ui-font-weight-bold);
70
70
  --ui-heading-2-tracking: -0.01em;
71
71
 
72
72
  // Heading 3
73
73
  --ui-heading-3-size: var(--ui-font-size-2xl);
74
- --ui-heading-3-line-height: var(--ui-leading-2xl);
75
- --ui-heading-3-weight: var(--ui-weight-semibold);
76
- --ui-heading-3-tracking: var(--ui-tracking-body);
74
+ --ui-heading-3-line-height: var(--ui-line-height-2xl);
75
+ --ui-heading-3-weight: var(--ui-font-weight-semibold);
76
+ --ui-heading-3-tracking: var(--ui-letter-spacing-body);
77
77
 
78
78
  // Heading 4
79
79
  --ui-heading-4-size: var(--ui-font-size-xl);
80
- --ui-heading-4-line-height: var(--ui-leading-xl);
81
- --ui-heading-4-weight: var(--ui-weight-semibold);
82
- --ui-heading-4-tracking: var(--ui-tracking-body);
80
+ --ui-heading-4-line-height: var(--ui-line-height-xl);
81
+ --ui-heading-4-weight: var(--ui-font-weight-semibold);
82
+ --ui-heading-4-tracking: var(--ui-letter-spacing-body);
83
83
 
84
84
  // Heading 5
85
85
  --ui-heading-5-size: var(--ui-font-size-lg);
86
- --ui-heading-5-line-height: var(--ui-leading-sm);
87
- --ui-heading-5-weight: var(--ui-weight-medium);
88
- --ui-heading-5-tracking: var(--ui-tracking-body);
86
+ --ui-heading-5-line-height: var(--ui-line-height-sm);
87
+ --ui-heading-5-weight: var(--ui-font-weight-medium);
88
+ --ui-heading-5-tracking: var(--ui-letter-spacing-body);
89
89
 
90
90
  // Body
91
91
  --ui-body-size: var(--ui-font-size-md);
92
- --ui-body-line-height: var(--ui-leading-md);
93
- --ui-body-weight: var(--ui-weight-normal);
94
- --ui-body-tracking: var(--ui-tracking-body);
92
+ --ui-body-line-height: var(--ui-line-height-md);
93
+ --ui-body-weight: var(--ui-font-weight-normal);
94
+ --ui-body-tracking: var(--ui-letter-spacing-body);
95
95
 
96
96
  // Body Small
97
97
  --ui-body-sm-size: var(--ui-font-size-sm);
98
- --ui-body-sm-line-height: var(--ui-leading-sm);
99
- --ui-body-sm-weight: var(--ui-weight-normal);
100
- --ui-body-sm-tracking: var(--ui-tracking-body);
98
+ --ui-body-sm-line-height: var(--ui-line-height-sm);
99
+ --ui-body-sm-weight: var(--ui-font-weight-normal);
100
+ --ui-body-sm-tracking: var(--ui-letter-spacing-body);
101
101
 
102
102
  // Caption
103
103
  --ui-caption-size: var(--ui-font-size-xs);
104
- --ui-caption-line-height: var(--ui-leading-xs);
105
- --ui-caption-weight: var(--ui-weight-normal);
104
+ --ui-caption-line-height: var(--ui-line-height-xs);
105
+ --ui-caption-weight: var(--ui-font-weight-normal);
106
106
  --ui-caption-tracking: 0.01em;
107
107
 
108
108
  // Lead
109
109
  --ui-lead-size: var(--ui-font-size-lg);
110
- --ui-lead-line-height: var(--ui-leading-lg);
111
- --ui-lead-weight: var(--ui-weight-normal);
112
- --ui-lead-tracking: var(--ui-tracking-body);
110
+ --ui-lead-line-height: var(--ui-line-height-lg);
111
+ --ui-lead-weight: var(--ui-font-weight-normal);
112
+ --ui-lead-tracking: var(--ui-letter-spacing-body);
113
113
 
114
114
  // Eyebrow
115
115
  --ui-eyebrow-size: var(--ui-font-size-xs);
116
- --ui-eyebrow-line-height: var(--ui-leading-xs);
117
- --ui-eyebrow-weight: var(--ui-weight-semibold);
118
- --ui-eyebrow-tracking: var(--ui-tracking-caps);
116
+ --ui-eyebrow-line-height: var(--ui-line-height-xs);
117
+ --ui-eyebrow-weight: var(--ui-font-weight-semibold);
118
+ --ui-eyebrow-tracking: var(--ui-letter-spacing-caps);
119
119
  }
120
120
  }
@@ -1,15 +1,15 @@
1
1
  @layer tokens {
2
2
  :root {
3
3
  // Z-index scale (gaps allow insertion)
4
- --ui-z-base: 0;
5
- --ui-z-sticky: 100;
6
- --ui-z-dropdown: 200;
7
- --ui-z-overlay: 300;
8
- --ui-z-modal: 400;
9
- --ui-z-popover: 500;
10
- --ui-z-tooltip: 600;
11
- --ui-z-toast: 700;
12
- --ui-z-drawer: 800;
13
- --ui-z-debug: 9999;
4
+ --ui-z-index-base: 0;
5
+ --ui-z-index-sticky: 100;
6
+ --ui-z-index-dropdown: 200;
7
+ --ui-z-index-overlay: 300;
8
+ --ui-z-index-modal: 400;
9
+ --ui-z-index-popover: 500;
10
+ --ui-z-index-tooltip: 600;
11
+ --ui-z-index-toast: 700;
12
+ --ui-z-index-drawer: 800;
13
+ --ui-z-index-debug: 9999;
14
14
  }
15
15
  }
@@ -6,15 +6,15 @@ skipValidation: true
6
6
 
7
7
  <!-- @grid_overlay -->
8
8
  <!-- Shows the 8px unit grid. Add the class to any container. -->
9
- <div class="ui-debug-grid" style="height: var(--ui-row-6); position: relative"></div>
9
+ <div class="ui-debug-grid demo-box" style="--demo-h: var(--ui-row-6)"></div>
10
10
 
11
11
  <!-- @row_grid -->
12
12
  <!-- Shows both 8px unit lines and stronger row (16px) lines. -->
13
- <div class="ui-debug-grid-rows" style="height: var(--ui-row-6); position: relative"></div>
13
+ <div class="ui-debug-grid-rows demo-box" style="--demo-h: var(--ui-row-6)"></div>
14
14
 
15
15
  <!-- @baseline -->
16
16
  <!-- Horizontal baseline grid for verifying text alignment. -->
17
- <div class="ui-debug-baseline" style="height: var(--ui-row-6); position: relative"></div>
17
+ <div class="ui-debug-baseline demo-box" style="--demo-h: var(--ui-row-6)"></div>
18
18
 
19
19
  <!-- @outline -->
20
20
  <!-- Outlines all child elements to reveal layout boundaries. -->
@@ -7,8 +7,7 @@
7
7
  }
8
8
 
9
9
  .debug-grid {
10
- // Fallback hue 220 (blue) when --ui-hue-primary not set
11
- --debug-color: hsl(var(--ui-hue-primary, #{t.$hue-primary}) 80% 50% / 0.15);
10
+ --debug-color: color-mix(in oklch, var(--ui-color-primary, #{t.$color-primary}) 15%, transparent);
12
11
  }
13
12
 
14
13
  .debug-grid::after {
@@ -16,7 +15,7 @@
16
15
  position: absolute;
17
16
  inset-block-start: 0;
18
17
  inset-inline-start: 0;
19
- z-index: var(--ui-z-debug);
18
+ z-index: var(--ui-z-index-debug);
20
19
 
21
20
  block-size: 100%;
22
21
  inline-size: 100%;
@@ -31,8 +30,8 @@
31
30
 
32
31
  // Stronger grid at row intervals
33
32
  .debug-grid-rows {
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);
33
+ --debug-color: color-mix(in oklch, var(--ui-color-primary, #{t.$color-primary}) 10%, transparent);
34
+ --debug-color-strong: color-mix(in oklch, var(--ui-color-primary, #{t.$color-primary}) 25%, transparent);
36
35
  }
37
36
 
38
37
  .debug-grid-rows::after {
@@ -40,7 +39,7 @@
40
39
  position: absolute;
41
40
  inset-block-start: 0;
42
41
  inset-inline-start: 0;
43
- z-index: var(--ui-z-debug);
42
+ z-index: var(--ui-z-index-debug);
44
43
 
45
44
  block-size: 100%;
46
45
  inline-size: 100%;
@@ -56,7 +55,7 @@
56
55
 
57
56
  // Baseline grid only (horizontal lines)
58
57
  .debug-baseline {
59
- --debug-color: hsl(var(--ui-hue-danger, 0) 80% 50% / 0.2);
58
+ --debug-color: color-mix(in oklch, var(--ui-color-danger, #{t.$color-danger}) 20%, transparent);
60
59
  }
61
60
 
62
61
  .debug-baseline::after {
@@ -64,7 +63,7 @@
64
63
  position: absolute;
65
64
  inset-block-start: 0;
66
65
  inset-inline-start: 0;
67
- z-index: var(--ui-z-debug);
66
+ z-index: var(--ui-z-index-debug);
68
67
 
69
68
  block-size: 100%;
70
69
  inline-size: 100%;
@@ -5,29 +5,29 @@ description: Constrains a container to a specific aspect ratio. Media children f
5
5
 
6
6
  <!-- @presets -->
7
7
  <div class="ui-row ui-row--md">
8
- <div class="ui-aspect-ratio ui-aspect-ratio--square" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
8
+ <div class="ui-aspect-ratio ui-aspect-ratio--square demo-swatch">
9
9
  <span class="ui-p-2">{{ t('square', 'square') }}</span>
10
10
  </div>
11
- <div class="ui-aspect-ratio ui-aspect-ratio--video" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
11
+ <div class="ui-aspect-ratio ui-aspect-ratio--video demo-swatch">
12
12
  <span class="ui-p-2">{{ t('video', 'video') }}</span>
13
13
  </div>
14
- <div class="ui-aspect-ratio ui-aspect-ratio--photo" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
14
+ <div class="ui-aspect-ratio ui-aspect-ratio--photo demo-swatch">
15
15
  <span class="ui-p-2">{{ t('photo', 'photo') }}</span>
16
16
  </div>
17
- <div class="ui-aspect-ratio ui-aspect-ratio--wide" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
17
+ <div class="ui-aspect-ratio ui-aspect-ratio--wide demo-swatch">
18
18
  <span class="ui-p-2">{{ t('wide', 'wide') }}</span>
19
19
  </div>
20
- <div class="ui-aspect-ratio ui-aspect-ratio--portrait" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
20
+ <div class="ui-aspect-ratio ui-aspect-ratio--portrait demo-swatch">
21
21
  <span class="ui-p-2">{{ t('portrait', 'portrait') }}</span>
22
22
  </div>
23
23
  </div>
24
24
 
25
25
  <!-- @with_media -->
26
26
  <div class="ui-row ui-row--md">
27
- <div class="ui-aspect-ratio ui-aspect-ratio--video" style="inline-size: 240px">
27
+ <div class="ui-aspect-ratio ui-aspect-ratio--video demo-swatch" style="--demo-w: 240px">
28
28
  <div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">{{ t('img_video', 'img (video)') }}</div>
29
29
  </div>
30
- <div class="ui-aspect-ratio ui-aspect-ratio--square" style="inline-size: 240px">
30
+ <div class="ui-aspect-ratio ui-aspect-ratio--square demo-swatch" style="--demo-w: 240px">
31
31
  <div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">{{ t('img_square', 'img (square)') }}</div>
32
32
  </div>
33
33
  </div>
@@ -5,19 +5,19 @@ description: Centers content horizontally and vertically.
5
5
 
6
6
  <!-- @basic -->
7
7
  <!-- Centers children both horizontally and vertically using flexbox. -->
8
- <div class="ui-center" style="height: var(--ui-row-4); background: var(--ui-color-bg-muted)">
8
+ <div class="ui-center demo-box ui-bg-muted" style="--demo-h: var(--ui-row-4)">
9
9
  <span>{{ t('centered_content', 'Centered content') }}</span>
10
10
  </div>
11
11
 
12
12
  <!-- @column_direction -->
13
13
  <!-- Stack centered children vertically. -->
14
- <div class="ui-center ui-center--column" style="height: var(--ui-row-6); background: var(--ui-color-bg-muted)">
14
+ <div class="ui-center ui-center--column demo-box ui-bg-muted" style="--demo-h: var(--ui-row-6)">
15
15
  <span>{{ t('first_line', 'First line') }}</span>
16
16
  <span>{{ t('second_line', 'Second line') }}</span>
17
17
  </div>
18
18
 
19
19
  <!-- @full_page_center -->
20
20
  <!-- Center content within a full viewport area, useful for loading or empty states. -->
21
- <div class="ui-center" style="height: var(--ui-row-8); background: var(--ui-color-bg-muted)">
21
+ <div class="ui-center demo-box ui-bg-muted" style="--demo-h: var(--ui-row-8)">
22
22
  <p>{{ t('no_results_found', 'No results found') }}</p>
23
23
  </div>
@@ -44,7 +44,7 @@
44
44
  },
45
45
  {
46
46
  "name": "--ui-footer-z",
47
- "default": "var(--ui-z-sticky)",
47
+ "default": "var(--ui-z-index-sticky)",
48
48
  "description": "Z-index stacking order"
49
49
  }
50
50
  ]
@@ -6,7 +6,7 @@
6
6
  .footer {
7
7
  --_space-2: var(--ui-space-2);
8
8
  --_border-width-sm: var(--ui-border-width-sm);
9
- --_hue-primary: var(--ui-hue-primary, #{t.$hue-primary});
9
+ --_shadow-color: color-mix(in oklch, var(--ui-color-neutral, #{t.$color-neutral}) 8%, transparent);
10
10
  // @desc Overall height
11
11
  --_height: var(--ui-footer-height, var(--ui-row-3));
12
12
  // @desc Background color
@@ -16,7 +16,7 @@
16
16
  // @desc Border color
17
17
  --_border-color: var(--ui-footer-border-color, var(--ui-color-border));
18
18
  // @desc Z-index stacking order
19
- --_z: var(--ui-footer-z, var(--ui-z-sticky));
19
+ --_z: var(--ui-footer-z, var(--ui-z-index-sticky));
20
20
 
21
21
  display: flex;
22
22
  align-items: center;
@@ -73,6 +73,6 @@
73
73
 
74
74
  // @modifier boolean raised
75
75
  .footer--raised {
76
- box-shadow: 0 calc(var(--_border-width-sm) * -1) 6px hsl(var(--_hue-primary) 10% 20% / 0.08);
76
+ box-shadow: 0 calc(var(--_border-width-sm) * -1) 6px var(--_shadow-color);
77
77
  }
78
78
  }
@@ -5,7 +5,7 @@ description: Main content area that accounts for sidebar and topbar offsets in a
5
5
 
6
6
  <!-- @default -->
7
7
  <!-- Offsets content for a start-side sidebar and optional topbar. -->
8
- <div style="position: relative; height: var(--ui-row-4)">
8
+ <div class="demo-box" style="--demo-h: var(--ui-row-4)">
9
9
  <main class="ui-main ui-bg-muted ui-p-2">
10
10
  <p>{{ t('main_content_area', 'Main content area') }}</p>
11
11
  </main>
@@ -13,7 +13,7 @@ description: Main content area that accounts for sidebar and topbar offsets in a
13
13
 
14
14
  <!-- @sidebar_end -->
15
15
  <!-- Offsets content for an end-side sidebar instead of start. -->
16
- <div style="position: relative; height: var(--ui-row-4)">
16
+ <div class="demo-box" style="--demo-h: var(--ui-row-4)">
17
17
  <main class="ui-main ui-main--sidebar-end ui-bg-muted ui-p-2">
18
18
  <p>{{ t('content_with_end_sidebar', 'Content with end sidebar') }}</p>
19
19
  </main>
@@ -21,7 +21,7 @@ description: Main content area that accounts for sidebar and topbar offsets in a
21
21
 
22
22
  <!-- @full_width -->
23
23
  <!-- No sidebar offset. Use when there is no sidebar. -->
24
- <div style="position: relative; height: var(--ui-row-4)">
24
+ <div class="demo-box" style="--demo-h: var(--ui-row-4)">
25
25
  <main class="ui-main ui-main--full ui-bg-muted ui-p-2">
26
26
  <p>{{ t('full_width_content', 'Full width content') }}</p>
27
27
  </main>
@@ -34,7 +34,7 @@
34
34
  },
35
35
  {
36
36
  "name": "--ui-nav-rail-z",
37
- "default": "var(--ui-z-sticky)",
37
+ "default": "var(--ui-z-index-sticky)",
38
38
  "description": "Z-index stacking order"
39
39
  }
40
40
  ]
@@ -5,7 +5,7 @@ description: Narrow fixed vertical navigation rail for icon-based navigation wit
5
5
 
6
6
  <!-- @default -->
7
7
  <!-- Fixed narrow rail with icon items and bottom actions. -->
8
- <nav class="ui-nav-rail" style="position: relative; block-size: 320px">
8
+ <nav class="ui-nav-rail demo-box" style="--demo-h: 320px">
9
9
  <div class="ui-nav-rail__items">
10
10
  <button class="ui-button ui-button--ghost ui-button--icon">{{ t('h', 'H') }}</button>
11
11
  <button class="ui-button ui-button--ghost ui-button--icon">{{ t('s', 'S') }}</button>
@@ -14,7 +14,7 @@
14
14
  // @desc Gap between children
15
15
  --_gap: var(--ui-nav-rail-gap, var(--ui-space-1));
16
16
  // @desc Z-index stacking order
17
- --_z: var(--ui-nav-rail-z, var(--ui-z-sticky));
17
+ --_z: var(--ui-nav-rail-z, var(--ui-z-index-sticky));
18
18
 
19
19
  display: flex;
20
20
  flex-direction: column;
@@ -7,7 +7,7 @@
7
7
  --_space-1: var(--ui-space-1);
8
8
  --_space-2: var(--ui-space-2);
9
9
  --_border-width-sm: var(--ui-border-width-sm);
10
- --_z-sticky: var(--ui-z-sticky);
10
+ --_z-sticky: var(--ui-z-index-sticky);
11
11
  --_color-bg: var(--ui-color-bg);
12
12
  // @desc Vertical padding
13
13
  --_padding-block: var(--ui-page-header-padding-block, var(--ui-space-3));
@@ -10,13 +10,13 @@ description: Fixed-position sidebar for app layouts with adjustable widths and p
10
10
  </aside>
11
11
 
12
12
  <!-- @widths | column -->
13
- <aside class="ui-sidebar ui-sidebar--sm" style="position: relative; height: auto;">
13
+ <aside class="ui-sidebar ui-sidebar--sm ui-relative">
14
14
  <p>{{ t('small_192px', 'Small (192px)') }}</p>
15
15
  </aside>
16
- <aside class="ui-sidebar ui-sidebar--md" style="position: relative; height: auto;">
16
+ <aside class="ui-sidebar ui-sidebar--md ui-relative">
17
17
  <p>{{ t('medium_240px_default', 'Medium (240px, default)') }}</p>
18
18
  </aside>
19
- <aside class="ui-sidebar ui-sidebar--lg" style="position: relative; height: auto;">
19
+ <aside class="ui-sidebar ui-sidebar--lg ui-relative">
20
20
  <p>{{ t('large_320px', 'Large (320px)') }}</p>
21
21
  </aside>
22
22
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  @layer primitives {
5
5
  .sidebar {
6
- --_z-sticky: var(--ui-z-sticky);
6
+ --_z-sticky: var(--ui-z-index-sticky);
7
7
  --_unit: var(--ui-unit);
8
8
  --_color-bg-subtle: var(--ui-color-bg-subtle);
9
9
  --_border-width-sm: var(--ui-border-width-sm);
@@ -76,7 +76,7 @@
76
76
  },
77
77
  {
78
78
  "name": "--ui-sidebar-nav-group-label-weight",
79
- "default": "var(--ui-weight-bold)",
79
+ "default": "var(--ui-font-weight-bold)",
80
80
  "description": "Group label weight"
81
81
  },
82
82
  {
@@ -126,7 +126,7 @@
126
126
  },
127
127
  {
128
128
  "name": "--ui-sidebar-nav-item-active-weight",
129
- "default": "var(--ui-weight-medium)",
129
+ "default": "var(--ui-font-weight-medium)",
130
130
  "description": "Item active weight"
131
131
  },
132
132
  {
@@ -5,7 +5,7 @@ description: Navigation component for sidebars with support for groups, nested i
5
5
 
6
6
  <!-- @basic -->
7
7
  <!-- Simple navigation with grouped items. -->
8
- <nav class="ui-sidebar-nav" aria-label="{{ t('main_navigation', 'Main navigation') }}" style="block-size: 400px;">
8
+ <nav class="ui-sidebar-nav" aria-label="{{ t('main_navigation', 'Main navigation') }}" class="demo-box" style="--demo-h: 400px">
9
9
  <div class="ui-sidebar-nav__header">
10
10
  <strong>{{ t('app_name', 'App Name') }}</strong>
11
11
  </div>
@@ -55,7 +55,7 @@ description: Navigation component for sidebars with support for groups, nested i
55
55
 
56
56
  <!-- @with_icons -->
57
57
  <!-- Navigation items with icons for visual clarity. -->
58
- <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" style="block-size: 300px;">
58
+ <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" class="demo-box" style="--demo-h: 300px">
59
59
  <div class="ui-sidebar-nav__content">
60
60
  <ul class="ui-sidebar-nav__group-items">
61
61
  <li>
@@ -96,7 +96,7 @@ description: Navigation component for sidebars with support for groups, nested i
96
96
 
97
97
  <!-- @with_badges -->
98
98
  <!-- Navigation items with badges for counts or status indicators. -->
99
- <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" style="block-size: 200px;">
99
+ <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" class="demo-box" style="--demo-h: 200px">
100
100
  <div class="ui-sidebar-nav__content">
101
101
  <ul class="ui-sidebar-nav__group-items">
102
102
  <li>
@@ -129,7 +129,7 @@ description: Navigation component for sidebars with support for groups, nested i
129
129
 
130
130
  <!-- @nested_items -->
131
131
  <!-- Navigation with nested/indented items for sub-sections. -->
132
- <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" style="block-size: 280px;">
132
+ <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" class="demo-box" style="--demo-h: 280px">
133
133
  <div class="ui-sidebar-nav__content">
134
134
  <div class="ui-sidebar-nav__group">
135
135
  <span class="ui-sidebar-nav__group-label">{{ t('components', 'Components') }}</span>
@@ -169,7 +169,7 @@ description: Navigation component for sidebars with support for groups, nested i
169
169
 
170
170
  <!-- @collapsed -->
171
171
  <!-- Icon-only mode for compact sidebars. -->
172
- <nav class="ui-sidebar-nav ui-sidebar-nav--collapsed" aria-label="{{ t('navigation', 'Navigation') }}" style="block-size: 200px;">
172
+ <nav class="ui-sidebar-nav ui-sidebar-nav--collapsed" aria-label="{{ t('navigation', 'Navigation') }}" class="demo-box" style="--demo-h: 200px">
173
173
  <div class="ui-sidebar-nav__content">
174
174
  <ul class="ui-sidebar-nav__group-items">
175
175
  <li>
@@ -209,7 +209,7 @@ description: Navigation component for sidebars with support for groups, nested i
209
209
 
210
210
  <!-- @disabled_items -->
211
211
  <!-- Non-interactive navigation items. -->
212
- <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" style="block-size: 180px;">
212
+ <nav class="ui-sidebar-nav" aria-label="{{ t('navigation', 'Navigation') }}" class="demo-box" style="--demo-h: 180px">
213
213
  <div class="ui-sidebar-nav__content">
214
214
  <ul class="ui-sidebar-nav__group-items">
215
215
  <li>
@@ -12,7 +12,7 @@
12
12
  --_space-1: var(--ui-space-1);
13
13
  --_space-half: var(--ui-space-half);
14
14
  --_size-xs: var(--ui-size-xs);
15
- --_weight-medium: var(--ui-weight-medium);
15
+ --_weight-medium: var(--ui-font-weight-medium);
16
16
  --_color-text-muted: var(--ui-color-text-muted);
17
17
  --_duration-fast: var(--ui-duration-fast);
18
18
  --_easing-default: var(--ui-easing-default);
@@ -83,7 +83,7 @@
83
83
  // @desc Group label color
84
84
  --_color: var(--ui-sidebar-nav-group-label-color, var(--ui-color-text-muted));
85
85
  // @desc Group label weight
86
- --_weight: var(--ui-sidebar-nav-group-label-weight, var(--ui-weight-bold));
86
+ --_weight: var(--ui-sidebar-nav-group-label-weight, var(--ui-font-weight-bold));
87
87
 
88
88
  display: block;
89
89
 
@@ -92,7 +92,7 @@
92
92
 
93
93
  font-size: var(--_font-size);
94
94
  font-weight: var(--_weight);
95
- letter-spacing: #{t.$tracking-wide};
95
+ letter-spacing: #{t.$letter-spacing-wide};
96
96
  text-transform: uppercase;
97
97
  color: var(--_color);
98
98
  }
@@ -191,7 +191,7 @@
191
191
  // @desc Item active color
192
192
  --_color: var(--ui-sidebar-nav-item-active-color, var(--ui-color-primary-hover));
193
193
  // @desc Item active weight
194
- --_weight: var(--ui-sidebar-nav-item-active-weight, var(--ui-weight-medium));
194
+ --_weight: var(--ui-sidebar-nav-item-active-weight, var(--ui-font-weight-medium));
195
195
  }
196
196
 
197
197
  // Nested item indent
@@ -44,7 +44,7 @@
44
44
  },
45
45
  {
46
46
  "name": "--ui-topbar-z",
47
- "default": "var(--ui-z-sticky)",
47
+ "default": "var(--ui-z-index-sticky)",
48
48
  "description": "Z-index stacking order"
49
49
  }
50
50
  ]
@@ -15,7 +15,7 @@
15
15
  // @desc Border color
16
16
  --_border-color: var(--ui-topbar-border-color, var(--ui-color-border));
17
17
  // @desc Z-index stacking order
18
- --_z: var(--ui-topbar-z, var(--ui-z-sticky));
18
+ --_z: var(--ui-topbar-z, var(--ui-z-index-sticky));
19
19
 
20
20
  display: flex;
21
21
  align-items: center;
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "position",
3
+ "type": "utility",
4
+ "utilities": ["relative", "absolute", "overflow-hidden", "inset-0"],
5
+ "cssVars": []
6
+ }
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: Position
3
+ description: Position, overflow, and inset utilities for controlling element placement.
4
+ ---
5
+
6
+ <!-- @position -->
7
+ <!-- Set position type on any element. -->
8
+ <div class="ui-relative ui-bg-muted ui-p-2" style="block-size: var(--ui-row-4)">
9
+ <div class="ui-absolute ui-top-0 ui-end-0 ui-bg-subtle ui-p-1">{{ t('absolute_top_end', 'Absolute top-end') }}</div>
10
+ <div class="ui-absolute ui-bottom-0 ui-start-0 ui-bg-subtle ui-p-1">{{ t('absolute_bottom_start', 'Absolute bottom-start') }}</div>
11
+ </div>
12
+
13
+ <!-- @inset | row -->
14
+ <!-- Pin element to all edges or specific sides. -->
15
+ <div class="ui-relative ui-bg-muted" style="block-size: var(--ui-row-4)">
16
+ <div class="ui-absolute ui-inset-0 ui-bg-subtle ui-p-2">{{ t('inset_0_fills_parent', 'inset-0 fills parent') }}</div>
17
+ </div>
18
+ <div class="ui-relative ui-bg-muted" style="block-size: var(--ui-row-4)">
19
+ <div class="ui-absolute ui-inset-block-0 ui-start-0 ui-bg-subtle ui-p-2">{{ t('inset_block_0_start_0', 'inset-block-0 + start-0') }}</div>
20
+ </div>
21
+
22
+ <!-- @overflow | row -->
23
+ <!-- Control overflow behavior. -->
24
+ <div class="ui-overflow-hidden ui-bg-muted ui-p-2" style="block-size: var(--ui-row-3)">
25
+ <p>{{ t('overflow_hidden_long_content', 'This content is clipped when it overflows the container boundary. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt.') }}</p>
26
+ </div>
27
+ <div class="ui-overflow-auto ui-bg-muted ui-p-2" style="block-size: var(--ui-row-3)">
28
+ <p>{{ t('overflow_auto_long_content', 'This content gets a scrollbar when it overflows. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.') }}</p>
29
+ </div>