@gjsify/adwaita-nativescript 0.53.0 → 0.55.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 (188) hide show
  1. package/lib/esm/builder/index.js +1 -1
  2. package/lib/esm/builder/template-classes.js +1 -0
  3. package/lib/esm/capabilities.js +1 -0
  4. package/lib/esm/index.js +1 -1
  5. package/lib/esm/namespace/adw.js +1 -1
  6. package/lib/esm/namespace/gtk.js +1 -1
  7. package/lib/esm/widgets/accent-theme.js +1 -1
  8. package/lib/esm/widgets/adw-about-dialog.js +1 -1
  9. package/lib/esm/widgets/adw-accent.js +1 -1
  10. package/lib/esm/widgets/adw-alert-dialog.js +1 -1
  11. package/lib/esm/widgets/adw-application-window.js +1 -0
  12. package/lib/esm/widgets/adw-avatar.js +1 -1
  13. package/lib/esm/widgets/adw-banner.js +1 -1
  14. package/lib/esm/widgets/adw-bin.js +1 -0
  15. package/lib/esm/widgets/adw-button-content.js +1 -1
  16. package/lib/esm/widgets/adw-button-row.js +1 -1
  17. package/lib/esm/widgets/adw-combo-row.js +1 -1
  18. package/lib/esm/widgets/adw-data-grid.js +1 -1
  19. package/lib/esm/widgets/adw-dialog.js +1 -0
  20. package/lib/esm/widgets/adw-entry-row.js +1 -1
  21. package/lib/esm/widgets/adw-expander-row.js +1 -1
  22. package/lib/esm/widgets/adw-navigation-view.js +1 -1
  23. package/lib/esm/widgets/adw-slider-row.js +1 -1
  24. package/lib/esm/widgets/adw-spin-row.js +1 -1
  25. package/lib/esm/widgets/adw-spinner.js +1 -1
  26. package/lib/esm/widgets/adw-split-button.js +1 -1
  27. package/lib/esm/widgets/adw-status-page.js +1 -1
  28. package/lib/esm/widgets/adw-switch-row.js +1 -1
  29. package/lib/esm/widgets/adw-tab-view.js +1 -1
  30. package/lib/esm/widgets/adw-toast-overlay.js +1 -1
  31. package/lib/esm/widgets/adw-toggle-group.js +1 -1
  32. package/lib/esm/widgets/adw-toolbar-view.js +1 -1
  33. package/lib/esm/widgets/adw-view-stack.js +1 -1
  34. package/lib/esm/widgets/adw-view-switcher-bar.js +1 -1
  35. package/lib/esm/widgets/adw-window.js +1 -0
  36. package/lib/esm/widgets/adw-wrap-box.js +1 -1
  37. package/lib/esm/widgets/box-layout.js +1 -1
  38. package/lib/esm/widgets/breakpoint.js +1 -1
  39. package/lib/esm/widgets/grid-state.js +1 -0
  40. package/lib/esm/widgets/gtk-box.js +1 -1
  41. package/lib/esm/widgets/gtk-button.js +1 -1
  42. package/lib/esm/widgets/gtk-check-button.js +1 -0
  43. package/lib/esm/widgets/gtk-drawing-area.js +1 -0
  44. package/lib/esm/widgets/gtk-drop-down.js +1 -1
  45. package/lib/esm/widgets/gtk-entry.js +1 -1
  46. package/lib/esm/widgets/gtk-frame.js +1 -0
  47. package/lib/esm/widgets/gtk-grid.js +1 -0
  48. package/lib/esm/widgets/gtk-label.js +1 -1
  49. package/lib/esm/widgets/gtk-list-box.js +1 -0
  50. package/lib/esm/widgets/gtk-menu-button.js +1 -1
  51. package/lib/esm/widgets/gtk-overlay.js +1 -0
  52. package/lib/esm/widgets/gtk-revealer.js +1 -0
  53. package/lib/esm/widgets/gtk-scrolled-window.js +1 -0
  54. package/lib/esm/widgets/gtk-separator.js +1 -0
  55. package/lib/esm/widgets/gtk-stack.js +1 -0
  56. package/lib/esm/widgets/gtk-text-view.js +1 -0
  57. package/lib/esm/widgets/gtk-toggle-button.js +1 -0
  58. package/lib/esm/widgets/host-insets.android.js +1 -1
  59. package/lib/esm/widgets/icon-path.js +1 -1
  60. package/lib/esm/widgets/icon-theme.js +1 -1
  61. package/lib/esm/widgets/index.js +1 -1
  62. package/lib/esm/widgets/list-box-state.js +1 -0
  63. package/lib/esm/widgets/ns-length.js +1 -0
  64. package/lib/esm/widgets/revealer-state.js +1 -0
  65. package/lib/esm/widgets/row-state.js +1 -1
  66. package/lib/esm/widgets/scrolled-window-policy.js +1 -0
  67. package/lib/esm/widgets/single-child-base.js +1 -0
  68. package/lib/esm/widgets/stack-page.js +1 -0
  69. package/lib/esm/widgets/style-classes.js +1 -1
  70. package/lib/esm/widgets/styled-layout-base.js +1 -0
  71. package/lib/esm/widgets/system-bars-source.android.js +1 -0
  72. package/lib/esm/widgets/system-bars-source.ios.js +1 -0
  73. package/lib/esm/widgets/system-bars-source.js +1 -0
  74. package/lib/esm/widgets/system-bars.js +1 -0
  75. package/lib/esm/widgets/transition-type.js +1 -0
  76. package/lib/esm/widgets/view-switcher-base.js +1 -1
  77. package/lib/esm/widgets/widget-layout.js +1 -1
  78. package/lib/esm/widgets/window-base.js +1 -0
  79. package/lib/esm/widgets/window-state.js +1 -0
  80. package/lib/types/builder/index.d.ts +20 -3
  81. package/lib/types/builder/template-classes.d.ts +13 -0
  82. package/lib/types/capabilities.d.ts +2 -0
  83. package/lib/types/construct-vectors.spec.d.ts +1 -0
  84. package/lib/types/containers.spec.d.ts +2 -0
  85. package/lib/types/grid-layout.spec.d.ts +1 -0
  86. package/lib/types/grid-state.spec.d.ts +2 -0
  87. package/lib/types/gtk-box.spec.d.ts +1 -0
  88. package/lib/types/gtk-controls.spec.d.ts +1 -0
  89. package/lib/types/gtk-grid.spec.d.ts +1 -0
  90. package/lib/types/gtk-list-box.spec.d.ts +1 -0
  91. package/lib/types/gtk-stack.spec.d.ts +2 -0
  92. package/lib/types/gtk-toggle-button.spec.d.ts +2 -0
  93. package/lib/types/index.d.ts +1 -1
  94. package/lib/types/list-box-state.spec.d.ts +2 -0
  95. package/lib/types/namespace/adw.d.ts +4 -0
  96. package/lib/types/namespace/gtk.d.ts +13 -0
  97. package/lib/types/ns-length.spec.d.ts +2 -0
  98. package/lib/types/revealer-state.spec.d.ts +2 -0
  99. package/lib/types/scrolled-window-policy.spec.d.ts +2 -0
  100. package/lib/types/system-bars.spec.d.ts +2 -0
  101. package/lib/types/testing/ns-core.d.mts +44 -0
  102. package/lib/types/transition-type.spec.d.ts +2 -0
  103. package/lib/types/widget-base.spec.d.ts +1 -0
  104. package/lib/types/widgets/adw-about-dialog.d.ts +10 -0
  105. package/lib/types/widgets/adw-action-row.d.ts +10 -0
  106. package/lib/types/widgets/adw-alert-dialog.d.ts +10 -0
  107. package/lib/types/widgets/adw-application-window.d.ts +5 -0
  108. package/lib/types/widgets/adw-avatar.d.ts +10 -0
  109. package/lib/types/widgets/adw-banner.d.ts +10 -0
  110. package/lib/types/widgets/adw-bin.d.ts +7 -0
  111. package/lib/types/widgets/adw-bottom-sheet.d.ts +10 -0
  112. package/lib/types/widgets/adw-button-content.d.ts +10 -0
  113. package/lib/types/widgets/adw-carousel.d.ts +10 -0
  114. package/lib/types/widgets/adw-clamp.d.ts +10 -0
  115. package/lib/types/widgets/adw-data-grid.d.ts +10 -0
  116. package/lib/types/widgets/adw-dialog.d.ts +62 -0
  117. package/lib/types/widgets/adw-header-bar.d.ts +10 -0
  118. package/lib/types/widgets/adw-image-button.d.ts +10 -0
  119. package/lib/types/widgets/adw-navigation-page.d.ts +10 -0
  120. package/lib/types/widgets/adw-navigation-view.d.ts +10 -0
  121. package/lib/types/widgets/adw-preferences-dialog.d.ts +10 -0
  122. package/lib/types/widgets/adw-preferences-group.d.ts +10 -0
  123. package/lib/types/widgets/adw-preferences-page.d.ts +10 -0
  124. package/lib/types/widgets/adw-shortcut-label.d.ts +10 -0
  125. package/lib/types/widgets/adw-sidebar.d.ts +10 -0
  126. package/lib/types/widgets/adw-slider-row.d.ts +10 -0
  127. package/lib/types/widgets/adw-spinner.d.ts +10 -0
  128. package/lib/types/widgets/adw-split-button.d.ts +10 -0
  129. package/lib/types/widgets/adw-status-page.d.ts +10 -0
  130. package/lib/types/widgets/adw-tab-view.d.ts +10 -0
  131. package/lib/types/widgets/adw-toast-overlay.d.ts +16 -2
  132. package/lib/types/widgets/adw-toggle-group.d.ts +10 -0
  133. package/lib/types/widgets/adw-toggle.d.ts +10 -0
  134. package/lib/types/widgets/adw-toolbar-view.d.ts +21 -0
  135. package/lib/types/widgets/adw-view-stack.d.ts +23 -0
  136. package/lib/types/widgets/adw-view-switcher-bar.d.ts +10 -0
  137. package/lib/types/widgets/adw-window-title.d.ts +10 -0
  138. package/lib/types/widgets/adw-window.d.ts +5 -0
  139. package/lib/types/widgets/adw-wrap-box.d.ts +10 -0
  140. package/lib/types/widgets/box-layout.d.ts +19 -5
  141. package/lib/types/widgets/breakpoint.d.ts +7 -1
  142. package/lib/types/widgets/carousel-indicator-base.d.ts +10 -0
  143. package/lib/types/widgets/grid-state.d.ts +34 -0
  144. package/lib/types/widgets/gtk-action-bar.d.ts +10 -0
  145. package/lib/types/widgets/gtk-box.d.ts +27 -52
  146. package/lib/types/widgets/gtk-button.d.ts +20 -0
  147. package/lib/types/widgets/gtk-check-button.d.ts +51 -0
  148. package/lib/types/widgets/gtk-drawing-area.d.ts +19 -0
  149. package/lib/types/widgets/gtk-drop-down.d.ts +10 -0
  150. package/lib/types/widgets/gtk-entry.d.ts +10 -0
  151. package/lib/types/widgets/gtk-frame.d.ts +25 -0
  152. package/lib/types/widgets/gtk-grid.d.ts +57 -0
  153. package/lib/types/widgets/gtk-image.d.ts +10 -0
  154. package/lib/types/widgets/gtk-label.d.ts +10 -0
  155. package/lib/types/widgets/gtk-list-box.d.ts +73 -0
  156. package/lib/types/widgets/gtk-overlay.d.ts +17 -0
  157. package/lib/types/widgets/gtk-revealer.d.ts +30 -0
  158. package/lib/types/widgets/gtk-scrolled-window.d.ts +25 -0
  159. package/lib/types/widgets/gtk-separator.d.ts +11 -0
  160. package/lib/types/widgets/gtk-stack.d.ts +124 -0
  161. package/lib/types/widgets/gtk-text-view.d.ts +63 -0
  162. package/lib/types/widgets/gtk-toggle-button.d.ts +33 -0
  163. package/lib/types/widgets/index.d.ts +40 -2
  164. package/lib/types/widgets/list-box-state.d.ts +19 -0
  165. package/lib/types/widgets/ns-length.d.ts +10 -0
  166. package/lib/types/widgets/revealer-state.d.ts +7 -0
  167. package/lib/types/widgets/row-state.d.ts +6 -0
  168. package/lib/types/widgets/scrolled-window-policy.d.ts +17 -0
  169. package/lib/types/widgets/signals.d.ts +10 -0
  170. package/lib/types/widgets/single-child-base.d.ts +22 -0
  171. package/lib/types/widgets/split-view-base.d.ts +10 -0
  172. package/lib/types/widgets/stack-page.d.ts +93 -0
  173. package/lib/types/widgets/style-classes.d.ts +28 -0
  174. package/lib/types/widgets/styled-layout-base.d.ts +63 -0
  175. package/lib/types/widgets/system-bars-source.android.d.ts +2 -0
  176. package/lib/types/widgets/system-bars-source.d.ts +2 -0
  177. package/lib/types/widgets/system-bars-source.ios.d.ts +2 -0
  178. package/lib/types/widgets/system-bars.d.ts +71 -0
  179. package/lib/types/widgets/transition-type.d.ts +13 -0
  180. package/lib/types/widgets/view-stack-page.d.ts +10 -0
  181. package/lib/types/widgets/view-switcher-base.d.ts +10 -0
  182. package/lib/types/widgets/widget-layout.d.ts +23 -0
  183. package/lib/types/widgets/window-base.d.ts +41 -0
  184. package/lib/types/widgets/window-state.d.ts +37 -0
  185. package/lib/types/window-roots.spec.d.ts +1 -0
  186. package/lib/types/window-state.spec.d.ts +2 -0
  187. package/package.json +13 -9
  188. package/src/theme/adwaita.css +273 -40
@@ -0,0 +1 @@
1
+ export declare const AdwWindowRootsNsTest: () => Promise<void>;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/adwaita-nativescript",
3
- "version": "0.53.0",
3
+ "version": "0.55.0",
4
4
  "description": "Native Adwaita widgets for the NativeScript runtime — real NativeScript components (StackLayout/GridLayout/Switch/Label) styled like Libadwaita, not a webview",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
@@ -22,6 +22,10 @@
22
22
  "types": "./lib/types/builder/index.d.ts",
23
23
  "default": "./lib/esm/builder/index.js"
24
24
  },
25
+ "./capabilities": {
26
+ "types": "./lib/types/capabilities.d.ts",
27
+ "default": "./lib/esm/capabilities.js"
28
+ },
25
29
  "./theme/adwaita.css": "./src/theme/adwaita.css",
26
30
  "./fonts": {
27
31
  "types": "./lib/types/fonts.d.ts",
@@ -59,10 +63,10 @@
59
63
  "design-system"
60
64
  ],
61
65
  "dependencies": {
62
- "@gjsify/adwaita-core": "^0.53.0",
63
- "@gjsify/adwaita-fonts": "^0.53.0",
64
- "@gjsify/adwaita-icons": "^0.53.0",
65
- "@gjsify/native-platform": "^0.53.0"
66
+ "@gjsify/adwaita-core": "^0.55.0",
67
+ "@gjsify/adwaita-fonts": "^0.55.0",
68
+ "@gjsify/adwaita-icons": "^0.55.0",
69
+ "@gjsify/native-platform": "^0.55.0"
66
70
  },
67
71
  "peerDependencies": {
68
72
  "@nativescript/core": "*"
@@ -73,10 +77,10 @@
73
77
  }
74
78
  },
75
79
  "devDependencies": {
76
- "@gjsify/blueprint": "^0.53.0",
77
- "@gjsify/cli": "^0.53.0",
78
- "@gjsify/unit": "^0.53.0",
79
- "@gjsify/vite-plugin-blueprint": "^0.53.0",
80
+ "@gjsify/blueprint": "^0.55.0",
81
+ "@gjsify/cli": "^0.55.0",
82
+ "@gjsify/unit": "^0.55.0",
83
+ "@gjsify/vite-plugin-blueprint": "^0.55.0",
80
84
  "@types/node": "^25.9.2",
81
85
  "typescript": "^6.0.3"
82
86
  },
@@ -71,6 +71,11 @@ Page.adw-window {
71
71
  .adw-preferences-group-listbox {
72
72
  background-color: #ffffff;
73
73
  border-radius: 12;
74
+ /* libadwaita's `%card` shadow is a 1px ring of rgba(0,0,0,.08) on light; NS has no
75
+ * box-shadow, so a border stands in. Without it a white card on the #fafafb window is
76
+ * near-invisible. Dark has no ring (the card is already lighter than the window). */
77
+ border-width: 1;
78
+ border-color: rgba(0, 0, 0, 0.1);
74
79
  margin: 0;
75
80
  }
76
81
 
@@ -94,6 +99,8 @@ Page.adw-window {
94
99
  background-color: #ffffff;
95
100
  color: rgba(0, 0, 6, 0.8);
96
101
  border-radius: 12;
102
+ border-width: 1;
103
+ border-color: rgba(0, 0, 0, 0.1);
97
104
  }
98
105
 
99
106
  /* The padding is the ELEMENT's, not the class's, and both other renderers split them
@@ -202,6 +209,14 @@ Page.adw-window {
202
209
  color: #3584e4;
203
210
  }
204
211
 
212
+ /* NativeScript's `color` tints the thumb in BOTH states, so an off switch kept its
213
+ * accent thumb. `AdwSwitchRow` adds `.off` while unchecked: the slider goes neutral
214
+ * and only the on state carries the accent. A white thumb vanished against the white
215
+ * row (the Android thumb overhangs the track), so it is a mid grey. */
216
+ .adw-switch.off {
217
+ color: #9a9996;
218
+ }
219
+
205
220
  /* ===== Preferences page (ScrollView wrapper) ===== */
206
221
 
207
222
  .adw-preferences-page {
@@ -582,6 +597,21 @@ Page.adw-window {
582
597
  background-color: rgba(224, 27, 36, 0.24);
583
598
  }
584
599
 
600
+ /* `Gtk.ToggleButton:active` — `button:checked` takes the pressed shade
601
+ * (`$button_active_color`, _buttons.scss). `checked` is a STATE class the widget wears
602
+ * (`GtkToggleButton`), never a member of `styleClasses`. */
603
+ .adw-button.checked {
604
+ background-color: rgba(0, 0, 0, 0.19);
605
+ }
606
+
607
+ .adw-button.suggested-action.checked {
608
+ background-color: #1c71d8;
609
+ }
610
+
611
+ .adw-button.destructive-action.checked {
612
+ background-color: rgba(224, 27, 36, 0.24);
613
+ }
614
+
585
615
  /* Activatable boxed-list rows (button row / combo row) darken on press, like
586
616
  * Adwaita's `row.activatable:active` (`$view_active_color` = currentColor 8%).
587
617
  * The rows are transparent at rest, so the press is a true rgba overlay over the
@@ -748,13 +778,21 @@ Page.adw-window {
748
778
  * same reason the accent has to be inlined as a literal. AdwToolbarView applies the
749
779
  * real reading now (#1128). */
750
780
  .adw-toolbar-view-top {
751
- background-color: #ffffff;
781
+ /* `top-bar-style: flat` (the default): the bar is the window background, with no
782
+ * separator — the header bar inside it is flat too (`.adw-toolbar-view-top
783
+ * .adw-header-bar` below). `.raised` brings the header colour and the hairline. */
784
+ background-color: #fafafb;
752
785
  }
753
786
 
754
787
  .adw-toolbar-view-bottom {
755
- background-color: #ffffff;
756
- border-top-width: 1;
757
- border-top-color: rgba(0, 0, 0, 0.1);
788
+ background-color: #fafafb;
789
+ }
790
+
791
+ /* A header bar in a toolbar view paints nothing of its own: the bar around it owns the
792
+ * colour (window background when flat, header colour when raised) and the hairline. */
793
+ .adw-toolbar-view-top .adw-header-bar {
794
+ background-color: transparent;
795
+ border-bottom-width: 0;
758
796
  }
759
797
 
760
798
  /* top-bar-style / bottom-bar-style = raised: an opaque background with a
@@ -774,6 +812,7 @@ Page.adw-window {
774
812
 
775
813
  .adw-toolbar-view-bottom.raised {
776
814
  background-color: #ffffff;
815
+ border-top-width: 1;
777
816
  border-top-color: rgba(0, 0, 0, 0.1);
778
817
  }
779
818
 
@@ -790,9 +829,10 @@ Page.adw-window {
790
829
  /* ===== View switcher bar (narrow policy: bottom bar, icon over label) ===== */
791
830
 
792
831
  .adw-viewswitcherbar {
793
- background-color: #ffffff;
794
- border-top-width: 1;
795
- border-top-color: rgba(0, 0, 0, 0.1);
832
+ /* Transparent: the bar takes the colour (and, when raised, the hairline) of the
833
+ * toolbar it sits in. It carried its own #fff and top border, which drew a second
834
+ * line under the toolbar view's. */
835
+ background-color: transparent;
796
836
  }
797
837
 
798
838
  .adw-viewswitcherbar-box {
@@ -814,6 +854,12 @@ Page.adw-window {
814
854
  background-color: rgba(0, 0, 0, 0.05);
815
855
  }
816
856
 
857
+ /* `button.flat:checked` — the selected pill, not an accent colour (_buttons.scss
858
+ * flat `:checked` = $selected_color); the label keeps the window foreground. */
859
+ .adw-viewswitcherbar-button.active {
860
+ background-color: rgba(0, 0, 0, 0.1);
861
+ }
862
+
817
863
  .adw-viewswitcherbar-button-icon {
818
864
  margin: 0 0 2 0;
819
865
  horizontal-align: center;
@@ -821,15 +867,12 @@ Page.adw-window {
821
867
 
822
868
  .adw-viewswitcherbar-button-label {
823
869
  font-size: 11;
824
- color: rgba(0, 0, 0, 0.6);
870
+ font-weight: 700;
871
+ color: rgba(0, 0, 0, 0.8);
825
872
  horizontal-align: center;
826
873
  text-align: center;
827
874
  }
828
875
 
829
- .adw-viewswitcherbar-button.active .adw-viewswitcherbar-button-label {
830
- color: #3584e4;
831
- }
832
-
833
876
  /* AdwIndicatorBin's badge — the unread count, or (with .needs-attention and no
834
877
  * count) a bare dot. Reference: refs/libadwaita/src/adw-indicator-bin.c */
835
878
  .adw-viewswitcherbar-button-badge {
@@ -1214,9 +1257,9 @@ Page.adw-window {
1214
1257
  }
1215
1258
 
1216
1259
  .adw-view-switcher-bar {
1217
- background-color: rgba(0, 0, 0, 0.05);
1218
- border-radius: 9;
1219
- padding: 2;
1260
+ /* libadwaita's `viewswitcher` is a bare row of flat toggles: no frame, no fill. */
1261
+ background-color: transparent;
1262
+ padding: 0;
1220
1263
  margin: 6;
1221
1264
  }
1222
1265
 
@@ -1225,13 +1268,13 @@ Page.adw-window {
1225
1268
  * right margin. Active = raised white pill. */
1226
1269
  .adw-view-switcher-button {
1227
1270
  background-color: transparent;
1228
- border-radius: 7;
1271
+ border-radius: 9;
1229
1272
  padding: 5 14 5 14;
1230
1273
  margin: 0;
1231
1274
  }
1232
1275
 
1233
1276
  .adw-view-switcher-button.active {
1234
- background-color: #ffffff;
1277
+ background-color: rgba(0, 0, 0, 0.1);
1235
1278
  }
1236
1279
 
1237
1280
  .adw-view-switcher-button:highlighted {
@@ -1239,7 +1282,7 @@ Page.adw-window {
1239
1282
  }
1240
1283
 
1241
1284
  .adw-view-switcher-button-label {
1242
- color: rgba(0, 0, 0, 0.75);
1285
+ color: rgba(0, 0, 0, 0.8);
1243
1286
  font-weight: 700;
1244
1287
  vertical-align: center;
1245
1288
  }
@@ -1532,13 +1575,89 @@ Page.adw-window {
1532
1575
  background-color: transparent;
1533
1576
  }
1534
1577
 
1578
+ /* ===== Check button, separator, frame, text view ===== */
1579
+
1580
+ /* `check` (_checks.scss): a rounded square, neutral until `checked`/`inconsistent`, then the
1581
+ * accent fill; the white checkmark is the indicator's own image. */
1582
+ .adw-check-button {
1583
+ padding: 6 0 6 0;
1584
+ }
1585
+
1586
+ .adw-check-indicator {
1587
+ width: 20;
1588
+ height: 20;
1589
+ border-radius: 5;
1590
+ background-color: rgba(0, 0, 0, 0.15);
1591
+ margin: 0 8 0 0;
1592
+ }
1593
+
1594
+ .adw-check-indicator.checked,
1595
+ .adw-check-indicator.inconsistent {
1596
+ background-color: #3584e4;
1597
+ }
1598
+
1599
+ .adw-check-label {
1600
+ font-size: 15;
1601
+ color: rgba(0, 0, 0, 0.8);
1602
+ }
1603
+
1604
+ .adw-check-button:highlighted {
1605
+ background-color: rgba(0, 0, 0, 0.05);
1606
+ }
1607
+
1608
+ /* `separator` (_misc.scss): a 1px line in the border colour. */
1609
+ .adw-separator {
1610
+ background-color: rgba(0, 0, 0, 0.15);
1611
+ }
1612
+
1613
+ .adw-separator.horizontal {
1614
+ height: 1;
1615
+ horizontal-align: stretch;
1616
+ }
1617
+
1618
+ .adw-separator.vertical {
1619
+ width: 1;
1620
+ vertical-align: stretch;
1621
+ }
1622
+
1623
+ /* `frame` (`.frame` / `frame > border`): one hairline around the child. */
1624
+ .adw-frame {
1625
+ border-width: 1;
1626
+ border-color: rgba(0, 0, 0, 0.15);
1627
+ }
1628
+
1629
+ .adw-frame-label {
1630
+ font-weight: 700;
1631
+ color: rgba(0, 0, 0, 0.8);
1632
+ margin: 0 0 4 0;
1633
+ }
1634
+
1635
+ /* `textview` (_views.scss): the view surface, with the entry's padding. */
1636
+ .adw-text-view {
1637
+ background-color: #ffffff;
1638
+ border-radius: 9;
1639
+ padding: 8 9 8 9;
1640
+ }
1641
+
1642
+ .adw-text-view-input {
1643
+ color: rgba(0, 0, 0, 0.8);
1644
+ font-size: 15;
1645
+ }
1646
+
1647
+ .adw-text-view.monospace .adw-text-view-input {
1648
+ font-family: monospace;
1649
+ }
1650
+
1535
1651
  /* ===== Toast (transient snackbar) ===== */
1536
1652
 
1653
+ /* `toast` (_misc.scss:38-60): $toast_bg_color #505053 / white in BOTH schemes — it is
1654
+ * the one libadwaita surface that does not switch — a 150px (pill) radius, 6px padding
1655
+ * with 12 on the leading side, 12px margin and 24 below. */
1537
1656
  .adw-toast {
1538
- background-color: #303034;
1539
- border-radius: 12;
1540
- padding: 10 12 10 16;
1541
- margin: 0 12 16 12;
1657
+ background-color: #505053;
1658
+ border-radius: 9999;
1659
+ padding: 6 6 6 12;
1660
+ margin: 12 12 24 12;
1542
1661
  }
1543
1662
 
1544
1663
  .adw-toast-title {
@@ -1548,12 +1667,12 @@ Page.adw-window {
1548
1667
  }
1549
1668
 
1550
1669
  .adw-toast-button {
1551
- background-color: rgba(255, 255, 255, 0.16);
1670
+ background-color: transparent;
1552
1671
  color: #ffffff;
1553
- border-radius: 8;
1672
+ border-radius: 9999;
1554
1673
  font-weight: 700;
1555
1674
  padding: 4 12 4 12;
1556
- margin: 0 0 0 8;
1675
+ margin: 0 0 0 6;
1557
1676
  }
1558
1677
 
1559
1678
  /* ===== About / Preferences dialogs (in-page modal overlay) ===== */
@@ -1634,6 +1753,30 @@ Page.adw-window {
1634
1753
  margin: 0;
1635
1754
  }
1636
1755
 
1756
+ /* ===== Adw.Dialog =====
1757
+ *
1758
+ * The scrim dims the whole window; the card is Adwaita's dialog surface — the window
1759
+ * fill, the 15-ish window radius, no padding of its own (the dialog's child brings its
1760
+ * header bar and its content margins). `.adw-dialog-card` sits in the middle by default
1761
+ * and at the bottom edge, full width, for `presentation-mode: bottom-sheet`. */
1762
+ .adw-dialog {
1763
+ background-color: rgba(0, 0, 0, 0.4);
1764
+ }
1765
+
1766
+ .adw-dialog-card {
1767
+ background-color: #fafafb;
1768
+ border-radius: 16;
1769
+ margin: 24;
1770
+ }
1771
+
1772
+ /* ===== Gtk.ListBox selected row =====
1773
+ *
1774
+ * `row:selected` is the 10% currentColor fill (_lists.scss). The rows of a boxed list are
1775
+ * transparent over the card, so a true rgba overlay applies directly. */
1776
+ .adw-list-row-selected {
1777
+ background-color: rgba(0, 0, 0, 0.1);
1778
+ }
1779
+
1637
1780
  /* ===== Shortcut label (keycaps) =====
1638
1781
  *
1639
1782
  * libadwaita: `_shortcuts-dialog.scss:33-58` — 6 spacing at BOTH levels, keycaps
@@ -1712,12 +1855,14 @@ Page.ns-dark.adw-window {
1712
1855
  * (see the light `.adw-row` note) so the card's rounded corners show. */
1713
1856
  .ns-dark .boxed-list,
1714
1857
  .ns-dark .adw-preferences-group-listbox {
1858
+ border-color: transparent;
1715
1859
  background-color: #34343a;
1716
1860
  color: #ffffff;
1717
1861
  }
1718
1862
 
1719
1863
  .ns-dark .card,
1720
1864
  .ns-dark .adw-card {
1865
+ border-color: transparent;
1721
1866
  background-color: #34343a;
1722
1867
  color: #ffffff;
1723
1868
  }
@@ -1745,6 +1890,10 @@ Page.ns-dark.adw-window {
1745
1890
  color: #78aeed;
1746
1891
  }
1747
1892
 
1893
+ .ns-dark .adw-switch.off {
1894
+ color: #9a9996;
1895
+ }
1896
+
1748
1897
  /* ===== Dark: preferences page ===== */
1749
1898
 
1750
1899
  .ns-dark .adw-preferences-page {
@@ -1891,6 +2040,10 @@ Page.ns-dark.adw-window {
1891
2040
  background-color: rgba(255, 255, 255, 0.22);
1892
2041
  }
1893
2042
 
2043
+ .ns-dark .adw-button.checked {
2044
+ background-color: rgba(255, 255, 255, 0.22);
2045
+ }
2046
+
1894
2047
  .ns-dark .adw-button.flat:highlighted {
1895
2048
  background-color: rgba(255, 255, 255, 0.22);
1896
2049
  }
@@ -1911,6 +2064,14 @@ Page.ns-dark.adw-window {
1911
2064
  background-color: rgba(192, 28, 40, 0.3);
1912
2065
  }
1913
2066
 
2067
+ .ns-dark .adw-button.suggested-action.checked {
2068
+ background-color: #1c71d8;
2069
+ }
2070
+
2071
+ .ns-dark .adw-button.destructive-action.checked {
2072
+ background-color: rgba(192, 28, 40, 0.3);
2073
+ }
2074
+
1914
2075
  /* Dark activatable boxed-list rows: 8% white press overlay over the dark card. */
1915
2076
  .ns-dark .adw-button-row:highlighted,
1916
2077
  .ns-dark .adw-combo-row:highlighted {
@@ -1977,12 +2138,17 @@ Page.ns-dark.adw-window {
1977
2138
  }
1978
2139
 
1979
2140
  .ns-dark .adw-toolbar-view-top {
1980
- background-color: #2e2e32;
2141
+ background-color: #222226;
2142
+ }
2143
+
2144
+ /* Outranks `.ns-dark .adw-header-bar` above: inside a toolbar view the bar paints. */
2145
+ .ns-dark .adw-toolbar-view-top .adw-header-bar {
2146
+ background-color: transparent;
2147
+ border-bottom-width: 0;
1981
2148
  }
1982
2149
 
1983
2150
  .ns-dark .adw-toolbar-view-bottom {
1984
- background-color: #2e2e32;
1985
- border-top-color: rgba(255, 255, 255, 0.12);
2151
+ background-color: #222226;
1986
2152
  }
1987
2153
 
1988
2154
  .ns-dark .adw-toolbar-view-top.raised {
@@ -1996,6 +2162,7 @@ Page.ns-dark.adw-window {
1996
2162
 
1997
2163
  .ns-dark .adw-toolbar-view-bottom.raised {
1998
2164
  background-color: #2e2e32;
2165
+ border-top-width: 1;
1999
2166
  border-top-color: rgba(255, 255, 255, 0.12);
2000
2167
  }
2001
2168
 
@@ -2006,8 +2173,11 @@ Page.ns-dark.adw-window {
2006
2173
  /* ===== Dark: view switcher bar ===== */
2007
2174
 
2008
2175
  .ns-dark .adw-viewswitcherbar {
2009
- background-color: #2e2e32;
2010
- border-top-color: rgba(255, 255, 255, 0.12);
2176
+ background-color: transparent;
2177
+ }
2178
+
2179
+ .ns-dark .adw-viewswitcherbar-button.active {
2180
+ background-color: rgba(255, 255, 255, 0.1);
2011
2181
  }
2012
2182
 
2013
2183
  .ns-dark .adw-viewswitcherbar-button:highlighted {
@@ -2015,11 +2185,7 @@ Page.ns-dark.adw-window {
2015
2185
  }
2016
2186
 
2017
2187
  .ns-dark .adw-viewswitcherbar-button-label {
2018
- color: rgba(255, 255, 255, 0.7);
2019
- }
2020
-
2021
- .ns-dark .adw-viewswitcherbar-button.active .adw-viewswitcherbar-button-label {
2022
- color: #78aeed;
2188
+ color: #ffffff;
2023
2189
  }
2024
2190
 
2025
2191
  /* ===== Dark: data grid ===== */
@@ -2134,17 +2300,26 @@ Page.ns-dark.adw-window {
2134
2300
 
2135
2301
  /* ===== Dark: view switcher ===== */
2136
2302
 
2137
- .ns-dark .adw-view-switcher-bar,
2303
+ .ns-dark .adw-view-switcher-bar {
2304
+ background-color: transparent;
2305
+ }
2306
+
2138
2307
  .ns-dark .adw-inline-view-switcher-bar {
2139
2308
  background-color: rgba(255, 255, 255, 0.08);
2140
2309
  }
2141
2310
 
2142
- .ns-dark .adw-view-switcher-button-label,
2311
+ .ns-dark .adw-view-switcher-button-label {
2312
+ color: #ffffff;
2313
+ }
2314
+
2315
+ .ns-dark .adw-view-switcher-button.active {
2316
+ background-color: rgba(255, 255, 255, 0.1);
2317
+ }
2318
+
2143
2319
  .ns-dark .adw-inline-view-switcher-button-label {
2144
2320
  color: rgba(255, 255, 255, 0.7);
2145
2321
  }
2146
2322
 
2147
- .ns-dark .adw-view-switcher-button.active,
2148
2323
  .ns-dark .adw-inline-view-switcher-button.active {
2149
2324
  background-color: #45454c;
2150
2325
  }
@@ -2258,10 +2433,56 @@ Page.ns-dark.adw-window {
2258
2433
  background-color: transparent;
2259
2434
  }
2260
2435
 
2261
- /* ===== Dark: toast (dark base already; tune for dark page) ===== */
2436
+ /* ===== Dark: check button, separator, frame, text view ===== */
2437
+
2438
+ .ns-dark .adw-check-indicator {
2439
+ background-color: rgba(255, 255, 255, 0.15);
2440
+ }
2441
+
2442
+ .ns-dark .adw-check-indicator.checked,
2443
+ .ns-dark .adw-check-indicator.inconsistent {
2444
+ background-color: #3584e4;
2445
+ }
2446
+
2447
+ .ns-dark .adw-check-label,
2448
+ .ns-dark .adw-frame-label {
2449
+ color: #ffffff;
2450
+ }
2451
+
2452
+ .ns-dark .adw-check-button:highlighted {
2453
+ background-color: rgba(255, 255, 255, 0.07);
2454
+ }
2455
+
2456
+ .ns-dark .adw-separator,
2457
+ .ns-dark .adw-frame {
2458
+ border-color: rgba(255, 255, 255, 0.15);
2459
+ }
2460
+
2461
+ .ns-dark .adw-separator {
2462
+ background-color: rgba(255, 255, 255, 0.15);
2463
+ }
2464
+
2465
+ .ns-dark .adw-text-view {
2466
+ background-color: #2a2a2e;
2467
+ }
2262
2468
 
2469
+ .ns-dark .adw-text-view-input {
2470
+ color: #ffffff;
2471
+ }
2472
+
2473
+ /* ===== Dark: toast ===== */
2474
+
2475
+ /* Restated rather than left to the base rule: the toast is the same #505053 in the dark
2476
+ * scheme (it used to be #45454c here and #303034 in light, neither of which is
2477
+ * libadwaita's), and a `.ns-dark` rule is what keeps it from picking up a later
2478
+ * `.adw-toast` override written for the light page. */
2263
2479
  .ns-dark .adw-toast {
2264
- background-color: #45454c;
2480
+ background-color: #505053;
2481
+ }
2482
+
2483
+ .ns-dark .adw-toast-title,
2484
+ .ns-dark .adw-toast-button {
2485
+ color: #ffffff;
2265
2486
  }
2266
2487
 
2267
2488
  /* ===== Dark: about / preferences dialogs ===== */
@@ -2271,6 +2492,18 @@ Page.ns-dark.adw-window {
2271
2492
  background-color: rgba(0, 0, 0, 0.55);
2272
2493
  }
2273
2494
 
2495
+ .ns-dark .adw-dialog {
2496
+ background-color: rgba(0, 0, 0, 0.55);
2497
+ }
2498
+
2499
+ .ns-dark .adw-dialog-card {
2500
+ background-color: #2e2e32;
2501
+ }
2502
+
2503
+ .ns-dark .adw-list-row-selected {
2504
+ background-color: rgba(255, 255, 255, 0.1);
2505
+ }
2506
+
2274
2507
  .ns-dark .adw-about-dialog-card,
2275
2508
  .ns-dark .adw-preferences-dialog-card {
2276
2509
  background-color: #2e2e32;