@gjsify/adwaita-web 0.1.7 → 0.1.8
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/{src/adwaita-css.ts → dist/adwaita-web.css} +54 -152
- package/dist/adwaita-web.css.map +1 -0
- package/lib/types/elements/adw-card.d.ts +3 -0
- package/lib/types/index.d.ts +1 -0
- package/package.json +22 -7
- package/scss/_card.scss +20 -0
- package/scss/_combo_row.scss +78 -0
- package/scss/_headerbar.scss +67 -0
- package/scss/_icons.generated.scss +8 -0
- package/scss/_overlay_split_view.scss +106 -0
- package/scss/_preferences.scss +35 -0
- package/scss/_row.scss +29 -0
- package/scss/_spin_row.scss +68 -0
- package/scss/_switch_row.scss +65 -0
- package/scss/_theme.scss +34 -0
- package/scss/_toast.scss +60 -0
- package/scss/_variables.scss +57 -0
- package/scss/_window.scss +23 -0
- package/scss/adwaita-skin.scss +21 -0
- package/src/elements/adw-card.js +9 -0
- package/src/elements/adw-card.ts +15 -0
- package/src/elements/adw-combo-row.js +63 -0
- package/src/elements/adw-header-bar.js +37 -0
- package/src/elements/adw-overlay-split-view.js +101 -0
- package/src/elements/adw-preferences-group.js +24 -0
- package/src/elements/adw-spin-row.js +104 -0
- package/src/elements/adw-switch-row.js +51 -0
- package/src/elements/adw-toast-overlay.js +31 -0
- package/src/elements/adw-window.js +12 -0
- package/src/index.js +21 -0
- package/src/index.ts +4 -9
- package/style.css.d.ts +4 -0
- package/lib/types/adwaita-css.d.ts +0 -1
- package/tsconfig.json +0 -16
package/scss/_card.scss
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// _card.scss — adw-card styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_card.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_misc.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-card,
|
|
9
|
+
.adw-card {
|
|
10
|
+
display: block;
|
|
11
|
+
background-color: var(--card-bg-color);
|
|
12
|
+
color: var(--card-fg-color);
|
|
13
|
+
border-radius: var(--card-radius);
|
|
14
|
+
padding: var(--spacing-l);
|
|
15
|
+
box-shadow:
|
|
16
|
+
0 0 0 1px rgb(0 0 6 / 3%),
|
|
17
|
+
0 1px 3px 1px rgb(0 0 6 / 7%),
|
|
18
|
+
0 2px 6px 2px rgb(0 0 6 / 3%);
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// _combo_row.scss — adw-combo-row styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_combo_row.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_combo-row.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-combo-row {
|
|
9
|
+
position: relative;
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
|
|
12
|
+
.adw-row-title {
|
|
13
|
+
font-size: var(--font-size-base);
|
|
14
|
+
color: var(--card-fg-color);
|
|
15
|
+
pointer-events: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Hidden <select> overlay — stretches across the row to capture clicks
|
|
19
|
+
// anywhere. The visual dropdown arrow is rendered by .adw-row-value::after
|
|
20
|
+
// below, so the select itself doesn't need a background image.
|
|
21
|
+
select {
|
|
22
|
+
appearance: none;
|
|
23
|
+
-webkit-appearance: none;
|
|
24
|
+
background-color: transparent;
|
|
25
|
+
border: none;
|
|
26
|
+
padding: 6px 24px 6px 8px;
|
|
27
|
+
font-family: var(--font-family);
|
|
28
|
+
font-size: var(--font-size-base);
|
|
29
|
+
color: var(--card-fg-color);
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
text-align: right;
|
|
32
|
+
position: absolute;
|
|
33
|
+
inset: 0;
|
|
34
|
+
opacity: 0;
|
|
35
|
+
width: 100%;
|
|
36
|
+
height: 100%;
|
|
37
|
+
z-index: 1;
|
|
38
|
+
|
|
39
|
+
&:focus-visible {
|
|
40
|
+
outline: 2px solid var(--accent-color);
|
|
41
|
+
outline-offset: -1px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
option {
|
|
45
|
+
background-color: var(--window-bg-color);
|
|
46
|
+
color: var(--window-fg-color);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.adw-row-value {
|
|
51
|
+
font-size: var(--font-size-base);
|
|
52
|
+
color: var(--card-fg-color);
|
|
53
|
+
opacity: var(--dim-opacity);
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 4px;
|
|
57
|
+
|
|
58
|
+
// Dropdown arrow — rendered via CSS mask so `currentColor` drives the
|
|
59
|
+
// fill, making the icon theme-aware (matches libadwaita's dark theme).
|
|
60
|
+
// Using background-image with a data-URI SVG would NOT resolve
|
|
61
|
+
// `currentColor` in most browsers.
|
|
62
|
+
&::after {
|
|
63
|
+
content: "";
|
|
64
|
+
display: inline-block;
|
|
65
|
+
width: 12px;
|
|
66
|
+
height: 12px;
|
|
67
|
+
background-color: currentColor;
|
|
68
|
+
-webkit-mask-image: var(--icon-go-down);
|
|
69
|
+
mask-image: var(--icon-go-down);
|
|
70
|
+
-webkit-mask-repeat: no-repeat;
|
|
71
|
+
mask-repeat: no-repeat;
|
|
72
|
+
-webkit-mask-size: contain;
|
|
73
|
+
mask-size: contain;
|
|
74
|
+
-webkit-mask-position: center;
|
|
75
|
+
mask-position: center;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// _headerbar.scss — adw-header-bar styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_headerbar.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_header-bar.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-header-bar {
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
min-height: 47px;
|
|
12
|
+
padding: 0 6px;
|
|
13
|
+
background-color: var(--headerbar-bg-color);
|
|
14
|
+
color: var(--headerbar-fg-color);
|
|
15
|
+
box-shadow: inset 0 -1px var(--headerbar-shade-color);
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
|
|
18
|
+
.adw-header-bar-center {
|
|
19
|
+
flex: 1;
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.adw-header-bar-title {
|
|
25
|
+
font-weight: bold;
|
|
26
|
+
font-size: var(--font-size-base);
|
|
27
|
+
white-space: nowrap;
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
text-overflow: ellipsis;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.adw-header-bar-start {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
padding: 0 6px;
|
|
36
|
+
gap: 4px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.adw-header-bar-end {
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
padding: 0 6px;
|
|
43
|
+
gap: 4px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.adw-header-btn {
|
|
47
|
+
position: relative;
|
|
48
|
+
width: 34px;
|
|
49
|
+
height: 34px;
|
|
50
|
+
border: none;
|
|
51
|
+
border-radius: var(--button-radius);
|
|
52
|
+
background: transparent;
|
|
53
|
+
color: var(--headerbar-fg-color);
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
padding: 0;
|
|
56
|
+
margin: 0;
|
|
57
|
+
flex-shrink: 0;
|
|
58
|
+
|
|
59
|
+
&:hover {
|
|
60
|
+
background: rgba(128, 128, 128, 0.12);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&:active {
|
|
64
|
+
background: rgba(128, 128, 128, 0.22);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// _icons.generated.scss — auto-generated by scripts/build-scss.mjs
|
|
2
|
+
// DO NOT EDIT — regenerated on every build from @gjsify/adwaita-icons.
|
|
3
|
+
|
|
4
|
+
:root {
|
|
5
|
+
--icon-edit-paste: url("data:image/svg+xml,%3Csvg%20height%3D'16px'%20viewBox%3D'0%200%2016%2016'%20width%3D'16px'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%20%3Cpath%20d%3D'm%207%200%20c%20-0.554688%200%20-1%200.445312%20-1%201%20h%20-2%20c%20-1.644531%200%20-3%201.355469%20-3%203%20v%209%20c%200%201.644531%201.355469%203%203%203%20h%208%20c%201.644531%200%203%20-1.355469%203%20-3%20v%20-9%20c%200%20-1.644531%20-1.355469%20-3%20-3%20-3%20h%20-2%20c%200%20-0.554688%20-0.445312%20-1%20-1%20-1%20z%20m%20-3%203%20h%201%20v%201%20c%200%200.554688%200.445312%201%201%201%20h%204%20c%200.554688%200%201%20-0.445312%201%20-1%20v%20-1%20h%201%20c%200.570312%200%201%200.429688%201%201%20v%209%20c%200%200.570312%20-0.429688%201%20-1%201%20h%20-8%20c%20-0.570312%200%20-1%20-0.429688%20-1%20-1%20v%20-9%20c%200%20-0.570312%200.429688%20-1%201%20-1%20z%20m%200%200'%20fill%3D'currentColor'%2F%3E%20%3C%2Fsvg%3E");
|
|
6
|
+
--icon-go-down: url("data:image/svg+xml,%3Csvg%20height%3D'16px'%20viewBox%3D'0%200%2016%2016'%20width%3D'16px'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%20%3Cpath%20d%3D'm%201%205%20c%200%20-0.265625%200.105469%20-0.519531%200.292969%20-0.707031%20c%200.390625%20-0.390625%201.023437%20-0.390625%201.414062%200%20l%205.292969%205.292969%20l%205.292969%20-5.292969%20c%200.390625%20-0.390625%201.023437%20-0.390625%201.414062%200%20c%200.1875%200.1875%200.292969%200.441406%200.292969%200.707031%20s%20-0.105469%200.519531%20-0.292969%200.707031%20l%20-6%206%20c%20-0.390625%200.390625%20-1.023437%200.390625%20-1.414062%200%20l%20-6%20-6%20c%20-0.1875%20-0.1875%20-0.292969%20-0.441406%20-0.292969%20-0.707031%20z%20m%200%200'%20fill%3D'currentColor'%2F%3E%20%3C%2Fsvg%3E");
|
|
7
|
+
--icon-sidebar-show: url("data:image/svg+xml,%3Csvg%20height%3D'16px'%20viewBox%3D'0%200%2016%2016'%20width%3D'16px'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%20%3Cg%20fill%3D'currentColor'%3E%20%3Cpath%20d%3D'm%206%2013%20v%20-10%20h%20-3%20c%20-0.550781%200%20-1%200.449219%20-1%201%20v%208%20c%200%200.550781%200.449219%201%201%201%20z%20m%200%200'%20fill-opacity%3D'0.34902'%2F%3E%20%3Cpath%20d%3D'm%203%201%20c%20-1.644531%200%20-3%201.355469%20-3%203%20v%208%20c%200%201.644531%201.355469%203%203%203%20h%2010%20c%201.644531%200%203%20-1.355469%203%20-3%20v%20-8%20c%200%20-1.644531%20-1.355469%20-3%20-3%20-3%20z%20m%200%202%20h%203%20v%2010%20h%20-3%20c%20-0.570312%200%20-1%20-0.429688%20-1%20-1%20v%20-8%20c%200%20-0.570312%200.429688%20-1%201%20-1%20z%20m%204%200%20h%206%20c%200.570312%200%201%200.429688%201%201%20v%208%20c%200%200.570312%20-0.429688%201%20-1%201%20h%20-6%20z%20m%200%200'%2F%3E%20%3C%2Fg%3E%20%3C%2Fsvg%3E");
|
|
8
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// _overlay_split_view.scss — adw-overlay-split-view styling.
|
|
2
|
+
// Reference: refs/libadwaita/src/adw-overlay-split-view.c
|
|
3
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
4
|
+
// Modifications: Implemented as Web Component for @gjsify/adwaita-web.
|
|
5
|
+
|
|
6
|
+
adw-overlay-split-view {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: row;
|
|
9
|
+
flex: 1;
|
|
10
|
+
min-height: 0;
|
|
11
|
+
position: relative;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
|
|
14
|
+
.adw-osv-sidebar {
|
|
15
|
+
background-color: var(--sidebar-bg-color);
|
|
16
|
+
overflow-y: auto;
|
|
17
|
+
flex-shrink: 0;
|
|
18
|
+
transition: transform 0.2s ease, opacity 0.2s ease, margin 0.2s ease;
|
|
19
|
+
z-index: 10;
|
|
20
|
+
align-self: stretch;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.adw-osv-content {
|
|
24
|
+
flex: 1;
|
|
25
|
+
min-width: 0;
|
|
26
|
+
min-height: 0;
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
align-self: stretch;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Docked mode (not collapsed) — sidebar beside content
|
|
33
|
+
&:not(.collapsed) .adw-osv-sidebar {
|
|
34
|
+
position: relative;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Docked hide: slide left and collapse via opacity. Sidebar keeps its
|
|
38
|
+
// intrinsic width so internal elements don't reflow.
|
|
39
|
+
&:not(.collapsed):not(.show-sidebar) .adw-osv-sidebar {
|
|
40
|
+
transform: translateX(-100%);
|
|
41
|
+
opacity: 0;
|
|
42
|
+
pointer-events: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Overlay mode (collapsed) — sidebar on top of content
|
|
46
|
+
&.collapsed .adw-osv-sidebar {
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: 0;
|
|
49
|
+
bottom: 0;
|
|
50
|
+
left: 0;
|
|
51
|
+
transform: translateX(-100%);
|
|
52
|
+
opacity: 0;
|
|
53
|
+
pointer-events: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&.collapsed.sidebar-end .adw-osv-sidebar {
|
|
57
|
+
left: auto;
|
|
58
|
+
right: 0;
|
|
59
|
+
transform: translateX(100%);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&.collapsed.show-sidebar .adw-osv-sidebar {
|
|
63
|
+
transform: translateX(0);
|
|
64
|
+
opacity: 1;
|
|
65
|
+
pointer-events: auto;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Backdrop — visible only in overlay mode when sidebar is open
|
|
69
|
+
.adw-osv-backdrop {
|
|
70
|
+
display: none;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&.collapsed.show-sidebar .adw-osv-backdrop {
|
|
74
|
+
display: block;
|
|
75
|
+
position: absolute;
|
|
76
|
+
inset: 0;
|
|
77
|
+
background: rgba(0, 0, 0, 0.3);
|
|
78
|
+
z-index: 9;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Sidebar content layout helper — wraps the sidebar's children with the
|
|
83
|
+
// standard Adwaita spacing scale (12px padding, 12px gap between groups).
|
|
84
|
+
.adw-sidebar-content {
|
|
85
|
+
padding: var(--spacing-m);
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
gap: var(--spacing-m);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Sidebar toggle button — sidebar-show-symbolic icon via CSS mask
|
|
92
|
+
.adw-sidebar-toggle-icon::after {
|
|
93
|
+
content: '';
|
|
94
|
+
position: absolute;
|
|
95
|
+
inset: 0;
|
|
96
|
+
background-color: currentColor;
|
|
97
|
+
-webkit-mask-image: var(--icon-sidebar-show);
|
|
98
|
+
mask-image: var(--icon-sidebar-show);
|
|
99
|
+
-webkit-mask-repeat: no-repeat;
|
|
100
|
+
mask-repeat: no-repeat;
|
|
101
|
+
-webkit-mask-size: 16px 16px;
|
|
102
|
+
mask-size: 16px 16px;
|
|
103
|
+
-webkit-mask-position: center;
|
|
104
|
+
mask-position: center;
|
|
105
|
+
pointer-events: none;
|
|
106
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// _preferences.scss — adw-preferences-group styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_preferences.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_preferences.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-preferences-group {
|
|
9
|
+
display: block;
|
|
10
|
+
|
|
11
|
+
.adw-preferences-group-header {
|
|
12
|
+
padding: var(--spacing-xs) 2px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.adw-preferences-group-title {
|
|
16
|
+
font-size: var(--font-size-small);
|
|
17
|
+
font-weight: 700;
|
|
18
|
+
text-transform: uppercase;
|
|
19
|
+
letter-spacing: 0.5px;
|
|
20
|
+
opacity: var(--dim-opacity);
|
|
21
|
+
margin: 0;
|
|
22
|
+
color: var(--window-fg-color);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.adw-preferences-group-listbox {
|
|
26
|
+
background-color: var(--card-bg-color);
|
|
27
|
+
color: var(--card-fg-color);
|
|
28
|
+
border-radius: var(--card-radius);
|
|
29
|
+
box-shadow:
|
|
30
|
+
0 0 0 1px rgb(0 0 6 / 3%),
|
|
31
|
+
0 1px 3px 1px rgb(0 0 6 / 7%),
|
|
32
|
+
0 2px 6px 2px rgb(0 0 6 / 3%);
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
}
|
|
35
|
+
}
|
package/scss/_row.scss
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// _row.scss — Shared base styling for rows in preferences groups.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_row_types.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_action-row.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-switch-row,
|
|
9
|
+
adw-combo-row {
|
|
10
|
+
display: flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
justify-content: space-between;
|
|
13
|
+
min-height: 50px;
|
|
14
|
+
padding: var(--spacing-s) var(--spacing-m);
|
|
15
|
+
gap: var(--spacing-m);
|
|
16
|
+
border-bottom: 1px solid var(--card-shade-color);
|
|
17
|
+
|
|
18
|
+
&:last-child {
|
|
19
|
+
border-bottom: none;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Utility separator (used by content layouts)
|
|
24
|
+
.adw-separator-vertical {
|
|
25
|
+
width: 1px;
|
|
26
|
+
align-self: stretch;
|
|
27
|
+
background-color: var(--card-shade-color);
|
|
28
|
+
flex-shrink: 0;
|
|
29
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// _spin_row.scss — adw-spin-row styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_spin_button.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_spin-button.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-spin-row {
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
justify-content: space-between;
|
|
12
|
+
min-height: 50px;
|
|
13
|
+
padding: var(--spacing-s) var(--spacing-m);
|
|
14
|
+
gap: var(--spacing-m);
|
|
15
|
+
border-bottom: 1px solid var(--card-shade-color);
|
|
16
|
+
|
|
17
|
+
&:last-child {
|
|
18
|
+
border-bottom: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.adw-row-title {
|
|
22
|
+
flex: 1;
|
|
23
|
+
font-size: var(--font-size-base);
|
|
24
|
+
color: var(--card-fg-color);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.adw-spin-control {
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
gap: 2px;
|
|
32
|
+
|
|
33
|
+
button {
|
|
34
|
+
width: 32px;
|
|
35
|
+
height: 32px;
|
|
36
|
+
border: none;
|
|
37
|
+
border-radius: var(--button-radius);
|
|
38
|
+
background: transparent;
|
|
39
|
+
color: var(--card-fg-color);
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
font-size: 16px;
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
flex-shrink: 0;
|
|
46
|
+
|
|
47
|
+
&:hover {
|
|
48
|
+
background: rgba(128, 128, 128, 0.15);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
input {
|
|
53
|
+
width: 56px;
|
|
54
|
+
text-align: center;
|
|
55
|
+
border: none;
|
|
56
|
+
border-radius: var(--button-radius);
|
|
57
|
+
background: rgba(128, 128, 128, 0.1);
|
|
58
|
+
color: var(--card-fg-color);
|
|
59
|
+
font-family: var(--font-family);
|
|
60
|
+
font-size: var(--font-size-base);
|
|
61
|
+
padding: 4px 2px;
|
|
62
|
+
|
|
63
|
+
&:focus {
|
|
64
|
+
outline: 2px solid var(--accent-color);
|
|
65
|
+
outline-offset: -1px;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// _switch_row.scss — adw-switch-row styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_switch_row.scss
|
|
3
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_switch.scss
|
|
4
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_switch.scss
|
|
5
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
6
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
7
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
8
|
+
|
|
9
|
+
adw-switch-row {
|
|
10
|
+
.adw-row-title {
|
|
11
|
+
flex: 1;
|
|
12
|
+
font-size: var(--font-size-base);
|
|
13
|
+
color: var(--card-fg-color);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.adw-switch {
|
|
17
|
+
position: relative;
|
|
18
|
+
display: inline-block;
|
|
19
|
+
width: 44px;
|
|
20
|
+
height: 24px;
|
|
21
|
+
flex-shrink: 0;
|
|
22
|
+
|
|
23
|
+
input {
|
|
24
|
+
opacity: 0;
|
|
25
|
+
width: 0;
|
|
26
|
+
height: 0;
|
|
27
|
+
position: absolute;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.adw-switch-slider {
|
|
32
|
+
position: absolute;
|
|
33
|
+
cursor: pointer;
|
|
34
|
+
inset: 0;
|
|
35
|
+
background-color: var(--switch-off-bg);
|
|
36
|
+
border-radius: 12px;
|
|
37
|
+
transition: background-color 0.15s ease-out;
|
|
38
|
+
|
|
39
|
+
&::before {
|
|
40
|
+
content: "";
|
|
41
|
+
position: absolute;
|
|
42
|
+
height: 20px;
|
|
43
|
+
width: 20px;
|
|
44
|
+
left: 2px;
|
|
45
|
+
bottom: 2px;
|
|
46
|
+
background-color: var(--switch-knob-bg);
|
|
47
|
+
border-radius: 50%;
|
|
48
|
+
transition: transform 0.15s ease-out;
|
|
49
|
+
box-shadow: 0 1px 2px rgb(0 0 0 / 20%);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.adw-switch input:checked + .adw-switch-slider {
|
|
54
|
+
background-color: var(--accent-bg-color);
|
|
55
|
+
|
|
56
|
+
&::before {
|
|
57
|
+
transform: translateX(20px);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.adw-switch input:focus-visible + .adw-switch-slider {
|
|
62
|
+
outline: 2px solid var(--accent-color);
|
|
63
|
+
outline-offset: 2px;
|
|
64
|
+
}
|
|
65
|
+
}
|
package/scss/_theme.scss
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// _theme.scss — Light/dark theme switching.
|
|
2
|
+
// Auto via prefers-color-scheme + manual .theme-dark / .theme-light overrides.
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/_colors.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
6
|
+
|
|
7
|
+
@mixin dark-theme {
|
|
8
|
+
--window-bg-color: #222226;
|
|
9
|
+
--window-fg-color: #ffffff;
|
|
10
|
+
--view-bg-color: #1d1d20;
|
|
11
|
+
--view-fg-color: #ffffff;
|
|
12
|
+
--headerbar-bg-color: #2e2e32;
|
|
13
|
+
--headerbar-fg-color: #ffffff;
|
|
14
|
+
--headerbar-shade-color: rgba(0, 0, 6, 0.36);
|
|
15
|
+
--sidebar-bg-color: #2e2e32;
|
|
16
|
+
--card-bg-color: rgba(255, 255, 255, 0.08);
|
|
17
|
+
--card-fg-color: #ffffff;
|
|
18
|
+
--card-shade-color: rgba(0, 0, 6, 0.36);
|
|
19
|
+
--accent-color: #78aeed;
|
|
20
|
+
--switch-off-bg: rgba(255, 255, 255, 0.2);
|
|
21
|
+
--switch-knob-bg: #deddda;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Auto dark theme via prefers-color-scheme — opt out with .theme-light
|
|
25
|
+
@media (prefers-color-scheme: dark) {
|
|
26
|
+
:root:not(.theme-light) {
|
|
27
|
+
@include dark-theme;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Manual override
|
|
32
|
+
:root.theme-dark {
|
|
33
|
+
@include dark-theme;
|
|
34
|
+
}
|
package/scss/_toast.scss
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// _toast.scss — adw-toast and adw-toast-overlay styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_toast.scss
|
|
3
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_toast_overlay.scss
|
|
4
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_toast.scss
|
|
5
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
6
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
7
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
8
|
+
|
|
9
|
+
adw-toast-overlay {
|
|
10
|
+
position: fixed;
|
|
11
|
+
bottom: 24px;
|
|
12
|
+
left: 50%;
|
|
13
|
+
transform: translateX(-50%);
|
|
14
|
+
z-index: 9999;
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column-reverse;
|
|
17
|
+
gap: 9px;
|
|
18
|
+
align-items: center;
|
|
19
|
+
pointer-events: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.adw-toast {
|
|
23
|
+
background-color: #3d3846;
|
|
24
|
+
color: #ffffff;
|
|
25
|
+
padding: 9px 12px;
|
|
26
|
+
border-radius: var(--card-radius);
|
|
27
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25);
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: 9px;
|
|
31
|
+
width: max-content;
|
|
32
|
+
max-width: 400px;
|
|
33
|
+
min-height: 36px;
|
|
34
|
+
pointer-events: auto;
|
|
35
|
+
font-family: var(--font-family);
|
|
36
|
+
font-size: var(--font-size-base);
|
|
37
|
+
|
|
38
|
+
opacity: 0;
|
|
39
|
+
transform: translateY(100%) scale(0.9);
|
|
40
|
+
transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1),
|
|
41
|
+
transform 0.2s cubic-bezier(0, 0, 0.2, 1);
|
|
42
|
+
will-change: transform, opacity;
|
|
43
|
+
|
|
44
|
+
&.visible {
|
|
45
|
+
opacity: 1;
|
|
46
|
+
transform: translateY(0) scale(1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&.hiding {
|
|
50
|
+
opacity: 0;
|
|
51
|
+
transform: translateY(100%) scale(0.9);
|
|
52
|
+
transition-duration: 0.15s;
|
|
53
|
+
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.adw-toast-title {
|
|
57
|
+
font-weight: normal;
|
|
58
|
+
line-height: 1.3;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// _variables.scss — Adwaita CSS custom properties (light theme defaults).
|
|
2
|
+
// Reference: refs/libadwaita/src/stylesheet/_colors.scss (canonical color palette)
|
|
3
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_variables.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Subset adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
// Window
|
|
10
|
+
--window-bg-color: #fafafb;
|
|
11
|
+
--window-fg-color: rgba(0, 0, 6, 0.8);
|
|
12
|
+
|
|
13
|
+
// Views
|
|
14
|
+
--view-bg-color: #ffffff;
|
|
15
|
+
--view-fg-color: rgba(0, 0, 6, 0.8);
|
|
16
|
+
|
|
17
|
+
// Header bar
|
|
18
|
+
--headerbar-bg-color: #ffffff;
|
|
19
|
+
--headerbar-fg-color: rgba(0, 0, 6, 0.8);
|
|
20
|
+
--headerbar-shade-color: rgba(0, 0, 6, 0.12);
|
|
21
|
+
|
|
22
|
+
// Sidebar
|
|
23
|
+
--sidebar-bg-color: #ebebed;
|
|
24
|
+
|
|
25
|
+
// Cards / boxed lists
|
|
26
|
+
--card-bg-color: #ffffff;
|
|
27
|
+
--card-fg-color: rgba(0, 0, 6, 0.8);
|
|
28
|
+
--card-shade-color: rgba(0, 0, 6, 0.07);
|
|
29
|
+
|
|
30
|
+
// Accent
|
|
31
|
+
--accent-bg-color: #3584e4;
|
|
32
|
+
--accent-fg-color: #ffffff;
|
|
33
|
+
--accent-color: #1c71d8;
|
|
34
|
+
|
|
35
|
+
// Switch
|
|
36
|
+
--switch-off-bg: rgba(0, 0, 0, 0.2);
|
|
37
|
+
--switch-knob-bg: #ffffff;
|
|
38
|
+
|
|
39
|
+
// Layout radii
|
|
40
|
+
--window-radius: 15px;
|
|
41
|
+
--card-radius: 12px;
|
|
42
|
+
--button-radius: 9px;
|
|
43
|
+
|
|
44
|
+
// Spacing scale
|
|
45
|
+
--spacing-xs: 6px;
|
|
46
|
+
--spacing-s: 9px;
|
|
47
|
+
--spacing-m: 12px;
|
|
48
|
+
--spacing-l: 18px;
|
|
49
|
+
--spacing-xl: 24px;
|
|
50
|
+
|
|
51
|
+
// Typography — GNOME default: Adwaita Sans 11
|
|
52
|
+
--font-family: 'Adwaita Sans', 'Cantarell', 'Inter', 'Segoe UI', sans-serif;
|
|
53
|
+
--font-size-base: 11pt;
|
|
54
|
+
--font-size-small: 9pt;
|
|
55
|
+
--font-size-heading: 12pt;
|
|
56
|
+
--dim-opacity: 0.55;
|
|
57
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// _window.scss — adw-window styling.
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_window.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_window.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
|
+
|
|
8
|
+
adw-window {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
background-color: var(--window-bg-color);
|
|
12
|
+
color: var(--window-fg-color);
|
|
13
|
+
font-family: var(--font-family);
|
|
14
|
+
font-size: var(--font-size-base);
|
|
15
|
+
border-radius: var(--window-radius);
|
|
16
|
+
box-shadow:
|
|
17
|
+
0 0 14px 5px rgb(0 0 0 / 15%),
|
|
18
|
+
0 0 5px 2px rgb(0 0 0 / 10%),
|
|
19
|
+
0 0 0 1px rgb(0 0 0 / 5%);
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
outline: 1px solid rgb(255 255 255 / 7%);
|
|
22
|
+
outline-offset: -1px;
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// adwaita-skin.scss — Main entry point for @gjsify/adwaita-web.
|
|
2
|
+
// Mirrors refs/adwaita-web/adwaita-web/scss/adwaita-skin.scss organization.
|
|
3
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/adwaita-skin.scss
|
|
4
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/
|
|
5
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
7
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
8
|
+
|
|
9
|
+
@use 'icons.generated';
|
|
10
|
+
@use 'variables';
|
|
11
|
+
@use 'theme';
|
|
12
|
+
@use 'window';
|
|
13
|
+
@use 'headerbar';
|
|
14
|
+
@use 'preferences';
|
|
15
|
+
@use 'card';
|
|
16
|
+
@use 'row';
|
|
17
|
+
@use 'switch_row';
|
|
18
|
+
@use 'combo_row';
|
|
19
|
+
@use 'spin_row';
|
|
20
|
+
@use 'toast';
|
|
21
|
+
@use 'overlay_split_view';
|