@gjsify/adwaita-web 0.64.1-next.247 → 0.64.2-next.252

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 (92) hide show
  1. package/README.md +40 -15
  2. package/dist/adwaita-web.css +39 -9
  3. package/dist/adwaita-web.css.map +1 -1
  4. package/lib/types/application.d.ts +1 -1
  5. package/lib/types/child-slot.spec.d.ts +1 -0
  6. package/lib/types/container-fill.spec.d.ts +1 -0
  7. package/lib/types/elements/adw-alert-dialog.d.ts +77 -17
  8. package/lib/types/elements/adw-toast-overlay.d.ts +8 -29
  9. package/lib/types/elements/adw-window-features.d.ts +8 -0
  10. package/lib/types/elements/gtk-application-window.d.ts +1 -4
  11. package/lib/types/elements/gtk-emoji-chooser.d.ts +2 -0
  12. package/lib/types/elements/gtk-image.d.ts +7 -0
  13. package/lib/types/elements/gtk-popover-menu.d.ts +2 -0
  14. package/lib/types/elements/gtk-popover.d.ts +5 -0
  15. package/lib/types/elements/gtk-stack-page.d.ts +28 -0
  16. package/lib/types/elements/gtk-stack.d.ts +11 -0
  17. package/lib/types/elements/gtk-window.d.ts +16 -1
  18. package/lib/types/gio-resource.spec.d.ts +1 -0
  19. package/lib/types/gobject-elements.d.ts +9 -0
  20. package/lib/types/icon-theme.d.ts +33 -7
  21. package/lib/types/index.d.ts +2 -2
  22. package/lib/types/learn6502-window.spec.d.ts +1 -0
  23. package/lib/types/namespace/adw.d.ts +1 -1
  24. package/lib/types/namespace/gio.d.ts +1 -0
  25. package/lib/types/namespace/gtk.d.ts +2 -0
  26. package/lib/types/shared-tree-builder.d.ts +31 -0
  27. package/lib/types/styles.generated.d.ts +1 -1
  28. package/lib/types/widget-visible.spec.d.ts +1 -0
  29. package/lib/types/window-maximize.spec.d.ts +1 -0
  30. package/package.json +12 -12
  31. package/scss/_bin.scss +6 -3
  32. package/scss/_overlay.scss +11 -1
  33. package/scss/_reset.scss +1 -1
  34. package/scss/_stack.scss +8 -2
  35. package/scss/_toast.scss +13 -3
  36. package/scss/_window.scss +16 -0
  37. package/src/adw-alert-dialog.spec.ts +71 -5
  38. package/src/adw-bin.spec.ts +4 -3
  39. package/src/adw-header-bar.spec.ts +18 -0
  40. package/src/adw-toast-overlay.spec.ts +68 -24
  41. package/src/application.spec.ts +45 -0
  42. package/src/application.ts +15 -18
  43. package/src/capabilities.mjs +1 -3
  44. package/src/child-slot.spec.ts +71 -0
  45. package/src/construct-vectors.spec.ts +51 -6
  46. package/src/container-fill.spec.ts +70 -0
  47. package/src/elements/adw-alert-dialog.ts +174 -44
  48. package/src/elements/adw-application-window.ts +0 -3
  49. package/src/elements/adw-breakpoint-bin.ts +3 -0
  50. package/src/elements/adw-dialog.ts +3 -1
  51. package/src/elements/adw-header-bar.ts +4 -0
  52. package/src/elements/adw-toast-overlay.ts +35 -69
  53. package/src/elements/adw-window-features.ts +14 -2
  54. package/src/elements/gtk-application-window.ts +3 -8
  55. package/src/elements/gtk-drag-icon.ts +4 -0
  56. package/src/elements/gtk-emoji-chooser.ts +5 -0
  57. package/src/elements/gtk-flow-box-child.ts +3 -1
  58. package/src/elements/gtk-graphics-offload.ts +3 -1
  59. package/src/elements/gtk-image.ts +47 -6
  60. package/src/elements/gtk-list-box-row.ts +3 -1
  61. package/src/elements/gtk-overlay.ts +5 -4
  62. package/src/elements/gtk-paned.ts +7 -1
  63. package/src/elements/gtk-popover-bin.ts +3 -0
  64. package/src/elements/gtk-popover-menu.ts +5 -0
  65. package/src/elements/gtk-popover.ts +12 -0
  66. package/src/elements/gtk-search-bar.ts +5 -5
  67. package/src/elements/gtk-stack-page.ts +111 -0
  68. package/src/elements/gtk-stack.ts +50 -5
  69. package/src/elements/gtk-tree-expander.ts +3 -0
  70. package/src/elements/gtk-viewport.ts +4 -0
  71. package/src/elements/gtk-window-handle.ts +4 -0
  72. package/src/elements/gtk-window.ts +55 -6
  73. package/src/gio-resource.spec.ts +137 -0
  74. package/src/gobject-elements.ts +28 -0
  75. package/src/gtk-stack.spec.ts +170 -0
  76. package/src/icon-theme.spec.ts +8 -3
  77. package/src/icon-theme.ts +102 -18
  78. package/src/index.ts +2 -2
  79. package/src/keyboard-operable.spec.ts +3 -3
  80. package/src/learn6502-window.spec.ts +113 -0
  81. package/src/namespace/adw.ts +1 -1
  82. package/src/namespace/gio.ts +10 -0
  83. package/src/namespace/gtk.ts +2 -0
  84. package/src/shared-tree-builder.ts +105 -10
  85. package/src/shared-trees.spec.ts +15 -1
  86. package/src/slotted-children.spec.ts +24 -0
  87. package/src/slotted-children.ts +18 -2
  88. package/src/styles.generated.ts +1 -1
  89. package/src/test.browser.mts +12 -0
  90. package/src/value-lists.spec.ts +3 -3
  91. package/src/widget-visible.spec.ts +104 -0
  92. package/src/window-maximize.spec.ts +93 -0
package/README.md CHANGED
@@ -106,24 +106,28 @@ the composition is an implementation detail.
106
106
  ### Toasts are queued, one at a time
107
107
 
108
108
  `<adw-toast-overlay>` follows `Adw.ToastOverlay`: it shows **exactly one** toast
109
- and queues the rest FIFO. Each queued toast is shown only after the visible one
110
- is dismissed — by its timeout, by its close button, by its action button, or by
111
- `dismiss()`.
109
+ and queues the rest; a `priority: Adw.ToastPriority.HIGH` toast goes ahead of the
110
+ visible one. Each queued toast is shown only after the visible one is dismissed —
111
+ by its timeout, by its close button, by its action button, or by `toast.dismiss()`.
112
112
 
113
113
  ```typescript
114
+ import { Adw } from '@gjsify/adwaita-web';
115
+
114
116
  const overlay = document.querySelector('adw-toast-overlay');
115
117
 
116
- overlay.addToast('File moved to Trash', { timeout: 3, buttonLabel: 'Undo', onAction: undo });
117
- overlay.addToast('Second file moved'); // waits its turn — not shown yet
118
+ const toast = new Adw.Toast({ title: 'File moved to Trash', timeout: 3, button_label: 'Undo' });
119
+ toast.connect('button-clicked', undo);
120
+ overlay.add_toast(toast);
121
+ overlay.add_toast(new Adw.Toast({ title: 'Second file moved' })); // waits its turn
118
122
 
119
123
  overlay.currentToast?.title; // 'File moved to Trash'
120
124
  overlay.pendingToasts; // 1
121
125
 
122
- overlay.dismiss(); // show the next queued toast now
123
- overlay.clearToasts(); // dismiss the visible one and drop the queue
126
+ toast.dismiss(); // show the next queued toast now
127
+ overlay.dismiss_all(); // dismiss the visible one and everything queued
124
128
  ```
125
129
 
126
- `addToast()`'s `timeout` is in **seconds** (mirroring `Adw.Toast:timeout`); `0`
130
+ `Adw.Toast:timeout` is in **seconds**; `0`
127
131
  keeps the toast until it is dismissed and holds the queue behind it. The
128
132
  auto-dismiss runs on the browser's timers by default; assign
129
133
  `overlay.scheduler` a custom `ToastScheduler` (the seam `@gjsify/adwaita-core`
@@ -319,22 +323,43 @@ registerColorIcon('org.example.Other', '/icons/other.png'); // …or an image UR
319
323
  Every `<gtk-image>` asking for a registered name draws the image unmasked and unrecoloured,
320
324
  which covers every widget that draws its icons through it, `<adw-about-dialog>` and
321
325
  `<gtk-about-dialog logo-icon-name>` among them. A name is looked up in the order GTK's own
322
- theme tries it (`g_themed_icon_update_names`):
326
+ theme tries it (`g_themed_icon_update_names`, then gtkicontheme.c's theme order). A colour
327
+ registration is hicolor's, so the current theme's symbolic glyph comes first either way:
323
328
 
324
329
  | Asked for | Tried, in order | Neither found |
325
330
  | --- | --- | --- |
326
- | `X` | colour `X`, then symbolic `X-symbolic` | `image-missing` |
331
+ | `X` | symbolic `X-symbolic`, then colour `X` | `image-missing` |
327
332
  | `X-symbolic` | symbolic `X-symbolic`, then colour `X` | `image-missing` |
328
333
 
329
- So nothing changes for a name with no colour registration. `registerColorIcon` keys on the
334
+ So nothing changes for a name with no colour registration, and a colour `X` shows only where the
335
+ theme has no `X-symbolic` — the same as on GNOME. `registerColorIcon` keys on the
330
336
  **exact** name, reverse-DNS IDs included, and *throws* on an empty or spaced name, on a
331
337
  `-symbolic` (`-ltr`/`-rtl`) name — that is `registerIcon`'s half — and on a source that is
332
338
  neither SVG source nor an `http(s):`, `blob:`, `file:` or `data:image/` URL. A registration
333
339
  redraws every mounted `<gtk-image>`, and `isIconAvailable` answers `true` for the name.
334
340
 
335
- `Gtk.IconTheme.add_resource_path` and `add_search_path` stay records only on the web: there
336
- is no GResource and no file system to search, so a registration is the one way a colour
337
- icon gets in.
341
+ ### Icons from the app's GResource (ADR 0116)
342
+
343
+ The way GNOME takes: the app's compiled `.gresource`, registered with the GIO calls it already
344
+ makes on GJS. `Gtk.Application` adds `<resource-base-path>/icons/` to the icon theme at startup
345
+ (`resource-base-path` defaults to `/` + the application ID with `.` as `/`), so an app that
346
+ registers before `run()` needs nothing else:
347
+
348
+ ```typescript
349
+ import { Gio } from '@gjsify/adwaita-web';
350
+
351
+ Gio.resources_register(Gio.Resource.new_from_data(bytes)); // bytes: the embedded .gresource
352
+ ```
353
+
354
+ `Gtk.IconTheme.get_for_display(null).add_resource_path(path)` adds a path by hand. Under a path
355
+ the lookup follows `gtkicontheme.c`: hicolor subdirectories (`16x16/apps/`, `scalable/apps/`,
356
+ `symbolic/apps/`, …, without a `hicolor/` component) by size and scale, then files directly
357
+ under the path. A compiled symbolic glyph still answers a `-symbolic` name first. A `-symbolic`
358
+ file draws as a mask in `currentColor`, any other SVG or PNG as it is; an XPM or a compressed
359
+ entry draws `image-missing` with a warning. After a colour registration, a resource is the next
360
+ answer, so `registerColorIcon` still wins for its name. If the resource holds `gtk/menus.ui`
361
+ or `gtk/help-overlay.ui` under the base path, startup throws: no builder here reads them yet.
362
+ `add_search_path` stays a record, since there is no file system to search.
338
363
 
339
364
  ### Why this is a web-only concern
340
365
 
@@ -345,7 +370,7 @@ knowing which one you are on:
345
370
  | --- | --- | --- |
346
371
  | GTK (`@gjsify/adwaita-app`) | `GtkIconTheme` looks it up in the **system** icon theme at runtime | draws the theme's `image-missing` |
347
372
  | NativeScript (`@gjsify/adwaita-nativescript`) | `GtkImage` is handed the **SVG source**, not a name | cannot happen — a missing icon is a missing import |
348
- | Web (this package) | a **compile-time** subset, plus `registerIcon` / `registerColorIcon` | draws `image-missing` |
373
+ | Web (this package) | a **compile-time** subset, the `Gtk.IconTheme` resource paths, plus `registerIcon` / `registerColorIcon` | draws `image-missing` |
349
374
 
350
375
  All three therefore end on ONE glyph for a name they cannot draw. The web reaches it by two
351
376
  routes — no mask class for a known-shaped name, or no usable class for a name like
@@ -696,7 +696,7 @@
696
696
  font-size: var(--font-size-base);
697
697
  }
698
698
 
699
- adw-about-dialog, adw-action-row, adw-alert-dialog, adw-alert-response, adw-application-window, adw-avatar, adw-banner, adw-bin, adw-bottom-sheet, adw-bottom-sheet-bottom-bar, adw-bottom-sheet-content, adw-bottom-sheet-sheet, adw-breakpoint-bin, adw-button-content, adw-button-row, adw-card, adw-carousel, adw-carousel-indicator-dots, adw-carousel-indicator-lines, adw-clamp, adw-clamp-scrollable, adw-combo-row, adw-data-grid, adw-dialog, adw-entry-row, adw-expander-row, adw-header-bar, adw-inline-view-switcher, adw-layout-slot, adw-multi-layout-view, adw-navigation-page, adw-navigation-split-view, adw-navigation-view, adw-overlay-split-view, adw-password-entry-row, adw-preferences-dialog, adw-preferences-group, adw-preferences-page, adw-preferences-row, adw-radio, adw-shortcut-label, adw-shortcuts-dialog, adw-shortcuts-item, adw-shortcuts-section, adw-sidebar, adw-sidebar-item, adw-sidebar-section, adw-source-view, adw-spin-row, adw-spinner, adw-split-button, adw-status-page, adw-switch-row, adw-tab-bar, adw-tab-button, adw-tab-overview, adw-tab-page, adw-tab-view, adw-toast-overlay, adw-toggle, adw-toggle-group, adw-toolbar-view, gtk-notebook, adw-view-stack, adw-view-stack-page, adw-view-switcher, adw-view-switcher-bar, adw-view-switcher-page, adw-view-switcher-sidebar, adw-window, adw-window-title, adw-wrap-box, gtk-about-dialog, gtk-action-bar, gtk-application-window, gtk-aspect-frame, gtk-box, gtk-button, gtk-center-box, gtk-calendar, gtk-check-button, gtk-color-dialog-button, gtk-column-view, gtk-drag-icon, gtk-drawing-area, gtk-drop-down, gtk-editable-label, gtk-emoji-chooser, gtk-entry, gtk-expander, gtk-fixed, gtk-flow-box, gtk-flow-box-child, gtk-font-dialog-button, gtk-frame, gtk-gl-area, gtk-graphics-offload, gtk-grid, gtk-grid-view, gtk-header-bar, gtk-image, gtk-inscription, gtk-label, gtk-level-bar, gtk-link-button, gtk-list-box, gtk-list-box-row, gtk-list-view, gtk-media-controls, gtk-menu-button, gtk-overlay, gtk-page-setup-unix-dialog, gtk-paned, gtk-password-entry, gtk-picture, gtk-popover, gtk-popover-bin, gtk-popover-menu, gtk-popover-menu-bar, gtk-print-unix-dialog, gtk-progress-bar, gtk-revealer, gtk-scale, gtk-scale-button, gtk-scrollbar, gtk-scrolled-window, gtk-search-bar, gtk-search-entry, gtk-separator, gtk-source-view, gtk-spin-button, gtk-spinner, gtk-stack, gtk-stack-sidebar, gtk-stack-switcher, gtk-switch, gtk-text, gtk-text-view, gtk-toggle-button, gtk-tree-expander, gtk-video, gtk-viewport, gtk-window, gtk-window-controls, gtk-window-handle {
699
+ adw-about-dialog, adw-action-row, adw-alert-dialog, adw-alert-response, adw-application-window, adw-avatar, adw-banner, adw-bin, adw-bottom-sheet, adw-bottom-sheet-bottom-bar, adw-bottom-sheet-content, adw-bottom-sheet-sheet, adw-breakpoint-bin, adw-button-content, adw-button-row, adw-card, adw-carousel, adw-carousel-indicator-dots, adw-carousel-indicator-lines, adw-clamp, adw-clamp-scrollable, adw-combo-row, adw-data-grid, adw-dialog, adw-entry-row, adw-expander-row, adw-header-bar, adw-inline-view-switcher, adw-layout-slot, adw-multi-layout-view, adw-navigation-page, adw-navigation-split-view, adw-navigation-view, adw-overlay-split-view, adw-password-entry-row, adw-preferences-dialog, adw-preferences-group, adw-preferences-page, adw-preferences-row, adw-radio, adw-shortcut-label, adw-shortcuts-dialog, adw-shortcuts-item, adw-shortcuts-section, adw-sidebar, adw-sidebar-item, adw-sidebar-section, adw-source-view, adw-spin-row, adw-spinner, adw-split-button, adw-status-page, adw-switch-row, adw-tab-bar, adw-tab-button, adw-tab-overview, adw-tab-page, adw-tab-view, adw-toast-overlay, adw-toggle, adw-toggle-group, adw-toolbar-view, gtk-notebook, adw-view-stack, adw-view-stack-page, adw-view-switcher, adw-view-switcher-bar, adw-view-switcher-page, adw-view-switcher-sidebar, adw-window, adw-window-title, adw-wrap-box, gtk-about-dialog, gtk-action-bar, gtk-application-window, gtk-aspect-frame, gtk-box, gtk-button, gtk-center-box, gtk-calendar, gtk-check-button, gtk-color-dialog-button, gtk-column-view, gtk-drag-icon, gtk-drawing-area, gtk-drop-down, gtk-editable-label, gtk-emoji-chooser, gtk-entry, gtk-expander, gtk-fixed, gtk-flow-box, gtk-flow-box-child, gtk-font-dialog-button, gtk-frame, gtk-gl-area, gtk-graphics-offload, gtk-grid, gtk-grid-view, gtk-header-bar, gtk-image, gtk-inscription, gtk-label, gtk-level-bar, gtk-link-button, gtk-list-box, gtk-list-box-row, gtk-list-view, gtk-media-controls, gtk-menu-button, gtk-overlay, gtk-page-setup-unix-dialog, gtk-paned, gtk-password-entry, gtk-picture, gtk-popover, gtk-popover-bin, gtk-popover-menu, gtk-popover-menu-bar, gtk-print-unix-dialog, gtk-progress-bar, gtk-revealer, gtk-scale, gtk-scale-button, gtk-scrollbar, gtk-scrolled-window, gtk-search-bar, gtk-search-entry, gtk-separator, gtk-source-view, gtk-spin-button, gtk-spinner, gtk-stack, gtk-stack-page, gtk-stack-sidebar, gtk-stack-switcher, gtk-switch, gtk-text, gtk-text-view, gtk-toggle-button, gtk-tree-expander, gtk-video, gtk-viewport, gtk-window, gtk-window-controls, gtk-window-handle {
700
700
  box-sizing: border-box;
701
701
  color: var(--window-fg-color);
702
702
  font-family: var(--font-family);
@@ -713,7 +713,7 @@ adw-about-dialog, adw-action-row, adw-alert-dialog, adw-alert-response, adw-appl
713
713
  text-shadow: none;
714
714
  }
715
715
 
716
- :where(adw-about-dialog, adw-action-row, adw-alert-dialog, adw-alert-response, adw-application-window, adw-avatar, adw-banner, adw-bin, adw-bottom-sheet, adw-bottom-sheet-bottom-bar, adw-bottom-sheet-content, adw-bottom-sheet-sheet, adw-breakpoint-bin, adw-button-content, adw-button-row, adw-card, adw-carousel, adw-carousel-indicator-dots, adw-carousel-indicator-lines, adw-clamp, adw-clamp-scrollable, adw-combo-row, adw-data-grid, adw-dialog, adw-entry-row, adw-expander-row, adw-header-bar, adw-inline-view-switcher, adw-layout-slot, adw-multi-layout-view, adw-navigation-page, adw-navigation-split-view, adw-navigation-view, adw-overlay-split-view, adw-password-entry-row, adw-preferences-dialog, adw-preferences-group, adw-preferences-page, adw-preferences-row, adw-radio, adw-shortcut-label, adw-shortcuts-dialog, adw-shortcuts-item, adw-shortcuts-section, adw-sidebar, adw-sidebar-item, adw-sidebar-section, adw-source-view, adw-spin-row, adw-spinner, adw-split-button, adw-status-page, adw-switch-row, adw-tab-bar, adw-tab-button, adw-tab-overview, adw-tab-page, adw-tab-view, adw-toast-overlay, adw-toggle, adw-toggle-group, adw-toolbar-view, gtk-notebook, adw-view-stack, adw-view-stack-page, adw-view-switcher, adw-view-switcher-bar, adw-view-switcher-page, adw-view-switcher-sidebar, adw-window, adw-window-title, adw-wrap-box, gtk-about-dialog, gtk-action-bar, gtk-application-window, gtk-aspect-frame, gtk-box, gtk-button, gtk-center-box, gtk-calendar, gtk-check-button, gtk-color-dialog-button, gtk-column-view, gtk-drag-icon, gtk-drawing-area, gtk-drop-down, gtk-editable-label, gtk-emoji-chooser, gtk-entry, gtk-expander, gtk-fixed, gtk-flow-box, gtk-flow-box-child, gtk-font-dialog-button, gtk-frame, gtk-gl-area, gtk-graphics-offload, gtk-grid, gtk-grid-view, gtk-header-bar, gtk-image, gtk-inscription, gtk-label, gtk-level-bar, gtk-link-button, gtk-list-box, gtk-list-box-row, gtk-list-view, gtk-media-controls, gtk-menu-button, gtk-overlay, gtk-page-setup-unix-dialog, gtk-paned, gtk-password-entry, gtk-picture, gtk-popover, gtk-popover-bin, gtk-popover-menu, gtk-popover-menu-bar, gtk-print-unix-dialog, gtk-progress-bar, gtk-revealer, gtk-scale, gtk-scale-button, gtk-scrollbar, gtk-scrolled-window, gtk-search-bar, gtk-search-entry, gtk-separator, gtk-source-view, gtk-spin-button, gtk-spinner, gtk-stack, gtk-stack-sidebar, gtk-stack-switcher, gtk-switch, gtk-text, gtk-text-view, gtk-toggle-button, gtk-tree-expander, gtk-video, gtk-viewport, gtk-window, gtk-window-controls, gtk-window-handle) :is(gtk-box, gtk-label, adw-button-content) {
716
+ :where(adw-about-dialog, adw-action-row, adw-alert-dialog, adw-alert-response, adw-application-window, adw-avatar, adw-banner, adw-bin, adw-bottom-sheet, adw-bottom-sheet-bottom-bar, adw-bottom-sheet-content, adw-bottom-sheet-sheet, adw-breakpoint-bin, adw-button-content, adw-button-row, adw-card, adw-carousel, adw-carousel-indicator-dots, adw-carousel-indicator-lines, adw-clamp, adw-clamp-scrollable, adw-combo-row, adw-data-grid, adw-dialog, adw-entry-row, adw-expander-row, adw-header-bar, adw-inline-view-switcher, adw-layout-slot, adw-multi-layout-view, adw-navigation-page, adw-navigation-split-view, adw-navigation-view, adw-overlay-split-view, adw-password-entry-row, adw-preferences-dialog, adw-preferences-group, adw-preferences-page, adw-preferences-row, adw-radio, adw-shortcut-label, adw-shortcuts-dialog, adw-shortcuts-item, adw-shortcuts-section, adw-sidebar, adw-sidebar-item, adw-sidebar-section, adw-source-view, adw-spin-row, adw-spinner, adw-split-button, adw-status-page, adw-switch-row, adw-tab-bar, adw-tab-button, adw-tab-overview, adw-tab-page, adw-tab-view, adw-toast-overlay, adw-toggle, adw-toggle-group, adw-toolbar-view, gtk-notebook, adw-view-stack, adw-view-stack-page, adw-view-switcher, adw-view-switcher-bar, adw-view-switcher-page, adw-view-switcher-sidebar, adw-window, adw-window-title, adw-wrap-box, gtk-about-dialog, gtk-action-bar, gtk-application-window, gtk-aspect-frame, gtk-box, gtk-button, gtk-center-box, gtk-calendar, gtk-check-button, gtk-color-dialog-button, gtk-column-view, gtk-drag-icon, gtk-drawing-area, gtk-drop-down, gtk-editable-label, gtk-emoji-chooser, gtk-entry, gtk-expander, gtk-fixed, gtk-flow-box, gtk-flow-box-child, gtk-font-dialog-button, gtk-frame, gtk-gl-area, gtk-graphics-offload, gtk-grid, gtk-grid-view, gtk-header-bar, gtk-image, gtk-inscription, gtk-label, gtk-level-bar, gtk-link-button, gtk-list-box, gtk-list-box-row, gtk-list-view, gtk-media-controls, gtk-menu-button, gtk-overlay, gtk-page-setup-unix-dialog, gtk-paned, gtk-password-entry, gtk-picture, gtk-popover, gtk-popover-bin, gtk-popover-menu, gtk-popover-menu-bar, gtk-print-unix-dialog, gtk-progress-bar, gtk-revealer, gtk-scale, gtk-scale-button, gtk-scrollbar, gtk-scrolled-window, gtk-search-bar, gtk-search-entry, gtk-separator, gtk-source-view, gtk-spin-button, gtk-spinner, gtk-stack, gtk-stack-page, gtk-stack-sidebar, gtk-stack-switcher, gtk-switch, gtk-text, gtk-text-view, gtk-toggle-button, gtk-tree-expander, gtk-video, gtk-viewport, gtk-window, gtk-window-controls, gtk-window-handle) :is(gtk-box, gtk-label, adw-button-content) {
717
717
  color: inherit;
718
718
  font-family: inherit;
719
719
  font-size: inherit;
@@ -1525,6 +1525,12 @@ gtk-stack *::after {
1525
1525
  box-sizing: border-box;
1526
1526
  }
1527
1527
 
1528
+ gtk-stack-page *,
1529
+ gtk-stack-page *::before,
1530
+ gtk-stack-page *::after {
1531
+ box-sizing: border-box;
1532
+ }
1533
+
1528
1534
  gtk-stack-sidebar *,
1529
1535
  gtk-stack-sidebar *::before,
1530
1536
  gtk-stack-sidebar *::after {
@@ -2105,6 +2111,12 @@ adw-application-window.fullscreen {
2105
2111
  outline: none;
2106
2112
  box-shadow: none;
2107
2113
  }
2114
+ adw-window[maximized]:not([maximized=false]), adw-window[fullscreened]:not([fullscreened=false]),
2115
+ adw-application-window[maximized]:not([maximized=false]),
2116
+ adw-application-window[fullscreened]:not([fullscreened=false]) {
2117
+ width: 100%;
2118
+ height: 100%;
2119
+ }
2108
2120
  adw-window[hidden],
2109
2121
  adw-application-window[hidden] {
2110
2122
  display: none;
@@ -2146,6 +2158,12 @@ gtk-application-window.fullscreen {
2146
2158
  outline: none;
2147
2159
  box-shadow: none;
2148
2160
  }
2161
+ gtk-window[maximized]:not([maximized=false]), gtk-window[fullscreened]:not([fullscreened=false]),
2162
+ gtk-application-window[maximized]:not([maximized=false]),
2163
+ gtk-application-window[fullscreened]:not([fullscreened=false]) {
2164
+ width: 100%;
2165
+ height: 100%;
2166
+ }
2149
2167
  gtk-window > .adw-gtk-window-titlebar,
2150
2168
  gtk-application-window > .adw-gtk-window-titlebar {
2151
2169
  display: flex;
@@ -3913,13 +3931,17 @@ gtk-drag-icon .adw-drag-icon-swatch {
3913
3931
  }
3914
3932
 
3915
3933
  gtk-overlay {
3916
- display: block;
3934
+ display: flex;
3935
+ flex-direction: column;
3917
3936
  position: relative;
3918
3937
  }
3919
3938
 
3920
3939
  .adw-overlay-child {
3921
3940
  display: contents;
3922
3941
  }
3942
+ .adw-overlay-child > * {
3943
+ flex: 1 1 auto;
3944
+ }
3923
3945
 
3924
3946
  .adw-overlay-layer {
3925
3947
  position: absolute;
@@ -5390,10 +5412,11 @@ adw-card,
5390
5412
  }
5391
5413
 
5392
5414
  adw-bin {
5393
- display: block;
5415
+ display: flex;
5416
+ flex-direction: column;
5394
5417
  }
5395
5418
  adw-bin > :only-child {
5396
- block-size: 100%;
5419
+ flex: 1 1 auto;
5397
5420
  }
5398
5421
 
5399
5422
  adw-clamp {
@@ -5423,12 +5446,12 @@ gtk-stack > .adw-stack-page.transitioning-in, gtk-stack > .adw-stack-page.transi
5423
5446
  display: flex;
5424
5447
  flex-direction: column;
5425
5448
  }
5426
- gtk-stack:not([hhomogeneous]) > .adw-stack-page {
5449
+ gtk-stack[hhomogeneous=false] > .adw-stack-page {
5427
5450
  flex: 0 1 auto;
5428
5451
  width: max-content;
5429
5452
  max-width: 100%;
5430
5453
  }
5431
- gtk-stack:not([vhomogeneous]) > .adw-stack-page {
5454
+ gtk-stack[vhomogeneous=false] > .adw-stack-page {
5432
5455
  height: max-content;
5433
5456
  max-height: 100%;
5434
5457
  }
@@ -6872,11 +6895,18 @@ adw-password-entry-row .adw-password-entry-row-toggle {
6872
6895
 
6873
6896
  adw-toast-overlay {
6874
6897
  position: relative;
6875
- display: block;
6898
+ display: flex;
6899
+ flex-direction: column;
6876
6900
  }
6877
6901
  adw-toast-overlay .adw-toast-overlay-content {
6902
+ display: flex;
6903
+ flex: 1 1 auto;
6904
+ flex-direction: column;
6905
+ min-height: 0;
6878
6906
  width: 100%;
6879
- height: 100%;
6907
+ }
6908
+ adw-toast-overlay .adw-toast-overlay-content > * {
6909
+ flex: 1 1 auto;
6880
6910
  }
6881
6911
  adw-toast-overlay .adw-toast-overlay-toasts {
6882
6912
  position: absolute;