@gjsify/adwaita-web 0.1.6 → 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
|
@@ -1,70 +1,34 @@
|
|
|
1
|
-
// Adwaita CSS subset for browser targets.
|
|
2
|
-
// Colors from refs/libadwaita/src/stylesheet/_colors.scss (canonical).
|
|
3
|
-
// Component styles adapted from Adwaita Web UI Framework (https://github.com/mclellac/adwaita-web).
|
|
4
|
-
// Copyright (c) GNOME contributors (libadwaita), LGPLv2.1+.
|
|
5
|
-
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
|
-
// Modifications: Extracted as CSS-in-JS for @gjsify/adwaita-web.
|
|
7
|
-
|
|
8
|
-
import { editPasteSymbolic, goDownSymbolic, sidebarShowSymbolic } from '@gjsify/adwaita-icons/actions';
|
|
9
|
-
import { toDataUri } from '@gjsify/adwaita-icons/utils';
|
|
10
|
-
|
|
11
|
-
const goDownDataUri = toDataUri(goDownSymbolic);
|
|
12
|
-
const editPasteDataUri = toDataUri(editPasteSymbolic);
|
|
13
|
-
const sidebarShowDataUri = toDataUri(sidebarShowSymbolic);
|
|
14
|
-
|
|
15
|
-
export const adwaitaCSS = `
|
|
16
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
17
|
-
Adwaita CSS Custom Properties — Light Theme (default)
|
|
18
|
-
═══════════════════════════════════════════════════════════════ */
|
|
19
1
|
:root {
|
|
20
|
-
|
|
21
|
-
--icon-
|
|
22
|
-
--icon-
|
|
23
|
-
|
|
2
|
+
--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");
|
|
3
|
+
--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");
|
|
4
|
+
--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");
|
|
5
|
+
}
|
|
24
6
|
|
|
25
|
-
|
|
7
|
+
:root {
|
|
26
8
|
--window-bg-color: #fafafb;
|
|
27
9
|
--window-fg-color: rgba(0, 0, 6, 0.8);
|
|
28
|
-
|
|
29
|
-
/* Views */
|
|
30
10
|
--view-bg-color: #ffffff;
|
|
31
11
|
--view-fg-color: rgba(0, 0, 6, 0.8);
|
|
32
|
-
|
|
33
|
-
/* Header bar */
|
|
34
12
|
--headerbar-bg-color: #ffffff;
|
|
35
13
|
--headerbar-fg-color: rgba(0, 0, 6, 0.8);
|
|
36
14
|
--headerbar-shade-color: rgba(0, 0, 6, 0.12);
|
|
37
|
-
|
|
38
|
-
/* Sidebar */
|
|
39
15
|
--sidebar-bg-color: #ebebed;
|
|
40
|
-
|
|
41
|
-
/* Cards / boxed lists */
|
|
42
16
|
--card-bg-color: #ffffff;
|
|
43
17
|
--card-fg-color: rgba(0, 0, 6, 0.8);
|
|
44
18
|
--card-shade-color: rgba(0, 0, 6, 0.07);
|
|
45
|
-
|
|
46
|
-
/* Accent */
|
|
47
19
|
--accent-bg-color: #3584e4;
|
|
48
20
|
--accent-fg-color: #ffffff;
|
|
49
21
|
--accent-color: #1c71d8;
|
|
50
|
-
|
|
51
|
-
/* Switch */
|
|
52
22
|
--switch-off-bg: rgba(0, 0, 0, 0.2);
|
|
53
23
|
--switch-knob-bg: #ffffff;
|
|
54
|
-
|
|
55
|
-
/* Layout */
|
|
56
24
|
--window-radius: 15px;
|
|
57
25
|
--card-radius: 12px;
|
|
58
26
|
--button-radius: 9px;
|
|
59
|
-
|
|
60
|
-
/* Spacing */
|
|
61
27
|
--spacing-xs: 6px;
|
|
62
28
|
--spacing-s: 9px;
|
|
63
29
|
--spacing-m: 12px;
|
|
64
30
|
--spacing-l: 18px;
|
|
65
31
|
--spacing-xl: 24px;
|
|
66
|
-
|
|
67
|
-
/* Typography — GNOME default: Adwaita Sans 11 */
|
|
68
32
|
--font-family: 'Adwaita Sans', 'Cantarell', 'Inter', 'Segoe UI', sans-serif;
|
|
69
33
|
--font-size-base: 11pt;
|
|
70
34
|
--font-size-small: 9pt;
|
|
@@ -72,9 +36,6 @@ export const adwaitaCSS = `
|
|
|
72
36
|
--dim-opacity: 0.55;
|
|
73
37
|
}
|
|
74
38
|
|
|
75
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
76
|
-
Dark Theme — auto via prefers-color-scheme
|
|
77
|
-
═══════════════════════════════════════════════════════════════ */
|
|
78
39
|
@media (prefers-color-scheme: dark) {
|
|
79
40
|
:root:not(.theme-light) {
|
|
80
41
|
--window-bg-color: #222226;
|
|
@@ -93,8 +54,6 @@ export const adwaitaCSS = `
|
|
|
93
54
|
--switch-knob-bg: #deddda;
|
|
94
55
|
}
|
|
95
56
|
}
|
|
96
|
-
|
|
97
|
-
/* Dark theme manual override */
|
|
98
57
|
:root.theme-dark {
|
|
99
58
|
--window-bg-color: #222226;
|
|
100
59
|
--window-fg-color: #ffffff;
|
|
@@ -112,11 +71,6 @@ export const adwaitaCSS = `
|
|
|
112
71
|
--switch-knob-bg: #deddda;
|
|
113
72
|
}
|
|
114
73
|
|
|
115
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
116
|
-
Component Styles
|
|
117
|
-
═══════════════════════════════════════════════════════════════ */
|
|
118
|
-
|
|
119
|
-
/* --- adw-window --- */
|
|
120
74
|
adw-window {
|
|
121
75
|
display: flex;
|
|
122
76
|
flex-direction: column;
|
|
@@ -125,16 +79,12 @@ adw-window {
|
|
|
125
79
|
font-family: var(--font-family);
|
|
126
80
|
font-size: var(--font-size-base);
|
|
127
81
|
border-radius: var(--window-radius);
|
|
128
|
-
box-shadow:
|
|
129
|
-
0 0 14px 5px rgb(0 0 0 / 15%),
|
|
130
|
-
0 0 5px 2px rgb(0 0 0 / 10%),
|
|
131
|
-
0 0 0 1px rgb(0 0 0 / 5%);
|
|
82
|
+
box-shadow: 0 0 14px 5px rgba(0, 0, 0, 0.15), 0 0 5px 2px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.05);
|
|
132
83
|
overflow: hidden;
|
|
133
|
-
outline: 1px solid
|
|
84
|
+
outline: 1px solid rgba(255, 255, 255, 0.07);
|
|
134
85
|
outline-offset: -1px;
|
|
135
86
|
}
|
|
136
87
|
|
|
137
|
-
/* --- adw-header-bar --- */
|
|
138
88
|
adw-header-bar {
|
|
139
89
|
display: flex;
|
|
140
90
|
align-items: center;
|
|
@@ -145,13 +95,11 @@ adw-header-bar {
|
|
|
145
95
|
box-shadow: inset 0 -1px var(--headerbar-shade-color);
|
|
146
96
|
flex-shrink: 0;
|
|
147
97
|
}
|
|
148
|
-
|
|
149
98
|
adw-header-bar .adw-header-bar-center {
|
|
150
99
|
flex: 1;
|
|
151
100
|
display: flex;
|
|
152
101
|
justify-content: center;
|
|
153
102
|
}
|
|
154
|
-
|
|
155
103
|
adw-header-bar .adw-header-bar-title {
|
|
156
104
|
font-weight: bold;
|
|
157
105
|
font-size: var(--font-size-base);
|
|
@@ -159,21 +107,18 @@ adw-header-bar .adw-header-bar-title {
|
|
|
159
107
|
overflow: hidden;
|
|
160
108
|
text-overflow: ellipsis;
|
|
161
109
|
}
|
|
162
|
-
|
|
163
110
|
adw-header-bar .adw-header-bar-start {
|
|
164
111
|
display: flex;
|
|
165
112
|
align-items: center;
|
|
166
113
|
padding: 0 6px;
|
|
167
114
|
gap: 4px;
|
|
168
115
|
}
|
|
169
|
-
|
|
170
116
|
adw-header-bar .adw-header-bar-end {
|
|
171
117
|
display: flex;
|
|
172
118
|
align-items: center;
|
|
173
119
|
padding: 0 6px;
|
|
174
120
|
gap: 4px;
|
|
175
121
|
}
|
|
176
|
-
|
|
177
122
|
adw-header-bar .adw-header-btn {
|
|
178
123
|
position: relative;
|
|
179
124
|
width: 34px;
|
|
@@ -187,24 +132,19 @@ adw-header-bar .adw-header-btn {
|
|
|
187
132
|
margin: 0;
|
|
188
133
|
flex-shrink: 0;
|
|
189
134
|
}
|
|
190
|
-
|
|
191
135
|
adw-header-bar .adw-header-btn:hover {
|
|
192
136
|
background: rgba(128, 128, 128, 0.12);
|
|
193
137
|
}
|
|
194
|
-
|
|
195
138
|
adw-header-bar .adw-header-btn:active {
|
|
196
139
|
background: rgba(128, 128, 128, 0.22);
|
|
197
140
|
}
|
|
198
141
|
|
|
199
|
-
/* --- adw-preferences-group --- */
|
|
200
142
|
adw-preferences-group {
|
|
201
143
|
display: block;
|
|
202
144
|
}
|
|
203
|
-
|
|
204
145
|
adw-preferences-group .adw-preferences-group-header {
|
|
205
146
|
padding: var(--spacing-xs) 2px;
|
|
206
147
|
}
|
|
207
|
-
|
|
208
148
|
adw-preferences-group .adw-preferences-group-title {
|
|
209
149
|
font-size: var(--font-size-small);
|
|
210
150
|
font-weight: 700;
|
|
@@ -214,19 +154,25 @@ adw-preferences-group .adw-preferences-group-title {
|
|
|
214
154
|
margin: 0;
|
|
215
155
|
color: var(--window-fg-color);
|
|
216
156
|
}
|
|
217
|
-
|
|
218
157
|
adw-preferences-group .adw-preferences-group-listbox {
|
|
219
158
|
background-color: var(--card-bg-color);
|
|
220
159
|
color: var(--card-fg-color);
|
|
221
160
|
border-radius: var(--card-radius);
|
|
222
|
-
box-shadow:
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
161
|
+
box-shadow: 0 0 0 1px rgba(0, 0, 6, 0.03), 0 1px 3px 1px rgba(0, 0, 6, 0.07), 0 2px 6px 2px rgba(0, 0, 6, 0.03);
|
|
162
|
+
overflow: hidden;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
adw-card,
|
|
166
|
+
.adw-card {
|
|
167
|
+
display: block;
|
|
168
|
+
background-color: var(--card-bg-color);
|
|
169
|
+
color: var(--card-fg-color);
|
|
170
|
+
border-radius: var(--card-radius);
|
|
171
|
+
padding: var(--spacing-l);
|
|
172
|
+
box-shadow: 0 0 0 1px rgba(0, 0, 6, 0.03), 0 1px 3px 1px rgba(0, 0, 6, 0.07), 0 2px 6px 2px rgba(0, 0, 6, 0.03);
|
|
226
173
|
overflow: hidden;
|
|
227
174
|
}
|
|
228
175
|
|
|
229
|
-
/* --- Row base (shared by switch-row, combo-row) --- */
|
|
230
176
|
adw-switch-row,
|
|
231
177
|
adw-combo-row {
|
|
232
178
|
display: flex;
|
|
@@ -237,19 +183,23 @@ adw-combo-row {
|
|
|
237
183
|
gap: var(--spacing-m);
|
|
238
184
|
border-bottom: 1px solid var(--card-shade-color);
|
|
239
185
|
}
|
|
240
|
-
|
|
241
186
|
adw-switch-row:last-child,
|
|
242
187
|
adw-combo-row:last-child {
|
|
243
188
|
border-bottom: none;
|
|
244
189
|
}
|
|
245
190
|
|
|
246
|
-
|
|
191
|
+
.adw-separator-vertical {
|
|
192
|
+
width: 1px;
|
|
193
|
+
align-self: stretch;
|
|
194
|
+
background-color: var(--card-shade-color);
|
|
195
|
+
flex-shrink: 0;
|
|
196
|
+
}
|
|
197
|
+
|
|
247
198
|
adw-switch-row .adw-row-title {
|
|
248
199
|
flex: 1;
|
|
249
200
|
font-size: var(--font-size-base);
|
|
250
201
|
color: var(--card-fg-color);
|
|
251
202
|
}
|
|
252
|
-
|
|
253
203
|
adw-switch-row .adw-switch {
|
|
254
204
|
position: relative;
|
|
255
205
|
display: inline-block;
|
|
@@ -257,14 +207,12 @@ adw-switch-row .adw-switch {
|
|
|
257
207
|
height: 24px;
|
|
258
208
|
flex-shrink: 0;
|
|
259
209
|
}
|
|
260
|
-
|
|
261
210
|
adw-switch-row .adw-switch input {
|
|
262
211
|
opacity: 0;
|
|
263
212
|
width: 0;
|
|
264
213
|
height: 0;
|
|
265
214
|
position: absolute;
|
|
266
215
|
}
|
|
267
|
-
|
|
268
216
|
adw-switch-row .adw-switch-slider {
|
|
269
217
|
position: absolute;
|
|
270
218
|
cursor: pointer;
|
|
@@ -273,7 +221,6 @@ adw-switch-row .adw-switch-slider {
|
|
|
273
221
|
border-radius: 12px;
|
|
274
222
|
transition: background-color 0.15s ease-out;
|
|
275
223
|
}
|
|
276
|
-
|
|
277
224
|
adw-switch-row .adw-switch-slider::before {
|
|
278
225
|
content: "";
|
|
279
226
|
position: absolute;
|
|
@@ -284,34 +231,28 @@ adw-switch-row .adw-switch-slider::before {
|
|
|
284
231
|
background-color: var(--switch-knob-bg);
|
|
285
232
|
border-radius: 50%;
|
|
286
233
|
transition: transform 0.15s ease-out;
|
|
287
|
-
box-shadow: 0 1px 2px
|
|
234
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
288
235
|
}
|
|
289
|
-
|
|
290
236
|
adw-switch-row .adw-switch input:checked + .adw-switch-slider {
|
|
291
237
|
background-color: var(--accent-bg-color);
|
|
292
238
|
}
|
|
293
|
-
|
|
294
239
|
adw-switch-row .adw-switch input:checked + .adw-switch-slider::before {
|
|
295
240
|
transform: translateX(20px);
|
|
296
241
|
}
|
|
297
|
-
|
|
298
242
|
adw-switch-row .adw-switch input:focus-visible + .adw-switch-slider {
|
|
299
243
|
outline: 2px solid var(--accent-color);
|
|
300
244
|
outline-offset: 2px;
|
|
301
245
|
}
|
|
302
246
|
|
|
303
|
-
/* --- adw-combo-row --- */
|
|
304
247
|
adw-combo-row {
|
|
305
248
|
position: relative;
|
|
306
249
|
cursor: pointer;
|
|
307
250
|
}
|
|
308
|
-
|
|
309
251
|
adw-combo-row .adw-row-title {
|
|
310
252
|
font-size: var(--font-size-base);
|
|
311
253
|
color: var(--card-fg-color);
|
|
312
254
|
pointer-events: none;
|
|
313
255
|
}
|
|
314
|
-
|
|
315
256
|
adw-combo-row select {
|
|
316
257
|
appearance: none;
|
|
317
258
|
-webkit-appearance: none;
|
|
@@ -323,11 +264,6 @@ adw-combo-row select {
|
|
|
323
264
|
color: var(--card-fg-color);
|
|
324
265
|
cursor: pointer;
|
|
325
266
|
text-align: right;
|
|
326
|
-
background-image: ${goDownDataUri};
|
|
327
|
-
background-repeat: no-repeat;
|
|
328
|
-
background-position: right 4px center;
|
|
329
|
-
background-size: 12px 12px;
|
|
330
|
-
/* Stretch select over the entire row to make it clickable anywhere */
|
|
331
267
|
position: absolute;
|
|
332
268
|
inset: 0;
|
|
333
269
|
opacity: 0;
|
|
@@ -335,7 +271,14 @@ adw-combo-row select {
|
|
|
335
271
|
height: 100%;
|
|
336
272
|
z-index: 1;
|
|
337
273
|
}
|
|
338
|
-
|
|
274
|
+
adw-combo-row select:focus-visible {
|
|
275
|
+
outline: 2px solid var(--accent-color);
|
|
276
|
+
outline-offset: -1px;
|
|
277
|
+
}
|
|
278
|
+
adw-combo-row select option {
|
|
279
|
+
background-color: var(--window-bg-color);
|
|
280
|
+
color: var(--window-fg-color);
|
|
281
|
+
}
|
|
339
282
|
adw-combo-row .adw-row-value {
|
|
340
283
|
font-size: var(--font-size-base);
|
|
341
284
|
color: var(--card-fg-color);
|
|
@@ -344,36 +287,22 @@ adw-combo-row .adw-row-value {
|
|
|
344
287
|
align-items: center;
|
|
345
288
|
gap: 4px;
|
|
346
289
|
}
|
|
347
|
-
|
|
348
290
|
adw-combo-row .adw-row-value::after {
|
|
349
291
|
content: "";
|
|
350
292
|
display: inline-block;
|
|
351
293
|
width: 12px;
|
|
352
294
|
height: 12px;
|
|
353
|
-
background-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
adw-combo-row select option {
|
|
364
|
-
background-color: var(--window-bg-color);
|
|
365
|
-
color: var(--window-fg-color);
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/* --- Utility: separator --- */
|
|
369
|
-
.adw-separator-vertical {
|
|
370
|
-
width: 1px;
|
|
371
|
-
align-self: stretch;
|
|
372
|
-
background-color: var(--card-shade-color);
|
|
373
|
-
flex-shrink: 0;
|
|
295
|
+
background-color: currentColor;
|
|
296
|
+
-webkit-mask-image: var(--icon-go-down);
|
|
297
|
+
mask-image: var(--icon-go-down);
|
|
298
|
+
-webkit-mask-repeat: no-repeat;
|
|
299
|
+
mask-repeat: no-repeat;
|
|
300
|
+
-webkit-mask-size: contain;
|
|
301
|
+
mask-size: contain;
|
|
302
|
+
-webkit-mask-position: center;
|
|
303
|
+
mask-position: center;
|
|
374
304
|
}
|
|
375
305
|
|
|
376
|
-
/* --- adw-spin-row --- */
|
|
377
306
|
adw-spin-row {
|
|
378
307
|
display: flex;
|
|
379
308
|
align-items: center;
|
|
@@ -383,11 +312,9 @@ adw-spin-row {
|
|
|
383
312
|
gap: var(--spacing-m);
|
|
384
313
|
border-bottom: 1px solid var(--card-shade-color);
|
|
385
314
|
}
|
|
386
|
-
|
|
387
315
|
adw-spin-row:last-child {
|
|
388
316
|
border-bottom: none;
|
|
389
317
|
}
|
|
390
|
-
|
|
391
318
|
adw-spin-row .adw-row-title {
|
|
392
319
|
flex: 1;
|
|
393
320
|
font-size: var(--font-size-base);
|
|
@@ -399,7 +326,6 @@ adw-spin-row .adw-row-title {
|
|
|
399
326
|
align-items: center;
|
|
400
327
|
gap: 2px;
|
|
401
328
|
}
|
|
402
|
-
|
|
403
329
|
.adw-spin-control button {
|
|
404
330
|
width: 32px;
|
|
405
331
|
height: 32px;
|
|
@@ -414,11 +340,9 @@ adw-spin-row .adw-row-title {
|
|
|
414
340
|
justify-content: center;
|
|
415
341
|
flex-shrink: 0;
|
|
416
342
|
}
|
|
417
|
-
|
|
418
343
|
.adw-spin-control button:hover {
|
|
419
344
|
background: rgba(128, 128, 128, 0.15);
|
|
420
345
|
}
|
|
421
|
-
|
|
422
346
|
.adw-spin-control input {
|
|
423
347
|
width: 56px;
|
|
424
348
|
text-align: center;
|
|
@@ -430,14 +354,11 @@ adw-spin-row .adw-row-title {
|
|
|
430
354
|
font-size: var(--font-size-base);
|
|
431
355
|
padding: 4px 2px;
|
|
432
356
|
}
|
|
433
|
-
|
|
434
357
|
.adw-spin-control input:focus {
|
|
435
358
|
outline: 2px solid var(--accent-color);
|
|
436
359
|
outline-offset: -1px;
|
|
437
360
|
}
|
|
438
361
|
|
|
439
|
-
/* --- adw-toast-overlay ---
|
|
440
|
-
Reference: refs/adwaita-web/adwaita-web/scss/_toast_overlay.scss */
|
|
441
362
|
adw-toast-overlay {
|
|
442
363
|
position: fixed;
|
|
443
364
|
bottom: 24px;
|
|
@@ -451,8 +372,6 @@ adw-toast-overlay {
|
|
|
451
372
|
pointer-events: none;
|
|
452
373
|
}
|
|
453
374
|
|
|
454
|
-
/* --- adw-toast ---
|
|
455
|
-
Reference: refs/adwaita-web/adwaita-web/scss/_toast.scss */
|
|
456
375
|
.adw-toast {
|
|
457
376
|
background-color: #3d3846;
|
|
458
377
|
color: #ffffff;
|
|
@@ -468,35 +387,26 @@ adw-toast-overlay {
|
|
|
468
387
|
pointer-events: auto;
|
|
469
388
|
font-family: var(--font-family);
|
|
470
389
|
font-size: var(--font-size-base);
|
|
471
|
-
|
|
472
390
|
opacity: 0;
|
|
473
391
|
transform: translateY(100%) scale(0.9);
|
|
474
|
-
transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1),
|
|
475
|
-
transform 0.2s cubic-bezier(0, 0, 0.2, 1);
|
|
392
|
+
transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1), transform 0.2s cubic-bezier(0, 0, 0.2, 1);
|
|
476
393
|
will-change: transform, opacity;
|
|
477
394
|
}
|
|
478
|
-
|
|
479
395
|
.adw-toast.visible {
|
|
480
396
|
opacity: 1;
|
|
481
397
|
transform: translateY(0) scale(1);
|
|
482
398
|
}
|
|
483
|
-
|
|
484
399
|
.adw-toast.hiding {
|
|
485
400
|
opacity: 0;
|
|
486
401
|
transform: translateY(100%) scale(0.9);
|
|
487
402
|
transition-duration: 0.15s;
|
|
488
403
|
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
|
489
404
|
}
|
|
490
|
-
|
|
491
405
|
.adw-toast .adw-toast-title {
|
|
492
406
|
font-weight: normal;
|
|
493
407
|
line-height: 1.3;
|
|
494
408
|
}
|
|
495
409
|
|
|
496
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
497
|
-
adw-overlay-split-view
|
|
498
|
-
Reference: Adw.OverlaySplitView from libadwaita
|
|
499
|
-
═══════════════════════════════════════════════════════════════ */
|
|
500
410
|
adw-overlay-split-view {
|
|
501
411
|
display: flex;
|
|
502
412
|
flex-direction: row;
|
|
@@ -505,7 +415,6 @@ adw-overlay-split-view {
|
|
|
505
415
|
position: relative;
|
|
506
416
|
overflow: hidden;
|
|
507
417
|
}
|
|
508
|
-
|
|
509
418
|
adw-overlay-split-view .adw-osv-sidebar {
|
|
510
419
|
background-color: var(--sidebar-bg-color);
|
|
511
420
|
overflow-y: auto;
|
|
@@ -514,7 +423,6 @@ adw-overlay-split-view .adw-osv-sidebar {
|
|
|
514
423
|
z-index: 10;
|
|
515
424
|
align-self: stretch;
|
|
516
425
|
}
|
|
517
|
-
|
|
518
426
|
adw-overlay-split-view .adw-osv-content {
|
|
519
427
|
flex: 1;
|
|
520
428
|
min-width: 0;
|
|
@@ -523,21 +431,14 @@ adw-overlay-split-view .adw-osv-content {
|
|
|
523
431
|
flex-direction: column;
|
|
524
432
|
align-self: stretch;
|
|
525
433
|
}
|
|
526
|
-
|
|
527
|
-
/* Docked mode (not collapsed) — sidebar beside content */
|
|
528
434
|
adw-overlay-split-view:not(.collapsed) .adw-osv-sidebar {
|
|
529
435
|
position: relative;
|
|
530
436
|
}
|
|
531
|
-
|
|
532
|
-
/* Docked hide: slide left and collapse space via negative margin.
|
|
533
|
-
Sidebar keeps its intrinsic width so internal elements don't reflow. */
|
|
534
437
|
adw-overlay-split-view:not(.collapsed):not(.show-sidebar) .adw-osv-sidebar {
|
|
535
438
|
transform: translateX(-100%);
|
|
536
439
|
opacity: 0;
|
|
537
440
|
pointer-events: none;
|
|
538
441
|
}
|
|
539
|
-
|
|
540
|
-
/* Overlay mode (collapsed) — sidebar on top of content */
|
|
541
442
|
adw-overlay-split-view.collapsed .adw-osv-sidebar {
|
|
542
443
|
position: absolute;
|
|
543
444
|
top: 0;
|
|
@@ -547,24 +448,19 @@ adw-overlay-split-view.collapsed .adw-osv-sidebar {
|
|
|
547
448
|
opacity: 0;
|
|
548
449
|
pointer-events: none;
|
|
549
450
|
}
|
|
550
|
-
|
|
551
451
|
adw-overlay-split-view.collapsed.sidebar-end .adw-osv-sidebar {
|
|
552
452
|
left: auto;
|
|
553
453
|
right: 0;
|
|
554
454
|
transform: translateX(100%);
|
|
555
455
|
}
|
|
556
|
-
|
|
557
456
|
adw-overlay-split-view.collapsed.show-sidebar .adw-osv-sidebar {
|
|
558
457
|
transform: translateX(0);
|
|
559
458
|
opacity: 1;
|
|
560
459
|
pointer-events: auto;
|
|
561
460
|
}
|
|
562
|
-
|
|
563
|
-
/* Backdrop — visible only in overlay mode when sidebar is open */
|
|
564
461
|
adw-overlay-split-view .adw-osv-backdrop {
|
|
565
462
|
display: none;
|
|
566
463
|
}
|
|
567
|
-
|
|
568
464
|
adw-overlay-split-view.collapsed.show-sidebar .adw-osv-backdrop {
|
|
569
465
|
display: block;
|
|
570
466
|
position: absolute;
|
|
@@ -573,9 +469,15 @@ adw-overlay-split-view.collapsed.show-sidebar .adw-osv-backdrop {
|
|
|
573
469
|
z-index: 9;
|
|
574
470
|
}
|
|
575
471
|
|
|
576
|
-
|
|
472
|
+
.adw-sidebar-content {
|
|
473
|
+
padding: var(--spacing-m);
|
|
474
|
+
display: flex;
|
|
475
|
+
flex-direction: column;
|
|
476
|
+
gap: var(--spacing-m);
|
|
477
|
+
}
|
|
478
|
+
|
|
577
479
|
.adw-sidebar-toggle-icon::after {
|
|
578
|
-
content:
|
|
480
|
+
content: "";
|
|
579
481
|
position: absolute;
|
|
580
482
|
inset: 0;
|
|
581
483
|
background-color: currentColor;
|
|
@@ -589,4 +491,4 @@ adw-overlay-split-view.collapsed.show-sidebar .adw-osv-backdrop {
|
|
|
589
491
|
mask-position: center;
|
|
590
492
|
pointer-events: none;
|
|
591
493
|
}
|
|
592
|
-
|
|
494
|
+
/*# sourceMappingURL=adwaita-web.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_icons.generated.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_variables.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_theme.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_window.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_headerbar.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_preferences.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_card.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_row.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_switch_row.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_combo_row.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_spin_row.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_toast.scss","file:///__w/gjsify/gjsify/packages/web/adwaita-web/scss/_overlay_split_view.scss"],"names":[],"mappings":"AAGA;EACE;EACA;EACA;;;ACCF;EAEE;EACA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;;;AC/BF;EACE;IAlBA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;AAWF;EAxBE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACbF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;EAGF;EACA;EACA;;;ACdF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;;ACxDN;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA,YACE;EAGF;;;ACzBJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA,YACE;EAGF;;;ACXF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;;;AAKJ;EACE;EACA;EACA;EACA;;;AClBA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;;ACvDJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAMF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAMA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACnEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;ACxDN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;;ACpDJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAIF;EACE;;AAKF;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAIF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAMJ;EACE;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","sourcesContent":["// _icons.generated.scss — auto-generated by scripts/build-scss.mjs\n// DO NOT EDIT — regenerated on every build from @gjsify/adwaita-icons.\n\n:root {\n --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\");\n --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\");\n --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\");\n}\n","// _variables.scss — Adwaita CSS custom properties (light theme defaults).\n// Reference: refs/libadwaita/src/stylesheet/_colors.scss (canonical color palette)\n// Reference: refs/adwaita-web/adwaita-web/scss/_variables.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Subset adapted for @gjsify/adwaita-web Web Components.\n\n:root {\n // Window\n --window-bg-color: #fafafb;\n --window-fg-color: rgba(0, 0, 6, 0.8);\n\n // Views\n --view-bg-color: #ffffff;\n --view-fg-color: rgba(0, 0, 6, 0.8);\n\n // Header bar\n --headerbar-bg-color: #ffffff;\n --headerbar-fg-color: rgba(0, 0, 6, 0.8);\n --headerbar-shade-color: rgba(0, 0, 6, 0.12);\n\n // Sidebar\n --sidebar-bg-color: #ebebed;\n\n // Cards / boxed lists\n --card-bg-color: #ffffff;\n --card-fg-color: rgba(0, 0, 6, 0.8);\n --card-shade-color: rgba(0, 0, 6, 0.07);\n\n // Accent\n --accent-bg-color: #3584e4;\n --accent-fg-color: #ffffff;\n --accent-color: #1c71d8;\n\n // Switch\n --switch-off-bg: rgba(0, 0, 0, 0.2);\n --switch-knob-bg: #ffffff;\n\n // Layout radii\n --window-radius: 15px;\n --card-radius: 12px;\n --button-radius: 9px;\n\n // Spacing scale\n --spacing-xs: 6px;\n --spacing-s: 9px;\n --spacing-m: 12px;\n --spacing-l: 18px;\n --spacing-xl: 24px;\n\n // Typography — GNOME default: Adwaita Sans 11\n --font-family: 'Adwaita Sans', 'Cantarell', 'Inter', 'Segoe UI', sans-serif;\n --font-size-base: 11pt;\n --font-size-small: 9pt;\n --font-size-heading: 12pt;\n --dim-opacity: 0.55;\n}\n","// _theme.scss — Light/dark theme switching.\n// Auto via prefers-color-scheme + manual .theme-dark / .theme-light overrides.\n// Reference: refs/libadwaita/src/stylesheet/_colors.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\n@mixin dark-theme {\n --window-bg-color: #222226;\n --window-fg-color: #ffffff;\n --view-bg-color: #1d1d20;\n --view-fg-color: #ffffff;\n --headerbar-bg-color: #2e2e32;\n --headerbar-fg-color: #ffffff;\n --headerbar-shade-color: rgba(0, 0, 6, 0.36);\n --sidebar-bg-color: #2e2e32;\n --card-bg-color: rgba(255, 255, 255, 0.08);\n --card-fg-color: #ffffff;\n --card-shade-color: rgba(0, 0, 6, 0.36);\n --accent-color: #78aeed;\n --switch-off-bg: rgba(255, 255, 255, 0.2);\n --switch-knob-bg: #deddda;\n}\n\n// Auto dark theme via prefers-color-scheme — opt out with .theme-light\n@media (prefers-color-scheme: dark) {\n :root:not(.theme-light) {\n @include dark-theme;\n }\n}\n\n// Manual override\n:root.theme-dark {\n @include dark-theme;\n}\n","// _window.scss — adw-window styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_window.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_window.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-window {\n display: flex;\n flex-direction: column;\n background-color: var(--window-bg-color);\n color: var(--window-fg-color);\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n border-radius: var(--window-radius);\n box-shadow:\n 0 0 14px 5px rgb(0 0 0 / 15%),\n 0 0 5px 2px rgb(0 0 0 / 10%),\n 0 0 0 1px rgb(0 0 0 / 5%);\n overflow: hidden;\n outline: 1px solid rgb(255 255 255 / 7%);\n outline-offset: -1px;\n}\n","// _headerbar.scss — adw-header-bar styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_headerbar.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_header-bar.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-header-bar {\n display: flex;\n align-items: center;\n min-height: 47px;\n padding: 0 6px;\n background-color: var(--headerbar-bg-color);\n color: var(--headerbar-fg-color);\n box-shadow: inset 0 -1px var(--headerbar-shade-color);\n flex-shrink: 0;\n\n .adw-header-bar-center {\n flex: 1;\n display: flex;\n justify-content: center;\n }\n\n .adw-header-bar-title {\n font-weight: bold;\n font-size: var(--font-size-base);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .adw-header-bar-start {\n display: flex;\n align-items: center;\n padding: 0 6px;\n gap: 4px;\n }\n\n .adw-header-bar-end {\n display: flex;\n align-items: center;\n padding: 0 6px;\n gap: 4px;\n }\n\n .adw-header-btn {\n position: relative;\n width: 34px;\n height: 34px;\n border: none;\n border-radius: var(--button-radius);\n background: transparent;\n color: var(--headerbar-fg-color);\n cursor: pointer;\n padding: 0;\n margin: 0;\n flex-shrink: 0;\n\n &:hover {\n background: rgba(128, 128, 128, 0.12);\n }\n\n &:active {\n background: rgba(128, 128, 128, 0.22);\n }\n }\n}\n","// _preferences.scss — adw-preferences-group styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_preferences.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_preferences.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-preferences-group {\n display: block;\n\n .adw-preferences-group-header {\n padding: var(--spacing-xs) 2px;\n }\n\n .adw-preferences-group-title {\n font-size: var(--font-size-small);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: var(--dim-opacity);\n margin: 0;\n color: var(--window-fg-color);\n }\n\n .adw-preferences-group-listbox {\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n border-radius: var(--card-radius);\n box-shadow:\n 0 0 0 1px rgb(0 0 6 / 3%),\n 0 1px 3px 1px rgb(0 0 6 / 7%),\n 0 2px 6px 2px rgb(0 0 6 / 3%);\n overflow: hidden;\n }\n}\n","// _card.scss — adw-card styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_card.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_misc.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-card,\n.adw-card {\n display: block;\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n border-radius: var(--card-radius);\n padding: var(--spacing-l);\n box-shadow:\n 0 0 0 1px rgb(0 0 6 / 3%),\n 0 1px 3px 1px rgb(0 0 6 / 7%),\n 0 2px 6px 2px rgb(0 0 6 / 3%);\n overflow: hidden;\n}\n","// _row.scss — Shared base styling for rows in preferences groups.\n// Reference: refs/adwaita-web/adwaita-web/scss/_row_types.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_action-row.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-switch-row,\nadw-combo-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 50px;\n padding: var(--spacing-s) var(--spacing-m);\n gap: var(--spacing-m);\n border-bottom: 1px solid var(--card-shade-color);\n\n &:last-child {\n border-bottom: none;\n }\n}\n\n// Utility separator (used by content layouts)\n.adw-separator-vertical {\n width: 1px;\n align-self: stretch;\n background-color: var(--card-shade-color);\n flex-shrink: 0;\n}\n","// _switch_row.scss — adw-switch-row styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_switch_row.scss\n// Reference: refs/adwaita-web/adwaita-web/scss/_switch.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_switch.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-switch-row {\n .adw-row-title {\n flex: 1;\n font-size: var(--font-size-base);\n color: var(--card-fg-color);\n }\n\n .adw-switch {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n }\n }\n\n .adw-switch-slider {\n position: absolute;\n cursor: pointer;\n inset: 0;\n background-color: var(--switch-off-bg);\n border-radius: 12px;\n transition: background-color 0.15s ease-out;\n\n &::before {\n content: \"\";\n position: absolute;\n height: 20px;\n width: 20px;\n left: 2px;\n bottom: 2px;\n background-color: var(--switch-knob-bg);\n border-radius: 50%;\n transition: transform 0.15s ease-out;\n box-shadow: 0 1px 2px rgb(0 0 0 / 20%);\n }\n }\n\n .adw-switch input:checked + .adw-switch-slider {\n background-color: var(--accent-bg-color);\n\n &::before {\n transform: translateX(20px);\n }\n }\n\n .adw-switch input:focus-visible + .adw-switch-slider {\n outline: 2px solid var(--accent-color);\n outline-offset: 2px;\n }\n}\n","// _combo_row.scss — adw-combo-row styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_combo_row.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_combo-row.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-combo-row {\n position: relative;\n cursor: pointer;\n\n .adw-row-title {\n font-size: var(--font-size-base);\n color: var(--card-fg-color);\n pointer-events: none;\n }\n\n // Hidden <select> overlay — stretches across the row to capture clicks\n // anywhere. The visual dropdown arrow is rendered by .adw-row-value::after\n // below, so the select itself doesn't need a background image.\n select {\n appearance: none;\n -webkit-appearance: none;\n background-color: transparent;\n border: none;\n padding: 6px 24px 6px 8px;\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n color: var(--card-fg-color);\n cursor: pointer;\n text-align: right;\n position: absolute;\n inset: 0;\n opacity: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n\n &:focus-visible {\n outline: 2px solid var(--accent-color);\n outline-offset: -1px;\n }\n\n option {\n background-color: var(--window-bg-color);\n color: var(--window-fg-color);\n }\n }\n\n .adw-row-value {\n font-size: var(--font-size-base);\n color: var(--card-fg-color);\n opacity: var(--dim-opacity);\n display: flex;\n align-items: center;\n gap: 4px;\n\n // Dropdown arrow — rendered via CSS mask so `currentColor` drives the\n // fill, making the icon theme-aware (matches libadwaita's dark theme).\n // Using background-image with a data-URI SVG would NOT resolve\n // `currentColor` in most browsers.\n &::after {\n content: \"\";\n display: inline-block;\n width: 12px;\n height: 12px;\n background-color: currentColor;\n -webkit-mask-image: var(--icon-go-down);\n mask-image: var(--icon-go-down);\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-position: center;\n mask-position: center;\n }\n }\n}\n","// _spin_row.scss — adw-spin-row styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_spin_button.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_spin-button.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-spin-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 50px;\n padding: var(--spacing-s) var(--spacing-m);\n gap: var(--spacing-m);\n border-bottom: 1px solid var(--card-shade-color);\n\n &:last-child {\n border-bottom: none;\n }\n\n .adw-row-title {\n flex: 1;\n font-size: var(--font-size-base);\n color: var(--card-fg-color);\n }\n}\n\n.adw-spin-control {\n display: flex;\n align-items: center;\n gap: 2px;\n\n button {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--button-radius);\n background: transparent;\n color: var(--card-fg-color);\n cursor: pointer;\n font-size: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n &:hover {\n background: rgba(128, 128, 128, 0.15);\n }\n }\n\n input {\n width: 56px;\n text-align: center;\n border: none;\n border-radius: var(--button-radius);\n background: rgba(128, 128, 128, 0.1);\n color: var(--card-fg-color);\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n padding: 4px 2px;\n\n &:focus {\n outline: 2px solid var(--accent-color);\n outline-offset: -1px;\n }\n }\n}\n","// _toast.scss — adw-toast and adw-toast-overlay styling.\n// Reference: refs/adwaita-web/adwaita-web/scss/_toast.scss\n// Reference: refs/adwaita-web/adwaita-web/scss/_toast_overlay.scss\n// Reference: refs/libadwaita/src/stylesheet/widgets/_toast.scss\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Copyright (c) 2025 csm (adwaita-web). MIT License.\n// Modifications: Adapted for @gjsify/adwaita-web Web Components.\n\nadw-toast-overlay {\n position: fixed;\n bottom: 24px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 9999;\n display: flex;\n flex-direction: column-reverse;\n gap: 9px;\n align-items: center;\n pointer-events: none;\n}\n\n.adw-toast {\n background-color: #3d3846;\n color: #ffffff;\n padding: 9px 12px;\n border-radius: var(--card-radius);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25);\n display: flex;\n align-items: center;\n gap: 9px;\n width: max-content;\n max-width: 400px;\n min-height: 36px;\n pointer-events: auto;\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n\n opacity: 0;\n transform: translateY(100%) scale(0.9);\n transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1),\n transform 0.2s cubic-bezier(0, 0, 0.2, 1);\n will-change: transform, opacity;\n\n &.visible {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n &.hiding {\n opacity: 0;\n transform: translateY(100%) scale(0.9);\n transition-duration: 0.15s;\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n }\n\n .adw-toast-title {\n font-weight: normal;\n line-height: 1.3;\n }\n}\n","// _overlay_split_view.scss — adw-overlay-split-view styling.\n// Reference: refs/libadwaita/src/adw-overlay-split-view.c\n// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.\n// Modifications: Implemented as Web Component for @gjsify/adwaita-web.\n\nadw-overlay-split-view {\n display: flex;\n flex-direction: row;\n flex: 1;\n min-height: 0;\n position: relative;\n overflow: hidden;\n\n .adw-osv-sidebar {\n background-color: var(--sidebar-bg-color);\n overflow-y: auto;\n flex-shrink: 0;\n transition: transform 0.2s ease, opacity 0.2s ease, margin 0.2s ease;\n z-index: 10;\n align-self: stretch;\n }\n\n .adw-osv-content {\n flex: 1;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n align-self: stretch;\n }\n\n // Docked mode (not collapsed) — sidebar beside content\n &:not(.collapsed) .adw-osv-sidebar {\n position: relative;\n }\n\n // Docked hide: slide left and collapse via opacity. Sidebar keeps its\n // intrinsic width so internal elements don't reflow.\n &:not(.collapsed):not(.show-sidebar) .adw-osv-sidebar {\n transform: translateX(-100%);\n opacity: 0;\n pointer-events: none;\n }\n\n // Overlay mode (collapsed) — sidebar on top of content\n &.collapsed .adw-osv-sidebar {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n opacity: 0;\n pointer-events: none;\n }\n\n &.collapsed.sidebar-end .adw-osv-sidebar {\n left: auto;\n right: 0;\n transform: translateX(100%);\n }\n\n &.collapsed.show-sidebar .adw-osv-sidebar {\n transform: translateX(0);\n opacity: 1;\n pointer-events: auto;\n }\n\n // Backdrop — visible only in overlay mode when sidebar is open\n .adw-osv-backdrop {\n display: none;\n }\n\n &.collapsed.show-sidebar .adw-osv-backdrop {\n display: block;\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.3);\n z-index: 9;\n }\n}\n\n// Sidebar content layout helper — wraps the sidebar's children with the\n// standard Adwaita spacing scale (12px padding, 12px gap between groups).\n.adw-sidebar-content {\n padding: var(--spacing-m);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-m);\n}\n\n// Sidebar toggle button — sidebar-show-symbolic icon via CSS mask\n.adw-sidebar-toggle-icon::after {\n content: '';\n position: absolute;\n inset: 0;\n background-color: currentColor;\n -webkit-mask-image: var(--icon-sidebar-show);\n mask-image: var(--icon-sidebar-show);\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: 16px 16px;\n mask-size: 16px 16px;\n -webkit-mask-position: center;\n mask-position: center;\n pointer-events: none;\n}\n"]}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import '@gjsify/adwaita-fonts';
|
|
2
|
+
export { AdwCard } from './elements/adw-card.js';
|
|
2
3
|
export { AdwWindow } from './elements/adw-window.js';
|
|
3
4
|
export { AdwHeaderBar } from './elements/adw-header-bar.js';
|
|
4
5
|
export { AdwPreferencesGroup } from './elements/adw-preferences-group.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/adwaita-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Adwaita/Libadwaita web components for browser targets",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.ts",
|
|
@@ -9,21 +9,36 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./src/index.ts",
|
|
11
11
|
"default": "./src/index.ts"
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
|
+
"./style.css": {
|
|
14
|
+
"types": "./style.css.d.ts",
|
|
15
|
+
"default": "./dist/adwaita-web.css"
|
|
16
|
+
},
|
|
17
|
+
"./scss": "./scss/adwaita-skin.scss",
|
|
18
|
+
"./scss/*": "./scss/*"
|
|
13
19
|
},
|
|
20
|
+
"files": [
|
|
21
|
+
"src",
|
|
22
|
+
"scss",
|
|
23
|
+
"dist",
|
|
24
|
+
"lib",
|
|
25
|
+
"style.css.d.ts"
|
|
26
|
+
],
|
|
14
27
|
"scripts": {
|
|
15
|
-
"clear": "rm -rf lib tsconfig.tsbuildinfo || exit 0",
|
|
28
|
+
"clear": "rm -rf lib dist tsconfig.tsbuildinfo scss/_icons.generated.scss || exit 0",
|
|
16
29
|
"check": "tsc --noEmit",
|
|
17
|
-
"build": "yarn build:gjsify && yarn build:types",
|
|
30
|
+
"build": "yarn build:scss && yarn build:gjsify && yarn build:types",
|
|
31
|
+
"build:scss": "node scripts/build-scss.mjs",
|
|
18
32
|
"build:gjsify": "gjsify build --library 'src/**/*.ts' --exclude 'src/**/*.spec.ts'",
|
|
19
33
|
"build:types": "tsc"
|
|
20
34
|
},
|
|
21
35
|
"dependencies": {
|
|
22
|
-
"@gjsify/adwaita-fonts": "^0.1.
|
|
23
|
-
"@gjsify/adwaita-icons": "^0.1.
|
|
36
|
+
"@gjsify/adwaita-fonts": "^0.1.8",
|
|
37
|
+
"@gjsify/adwaita-icons": "^0.1.8"
|
|
24
38
|
},
|
|
25
39
|
"devDependencies": {
|
|
26
|
-
"@gjsify/cli": "^0.1.
|
|
40
|
+
"@gjsify/cli": "^0.1.8",
|
|
41
|
+
"sass": "^1.99.0",
|
|
27
42
|
"typescript": "^6.0.2"
|
|
28
43
|
}
|
|
29
44
|
}
|