@rokkit/themes 1.0.5 → 1.1.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.
- package/build.mjs +4 -2
- package/package.json +3 -2
- package/src/base/carousel.css +2 -1
- package/src/base/code-block.css +76 -0
- package/src/base/display.css +16 -8
- package/src/base/frame.css +36 -0
- package/src/base/index.css +2 -0
- package/src/base/input.css +49 -10
- package/src/base/nav-content.css +3 -3
- package/src/base/stepper.css +14 -7
- package/src/base/tabs.css +15 -2
- package/src/base/typography.css +32 -13
- package/src/frosted/button.css +27 -27
- package/src/frosted/card.css +8 -8
- package/src/frosted/chart.css +6 -6
- package/src/frosted/code-block.css +33 -0
- package/src/frosted/dropdown.css +9 -9
- package/src/frosted/floating-action.css +10 -10
- package/src/frosted/floating-navigation.css +13 -13
- package/src/frosted/frame.css +17 -0
- package/src/frosted/index.css +2 -0
- package/src/frosted/input.css +16 -16
- package/src/frosted/list.css +25 -25
- package/src/frosted/menu.css +13 -13
- package/src/frosted/message.css +8 -8
- package/src/frosted/range.css +8 -8
- package/src/frosted/search-filter.css +8 -8
- package/src/frosted/select.css +31 -31
- package/src/frosted/status-list.css +17 -17
- package/src/frosted/step-indicator.css +8 -8
- package/src/frosted/swatch.css +3 -3
- package/src/frosted/switch.css +3 -3
- package/src/frosted/table.css +16 -16
- package/src/frosted/tabs.css +8 -8
- package/src/frosted/timeline.css +5 -5
- package/src/frosted/toc.css +4 -4
- package/src/frosted/toggle.css +7 -7
- package/src/frosted/toolbar.css +15 -15
- package/src/frosted/tree.css +19 -19
- package/src/material/button.css +29 -29
- package/src/material/card.css +12 -12
- package/src/material/chart.css +6 -6
- package/src/material/code-block.css +33 -0
- package/src/material/dropdown.css +11 -11
- package/src/material/floating-action.css +10 -10
- package/src/material/floating-navigation.css +13 -13
- package/src/material/frame.css +17 -0
- package/src/material/index.css +2 -0
- package/src/material/input.css +21 -21
- package/src/material/list.css +23 -23
- package/src/material/menu.css +16 -16
- package/src/material/message.css +8 -8
- package/src/material/range.css +8 -8
- package/src/material/search-filter.css +8 -8
- package/src/material/select.css +31 -31
- package/src/material/status-list.css +17 -17
- package/src/material/step-indicator.css +8 -8
- package/src/material/swatch.css +3 -3
- package/src/material/switch.css +6 -6
- package/src/material/table.css +16 -16
- package/src/material/tabs.css +7 -7
- package/src/material/timeline.css +5 -5
- package/src/material/toc.css +4 -4
- package/src/material/toggle.css +6 -6
- package/src/material/toolbar.css +11 -11
- package/src/material/tree.css +17 -17
- package/src/minimal/button.css +30 -30
- package/src/minimal/card.css +13 -13
- package/src/minimal/chart.css +6 -6
- package/src/minimal/code-block.css +33 -0
- package/src/minimal/dropdown.css +11 -11
- package/src/minimal/floating-action.css +10 -10
- package/src/minimal/floating-navigation.css +12 -12
- package/src/minimal/frame.css +17 -0
- package/src/minimal/index.css +2 -0
- package/src/minimal/input.css +24 -24
- package/src/minimal/list.css +52 -26
- package/src/minimal/menu.css +15 -15
- package/src/minimal/message.css +8 -8
- package/src/minimal/range.css +7 -7
- package/src/minimal/search-filter.css +8 -8
- package/src/minimal/select.css +27 -27
- package/src/minimal/status-list.css +17 -17
- package/src/minimal/step-indicator.css +8 -8
- package/src/minimal/swatch.css +3 -3
- package/src/minimal/switch.css +6 -6
- package/src/minimal/table.css +16 -16
- package/src/minimal/tabs.css +14 -14
- package/src/minimal/timeline.css +4 -4
- package/src/minimal/toc.css +4 -4
- package/src/minimal/toggle.css +7 -7
- package/src/minimal/toolbar.css +14 -14
- package/src/minimal/tree.css +24 -18
- package/src/rokkit/avatar.css +6 -6
- package/src/rokkit/badge.css +5 -5
- package/src/rokkit/button.css +55 -37
- package/src/rokkit/card.css +11 -11
- package/src/rokkit/chart.css +6 -6
- package/src/rokkit/code-block.css +33 -0
- package/src/rokkit/connector.css +1 -1
- package/src/rokkit/divider.css +5 -5
- package/src/rokkit/dropdown.css +11 -11
- package/src/rokkit/floating-action.css +11 -11
- package/src/rokkit/floating-navigation.css +15 -15
- package/src/rokkit/frame.css +17 -0
- package/src/rokkit/grid.css +8 -8
- package/src/rokkit/index.css +2 -0
- package/src/rokkit/input.css +17 -17
- package/src/rokkit/list.css +24 -24
- package/src/rokkit/menu.css +14 -14
- package/src/rokkit/message.css +12 -12
- package/src/rokkit/range.css +10 -10
- package/src/rokkit/search-filter.css +8 -8
- package/src/rokkit/select.css +34 -34
- package/src/rokkit/status-list.css +17 -17
- package/src/rokkit/step-indicator.css +8 -8
- package/src/rokkit/swatch.css +3 -3
- package/src/rokkit/switch.css +6 -6
- package/src/rokkit/table.css +16 -16
- package/src/rokkit/tabs.css +31 -28
- package/src/rokkit/timeline.css +5 -5
- package/src/rokkit/toc.css +4 -4
- package/src/rokkit/toggle.css +21 -10
- package/src/rokkit/toolbar.css +15 -15
- package/src/rokkit/tooltip.css +1 -1
- package/src/rokkit/tree.css +23 -23
- package/src/rokkit/upload-progress.css +18 -18
- package/src/rokkit/upload-target.css +8 -8
- package/src/zen-sumi/button.css +29 -29
- package/src/zen-sumi/card.css +12 -12
- package/src/zen-sumi/chart.css +6 -6
- package/src/zen-sumi/code-block.css +35 -0
- package/src/zen-sumi/dropdown.css +10 -10
- package/src/zen-sumi/floating-action.css +7 -7
- package/src/zen-sumi/floating-navigation.css +11 -11
- package/src/zen-sumi/frame.css +20 -0
- package/src/zen-sumi/index.css +2 -0
- package/src/zen-sumi/input.css +49 -23
- package/src/zen-sumi/list.css +20 -20
- package/src/zen-sumi/menu.css +14 -14
- package/src/zen-sumi/message.css +8 -8
- package/src/zen-sumi/range.css +7 -7
- package/src/zen-sumi/search-filter.css +8 -8
- package/src/zen-sumi/select.css +26 -26
- package/src/zen-sumi/status-list.css +17 -17
- package/src/zen-sumi/step-indicator.css +8 -8
- package/src/zen-sumi/swatch.css +3 -3
- package/src/zen-sumi/switch.css +5 -5
- package/src/zen-sumi/table.css +16 -16
- package/src/zen-sumi/tabs.css +8 -8
- package/src/zen-sumi/timeline.css +4 -4
- package/src/zen-sumi/toc.css +4 -4
- package/src/zen-sumi/toggle.css +18 -10
- package/src/zen-sumi/toolbar.css +14 -14
- package/src/zen-sumi/tree.css +16 -16
package/build.mjs
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import { createGenerator, presetWind3, transformerDirectives } from 'unocss'
|
|
21
21
|
import { Theme } from '@rokkit/core'
|
|
22
|
+
import { buildNamedShortcuts } from '@rokkit/unocss'
|
|
22
23
|
import { readFileSync, writeFileSync, mkdirSync } from 'fs'
|
|
23
24
|
import { resolve, dirname, join } from 'path'
|
|
24
25
|
import { fileURLToPath } from 'url'
|
|
@@ -40,7 +41,7 @@ const uno = await createGenerator({
|
|
|
40
41
|
})
|
|
41
42
|
],
|
|
42
43
|
shortcuts: [
|
|
43
|
-
['skin-default', theme.getPalette()],
|
|
44
|
+
['skin-default', { ...theme.getPalette(), ...theme.getNamedTokens() }],
|
|
44
45
|
...theme.getShortcuts('surface'),
|
|
45
46
|
...theme.getShortcuts('primary'),
|
|
46
47
|
...theme.getShortcuts('secondary'),
|
|
@@ -49,7 +50,8 @@ const uno = await createGenerator({
|
|
|
49
50
|
...theme.getShortcuts('warning'),
|
|
50
51
|
...theme.getShortcuts('danger'),
|
|
51
52
|
...theme.getShortcuts('error'),
|
|
52
|
-
...theme.getShortcuts('info')
|
|
53
|
+
...theme.getShortcuts('info'),
|
|
54
|
+
...buildNamedShortcuts()
|
|
53
55
|
],
|
|
54
56
|
theme: {
|
|
55
57
|
colors: theme.getColorRules()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rokkit/themes",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Theme styles for @rokkit/ui components",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -103,9 +103,10 @@
|
|
|
103
103
|
"build": "bun run build.mjs"
|
|
104
104
|
},
|
|
105
105
|
"dependencies": {
|
|
106
|
-
"@rokkit/core": "1.0
|
|
106
|
+
"@rokkit/core": "1.1.0"
|
|
107
107
|
},
|
|
108
108
|
"devDependencies": {
|
|
109
|
+
"@rokkit/unocss": "1.1.0",
|
|
109
110
|
"magic-string": "^0.30.21",
|
|
110
111
|
"unocss": "^66.5.1"
|
|
111
112
|
},
|
package/src/base/carousel.css
CHANGED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeBlock — base structural styles for the internals.
|
|
3
|
+
*
|
|
4
|
+
* The outer chrome (border, radius, header divider) is Frame's job.
|
|
5
|
+
* This file just lays out what CodeBlock puts INSIDE the frame header
|
|
6
|
+
* (icon, filename, lang chip, action buttons) and body (<pre>/<code>).
|
|
7
|
+
* Per-theme files add colour and typography accents.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
[data-code-block-header] {
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: space-between;
|
|
14
|
+
gap: var(--density-spacing-sm);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
[data-code-block-title] {
|
|
18
|
+
display: inline-flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: var(--density-spacing-sm);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[data-code-block-icon] {
|
|
24
|
+
display: inline-block;
|
|
25
|
+
width: 13px;
|
|
26
|
+
height: 13px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
[data-code-block-lang] {
|
|
30
|
+
padding: 2px 6px;
|
|
31
|
+
border-radius: 3px;
|
|
32
|
+
letter-spacing: 0.12em;
|
|
33
|
+
text-transform: uppercase;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
[data-code-block-actions] {
|
|
37
|
+
display: inline-flex;
|
|
38
|
+
gap: 2px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
[data-code-block-actions] button {
|
|
42
|
+
display: inline-flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 5px;
|
|
45
|
+
height: 22px;
|
|
46
|
+
padding: 0 8px;
|
|
47
|
+
border: 0;
|
|
48
|
+
background: transparent;
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
border-radius: 3px;
|
|
51
|
+
letter-spacing: 0.02em;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
[data-code-block-actions] button > span:first-child {
|
|
55
|
+
display: inline-block;
|
|
56
|
+
width: 12px;
|
|
57
|
+
height: 12px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
[data-code-block-body] {
|
|
61
|
+
overflow: auto;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
[data-code-block-body] pre {
|
|
65
|
+
margin: 0;
|
|
66
|
+
padding: 10px 12px;
|
|
67
|
+
overflow-x: auto;
|
|
68
|
+
background: transparent;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
[data-code-block-body] code {
|
|
72
|
+
font: inherit;
|
|
73
|
+
background: transparent;
|
|
74
|
+
border: 0;
|
|
75
|
+
padding: 0;
|
|
76
|
+
}
|
package/src/base/display.css
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
[data-display-title] {
|
|
9
|
-
|
|
9
|
+
color: var(--ink);
|
|
10
|
+
@apply text-sm font-semibold;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
[data-display-field] {
|
|
@@ -14,16 +15,19 @@
|
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
[data-display-label] {
|
|
17
|
-
|
|
18
|
+
color: color-mix(in srgb, var(--ink) 70%, transparent);
|
|
19
|
+
@apply shrink-0 text-sm;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
[data-display-value] {
|
|
21
|
-
|
|
23
|
+
color: var(--ink);
|
|
24
|
+
@apply text-right text-sm;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
/* Badge format: pill style */
|
|
25
28
|
[data-display-value][data-format='badge'] {
|
|
26
|
-
|
|
29
|
+
background-color: var(--paper-mute);
|
|
30
|
+
@apply rounded-full px-2 py-0.5 text-xs font-medium;
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
/* Boolean format */
|
|
@@ -58,11 +62,14 @@
|
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
[data-display-card] {
|
|
61
|
-
|
|
65
|
+
border-color: var(--paper-mute);
|
|
66
|
+
background-color: var(--paper-edge);
|
|
67
|
+
@apply flex flex-col gap-1 rounded border p-3;
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
[data-display-card][data-selected] {
|
|
65
|
-
|
|
71
|
+
border-color: var(--primary);
|
|
72
|
+
@apply ring-primary ring-1;
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
[data-selectable] [data-display-card] {
|
|
@@ -70,7 +77,7 @@
|
|
|
70
77
|
}
|
|
71
78
|
|
|
72
79
|
[data-selectable] [data-display-card]:hover {
|
|
73
|
-
|
|
80
|
+
background-color: var(--paper-soft);
|
|
74
81
|
}
|
|
75
82
|
|
|
76
83
|
/* Display list */
|
|
@@ -83,7 +90,8 @@
|
|
|
83
90
|
}
|
|
84
91
|
|
|
85
92
|
[data-display-list-item] {
|
|
86
|
-
|
|
93
|
+
border-color: var(--paper-mute);
|
|
94
|
+
@apply flex items-baseline gap-4 border-b py-1 last:border-0;
|
|
87
95
|
}
|
|
88
96
|
|
|
89
97
|
[data-display-list-item] [data-display-field] {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frame — base structural styles.
|
|
3
|
+
*
|
|
4
|
+
* Layout / spacing only. Per-theme files (zen-sumi/frame.css,
|
|
5
|
+
* material/frame.css, …) add the visual decoration (border, background,
|
|
6
|
+
* shadow) using the same `[data-frame-*]` hooks.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
[data-frame] {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
border-radius: var(--density-radius-base);
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
[data-frame-header] {
|
|
17
|
+
padding-block: var(--density-spacing-sm);
|
|
18
|
+
padding-inline: var(--density-spacing-md);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[data-frame-body] {
|
|
22
|
+
padding: var(--density-spacing-md);
|
|
23
|
+
flex: 1;
|
|
24
|
+
min-height: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Artifacts that own their padding (charts, <pre> blocks, tables) opt
|
|
28
|
+
* out of the body padding via `flush`. */
|
|
29
|
+
[data-frame-body][data-flush] {
|
|
30
|
+
padding: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[data-frame-footer] {
|
|
34
|
+
padding-block: var(--density-spacing-sm);
|
|
35
|
+
padding-inline: var(--density-spacing-md);
|
|
36
|
+
}
|
package/src/base/index.css
CHANGED
package/src/base/input.css
CHANGED
|
@@ -12,12 +12,14 @@
|
|
|
12
12
|
|
|
13
13
|
/* Separator between form fields */
|
|
14
14
|
[data-form-separator] {
|
|
15
|
-
|
|
15
|
+
border-top-color: var(--paper-mute);
|
|
16
|
+
@apply my-1 border-t;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
/* Form group (fieldset for nested objects) */
|
|
19
20
|
[data-form-group] {
|
|
20
|
-
|
|
21
|
+
border-left-color: var(--paper-mute);
|
|
22
|
+
@apply m-0 flex flex-col gap-3 border-l border-none p-0 pl-3;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
[data-form-group-label] {
|
|
@@ -46,7 +48,8 @@
|
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
[data-severity='error'] [data-validation-count] {
|
|
49
|
-
|
|
51
|
+
background-color: var(--error-soft);
|
|
52
|
+
color: var(--error);
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
[data-severity='warning'] > [data-validation-group-header] {
|
|
@@ -54,7 +57,8 @@
|
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
[data-severity='warning'] [data-validation-count] {
|
|
57
|
-
|
|
60
|
+
background-color: var(--warning-soft);
|
|
61
|
+
color: var(--warning);
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
[data-severity='info'] > [data-validation-group-header] {
|
|
@@ -62,7 +66,8 @@
|
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
[data-severity='info'] [data-validation-count] {
|
|
65
|
-
|
|
69
|
+
background-color: var(--info-soft);
|
|
70
|
+
color: var(--info);
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
[data-severity='success'] > [data-validation-group-header] {
|
|
@@ -70,7 +75,8 @@
|
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
[data-severity='success'] [data-validation-count] {
|
|
73
|
-
|
|
78
|
+
background-color: var(--success-soft);
|
|
79
|
+
color: var(--success);
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
[data-validation-item] {
|
|
@@ -78,7 +84,11 @@
|
|
|
78
84
|
}
|
|
79
85
|
|
|
80
86
|
button[data-validation-item] {
|
|
81
|
-
@apply
|
|
87
|
+
@apply cursor-pointer border-none bg-transparent;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
button[data-validation-item]:hover {
|
|
91
|
+
background-color: var(--paper-soft);
|
|
82
92
|
}
|
|
83
93
|
|
|
84
94
|
/* Form actions (submit/reset buttons) */
|
|
@@ -88,11 +98,21 @@ button[data-validation-item] {
|
|
|
88
98
|
|
|
89
99
|
button[data-form-submit],
|
|
90
100
|
button[data-form-reset] {
|
|
91
|
-
|
|
101
|
+
border-color: var(--paper-mute);
|
|
102
|
+
background-color: var(--paper-soft);
|
|
103
|
+
@apply cursor-pointer rounded border px-4 py-1.5 text-sm transition-colors;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
button[data-form-submit]:hover,
|
|
107
|
+
button[data-form-reset]:hover {
|
|
108
|
+
background-color: var(--paper-mute);
|
|
92
109
|
}
|
|
93
110
|
|
|
94
111
|
button[data-form-submit] {
|
|
95
|
-
|
|
112
|
+
background-color: var(--primary);
|
|
113
|
+
color: var(--on-primary);
|
|
114
|
+
border-color: var(--primary);
|
|
115
|
+
@apply hover:opacity-90;
|
|
96
116
|
}
|
|
97
117
|
|
|
98
118
|
button[data-form-submit]:disabled,
|
|
@@ -122,6 +142,24 @@ button[data-form-reset]:disabled {
|
|
|
122
142
|
@apply flex-row items-center justify-between gap-2;
|
|
123
143
|
}
|
|
124
144
|
|
|
145
|
+
/* Inline layout variant — opt in per field via the `variant='inline'`
|
|
146
|
+
prop on InputField (or the equivalent `variant` field on a
|
|
147
|
+
FormRenderer layout element). Label sits in a fixed leading column,
|
|
148
|
+
the input takes the remaining row. Useful for control-panel
|
|
149
|
+
contexts (playground knobs, settings dialogs, tweak editors) where
|
|
150
|
+
the form-page rhythm reads as overkill. */
|
|
151
|
+
[data-field-root][data-field-layout='inline'] > [data-field] {
|
|
152
|
+
@apply flex-row items-center gap-3;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[data-field-root][data-field-layout='inline'] > [data-field] > label {
|
|
156
|
+
@apply flex-none w-32 text-xs;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
[data-field-root][data-field-layout='inline'] > [data-field] > :not(label) {
|
|
160
|
+
@apply flex-1 min-w-0;
|
|
161
|
+
}
|
|
162
|
+
|
|
125
163
|
/* Select: stretch to fill input wrapper — display:flex eliminates inline-block gap */
|
|
126
164
|
[data-input-root] [data-select] {
|
|
127
165
|
@apply flex-1 self-stretch;
|
|
@@ -250,7 +288,8 @@ input[type='radio'] {
|
|
|
250
288
|
}
|
|
251
289
|
|
|
252
290
|
input[type='radio']:checked {
|
|
253
|
-
|
|
291
|
+
border-color: var(--primary);
|
|
292
|
+
color: var(--primary);
|
|
254
293
|
}
|
|
255
294
|
|
|
256
295
|
input[type='radio']:checked::before {
|
package/src/base/nav-content.css
CHANGED
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
|
|
22
22
|
[data-nav-content][data-orientation='horizontal'] [data-nav-content-nav] {
|
|
23
23
|
width: var(--nav-size, 280px);
|
|
24
|
-
|
|
24
|
+
border-right: 1px solid var(--paper-mute);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
[data-nav-content][data-orientation='vertical'] [data-nav-content-nav] {
|
|
28
|
-
|
|
28
|
+
border-bottom: 1px solid var(--paper-mute);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
[data-nav-content-main] {
|
|
@@ -43,6 +43,6 @@
|
|
|
43
43
|
[data-nav-content][data-collapsible][data-orientation='horizontal'] [data-nav-content-nav] {
|
|
44
44
|
width: 100%;
|
|
45
45
|
border-right: none;
|
|
46
|
-
|
|
46
|
+
border-bottom: 1px solid var(--paper-mute);
|
|
47
47
|
}
|
|
48
48
|
}
|
package/src/base/stepper.css
CHANGED
|
@@ -47,17 +47,21 @@
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
[data-stepper-step][data-completed] [data-stepper-circle] {
|
|
50
|
-
|
|
50
|
+
background-color: var(--primary);
|
|
51
|
+
border-color: var(--primary);
|
|
52
|
+
color: var(--paper);
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
[data-stepper-step][data-active] [data-stepper-circle] {
|
|
54
|
-
|
|
56
|
+
border-color: var(--primary);
|
|
57
|
+
color: var(--primary);
|
|
58
|
+
@apply ring-primary/20 ring-3;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
/* ─── Connector line ─── */
|
|
58
62
|
|
|
59
63
|
[data-stepper-connector] {
|
|
60
|
-
|
|
64
|
+
background-color: var(--paper-mute);
|
|
61
65
|
flex: 1;
|
|
62
66
|
height: 2px;
|
|
63
67
|
min-width: 2rem;
|
|
@@ -68,7 +72,7 @@
|
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
[data-stepper-connector][data-completed] {
|
|
71
|
-
|
|
75
|
+
background-color: var(--primary);
|
|
72
76
|
}
|
|
73
77
|
|
|
74
78
|
/* Vertical orientation connectors */
|
|
@@ -100,7 +104,7 @@
|
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
[data-stepper-dot] {
|
|
103
|
-
|
|
107
|
+
border-color: var(--paper-edge);
|
|
104
108
|
width: 0.5rem;
|
|
105
109
|
height: 0.5rem;
|
|
106
110
|
border-radius: 9999px;
|
|
@@ -120,11 +124,14 @@
|
|
|
120
124
|
}
|
|
121
125
|
|
|
122
126
|
[data-stepper-dot][data-completed] {
|
|
123
|
-
|
|
127
|
+
background-color: var(--primary);
|
|
128
|
+
border-color: var(--primary);
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
[data-stepper-dot][data-active] {
|
|
127
|
-
|
|
132
|
+
background-color: var(--primary);
|
|
133
|
+
border-color: var(--primary);
|
|
134
|
+
@apply ring-primary/25 ring-2;
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
/* ─── Content area ─── */
|
package/src/base/tabs.css
CHANGED
|
@@ -45,9 +45,15 @@
|
|
|
45
45
|
|
|
46
46
|
[data-tabs][data-orientation='vertical'] [data-tabs-list] {
|
|
47
47
|
flex-direction: column;
|
|
48
|
+
/* In vertical mode the list is a flex item perpendicular to the
|
|
49
|
+
* row-direction parent. Stretching it gives `justify-content` a
|
|
50
|
+
* height to distribute — without this the column collapses to
|
|
51
|
+
* fit-content and `align=center / end` have no spare space to
|
|
52
|
+
* move the tabs into. */
|
|
53
|
+
align-self: stretch;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
|
-
/* Alignment */
|
|
56
|
+
/* Alignment — main-axis distribution within the list */
|
|
51
57
|
[data-tabs][data-align='center'] [data-tabs-list] {
|
|
52
58
|
justify-content: center;
|
|
53
59
|
}
|
|
@@ -66,7 +72,14 @@
|
|
|
66
72
|
gap: 0.375rem;
|
|
67
73
|
padding: 0.5rem 0.75rem;
|
|
68
74
|
cursor: pointer;
|
|
69
|
-
border: none
|
|
75
|
+
/* `border: none` expands to `border-width: medium` (= 3px) which leaks
|
|
76
|
+
* a 3px ring on every side as soon as a theme sets `border-style: solid`.
|
|
77
|
+
* Spell the safe baseline out: zero width on all sides, solid style so
|
|
78
|
+
* any `border-{side}-[Npx]` from a theme renders without needing to
|
|
79
|
+
* re-declare the style. */
|
|
80
|
+
border-width: 0;
|
|
81
|
+
border-style: solid;
|
|
82
|
+
border-color: currentcolor;
|
|
70
83
|
background: transparent;
|
|
71
84
|
font-weight: 500;
|
|
72
85
|
font-size: 0.875rem;
|
package/src/base/typography.css
CHANGED
|
@@ -2,25 +2,37 @@
|
|
|
2
2
|
* Typography & Shape Tokens
|
|
3
3
|
*
|
|
4
4
|
* CSS custom properties for font families and border-radius scale.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Canonical names match the named-token vocabulary's semantic intent:
|
|
7
|
+
* --font-display — heading / display typeface
|
|
8
|
+
* --font-ui — body / UI typeface
|
|
9
|
+
* --font-mono — code, eyebrows, kbd shortcuts
|
|
10
|
+
*
|
|
11
|
+
* Legacy aliases `--font-heading` and `--font-sans` are emitted as
|
|
12
|
+
* `var(--font-display)` and `var(--font-ui)` for backward compatibility
|
|
13
|
+
* with any consumer that still reads the old names. Both stay in sync.
|
|
14
|
+
*
|
|
15
|
+
* Override these in your application stylesheet or via the preset's
|
|
16
|
+
* `typography: { display, ui, mono }` config to customize.
|
|
6
17
|
*
|
|
7
18
|
* @example
|
|
8
19
|
* :root {
|
|
9
|
-
* --font-
|
|
10
|
-
* --font-
|
|
11
|
-
* --font-
|
|
12
|
-
*
|
|
13
|
-
* --radius-sm: 0; --* sharp corners *--
|
|
14
|
-
* --radius-md: 0;
|
|
15
|
-
* --radius-lg: 0;
|
|
20
|
+
* --font-display: 'Fraunces', serif;
|
|
21
|
+
* --font-ui: 'Inter', system-ui, sans-serif;
|
|
22
|
+
* --font-mono: 'JetBrains Mono', monospace;
|
|
16
23
|
* }
|
|
17
24
|
*/
|
|
18
25
|
|
|
19
|
-
:root
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
/* Defaults wrapped in :where() so specificity is 0 — any explicit :root
|
|
27
|
+
declaration (from the preset emit, an app stylesheet, or another theme)
|
|
28
|
+
wins without needing extra weight. Without :where(), this file would
|
|
29
|
+
override later preset emissions since both are :root, same specificity,
|
|
30
|
+
and the source order has this CSS loading after the preset preflight. */
|
|
31
|
+
:where(:root) {
|
|
32
|
+
/* Font families — canonical names */
|
|
33
|
+
--font-display: 'Open Sans', sans-serif;
|
|
34
|
+
--font-ui: 'Open Sans', -apple-system, system-ui, 'Segoe UI', ui-serif, sans-serif;
|
|
35
|
+
--font-mono: 'Victor Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
|
|
24
36
|
|
|
25
37
|
/* Border-radius scale */
|
|
26
38
|
--radius-sm: 0.25rem;
|
|
@@ -29,3 +41,10 @@
|
|
|
29
41
|
--radius-xl: 0.75rem;
|
|
30
42
|
--radius-full: 9999px;
|
|
31
43
|
}
|
|
44
|
+
|
|
45
|
+
/* Legacy aliases — outside the :where() so they ALWAYS reflect whichever
|
|
46
|
+
--font-display / --font-ui value won in the cascade (default or preset). */
|
|
47
|
+
:root {
|
|
48
|
+
--font-heading: var(--font-display);
|
|
49
|
+
--font-sans: var(--font-ui);
|
|
50
|
+
}
|