@gjsify/adwaita-web 0.11.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.
Files changed (120) hide show
  1. package/README.md +5 -5
  2. package/dist/adwaita-web.css +2742 -263
  3. package/dist/adwaita-web.css.map +1 -1
  4. package/lib/types/elements/adw-about-dialog.d.ts +77 -0
  5. package/lib/types/elements/adw-action-row.d.ts +15 -0
  6. package/lib/types/elements/adw-alert-dialog.d.ts +80 -0
  7. package/lib/types/elements/adw-avatar.d.ts +9 -0
  8. package/lib/types/elements/adw-banner.d.ts +9 -0
  9. package/lib/types/elements/adw-bottom-sheet.d.ts +35 -0
  10. package/lib/types/elements/adw-button-content.d.ts +10 -0
  11. package/lib/types/elements/adw-button-row.d.ts +11 -0
  12. package/lib/types/elements/adw-button.d.ts +11 -0
  13. package/lib/types/elements/adw-carousel.d.ts +64 -0
  14. package/lib/types/elements/adw-clamp.d.ts +6 -0
  15. package/lib/types/elements/adw-combo-row.d.ts +3 -0
  16. package/lib/types/elements/adw-entry-row.d.ts +10 -0
  17. package/lib/types/elements/adw-entry.d.ts +11 -0
  18. package/lib/types/elements/adw-expander-row.d.ts +26 -0
  19. package/lib/types/elements/adw-header-bar.d.ts +4 -0
  20. package/lib/types/elements/adw-inline-view-switcher.d.ts +30 -0
  21. package/lib/types/elements/adw-navigation-split-view.d.ts +15 -0
  22. package/lib/types/elements/adw-navigation-view.d.ts +66 -0
  23. package/lib/types/elements/adw-password-entry-row.d.ts +16 -0
  24. package/lib/types/elements/adw-preferences-dialog.d.ts +36 -0
  25. package/lib/types/elements/adw-preferences-group.d.ts +8 -0
  26. package/lib/types/elements/adw-sidebar.d.ts +29 -0
  27. package/lib/types/elements/adw-spin-row.d.ts +3 -0
  28. package/lib/types/elements/adw-spinner.d.ts +6 -0
  29. package/lib/types/elements/adw-split-button.d.ts +18 -0
  30. package/lib/types/elements/adw-status-page.d.ts +11 -0
  31. package/lib/types/elements/adw-switch-row.d.ts +3 -0
  32. package/lib/types/elements/adw-tab-view.d.ts +24 -0
  33. package/lib/types/elements/adw-toast-overlay.d.ts +19 -4
  34. package/lib/types/elements/adw-toggle-group.d.ts +19 -0
  35. package/lib/types/elements/adw-toolbar-view.d.ts +13 -0
  36. package/lib/types/elements/adw-view-switcher.d.ts +29 -0
  37. package/lib/types/elements/adw-window-title.d.ts +9 -0
  38. package/lib/types/elements/adw-wrap-box.d.ts +13 -0
  39. package/lib/types/index.d.ts +29 -0
  40. package/lib/types/styles.generated.d.ts +1 -0
  41. package/package.json +5 -5
  42. package/scss/_about_dialog.scss +257 -0
  43. package/scss/_action_row.scss +65 -0
  44. package/scss/_alert_dialog.scss +151 -0
  45. package/scss/_avatar.scss +31 -0
  46. package/scss/_banner.scss +46 -0
  47. package/scss/_bottom_sheet.scss +113 -0
  48. package/scss/_button.scss +168 -0
  49. package/scss/_button_content.scss +48 -0
  50. package/scss/_button_row.scss +100 -0
  51. package/scss/_carousel.scss +130 -0
  52. package/scss/_clamp.scss +11 -0
  53. package/scss/_entry.scss +49 -0
  54. package/scss/_entry_row.scss +54 -0
  55. package/scss/_expander_row.scss +150 -0
  56. package/scss/_headerbar.scss +1 -1
  57. package/scss/_inline_view_switcher.scss +174 -0
  58. package/scss/_navigation_split_view.scss +48 -0
  59. package/scss/_navigation_view.scss +80 -0
  60. package/scss/_overlay_split_view.scss +19 -0
  61. package/scss/_password_entry_row.scss +67 -0
  62. package/scss/_preferences.scss +26 -3
  63. package/scss/_preferences_dialog.scss +154 -0
  64. package/scss/_row.scss +31 -0
  65. package/scss/_sidebar.scss +213 -0
  66. package/scss/_spin_row.scss +0 -1
  67. package/scss/_spinner.scss +28 -0
  68. package/scss/_split_button.scss +222 -0
  69. package/scss/_status_page.scss +40 -0
  70. package/scss/_switch_row.scss +0 -1
  71. package/scss/_tab_view.scss +193 -0
  72. package/scss/_theme.scss +12 -0
  73. package/scss/_toast.scss +122 -12
  74. package/scss/_toggle_group.scss +124 -0
  75. package/scss/_toolbar_view.scss +31 -0
  76. package/scss/_variables.scss +19 -0
  77. package/scss/_view_switcher.scss +133 -0
  78. package/scss/_window_title.scss +33 -0
  79. package/scss/_wrap_box.scss +20 -0
  80. package/scss/adwaita-skin.scss +38 -0
  81. package/src/elements/adw-about-dialog.ts +629 -0
  82. package/src/elements/adw-action-row.ts +82 -0
  83. package/src/elements/adw-alert-dialog.ts +385 -0
  84. package/src/elements/adw-avatar.ts +108 -0
  85. package/src/elements/adw-banner.ts +57 -0
  86. package/src/elements/adw-bottom-sheet.ts +205 -0
  87. package/src/elements/adw-button-content.ts +69 -0
  88. package/src/elements/adw-button-row.ts +75 -0
  89. package/src/elements/adw-button.ts +81 -0
  90. package/src/elements/adw-carousel.ts +321 -0
  91. package/src/elements/adw-clamp.ts +28 -0
  92. package/src/elements/adw-combo-row.ts +32 -20
  93. package/src/elements/adw-entry-row.ts +69 -0
  94. package/src/elements/adw-entry.ts +61 -0
  95. package/src/elements/adw-expander-row.ts +167 -0
  96. package/src/elements/adw-header-bar.ts +21 -8
  97. package/src/elements/adw-inline-view-switcher.ts +222 -0
  98. package/src/elements/adw-navigation-split-view.ts +89 -0
  99. package/src/elements/adw-navigation-view.ts +344 -0
  100. package/src/elements/adw-password-entry-row.ts +121 -0
  101. package/src/elements/adw-preferences-dialog.ts +240 -0
  102. package/src/elements/adw-preferences-group.ts +79 -12
  103. package/src/elements/adw-sidebar.ts +238 -0
  104. package/src/elements/adw-spin-row.ts +28 -14
  105. package/src/elements/adw-spinner.ts +31 -0
  106. package/src/elements/adw-split-button.ts +206 -0
  107. package/src/elements/adw-status-page.ts +66 -0
  108. package/src/elements/adw-switch-row.ts +29 -23
  109. package/src/elements/adw-tab-view.ts +184 -0
  110. package/src/elements/adw-toast-overlay.ts +98 -19
  111. package/src/elements/adw-toggle-group.ts +126 -0
  112. package/src/elements/adw-toolbar-view.ts +60 -0
  113. package/src/elements/adw-view-switcher.ts +200 -0
  114. package/src/elements/adw-window-title.ts +48 -0
  115. package/src/elements/adw-wrap-box.ts +139 -0
  116. package/src/index.js +1 -1
  117. package/src/index.ts +46 -3
  118. package/src/styles.generated.js +2976 -0
  119. package/src/styles2.generated.js +2976 -0
  120. 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
+ }
@@ -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(--headerbar-shade-color);
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
+ }
@@ -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-small);
34
+ font-size: var(--font-size-base);
17
35
  font-weight: 700;
18
- text-transform: uppercase;
19
- letter-spacing: 0.5px;
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);