@gjsify/adwaita-web 0.10.0 → 0.12.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/README.md +5 -5
- package/dist/adwaita-web.css +2742 -263
- package/dist/adwaita-web.css.map +1 -1
- package/lib/types/elements/adw-about-dialog.d.ts +77 -0
- package/lib/types/elements/adw-action-row.d.ts +15 -0
- package/lib/types/elements/adw-alert-dialog.d.ts +80 -0
- package/lib/types/elements/adw-avatar.d.ts +9 -0
- package/lib/types/elements/adw-banner.d.ts +9 -0
- package/lib/types/elements/adw-bottom-sheet.d.ts +35 -0
- package/lib/types/elements/adw-button-content.d.ts +10 -0
- package/lib/types/elements/adw-button-row.d.ts +11 -0
- package/lib/types/elements/adw-button.d.ts +11 -0
- package/lib/types/elements/adw-carousel.d.ts +64 -0
- package/lib/types/elements/adw-clamp.d.ts +6 -0
- package/lib/types/elements/adw-combo-row.d.ts +3 -0
- package/lib/types/elements/adw-entry-row.d.ts +10 -0
- package/lib/types/elements/adw-entry.d.ts +11 -0
- package/lib/types/elements/adw-expander-row.d.ts +26 -0
- package/lib/types/elements/adw-header-bar.d.ts +4 -0
- package/lib/types/elements/adw-inline-view-switcher.d.ts +30 -0
- package/lib/types/elements/adw-navigation-split-view.d.ts +15 -0
- package/lib/types/elements/adw-navigation-view.d.ts +66 -0
- package/lib/types/elements/adw-password-entry-row.d.ts +16 -0
- package/lib/types/elements/adw-preferences-dialog.d.ts +36 -0
- package/lib/types/elements/adw-preferences-group.d.ts +8 -0
- package/lib/types/elements/adw-sidebar.d.ts +29 -0
- package/lib/types/elements/adw-spin-row.d.ts +3 -0
- package/lib/types/elements/adw-spinner.d.ts +6 -0
- package/lib/types/elements/adw-split-button.d.ts +18 -0
- package/lib/types/elements/adw-status-page.d.ts +11 -0
- package/lib/types/elements/adw-switch-row.d.ts +3 -0
- package/lib/types/elements/adw-tab-view.d.ts +24 -0
- package/lib/types/elements/adw-toast-overlay.d.ts +19 -4
- package/lib/types/elements/adw-toggle-group.d.ts +19 -0
- package/lib/types/elements/adw-toolbar-view.d.ts +13 -0
- package/lib/types/elements/adw-view-switcher.d.ts +29 -0
- package/lib/types/elements/adw-window-title.d.ts +9 -0
- package/lib/types/elements/adw-wrap-box.d.ts +13 -0
- package/lib/types/index.d.ts +29 -0
- package/lib/types/styles.generated.d.ts +1 -0
- package/package.json +5 -5
- package/scss/_about_dialog.scss +257 -0
- package/scss/_action_row.scss +65 -0
- package/scss/_alert_dialog.scss +151 -0
- package/scss/_avatar.scss +31 -0
- package/scss/_banner.scss +46 -0
- package/scss/_bottom_sheet.scss +113 -0
- package/scss/_button.scss +168 -0
- package/scss/_button_content.scss +48 -0
- package/scss/_button_row.scss +100 -0
- package/scss/_carousel.scss +130 -0
- package/scss/_clamp.scss +11 -0
- package/scss/_entry.scss +49 -0
- package/scss/_entry_row.scss +54 -0
- package/scss/_expander_row.scss +150 -0
- package/scss/_headerbar.scss +1 -1
- package/scss/_inline_view_switcher.scss +174 -0
- package/scss/_navigation_split_view.scss +48 -0
- package/scss/_navigation_view.scss +80 -0
- package/scss/_overlay_split_view.scss +19 -0
- package/scss/_password_entry_row.scss +67 -0
- package/scss/_preferences.scss +26 -3
- package/scss/_preferences_dialog.scss +154 -0
- package/scss/_row.scss +31 -0
- package/scss/_sidebar.scss +213 -0
- package/scss/_spin_row.scss +0 -1
- package/scss/_spinner.scss +28 -0
- package/scss/_split_button.scss +222 -0
- package/scss/_status_page.scss +40 -0
- package/scss/_switch_row.scss +0 -1
- package/scss/_tab_view.scss +193 -0
- package/scss/_theme.scss +12 -0
- package/scss/_toast.scss +122 -12
- package/scss/_toggle_group.scss +124 -0
- package/scss/_toolbar_view.scss +31 -0
- package/scss/_variables.scss +19 -0
- package/scss/_view_switcher.scss +133 -0
- package/scss/_window_title.scss +33 -0
- package/scss/_wrap_box.scss +20 -0
- package/scss/adwaita-skin.scss +38 -0
- package/src/elements/adw-about-dialog.ts +629 -0
- package/src/elements/adw-action-row.ts +82 -0
- package/src/elements/adw-alert-dialog.ts +385 -0
- package/src/elements/adw-avatar.ts +108 -0
- package/src/elements/adw-banner.ts +57 -0
- package/src/elements/adw-bottom-sheet.ts +205 -0
- package/src/elements/adw-button-content.ts +69 -0
- package/src/elements/adw-button-row.ts +75 -0
- package/src/elements/adw-button.ts +81 -0
- package/src/elements/adw-carousel.ts +321 -0
- package/src/elements/adw-clamp.ts +28 -0
- package/src/elements/adw-combo-row.ts +32 -20
- package/src/elements/adw-entry-row.ts +69 -0
- package/src/elements/adw-entry.ts +61 -0
- package/src/elements/adw-expander-row.ts +167 -0
- package/src/elements/adw-header-bar.ts +21 -8
- package/src/elements/adw-inline-view-switcher.ts +222 -0
- package/src/elements/adw-navigation-split-view.ts +89 -0
- package/src/elements/adw-navigation-view.ts +344 -0
- package/src/elements/adw-password-entry-row.ts +121 -0
- package/src/elements/adw-preferences-dialog.ts +240 -0
- package/src/elements/adw-preferences-group.ts +79 -12
- package/src/elements/adw-sidebar.ts +238 -0
- package/src/elements/adw-spin-row.ts +28 -14
- package/src/elements/adw-spinner.ts +31 -0
- package/src/elements/adw-split-button.ts +206 -0
- package/src/elements/adw-status-page.ts +66 -0
- package/src/elements/adw-switch-row.ts +29 -23
- package/src/elements/adw-tab-view.ts +184 -0
- package/src/elements/adw-toast-overlay.ts +98 -19
- package/src/elements/adw-toggle-group.ts +126 -0
- package/src/elements/adw-toolbar-view.ts +60 -0
- package/src/elements/adw-view-switcher.ts +200 -0
- package/src/elements/adw-window-title.ts +48 -0
- package/src/elements/adw-wrap-box.ts +139 -0
- package/src/index.js +1 -1
- package/src/index.ts +46 -3
- package/src/styles.generated.js +2976 -0
- package/src/styles2.generated.js +2976 -0
- package/style.css.d.ts +17 -4
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// _expander_row.scss — adw-expander-row styling (disclosure header + nested rows).
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_expander_row.scss
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_expander-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-expander-row {
|
|
9
|
+
display: block;
|
|
10
|
+
border-bottom: 1px solid var(--card-shade-color);
|
|
11
|
+
color: var(--card-fg-color);
|
|
12
|
+
|
|
13
|
+
&:last-child {
|
|
14
|
+
border-bottom: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Header — styled like an activatable action row.
|
|
18
|
+
.adw-expander-row-header {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
gap: var(--spacing-m);
|
|
22
|
+
min-height: 50px;
|
|
23
|
+
padding: var(--spacing-s) var(--spacing-m);
|
|
24
|
+
cursor: pointer;
|
|
25
|
+
|
|
26
|
+
&:hover {
|
|
27
|
+
background-color: var(--button-bg-color);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&:active {
|
|
31
|
+
background-color: var(--button-active-color);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.adw-row-title {
|
|
36
|
+
font-size: var(--font-size-base);
|
|
37
|
+
color: var(--card-fg-color);
|
|
38
|
+
white-space: nowrap;
|
|
39
|
+
overflow: hidden;
|
|
40
|
+
text-overflow: ellipsis;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// The text column takes the free space so prefix/suffix widgets, the enable
|
|
44
|
+
// switch and the chevron sit at their respective edges.
|
|
45
|
+
.adw-expander-row-header > .adw-row-text {
|
|
46
|
+
flex: 1;
|
|
47
|
+
min-width: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Header prefix / suffix widget slots (Adw.ExpanderRow add_prefix/add_suffix).
|
|
51
|
+
.adw-expander-row-prefix,
|
|
52
|
+
.adw-expander-row-suffix {
|
|
53
|
+
display: flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
gap: var(--spacing-s);
|
|
56
|
+
flex-shrink: 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Disclosure chevron — points down when collapsed, flips up when expanded,
|
|
60
|
+
// matching libadwaita's Adw.ExpanderRow arrow.
|
|
61
|
+
.adw-expander-row-chevron {
|
|
62
|
+
opacity: var(--dim-opacity);
|
|
63
|
+
transform: rotate(0deg);
|
|
64
|
+
transition: transform 0.2s ease-out;
|
|
65
|
+
flex-shrink: 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.expanded .adw-expander-row-chevron {
|
|
69
|
+
transform: rotate(180deg);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// The optional enable switch reuses the shared .adw-switch markup.
|
|
73
|
+
.adw-expander-row-enable-switch {
|
|
74
|
+
position: relative;
|
|
75
|
+
display: inline-block;
|
|
76
|
+
width: 44px;
|
|
77
|
+
height: 24px;
|
|
78
|
+
flex-shrink: 0;
|
|
79
|
+
|
|
80
|
+
input {
|
|
81
|
+
opacity: 0;
|
|
82
|
+
width: 0;
|
|
83
|
+
height: 0;
|
|
84
|
+
position: absolute;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.adw-switch-slider {
|
|
88
|
+
position: absolute;
|
|
89
|
+
cursor: pointer;
|
|
90
|
+
inset: 0;
|
|
91
|
+
background-color: var(--switch-off-bg);
|
|
92
|
+
border-radius: 12px;
|
|
93
|
+
transition: background-color 0.15s ease-out;
|
|
94
|
+
|
|
95
|
+
&::before {
|
|
96
|
+
content: "";
|
|
97
|
+
position: absolute;
|
|
98
|
+
height: 20px;
|
|
99
|
+
width: 20px;
|
|
100
|
+
left: 2px;
|
|
101
|
+
bottom: 2px;
|
|
102
|
+
background-color: var(--switch-knob-bg);
|
|
103
|
+
border-radius: 50%;
|
|
104
|
+
transition: transform 0.15s ease-out;
|
|
105
|
+
box-shadow: 0 1px 2px rgb(0 0 0 / 20%);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
input:checked + .adw-switch-slider {
|
|
110
|
+
background-color: var(--accent-bg-color);
|
|
111
|
+
|
|
112
|
+
&::before {
|
|
113
|
+
transform: translateX(20px);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
input:focus-visible + .adw-switch-slider {
|
|
118
|
+
outline: 2px solid var(--accent-color);
|
|
119
|
+
outline-offset: 2px;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Disclosed content — a nested listbox of rows, hidden until expanded. The
|
|
124
|
+
// nested surface is slightly inset/recessed, the way libadwaita draws it.
|
|
125
|
+
.adw-expander-row-content {
|
|
126
|
+
display: none;
|
|
127
|
+
flex-direction: column;
|
|
128
|
+
background-color: var(--window-bg-color);
|
|
129
|
+
border-top: 1px solid var(--card-shade-color);
|
|
130
|
+
|
|
131
|
+
&.expanded {
|
|
132
|
+
display: flex;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Nested rows: indent the text column and keep the hairline separators,
|
|
136
|
+
// dropping the last one (the content area's own edge closes it off).
|
|
137
|
+
> adw-action-row,
|
|
138
|
+
> adw-entry-row,
|
|
139
|
+
> adw-switch-row,
|
|
140
|
+
> adw-combo-row,
|
|
141
|
+
> adw-spin-row {
|
|
142
|
+
padding-left: var(--spacing-xl);
|
|
143
|
+
border-bottom: 1px solid var(--card-shade-color);
|
|
144
|
+
|
|
145
|
+
&:last-child {
|
|
146
|
+
border-bottom: none;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
package/scss/_headerbar.scss
CHANGED
|
@@ -12,7 +12,7 @@ adw-header-bar {
|
|
|
12
12
|
padding: 0 6px;
|
|
13
13
|
background-color: var(--headerbar-bg-color);
|
|
14
14
|
color: var(--headerbar-fg-color);
|
|
15
|
-
box-shadow: inset 0 -1px var(--
|
|
15
|
+
box-shadow: inset 0 -1px var(--separator-color);
|
|
16
16
|
// flex-shrink: 0 ensures the headerbar never collapses inside a flex-column
|
|
17
17
|
// adw-window, preventing a spurious spacing band between bar and content.
|
|
18
18
|
flex-shrink: 0;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// _inline_view_switcher.scss — adw-inline-view-switcher styling (a compact view
|
|
2
|
+
// switcher: a toggle-group-style bar of one toggle per page over a single
|
|
3
|
+
// stacked content area, with the active toggle drawn as the raised Adwaita
|
|
4
|
+
// active-toggle chip). The bar's per-display-mode sizing (labels / icons / both)
|
|
5
|
+
// mirrors libadwaita's `inline-view-switcher > toggle-group.{labels,icons,both}`.
|
|
6
|
+
// Reference: refs/libadwaita/src/adw-inline-view-switcher.c (AdwInlineViewSwitcher)
|
|
7
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_toggle-group.scss (inline-view-switcher > toggle-group)
|
|
8
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_viewswitcher.scss
|
|
9
|
+
// Copyright (c) 2023 Maximiliano Sandoval / 2024 GNOME Foundation Inc. (libadwaita). LGPLv2.1+.
|
|
10
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
11
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
12
|
+
|
|
13
|
+
// The active toggle uses a white-on-fg "raised" chip — the same tokens the
|
|
14
|
+
// toggle-group uses (defined there; _theme.scss overrides them for dark).
|
|
15
|
+
|
|
16
|
+
adw-inline-view-switcher {
|
|
17
|
+
// libadwaita's ---group-padding: a small inset so the active chip floats
|
|
18
|
+
// inside the group's pill, leaving a hairline of group background around it.
|
|
19
|
+
--group-padding: 3px;
|
|
20
|
+
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
align-items: center;
|
|
24
|
+
|
|
25
|
+
// The switcher bar — a toggle-group pill, sized to its content.
|
|
26
|
+
.adw-inline-view-switcher-group {
|
|
27
|
+
display: inline-flex;
|
|
28
|
+
box-sizing: border-box;
|
|
29
|
+
align-items: stretch;
|
|
30
|
+
gap: var(--group-padding);
|
|
31
|
+
padding: var(--group-padding);
|
|
32
|
+
border-radius: var(--button-radius);
|
|
33
|
+
background-color: var(--button-bg-color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Each toggle is a button-shaped chip with the group's inner radius.
|
|
37
|
+
.adw-inline-view-switcher-toggle {
|
|
38
|
+
box-sizing: border-box;
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
gap: var(--spacing-xs);
|
|
43
|
+
min-width: 34px;
|
|
44
|
+
min-height: 28px;
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 4px 11px;
|
|
47
|
+
border: none;
|
|
48
|
+
border-radius: calc(var(--button-radius) - var(--group-padding));
|
|
49
|
+
background-color: transparent;
|
|
50
|
+
color: var(--window-fg-color);
|
|
51
|
+
font-family: var(--font-family);
|
|
52
|
+
font-size: var(--font-size-base);
|
|
53
|
+
font-weight: 700;
|
|
54
|
+
line-height: 1;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
transition:
|
|
57
|
+
color 0.2s ease,
|
|
58
|
+
background-color 0.2s ease,
|
|
59
|
+
box-shadow 0.2s ease;
|
|
60
|
+
user-select: none;
|
|
61
|
+
-webkit-user-select: none;
|
|
62
|
+
|
|
63
|
+
&:hover {
|
|
64
|
+
background-color: var(--button-hover-color);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&:active {
|
|
68
|
+
background-color: var(--button-active-color);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&:focus-visible {
|
|
72
|
+
outline: 2px solid var(--accent-color);
|
|
73
|
+
outline-offset: 1px;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// The active toggle — a raised white chip, the way libadwaita draws it.
|
|
77
|
+
&.active {
|
|
78
|
+
background-color: var(--active-toggle-bg-color);
|
|
79
|
+
color: var(--active-toggle-fg-color);
|
|
80
|
+
box-shadow:
|
|
81
|
+
0 1px 3px 1px rgba(0, 0, 6, 0.07),
|
|
82
|
+
0 2px 6px 2px rgba(0, 0, 6, 0.03);
|
|
83
|
+
|
|
84
|
+
&:hover {
|
|
85
|
+
background-color: var(--active-toggle-bg-color);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// The switcher's symbolic icon — a currentColor mask, sized like a toolbar
|
|
91
|
+
// icon (matches the .adw-icon base used across @gjsify/adwaita-web).
|
|
92
|
+
.adw-inline-view-switcher-icon {
|
|
93
|
+
display: inline-block;
|
|
94
|
+
width: 16px;
|
|
95
|
+
height: 16px;
|
|
96
|
+
flex: none;
|
|
97
|
+
background-color: currentColor;
|
|
98
|
+
mask-size: contain;
|
|
99
|
+
mask-repeat: no-repeat;
|
|
100
|
+
mask-position: center;
|
|
101
|
+
-webkit-mask-size: contain;
|
|
102
|
+
-webkit-mask-repeat: no-repeat;
|
|
103
|
+
-webkit-mask-position: center;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.adw-inline-view-switcher-label {
|
|
107
|
+
white-space: nowrap;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// The stacked content area below the bar — exactly one page is visible.
|
|
111
|
+
.adw-inline-view-switcher-pages {
|
|
112
|
+
width: 100%;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.adw-inline-view-switcher-page {
|
|
116
|
+
&:not(.active-view) {
|
|
117
|
+
display: none;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Per-display-mode sizing, mirroring libadwaita's
|
|
122
|
+
// inline-view-switcher > toggle-group.{icons,labels,both}.
|
|
123
|
+
.adw-inline-view-switcher-group.icons .adw-inline-view-switcher-toggle {
|
|
124
|
+
min-width: 34px;
|
|
125
|
+
padding-left: 0;
|
|
126
|
+
padding-right: 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.adw-inline-view-switcher-group.labels .adw-inline-view-switcher-toggle {
|
|
130
|
+
min-width: calc(18px + var(--group-padding) * 2);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Round — group + toggles become pill-shaped.
|
|
134
|
+
&.round {
|
|
135
|
+
.adw-inline-view-switcher-group {
|
|
136
|
+
border-radius: 17px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.adw-inline-view-switcher-toggle {
|
|
140
|
+
border-radius: calc(17px - var(--group-padding));
|
|
141
|
+
padding-left: calc(15px - var(--group-padding));
|
|
142
|
+
padding-right: calc(15px - var(--group-padding));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Flat — no group background; the active toggle uses a subtle fill instead
|
|
147
|
+
// of the raised white chip.
|
|
148
|
+
&.flat {
|
|
149
|
+
--group-padding: 0px;
|
|
150
|
+
|
|
151
|
+
.adw-inline-view-switcher-group {
|
|
152
|
+
padding: 0;
|
|
153
|
+
background: none;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.adw-inline-view-switcher-toggle {
|
|
157
|
+
border-radius: var(--button-radius);
|
|
158
|
+
|
|
159
|
+
&.active {
|
|
160
|
+
background-color: var(--button-active-color);
|
|
161
|
+
color: inherit;
|
|
162
|
+
box-shadow: none;
|
|
163
|
+
|
|
164
|
+
&:hover {
|
|
165
|
+
background-color: var(--button-active-color);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
&.round .adw-inline-view-switcher-toggle {
|
|
171
|
+
border-radius: 17px;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// _navigation_split_view.scss — adw-navigation-split-view styling (docked sidebar).
|
|
2
|
+
// Reference: refs/adwaita-web/adwaita-web/docs/widgets/navigationsplitview.md
|
|
3
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_sidebars.scss
|
|
4
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
6
|
+
|
|
7
|
+
adw-navigation-split-view {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: row;
|
|
10
|
+
min-height: 0;
|
|
11
|
+
min-width: 0;
|
|
12
|
+
flex: 1 1 auto;
|
|
13
|
+
|
|
14
|
+
.adw-nsv-sidebar {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
min-height: 0;
|
|
18
|
+
flex-shrink: 0;
|
|
19
|
+
border-right: 1px solid var(--separator-color);
|
|
20
|
+
background-color: var(--sidebar-bg-color);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.adw-nsv-content {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
min-width: 0;
|
|
27
|
+
min-height: 0;
|
|
28
|
+
flex: 1 1 auto;
|
|
29
|
+
background-color: var(--window-bg-color);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Collapsed (narrow): one pane at a time.
|
|
33
|
+
&.collapsed.show-content .adw-nsv-sidebar {
|
|
34
|
+
display: none;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&.collapsed:not(.show-content) {
|
|
38
|
+
.adw-nsv-content {
|
|
39
|
+
display: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.adw-nsv-sidebar {
|
|
43
|
+
flex: 1 1 auto;
|
|
44
|
+
max-width: none;
|
|
45
|
+
border-right: none;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// _navigation_view.scss — adw-navigation-view styling (a page-based navigation
|
|
2
|
+
// container; one page visible at a time, controlled with push/pop). The visible
|
|
3
|
+
// page fills the view on the window background; an automatic back button is
|
|
4
|
+
// drawn flat at the start of the visible page's header bar.
|
|
5
|
+
// Reference: refs/libadwaita/src/adw-navigation-view.c (css node "navigation-view")
|
|
6
|
+
// Reference: refs/adwaita-web/adwaita-web/docs/widgets/navigationview.md
|
|
7
|
+
// Copyright (c) 2022-2023 Purism SPC / GNOME contributors (libadwaita). LGPLv2.1+.
|
|
8
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
9
|
+
|
|
10
|
+
adw-navigation-view {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
position: relative;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
background-color: var(--window-bg-color);
|
|
17
|
+
color: var(--window-fg-color);
|
|
18
|
+
|
|
19
|
+
// The page stack — fills the view; positioned so pages can stack.
|
|
20
|
+
.adw-navigation-view-pages {
|
|
21
|
+
flex: 1 1 auto;
|
|
22
|
+
position: relative;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
min-height: 0;
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// A single navigation page — the visible one fills the view, the rest are
|
|
29
|
+
// hidden. Positioned absolutely so a transition can overlap two pages.
|
|
30
|
+
.adw-navigation-page {
|
|
31
|
+
box-sizing: border-box;
|
|
32
|
+
position: absolute;
|
|
33
|
+
inset: 0;
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
overflow: auto;
|
|
37
|
+
background-color: var(--window-bg-color);
|
|
38
|
+
color: var(--window-fg-color);
|
|
39
|
+
|
|
40
|
+
&[hidden] {
|
|
41
|
+
display: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&.visible-page {
|
|
45
|
+
display: flex;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Let a page whose direct child fills (a toolbar-view / status-page)
|
|
49
|
+
// stretch to the full height.
|
|
50
|
+
> * {
|
|
51
|
+
flex: 1 1 auto;
|
|
52
|
+
min-height: 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// The injected automatic back button — flat, sits at the start of the visible
|
|
57
|
+
// page's header bar (mirrors AdwHeaderBar's grown-in back button).
|
|
58
|
+
.adw-navigation-back-button {
|
|
59
|
+
flex-shrink: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Slide transition for the visible page when transitions are animated. The
|
|
63
|
+
// entering page fades up from a slight horizontal offset (LTR push), matching
|
|
64
|
+
// libadwaita's spring-driven slide closely enough for the web target.
|
|
65
|
+
&.animated .adw-navigation-page.visible-page {
|
|
66
|
+
animation: adw-navigation-page-in 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@keyframes adw-navigation-page-in {
|
|
71
|
+
from {
|
|
72
|
+
opacity: 0;
|
|
73
|
+
transform: translateX(12px);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
to {
|
|
77
|
+
opacity: 1;
|
|
78
|
+
transform: translateX(0);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -42,6 +42,25 @@ adw-overlay-split-view {
|
|
|
42
42
|
pointer-events: none;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
// Docked + sidebar-end — dock the sidebar to the RIGHT of the content
|
|
46
|
+
// (the Adw.OverlaySplitView { sidebar-position: end } layout). flex `order`
|
|
47
|
+
// flips the visual order without changing the slotting DOM order.
|
|
48
|
+
&:not(.collapsed).sidebar-end {
|
|
49
|
+
.adw-osv-content {
|
|
50
|
+
order: 1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.adw-osv-sidebar {
|
|
54
|
+
order: 2;
|
|
55
|
+
border-inline-start: 1px solid var(--separator-color);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Docked hide when the sidebar is on the end edge: slide RIGHT, not left.
|
|
60
|
+
&:not(.collapsed):not(.show-sidebar).sidebar-end .adw-osv-sidebar {
|
|
61
|
+
transform: translateX(100%);
|
|
62
|
+
}
|
|
63
|
+
|
|
45
64
|
// Overlay mode (collapsed) — sidebar on top of content
|
|
46
65
|
&.collapsed .adw-osv-sidebar {
|
|
47
66
|
position: absolute;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// _password_entry_row.scss — adw-password-entry-row styling (masked entry row
|
|
2
|
+
// with a trailing peek toggle). Mirrors _entry_row.scss (the password row is a
|
|
3
|
+
// specialization of the entry row) and adds the flat peek button.
|
|
4
|
+
// Reference: refs/adwaita-web/adwaita-web/scss/_password_entry_row.scss
|
|
5
|
+
// Reference: refs/libadwaita/src/adw-password-entry-row.c
|
|
6
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
7
|
+
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
8
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
9
|
+
|
|
10
|
+
adw-password-entry-row {
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
gap: var(--spacing-m);
|
|
14
|
+
min-height: 50px;
|
|
15
|
+
padding: var(--spacing-xs) var(--spacing-m);
|
|
16
|
+
border-bottom: 1px solid var(--card-shade-color);
|
|
17
|
+
|
|
18
|
+
&:last-child {
|
|
19
|
+
border-bottom: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Focus ring matching libadwaita's row focus (inset accent outline).
|
|
23
|
+
&:focus-within {
|
|
24
|
+
box-shadow: inset 0 0 0 2px var(--accent-color);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Filled Adw.EntryRow layout: a small floating title above the value,
|
|
28
|
+
// both left-aligned in a column.
|
|
29
|
+
.adw-password-entry-row-text {
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
flex: 1 1 auto;
|
|
34
|
+
min-width: 0;
|
|
35
|
+
gap: 1px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.adw-row-title {
|
|
39
|
+
font-size: var(--font-size-small);
|
|
40
|
+
color: var(--card-fg-color);
|
|
41
|
+
opacity: var(--dim-opacity);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.adw-password-entry-row-input {
|
|
45
|
+
width: 100%;
|
|
46
|
+
min-width: 0;
|
|
47
|
+
border: none;
|
|
48
|
+
background: transparent;
|
|
49
|
+
color: var(--card-fg-color);
|
|
50
|
+
font-family: var(--font-family);
|
|
51
|
+
font-size: var(--font-size-base);
|
|
52
|
+
text-align: left;
|
|
53
|
+
outline: none;
|
|
54
|
+
padding: 0;
|
|
55
|
+
|
|
56
|
+
// Slightly wider tracking for the masked dots, like the native entry.
|
|
57
|
+
&[type='password'] {
|
|
58
|
+
letter-spacing: 0.125em;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Trailing peek toggle — flat circular icon button, vertically centred.
|
|
63
|
+
.adw-password-entry-row-toggle {
|
|
64
|
+
flex-shrink: 0;
|
|
65
|
+
align-self: center;
|
|
66
|
+
}
|
|
67
|
+
}
|
package/scss/_preferences.scss
CHANGED
|
@@ -8,15 +8,38 @@
|
|
|
8
8
|
adw-preferences-group {
|
|
9
9
|
display: block;
|
|
10
10
|
|
|
11
|
+
// The header is a flex row: a title/description label column on the left
|
|
12
|
+
// (stretches to fill) and the optional header-suffix on the trailing edge.
|
|
11
13
|
.adw-preferences-group-header {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: var(--spacing-s);
|
|
12
17
|
padding: var(--spacing-xs) 2px;
|
|
13
18
|
}
|
|
14
19
|
|
|
20
|
+
.adw-preferences-group-labels {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex: 1 1 auto;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
min-width: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.adw-preferences-group-suffix {
|
|
28
|
+
flex: 0 0 auto;
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
}
|
|
32
|
+
|
|
15
33
|
.adw-preferences-group-title {
|
|
16
|
-
font-size: var(--font-size-
|
|
34
|
+
font-size: var(--font-size-base);
|
|
17
35
|
font-weight: 700;
|
|
18
|
-
|
|
19
|
-
|
|
36
|
+
margin: 0;
|
|
37
|
+
color: var(--window-fg-color);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Dimmed description line below the title.
|
|
41
|
+
.adw-preferences-group-description {
|
|
42
|
+
font-size: var(--font-size-small);
|
|
20
43
|
opacity: var(--dim-opacity);
|
|
21
44
|
margin: 0;
|
|
22
45
|
color: var(--window-fg-color);
|