actual-css 0.7.0 → 0.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.
- package/CHANGELOG.md +217 -0
- package/README.md +13 -11
- package/components.json +668 -0
- package/dist/actual.css +166 -37
- package/dist/actual.full.css +1087 -643
- package/dist/actual.full.js +1 -1
- package/dist/actual.full.min.css +1 -1
- package/dist/actual.js +1 -1
- package/dist/actual.min.css +1 -1
- package/docs/design-notes/accessibility-decisions.md +33 -0
- package/docs/design-notes/browser-support.md +62 -30
- package/docs/design-notes/column-layout.md +3 -3
- package/docs/design-notes/css-anchor.md +75 -21
- package/docs/design-notes/enhancement-contract.md +14 -6
- package/docs/design-notes/grid.md +4 -4
- package/docs/design-notes/naming.md +6 -1
- package/docs/design-notes/platform-alignment.md +53 -7
- package/docs/design-notes/popover-manual-poc.md +105 -25
- package/docs/design-notes/surface-reparenting.md +56 -47
- package/docs/design-notes/tooltip-coordinate-space.md +132 -0
- package/docs/design-notes/widget-primitives.md +7 -4
- package/docs/pages/components/accordion.md +41 -2
- package/docs/pages/components/alert.md +85 -30
- package/docs/pages/components/app-navigation.md +6 -0
- package/docs/pages/components/avatar.md +6 -6
- package/docs/pages/components/badge.md +101 -16
- package/docs/pages/components/button.md +16 -8
- package/docs/pages/components/card.md +10 -10
- package/docs/pages/components/dialog.md +21 -6
- package/docs/pages/components/drawer.md +13 -0
- package/docs/pages/components/fab.md +4 -3
- package/docs/pages/components/list.md +42 -4
- package/docs/pages/components/navbar.md +17 -1
- package/docs/pages/components/pagination.md +2 -2
- package/docs/pages/components/skeleton.md +3 -1
- package/docs/pages/components/steps.md +19 -0
- package/docs/pages/components/table.md +3 -2
- package/docs/pages/enhancements/flyout.md +82 -38
- package/docs/pages/enhancements/overview.md +25 -0
- package/docs/pages/enhancements/status-bar.md +1 -1
- package/docs/pages/enhancements/tabs.md +45 -37
- package/docs/pages/enhancements/tooltip.md +36 -10
- package/docs/pages/examples/overview.md +38 -5
- package/docs/pages/forms/choice-cards.md +11 -6
- package/docs/pages/forms/combobox.md +1 -1
- package/docs/pages/forms/floating-field.md +4 -3
- package/docs/pages/forms/joined-controls.md +22 -0
- package/docs/pages/forms/otp.md +2 -1
- package/docs/pages/forms/overview.md +1 -1
- package/docs/pages/forms/states-and-sizes.md +16 -18
- package/docs/pages/forms/sticky-actions.md +2 -2
- package/docs/pages/forms/switch.md +1 -1
- package/docs/pages/foundations/philosophy.md +57 -26
- package/docs/pages/foundations/theming.md +2 -2
- package/docs/pages/foundations/tokens.md +118 -21
- package/docs/pages/foundations/typography.md +35 -14
- package/docs/pages/guides/introduction.md +11 -9
- package/docs/pages/guides/progressive-enhancement.md +115 -30
- package/docs/pages/guides/tailwind.md +3 -2
- package/docs/pages/layout/media.md +1 -1
- package/docs/pages/layout/overview.md +11 -1
- package/docs/pages/layout/scroll-snap.md +3 -3
- package/docs/pages/layout/stack.md +17 -9
- package/docs/pages/patterns/icon-input.md +4 -2
- package/docs/pages/patterns/icon-slot.md +2 -0
- package/docs/pages/patterns/intent-nesting.md +1 -1
- package/docs/pages/utilities/overview.md +23 -2
- package/docs/pages/utilities/sizing-wrapping.md +1 -1
- package/docs/pages/utilities/spacing.md +10 -8
- package/llms.txt +2 -1
- package/package.json +159 -149
- package/{scripts/reserved-classes.json → reserved-classes.json} +4 -6
- package/src/css/components/accordion.css +42 -3
- package/src/css/components/alert.css +25 -13
- package/src/css/components/app-nav.css +18 -8
- package/src/css/components/avatar.css +13 -1
- package/src/css/components/badge.css +78 -12
- package/src/css/components/breadcrumb.css +2 -3
- package/src/css/components/button.css +9 -16
- package/src/css/components/card.css +9 -2
- package/src/css/components/chat.css +1 -0
- package/src/css/components/data-list.css +1 -1
- package/src/css/components/drawer.css +101 -32
- package/src/css/components/fab.css +0 -6
- package/src/css/components/flyout.css +35 -98
- package/src/css/components/index.css +0 -1
- package/src/css/components/indicator.css +21 -0
- package/src/css/components/key.css +10 -0
- package/src/css/components/list.css +40 -4
- package/src/css/components/menu.css +2 -1
- package/src/css/components/modal.css +48 -33
- package/src/css/components/navbar.css +37 -4
- package/src/css/components/pagination.css +1 -0
- package/src/css/components/skeleton.css +15 -4
- package/src/css/components/spinner.css +6 -6
- package/src/css/components/status-bar.css +0 -5
- package/src/css/components/steps.css +45 -59
- package/src/css/components/tab.css +29 -9
- package/src/css/components/table.css +13 -5
- package/src/css/components/tooltip.css +36 -40
- package/src/css/core/base.css +23 -1
- package/src/css/core/intents.css +17 -6
- package/src/css/core/theme.css +27 -0
- package/src/css/core/tokens.css +35 -15
- package/src/css/core/variants.css +64 -15
- package/src/css/forms/choice-card.css +4 -4
- package/src/css/forms/choice.css +76 -29
- package/src/css/forms/control.css +2 -1
- package/src/css/forms/floating-field.css +3 -3
- package/src/css/forms/form.css +4 -3
- package/src/css/forms/input-icon.css +20 -14
- package/src/css/forms/native.css +6 -1
- package/src/css/forms/otp.css +9 -1
- package/src/css/forms/range.css +2 -0
- package/src/css/forms/select.css +29 -9
- package/src/css/forms/switch.css +28 -8
- package/src/css/layout/app-layout.css +1 -1
- package/src/css/layout/grid.css +50 -76
- package/src/css/layout/scroll-snap.css +11 -7
- package/src/css/layout/scroller.css +3 -4
- package/src/css/layout/stack.css +2 -2
- package/src/css/typography/fluid.css +4 -3
- package/src/css/typography/prose.css +6 -5
- package/src/css/utilities/base.css +2 -1
- package/src/css/utilities/extra.css +20 -17
- package/src/js/context-menu.js +27 -26
- package/src/js/dialog.js +2 -1
- package/src/js/dismiss.js +5 -0
- package/src/js/enhance.js +34 -2
- package/src/js/enhancement-loader.js +36 -43
- package/src/js/events.js +0 -3
- package/src/js/filter.js +0 -1
- package/src/js/floating-space.js +42 -0
- package/src/js/flyout.js +9 -44
- package/src/js/focus-group.js +7 -0
- package/src/js/focus.js +6 -0
- package/src/js/menu.js +10 -1
- package/src/js/selectors.js +5 -9
- package/src/js/status.js +6 -5
- package/src/js/surface.js +97 -139
- package/src/js/tab.js +6 -1
- package/src/js/tooltip.js +150 -51
- package/src/js/validation.js +1 -1
- package/src/css/components/surface.css +0 -49
package/package.json
CHANGED
|
@@ -1,149 +1,159 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "actual-css",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Plain CSS component framework with semantic classes, universal variants, small tokens, theme hooks, and progressive enhancements.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"packageManager": "bun@1.4.
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"author": "Thomas <thomas@lekoala.be>",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "https://github.com/lekoala/actual-css.git"
|
|
12
|
-
},
|
|
13
|
-
"homepage": "https://github.com/lekoala/actual-css",
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "https://github.com/lekoala/actual-css/issues"
|
|
16
|
-
},
|
|
17
|
-
"keywords": [
|
|
18
|
-
"css",
|
|
19
|
-
"css-framework",
|
|
20
|
-
"component-library",
|
|
21
|
-
"semantic",
|
|
22
|
-
"accessibility",
|
|
23
|
-
"dark-mode",
|
|
24
|
-
"themable",
|
|
25
|
-
"no-build",
|
|
26
|
-
"progressive-enhancement"
|
|
27
|
-
],
|
|
28
|
-
"exports": {
|
|
29
|
-
".": "./dist/actual.min.css",
|
|
30
|
-
"./full": "./dist/actual.full.min.css",
|
|
31
|
-
"./css": "./src/css/actual.css",
|
|
32
|
-
"./css/components": "./src/css/components/index.css",
|
|
33
|
-
"./css/components/*": "./src/css/components/*.css",
|
|
34
|
-
"./css/effects": "./src/css/effects/index.css",
|
|
35
|
-
"./css/effects/*": "./src/css/effects/*.css",
|
|
36
|
-
"./css/forms": "./src/css/forms/base.css",
|
|
37
|
-
"./css/forms/all": "./src/css/forms/index.css",
|
|
38
|
-
"./css/forms/*": "./src/css/forms/*.css",
|
|
39
|
-
"./css/full": "./src/css/actual.full.css",
|
|
40
|
-
"./css/layer": "./src/css/actual.layer.css",
|
|
41
|
-
"./css/layout": "./src/css/layout/index.css",
|
|
42
|
-
"./css/layout/*": "./src/css/layout/*.css",
|
|
43
|
-
"./css/themes": null,
|
|
44
|
-
"./css/themes/*": null,
|
|
45
|
-
"./css/typography": "./src/css/typography/index.css",
|
|
46
|
-
"./css/typography/*": "./src/css/typography/*.css",
|
|
47
|
-
"./css/utilities": "./src/css/utilities/index.css",
|
|
48
|
-
"./css/utilities/*": "./src/css/utilities/*.css",
|
|
49
|
-
"./js": "./src/js/index.js",
|
|
50
|
-
"./js/full": "./src/js/full.js",
|
|
51
|
-
"./js/command": "./src/js/command.js",
|
|
52
|
-
"./js/context-menu": "./src/js/context-menu.js",
|
|
53
|
-
"./js/dialog": "./src/js/dialog.js",
|
|
54
|
-
"./js/dismiss": "./src/js/dismiss.js",
|
|
55
|
-
"./js/escape": "./src/js/escape.js",
|
|
56
|
-
"./js/enhance": "./src/js/enhance.js",
|
|
57
|
-
"./js/enhancement-loader": "./src/js/enhancement-loader.js",
|
|
58
|
-
"./js/parse-config": "./src/js/parse-config.js",
|
|
59
|
-
"./js/events": "./src/js/events.js",
|
|
60
|
-
"./js/filter": "./src/js/filter.js",
|
|
61
|
-
"./js/flyout": "./src/js/flyout.js",
|
|
62
|
-
"./js/focus": "./src/js/focus.js",
|
|
63
|
-
"./js/focus-group": "./src/js/focus-group.js",
|
|
64
|
-
"./js/input": "./src/js/input.js",
|
|
65
|
-
"./js/keys": "./src/js/keys.js",
|
|
66
|
-
"./js/mask": "./src/js/mask.js",
|
|
67
|
-
"./js/menu": "./src/js/menu.js",
|
|
68
|
-
"./js/password": "./src/js/password.js",
|
|
69
|
-
"./js/scrollspy": "./src/js/scrollspy.js",
|
|
70
|
-
"./js/selectors": "./src/js/selectors.js",
|
|
71
|
-
"./js/tab": "./src/js/tab.js",
|
|
72
|
-
"./js/tooltip": "./src/js/tooltip.js",
|
|
73
|
-
"./js/validation": "./src/js/validation.js",
|
|
74
|
-
"./js/status": "./src/js/status.js",
|
|
75
|
-
"./js/surface": "./src/js/surface.js",
|
|
76
|
-
"./reserved-classes.json": "./
|
|
77
|
-
"./
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
"
|
|
90
|
-
"src/css
|
|
91
|
-
"src/css/
|
|
92
|
-
"src/css/
|
|
93
|
-
"src/css/
|
|
94
|
-
"src/css/
|
|
95
|
-
"src/css/
|
|
96
|
-
"src/css/
|
|
97
|
-
"src/
|
|
98
|
-
"src/
|
|
99
|
-
"src/
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"
|
|
118
|
-
"check:
|
|
119
|
-
"
|
|
120
|
-
"check:
|
|
121
|
-
"check:
|
|
122
|
-
"check:
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
"
|
|
148
|
-
|
|
149
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "actual-css",
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "Plain CSS component framework with semantic classes, universal variants, small tokens, theme hooks, and progressive enhancements.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"packageManager": "bun@1.4.2",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Thomas <thomas@lekoala.be>",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/lekoala/actual-css.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/lekoala/actual-css",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/lekoala/actual-css/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"css",
|
|
19
|
+
"css-framework",
|
|
20
|
+
"component-library",
|
|
21
|
+
"semantic",
|
|
22
|
+
"accessibility",
|
|
23
|
+
"dark-mode",
|
|
24
|
+
"themable",
|
|
25
|
+
"no-build",
|
|
26
|
+
"progressive-enhancement"
|
|
27
|
+
],
|
|
28
|
+
"exports": {
|
|
29
|
+
".": "./dist/actual.min.css",
|
|
30
|
+
"./full": "./dist/actual.full.min.css",
|
|
31
|
+
"./css": "./src/css/actual.css",
|
|
32
|
+
"./css/components": "./src/css/components/index.css",
|
|
33
|
+
"./css/components/*": "./src/css/components/*.css",
|
|
34
|
+
"./css/effects": "./src/css/effects/index.css",
|
|
35
|
+
"./css/effects/*": "./src/css/effects/*.css",
|
|
36
|
+
"./css/forms": "./src/css/forms/base.css",
|
|
37
|
+
"./css/forms/all": "./src/css/forms/index.css",
|
|
38
|
+
"./css/forms/*": "./src/css/forms/*.css",
|
|
39
|
+
"./css/full": "./src/css/actual.full.css",
|
|
40
|
+
"./css/layer": "./src/css/actual.layer.css",
|
|
41
|
+
"./css/layout": "./src/css/layout/index.css",
|
|
42
|
+
"./css/layout/*": "./src/css/layout/*.css",
|
|
43
|
+
"./css/themes": null,
|
|
44
|
+
"./css/themes/*": null,
|
|
45
|
+
"./css/typography": "./src/css/typography/index.css",
|
|
46
|
+
"./css/typography/*": "./src/css/typography/*.css",
|
|
47
|
+
"./css/utilities": "./src/css/utilities/index.css",
|
|
48
|
+
"./css/utilities/*": "./src/css/utilities/*.css",
|
|
49
|
+
"./js": "./src/js/index.js",
|
|
50
|
+
"./js/full": "./src/js/full.js",
|
|
51
|
+
"./js/command": "./src/js/command.js",
|
|
52
|
+
"./js/context-menu": "./src/js/context-menu.js",
|
|
53
|
+
"./js/dialog": "./src/js/dialog.js",
|
|
54
|
+
"./js/dismiss": "./src/js/dismiss.js",
|
|
55
|
+
"./js/escape": "./src/js/escape.js",
|
|
56
|
+
"./js/enhance": "./src/js/enhance.js",
|
|
57
|
+
"./js/enhancement-loader": "./src/js/enhancement-loader.js",
|
|
58
|
+
"./js/parse-config": "./src/js/parse-config.js",
|
|
59
|
+
"./js/events": "./src/js/events.js",
|
|
60
|
+
"./js/filter": "./src/js/filter.js",
|
|
61
|
+
"./js/flyout": "./src/js/flyout.js",
|
|
62
|
+
"./js/focus": "./src/js/focus.js",
|
|
63
|
+
"./js/focus-group": "./src/js/focus-group.js",
|
|
64
|
+
"./js/input": "./src/js/input.js",
|
|
65
|
+
"./js/keys": "./src/js/keys.js",
|
|
66
|
+
"./js/mask": "./src/js/mask.js",
|
|
67
|
+
"./js/menu": "./src/js/menu.js",
|
|
68
|
+
"./js/password": "./src/js/password.js",
|
|
69
|
+
"./js/scrollspy": "./src/js/scrollspy.js",
|
|
70
|
+
"./js/selectors": "./src/js/selectors.js",
|
|
71
|
+
"./js/tab": "./src/js/tab.js",
|
|
72
|
+
"./js/tooltip": "./src/js/tooltip.js",
|
|
73
|
+
"./js/validation": "./src/js/validation.js",
|
|
74
|
+
"./js/status": "./src/js/status.js",
|
|
75
|
+
"./js/surface": "./src/js/surface.js",
|
|
76
|
+
"./reserved-classes.json": "./reserved-classes.json",
|
|
77
|
+
"./components.json": "./components.json",
|
|
78
|
+
"./package.json": "./package.json"
|
|
79
|
+
},
|
|
80
|
+
"bin": {
|
|
81
|
+
"actual-css": "./src/cli/actual-css.js"
|
|
82
|
+
},
|
|
83
|
+
"main": "./dist/actual.js",
|
|
84
|
+
"style": "./dist/actual.min.css",
|
|
85
|
+
"unpkg": "./dist/actual.min.css",
|
|
86
|
+
"jsdelivr": "./dist/actual.min.css",
|
|
87
|
+
"sideEffects": true,
|
|
88
|
+
"files": [
|
|
89
|
+
"dist",
|
|
90
|
+
"src/css/*.css",
|
|
91
|
+
"src/css/core",
|
|
92
|
+
"src/css/layout",
|
|
93
|
+
"src/css/typography",
|
|
94
|
+
"src/css/forms",
|
|
95
|
+
"src/css/components",
|
|
96
|
+
"src/css/effects",
|
|
97
|
+
"src/css/utilities",
|
|
98
|
+
"src/cli",
|
|
99
|
+
"src/js",
|
|
100
|
+
"src/tooling",
|
|
101
|
+
"reserved-classes.json",
|
|
102
|
+
"components.json",
|
|
103
|
+
"docs",
|
|
104
|
+
"CHANGELOG.md",
|
|
105
|
+
"llms.txt",
|
|
106
|
+
"LICENSE",
|
|
107
|
+
"README.md"
|
|
108
|
+
],
|
|
109
|
+
"engines": {
|
|
110
|
+
"bun": ">=1.4.0",
|
|
111
|
+
"node": ">=18"
|
|
112
|
+
},
|
|
113
|
+
"scripts": {
|
|
114
|
+
"lint": "biome check",
|
|
115
|
+
"lint:fix": "biome check --write",
|
|
116
|
+
"build:docs": "bun run build:themes && bun scripts/build-docs.js",
|
|
117
|
+
"watch:docs": "bun run build:themes && bun scripts/build-docs.js --watch",
|
|
118
|
+
"check:docs": "bun scripts/check-docs.js",
|
|
119
|
+
"format:docs": "bun scripts/format-doc-tables.js",
|
|
120
|
+
"check:doc-classes": "bun scripts/check-doc-classes.js",
|
|
121
|
+
"check:compat": "bun scripts/check-compat.js",
|
|
122
|
+
"check:css-api": "bun scripts/check-css-api.js",
|
|
123
|
+
"check:color-space": "bun scripts/check-color-space.js",
|
|
124
|
+
"report:theme-contrast": "bun scripts/report-theme-contrast.js",
|
|
125
|
+
"report:neutral-ramp": "bun scripts/report-neutral-ramp.js",
|
|
126
|
+
"report:dead-css": "bun scripts/report-dead-css.js",
|
|
127
|
+
"report:overflow": "bun scripts/report-overflow.js",
|
|
128
|
+
"check:architecture": "bun scripts/check-css-architecture.js",
|
|
129
|
+
"build:dist": "bun scripts/build-dist.js",
|
|
130
|
+
"build:js": "bun scripts/build-js.js",
|
|
131
|
+
"build:themes": "bun scripts/build-themes.js",
|
|
132
|
+
"build:size": "bun scripts/build-size.js",
|
|
133
|
+
"check:enhance": "bun run scripts/check-enhance.js",
|
|
134
|
+
"generate:reserved": "bun scripts/generate-reserved-classes.js",
|
|
135
|
+
"check:reserved": "bun scripts/check-reserved.js",
|
|
136
|
+
"generate:catalog": "bun scripts/build-catalog.js",
|
|
137
|
+
"check:catalog": "bun scripts/check-catalog.js",
|
|
138
|
+
"check:links": "bun scripts/check-doc-links.js",
|
|
139
|
+
"check:templates": "bun scripts/check-templates.js",
|
|
140
|
+
"check:markup": "bun scripts/check-markup.js",
|
|
141
|
+
"shot:forced": "bun scripts/forced-colors-shot.js",
|
|
142
|
+
"shot:multi": "bun scripts/multi-shot.js",
|
|
143
|
+
"shot:page": "bun scripts/page-shot.js",
|
|
144
|
+
"probe": "bun scripts/probe.js",
|
|
145
|
+
"serve": "bun scripts/serve.js",
|
|
146
|
+
"check:sync": "bun scripts/check-sync.js",
|
|
147
|
+
"test": "bun test",
|
|
148
|
+
"test:changed": "bun test --changed=master",
|
|
149
|
+
"build:all": "bun run lint && bun run build:dist && bun run build:js && bun run build:size && bun run format:docs && bun run build:docs && bun run check:docs && bun run check:doc-classes && bun run check:compat && bun run check:css-api && bun run check:color-space && bun run check:architecture && bun run check:enhance && bun run generate:reserved && bun run check:reserved && bun run generate:catalog && bun run check:catalog && bun run check:sync && bun run check:links && bun run check:templates && bun run check:markup && bun run test",
|
|
150
|
+
"prepublishOnly": "bun run build:all"
|
|
151
|
+
},
|
|
152
|
+
"devDependencies": {
|
|
153
|
+
"@biomejs/biome": "^2.5.12",
|
|
154
|
+
"happy-dom": "^20.14.0"
|
|
155
|
+
},
|
|
156
|
+
"dependencies": {
|
|
157
|
+
"@lekoala/floating": "^0.2.0"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -106,19 +106,17 @@
|
|
|
106
106
|
"flex-nowrap",
|
|
107
107
|
"flex-wrap",
|
|
108
108
|
"floating-field",
|
|
109
|
+
"flush",
|
|
109
110
|
"flyout",
|
|
110
111
|
"flyout-trigger",
|
|
111
112
|
"font-weight-bold",
|
|
112
113
|
"font-weight-medium",
|
|
113
114
|
"font-weight-normal",
|
|
114
|
-
"font-weight-
|
|
115
|
+
"font-weight-semibold",
|
|
115
116
|
"form-actions",
|
|
116
117
|
"frame",
|
|
117
118
|
"gap-context",
|
|
118
|
-
"gap-lg",
|
|
119
|
-
"gap-md",
|
|
120
119
|
"gap-none",
|
|
121
|
-
"gap-sm",
|
|
122
120
|
"ghost",
|
|
123
121
|
"grid",
|
|
124
122
|
"grid-2",
|
|
@@ -137,7 +135,6 @@
|
|
|
137
135
|
"intent-color",
|
|
138
136
|
"inverted",
|
|
139
137
|
"is-open",
|
|
140
|
-
"is-sheet",
|
|
141
138
|
"is-static",
|
|
142
139
|
"items-center",
|
|
143
140
|
"items-end",
|
|
@@ -229,6 +226,7 @@
|
|
|
229
226
|
"scrollspy",
|
|
230
227
|
"secondary",
|
|
231
228
|
"select",
|
|
229
|
+
"separated",
|
|
232
230
|
"shadow-context",
|
|
233
231
|
"shadow-popout-context",
|
|
234
232
|
"sidebar-layout",
|
|
@@ -236,6 +234,7 @@
|
|
|
236
234
|
"sm",
|
|
237
235
|
"soft",
|
|
238
236
|
"solid",
|
|
237
|
+
"spacious",
|
|
239
238
|
"spinner",
|
|
240
239
|
"sr-only",
|
|
241
240
|
"stable-gutter",
|
|
@@ -252,7 +251,6 @@
|
|
|
252
251
|
"subtle",
|
|
253
252
|
"success",
|
|
254
253
|
"surface",
|
|
255
|
-
"surface-backdrop",
|
|
256
254
|
"switch",
|
|
257
255
|
"switcher",
|
|
258
256
|
"tab",
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* or demo styles. Decorative palettes and custom markers belong outside the
|
|
6
6
|
* base component.
|
|
7
7
|
*
|
|
8
|
+
* Container treatments (structural chrome, not skins):
|
|
9
|
+
* - default — the common raised shell;
|
|
10
|
+
* - .flush — the shell removed, only the item separators remain, so the group
|
|
11
|
+
* can sit directly inside an existing surface (card, drawer, page section);
|
|
12
|
+
* - .separated — each item becomes its own card.
|
|
13
|
+
*
|
|
8
14
|
* Public hooks:
|
|
9
15
|
* --accordion-radius
|
|
10
16
|
* --accordion-marker-color
|
|
@@ -30,11 +36,14 @@
|
|
|
30
36
|
list-style: none;
|
|
31
37
|
padding: var(--space-40);
|
|
32
38
|
color: var(--text);
|
|
33
|
-
font-weight: var(--font-weight-
|
|
39
|
+
font-weight: var(--font-weight-medium);
|
|
34
40
|
}
|
|
35
41
|
|
|
36
|
-
.accordion summary:hover {
|
|
37
|
-
|
|
42
|
+
.accordion summary:hover::after {
|
|
43
|
+
/* The whole row is one focus target; reinforcing only the end marker keeps
|
|
44
|
+
the affordance on the disclosure control instead of making the whole
|
|
45
|
+
label read as a link. */
|
|
46
|
+
--accordion-marker-color: currentColor;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
.accordion summary::-webkit-details-marker {
|
|
@@ -78,6 +87,36 @@
|
|
|
78
87
|
padding-inline-start: 2rem;
|
|
79
88
|
}
|
|
80
89
|
|
|
90
|
+
/* Flush — the shell is dropped and only the shared item separators remain.
|
|
91
|
+
Zero inline padding puts the group edge to edge inside the surface that
|
|
92
|
+
already frames it, so no override is repeated per embedding. */
|
|
93
|
+
.accordion.flush {
|
|
94
|
+
border: 0;
|
|
95
|
+
border-radius: 0;
|
|
96
|
+
background: transparent;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.accordion.flush summary,
|
|
100
|
+
.accordion.flush details > summary + * {
|
|
101
|
+
padding-inline: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Separated — each item owns a full card. The item's own border beats the
|
|
105
|
+
shared details + details separator on specificity alone, so nothing needs
|
|
106
|
+
undoing for the second item onwards. */
|
|
107
|
+
.accordion.separated {
|
|
108
|
+
display: grid;
|
|
109
|
+
gap: var(--space-20);
|
|
110
|
+
border: 0;
|
|
111
|
+
background: transparent;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.accordion.separated > details {
|
|
115
|
+
border: var(--border-width) solid var(--border);
|
|
116
|
+
border-radius: var(--accordion-radius);
|
|
117
|
+
background: var(--surface-raised);
|
|
118
|
+
}
|
|
119
|
+
|
|
81
120
|
@media (forced-colors: active) {
|
|
82
121
|
.accordion {
|
|
83
122
|
--accordion-marker-color: CanvasText;
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
:where(.alert) {
|
|
33
33
|
--intent: initial;
|
|
34
34
|
--intent-fg: initial;
|
|
35
|
+
--intent-soft-fg: initial;
|
|
35
36
|
--ui-bg: initial;
|
|
36
37
|
--ui-fg: initial;
|
|
37
38
|
--ui-border: initial;
|
|
@@ -64,12 +65,23 @@
|
|
|
64
65
|
min-inline-size: 0;
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
/* The alert owns the block spacing between its direct content blocks, the way
|
|
69
|
+
.stack and .prose own theirs, so a title and a description are plain
|
|
70
|
+
siblings instead of a wrapper carrying an inline --gap. What made that pair
|
|
71
|
+
read as detached is the UA paragraph margin: trimming only the outer edges
|
|
72
|
+
left it in place between them. Content keeps its own internal rhythm — a
|
|
73
|
+
nested list keeps its bullets and padding, a .prose child keeps its flow.
|
|
74
|
+
The slots are excluded because they are anatomy, not content: an
|
|
75
|
+
admonition's title bar has to stay flush against its body. The list follows
|
|
76
|
+
the anatomy, so it grows with it. */
|
|
77
|
+
.alert > :not(:where(.alert-icon, .alert-dismiss, .alert-title, .alert-body)) {
|
|
78
|
+
margin-block: 0;
|
|
69
79
|
}
|
|
70
80
|
|
|
71
|
-
.alert
|
|
72
|
-
|
|
81
|
+
.alert
|
|
82
|
+
> :not(:where(.alert-icon, .alert-dismiss, .alert-title, .alert-body))
|
|
83
|
+
+ :not(:where(.alert-icon, .alert-dismiss, .alert-title, .alert-body)) {
|
|
84
|
+
margin-block-start: var(--space-10);
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
/* Alerts are soft by default. The recipe writes local defaults rather than
|
|
@@ -87,10 +99,9 @@
|
|
|
87
99
|
var(--surface) var(--soft-border-mix),
|
|
88
100
|
var(--intent, var(--neutral))
|
|
89
101
|
);
|
|
90
|
-
--alert-default-fg:
|
|
91
|
-
|
|
92
|
-
var(--text),
|
|
93
|
-
var(--intent, var(--text)) var(--soft-fg-mix)
|
|
102
|
+
--alert-default-fg: var(
|
|
103
|
+
--intent-soft-fg,
|
|
104
|
+
color-mix(in oklab, var(--text), var(--intent, var(--text)) var(--soft-fg-mix))
|
|
94
105
|
);
|
|
95
106
|
/* @sync soft-recipe */
|
|
96
107
|
}
|
|
@@ -191,7 +202,7 @@
|
|
|
191
202
|
/* Links */
|
|
192
203
|
.alert :where(a:not(.btn)) {
|
|
193
204
|
color: inherit;
|
|
194
|
-
font-weight: var(--font-weight-
|
|
205
|
+
font-weight: var(--font-weight-semibold);
|
|
195
206
|
}
|
|
196
207
|
|
|
197
208
|
/* Forced colors: no override needed. The always-on border gets a forced
|
|
@@ -199,11 +210,12 @@
|
|
|
199
210
|
Canvas backplate (unreadable) — so .solid intentionally falls back to the
|
|
200
211
|
default look. */
|
|
201
212
|
|
|
202
|
-
/* Callout —
|
|
203
|
-
|
|
213
|
+
/* Callout — leading-edge flag treatment. It owns the border geometry only, so
|
|
214
|
+
the surface and the ink stay with the alert's own intent and shared
|
|
215
|
+
treatment: bare is the soft panel, .surface the page surface, .solid a
|
|
216
|
+
filled one, and .outline has no fill and no other side. Thickness and color
|
|
217
|
+
follow the --alert-border-inline-start-* hooks. */
|
|
204
218
|
.alert.callout {
|
|
205
|
-
--alert-bg: var(--surface-subtle);
|
|
206
|
-
--alert-fg: var(--text);
|
|
207
219
|
border: 0;
|
|
208
220
|
border-inline-start: var(--alert-border-inline-start-width, 4px) solid
|
|
209
221
|
var(--alert-border-inline-start-color, var(--intent, var(--neutral)));
|
|
@@ -6,8 +6,12 @@
|
|
|
6
6
|
* Public hooks:
|
|
7
7
|
* --app-nav-size
|
|
8
8
|
* --app-nav-gap
|
|
9
|
+
* --app-nav-icon-size
|
|
9
10
|
*/
|
|
10
11
|
:where(.app-nav) {
|
|
12
|
+
--intent: initial;
|
|
13
|
+
--intent-fg: initial;
|
|
14
|
+
--intent-soft-fg: initial;
|
|
11
15
|
--ui-bg: initial;
|
|
12
16
|
--ui-fg: initial;
|
|
13
17
|
--ui-border: initial;
|
|
@@ -16,6 +20,7 @@
|
|
|
16
20
|
.app-nav {
|
|
17
21
|
--app-nav-size: 4rem;
|
|
18
22
|
--app-nav-gap: var(--space-10);
|
|
23
|
+
--app-nav-icon-size: 1.5rem;
|
|
19
24
|
|
|
20
25
|
position: sticky;
|
|
21
26
|
inset-block-end: 0;
|
|
@@ -52,9 +57,9 @@
|
|
|
52
57
|
}
|
|
53
58
|
|
|
54
59
|
.app-nav > a > :where(svg, img, [aria-hidden="true"]) {
|
|
55
|
-
inline-size:
|
|
56
|
-
block-size:
|
|
57
|
-
font-size:
|
|
60
|
+
inline-size: var(--app-nav-icon-size);
|
|
61
|
+
block-size: var(--app-nav-icon-size);
|
|
62
|
+
font-size: var(--app-nav-icon-size);
|
|
58
63
|
line-height: 1;
|
|
59
64
|
}
|
|
60
65
|
|
|
@@ -63,14 +68,19 @@
|
|
|
63
68
|
color: var(--text);
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
|
|
71
|
+
/* Current tile is already a full selected surface. Selection never changes
|
|
72
|
+
text metrics: the shared medium weight is kept, no permanent indicator is
|
|
73
|
+
added here. */
|
|
74
|
+
.app-nav > a[aria-current="page"] {
|
|
67
75
|
background: var(--state-selected);
|
|
68
76
|
color: var(--state-selected-fg);
|
|
69
|
-
font-weight: var(--font-weight-bold);
|
|
70
77
|
}
|
|
71
78
|
|
|
72
|
-
@media
|
|
73
|
-
|
|
74
|
-
|
|
79
|
+
@media (forced-colors: active) {
|
|
80
|
+
/* --state-selected flattens to a UA color that no longer distinguishes the
|
|
81
|
+
current tile from the rest of the bar, so paint the system Highlight pair. */
|
|
82
|
+
.app-nav > a[aria-current="page"] {
|
|
83
|
+
background: Highlight;
|
|
84
|
+
color: HighlightText;
|
|
75
85
|
}
|
|
76
86
|
}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
color: var(--avatar-fg);
|
|
47
47
|
font: inherit;
|
|
48
48
|
font-size: var(--avatar-font-size);
|
|
49
|
-
font-weight: var(--font-weight-
|
|
49
|
+
font-weight: var(--font-weight-semibold);
|
|
50
50
|
line-height: 1;
|
|
51
51
|
text-decoration: none;
|
|
52
52
|
vertical-align: middle;
|
|
@@ -160,6 +160,18 @@ a.avatar[aria-disabled="true"] {
|
|
|
160
160
|
transform: translate(var(--avatar-status-translate-x), 50%);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
/* Safari before 16.4 has no :dir(); the ancestor-attribute path is the
|
|
164
|
+
Degraded-tier fallback and the :dir() rules are dropped on their own there.
|
|
165
|
+
:dir() follows inherited directionality, so the explicit ltr rule
|
|
166
|
+
neutralizes an outer RTL fallback for a nested direction change. */
|
|
167
|
+
[dir="rtl"] .avatar > .badge:empty {
|
|
168
|
+
--avatar-status-translate-x: -50%;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.avatar:dir(ltr) > .badge:empty {
|
|
172
|
+
--avatar-status-translate-x: 50%;
|
|
173
|
+
}
|
|
174
|
+
|
|
163
175
|
.avatar:dir(rtl) > .badge:empty {
|
|
164
176
|
--avatar-status-translate-x: -50%;
|
|
165
177
|
}
|