@gjsify/adwaita-web 0.54.0 → 0.56.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 +8 -0
- package/dist/adwaita-web.css +8146 -3011
- package/dist/adwaita-web.css.map +1 -1
- package/lib/types/adw-application-window.spec.d.ts +1 -0
- package/lib/types/adw-bin.spec.d.ts +1 -0
- package/lib/types/adw-breakpoint-bin.spec.d.ts +1 -0
- package/lib/types/adw-clamp-scrollable.spec.d.ts +1 -0
- package/lib/types/adw-multi-layout-view.spec.d.ts +1 -0
- package/lib/types/adw-preferences-row.spec.d.ts +1 -0
- package/lib/types/adw-shortcuts.spec.d.ts +1 -0
- package/lib/types/adw-status-page.spec.d.ts +1 -0
- package/lib/types/adw-tab-bar.spec.d.ts +1 -0
- package/lib/types/adw-tab-button.spec.d.ts +1 -0
- package/lib/types/adw-tab-overview.spec.d.ts +1 -0
- package/lib/types/adw-view-switcher-sidebar.spec.d.ts +1 -0
- package/lib/types/adw-window.spec.d.ts +1 -0
- package/lib/types/attributes.d.ts +19 -0
- package/lib/types/breakpoints.d.ts +14 -3
- package/lib/types/construct-vectors.spec.d.ts +1 -0
- package/lib/types/elements/adw-action-row.d.ts +4 -0
- package/lib/types/elements/adw-application-window.d.ts +27 -0
- package/lib/types/elements/adw-bin.d.ts +17 -0
- package/lib/types/elements/adw-breakpoint-bin.d.ts +67 -0
- package/lib/types/elements/adw-clamp-scrollable.d.ts +38 -0
- package/lib/types/elements/adw-combo-row.d.ts +4 -0
- package/lib/types/elements/adw-dialog.d.ts +10 -0
- package/lib/types/elements/adw-entry-row.d.ts +6 -0
- package/lib/types/elements/adw-expander-row.d.ts +2 -0
- package/lib/types/elements/adw-header-bar.d.ts +6 -0
- package/lib/types/elements/adw-layout-slot.d.ts +19 -0
- package/lib/types/elements/adw-multi-layout-view.d.ts +101 -0
- package/lib/types/elements/adw-overlay-split-view.d.ts +13 -0
- package/lib/types/elements/adw-preferences-row.d.ts +31 -0
- package/lib/types/elements/adw-shortcuts-dialog.d.ts +13 -0
- package/lib/types/elements/adw-shortcuts-item.d.ts +36 -0
- package/lib/types/elements/adw-shortcuts-section.d.ts +14 -0
- package/lib/types/elements/adw-sidebar.d.ts +8 -2
- package/lib/types/elements/adw-spin-row.d.ts +6 -0
- package/lib/types/elements/adw-switch-row.d.ts +7 -0
- package/lib/types/elements/adw-tab-bar.d.ts +108 -0
- package/lib/types/elements/adw-tab-button.d.ts +32 -0
- package/lib/types/elements/adw-tab-overview.d.ts +199 -0
- package/lib/types/elements/adw-tab-view.d.ts +19 -23
- package/lib/types/elements/adw-toggle-group.d.ts +17 -0
- package/lib/types/elements/adw-view-switcher-sidebar.d.ts +84 -0
- package/lib/types/elements/adw-window.d.ts +40 -0
- package/lib/types/elements/gtk-about-dialog.d.ts +146 -0
- package/lib/types/elements/gtk-application-window.d.ts +34 -0
- package/lib/types/elements/gtk-aspect-frame.d.ts +27 -0
- package/lib/types/elements/gtk-button.d.ts +9 -0
- package/lib/types/elements/gtk-calendar.d.ts +159 -0
- package/lib/types/elements/gtk-center-box.d.ts +39 -0
- package/lib/types/elements/gtk-color-dialog-button.d.ts +69 -0
- package/lib/types/elements/gtk-column-view.d.ts +50 -0
- package/lib/types/elements/gtk-drag-icon.d.ts +78 -0
- package/lib/types/elements/gtk-drawing-area.d.ts +95 -0
- package/lib/types/elements/gtk-editable-label.d.ts +33 -0
- package/lib/types/elements/gtk-emoji-chooser.d.ts +84 -0
- package/lib/types/elements/gtk-entry.d.ts +20 -1
- package/lib/types/elements/gtk-expander.d.ts +49 -0
- package/lib/types/elements/gtk-fixed.d.ts +13 -0
- package/lib/types/elements/gtk-flow-box-child.d.ts +14 -0
- package/lib/types/elements/gtk-flow-box.d.ts +87 -0
- package/lib/types/elements/gtk-font-dialog-button.d.ts +83 -0
- package/lib/types/elements/gtk-frame.d.ts +24 -0
- package/lib/types/elements/gtk-gl-area.d.ts +136 -0
- package/lib/types/elements/gtk-graphics-offload.d.ts +24 -0
- package/lib/types/elements/gtk-grid-view.d.ts +39 -0
- package/lib/types/elements/gtk-grid.d.ts +27 -0
- package/lib/types/elements/gtk-header-bar.d.ts +60 -0
- package/lib/types/elements/gtk-inscription.d.ts +64 -0
- package/lib/types/elements/gtk-label.d.ts +3 -0
- package/lib/types/elements/gtk-level-bar.d.ts +59 -0
- package/lib/types/elements/gtk-link-button.d.ts +29 -0
- package/lib/types/elements/gtk-list-box-row.d.ts +54 -0
- package/lib/types/elements/gtk-list-box.d.ts +100 -0
- package/lib/types/elements/gtk-list-view.d.ts +73 -0
- package/lib/types/elements/gtk-media-controls.d.ts +142 -0
- package/lib/types/elements/gtk-notebook.d.ts +148 -0
- package/lib/types/elements/gtk-overlay.d.ts +22 -0
- package/lib/types/elements/gtk-page-setup-unix-dialog.d.ts +87 -0
- package/lib/types/elements/gtk-paned.d.ts +121 -0
- package/lib/types/elements/gtk-password-entry.d.ts +27 -0
- package/lib/types/elements/gtk-picture.d.ts +66 -0
- package/lib/types/elements/gtk-popover-bin.d.ts +82 -0
- package/lib/types/elements/gtk-popover-menu-bar.d.ts +66 -0
- package/lib/types/elements/gtk-popover-menu.d.ts +83 -0
- package/lib/types/elements/gtk-popover.d.ts +28 -3
- package/lib/types/elements/gtk-print-unix-dialog.d.ts +167 -0
- package/lib/types/elements/gtk-revealer.d.ts +55 -0
- package/lib/types/elements/gtk-scale-button.d.ts +59 -0
- package/lib/types/elements/gtk-scale.d.ts +98 -0
- package/lib/types/elements/gtk-scrollbar.d.ts +124 -0
- package/lib/types/elements/gtk-scrolled-window.d.ts +129 -0
- package/lib/types/elements/gtk-search-bar.d.ts +39 -0
- package/lib/types/elements/gtk-search-entry.d.ts +27 -0
- package/lib/types/elements/gtk-separator.d.ts +10 -0
- package/lib/types/elements/gtk-spin-button.d.ts +94 -0
- package/lib/types/elements/gtk-spinner.d.ts +14 -0
- package/lib/types/elements/gtk-stack-sidebar.d.ts +43 -0
- package/lib/types/elements/gtk-stack-switcher.d.ts +58 -0
- package/lib/types/elements/gtk-stack.d.ts +154 -0
- package/lib/types/elements/gtk-switch.d.ts +4 -1
- package/lib/types/elements/gtk-text-view.d.ts +62 -0
- package/lib/types/elements/gtk-text.d.ts +45 -0
- package/lib/types/elements/gtk-toggle-button.d.ts +45 -0
- package/lib/types/elements/gtk-tree-expander.d.ts +38 -0
- package/lib/types/elements/gtk-video.d.ts +97 -0
- package/lib/types/elements/gtk-viewport.d.ts +84 -0
- package/lib/types/elements/gtk-window-controls.d.ts +80 -0
- package/lib/types/elements/gtk-window-handle.d.ts +39 -0
- package/lib/types/elements/gtk-window.d.ts +103 -0
- package/lib/types/elements/justification.d.ts +2 -0
- package/lib/types/elements/popover-menu.d.ts +18 -0
- package/lib/types/elements/roving-focus.d.ts +29 -1
- package/lib/types/emoji-data.d.ts +38 -0
- package/lib/types/font-description.d.ts +96 -0
- package/lib/types/gtk-about-dialog.spec.d.ts +1 -0
- package/lib/types/gtk-action-bar.spec.d.ts +1 -0
- package/lib/types/gtk-application-window.spec.d.ts +1 -0
- package/lib/types/gtk-aspect-frame.spec.d.ts +1 -0
- package/lib/types/gtk-calendar.spec.d.ts +1 -0
- package/lib/types/gtk-center-box.spec.d.ts +1 -0
- package/lib/types/gtk-color-dialog-button.spec.d.ts +1 -0
- package/lib/types/gtk-column-view.spec.d.ts +1 -0
- package/lib/types/gtk-drag-icon.spec.d.ts +1 -0
- package/lib/types/gtk-drawing-area.spec.d.ts +1 -0
- package/lib/types/gtk-editable-label.spec.d.ts +1 -0
- package/lib/types/gtk-emoji-chooser.spec.d.ts +1 -0
- package/lib/types/gtk-expander.spec.d.ts +1 -0
- package/lib/types/gtk-fixed.spec.d.ts +1 -0
- package/lib/types/gtk-flow-box.spec.d.ts +1 -0
- package/lib/types/gtk-font-dialog-button.spec.d.ts +1 -0
- package/lib/types/gtk-frame.spec.d.ts +1 -0
- package/lib/types/gtk-gl-area.spec.d.ts +1 -0
- package/lib/types/gtk-graphics-offload.spec.d.ts +1 -0
- package/lib/types/gtk-grid-view.spec.d.ts +1 -0
- package/lib/types/gtk-grid.spec.d.ts +1 -0
- package/lib/types/gtk-header-bar.spec.d.ts +1 -0
- package/lib/types/gtk-inscription.spec.d.ts +1 -0
- package/lib/types/gtk-level-bar.spec.d.ts +1 -0
- package/lib/types/gtk-link-button.spec.d.ts +1 -0
- package/lib/types/gtk-list-box.spec.d.ts +1 -0
- package/lib/types/gtk-list-view.spec.d.ts +1 -0
- package/lib/types/gtk-media-controls.spec.d.ts +1 -0
- package/lib/types/gtk-notebook.spec.d.ts +1 -0
- package/lib/types/gtk-overlay.spec.d.ts +1 -0
- package/lib/types/gtk-paned.spec.d.ts +1 -0
- package/lib/types/gtk-password-entry.spec.d.ts +1 -0
- package/lib/types/gtk-picture.spec.d.ts +1 -0
- package/lib/types/gtk-popover-bin.spec.d.ts +1 -0
- package/lib/types/gtk-popover-menu-bar.spec.d.ts +1 -0
- package/lib/types/gtk-popover-menu.spec.d.ts +1 -0
- package/lib/types/gtk-popover-role.spec.d.ts +1 -0
- package/lib/types/gtk-popover.spec.d.ts +1 -0
- package/lib/types/gtk-print-dialogs.spec.d.ts +1 -0
- package/lib/types/gtk-revealer.spec.d.ts +1 -0
- package/lib/types/gtk-scale-button.spec.d.ts +1 -0
- package/lib/types/gtk-scale.spec.d.ts +1 -0
- package/lib/types/gtk-scrollbar.spec.d.ts +1 -0
- package/lib/types/gtk-scrolled-window.spec.d.ts +1 -0
- package/lib/types/gtk-search-bar.spec.d.ts +1 -0
- package/lib/types/gtk-search-entry.spec.d.ts +1 -0
- package/lib/types/gtk-separator.spec.d.ts +1 -0
- package/lib/types/gtk-spin-button.spec.d.ts +1 -0
- package/lib/types/gtk-spinner.spec.d.ts +1 -0
- package/lib/types/gtk-stack-sidebar.spec.d.ts +1 -0
- package/lib/types/gtk-stack-switcher.spec.d.ts +1 -0
- package/lib/types/gtk-stack.spec.d.ts +1 -0
- package/lib/types/gtk-text-view.spec.d.ts +1 -0
- package/lib/types/gtk-text.spec.d.ts +1 -0
- package/lib/types/gtk-toggle-button.spec.d.ts +1 -0
- package/lib/types/gtk-tree-expander.spec.d.ts +1 -0
- package/lib/types/gtk-video.spec.d.ts +1 -0
- package/lib/types/gtk-viewport.spec.d.ts +1 -0
- package/lib/types/gtk-window-controls.spec.d.ts +1 -0
- package/lib/types/gtk-window-handle.spec.d.ts +1 -0
- package/lib/types/gtk-window.spec.d.ts +1 -0
- package/lib/types/index.d.ts +4 -1
- package/lib/types/list-view-dom.d.ts +44 -0
- package/lib/types/namespace/adw.d.ts +12 -0
- package/lib/types/namespace/gtk.d.ts +61 -0
- package/lib/types/page-setup.d.ts +100 -0
- package/lib/types/row-line-clamp.d.ts +20 -0
- package/lib/types/row-tooltip.d.ts +8 -0
- package/lib/types/row-tooltip.spec.d.ts +1 -0
- package/lib/types/scroll-shading.d.ts +15 -1
- package/lib/types/shared-tree-builder.d.ts +75 -17
- package/lib/types/shared-tree-mount.spec.d.ts +1 -0
- package/lib/types/signals.d.ts +4 -0
- package/lib/types/styles.generated.d.ts +1 -1
- package/lib/types/tab-chip.d.ts +73 -0
- package/lib/types/template-classes.d.ts +11 -0
- package/lib/types/widget-size.spec.d.ts +1 -0
- package/package.json +12 -8
- package/scss/_action_row.scss +41 -17
- package/scss/_application_window.scss +26 -0
- package/scss/_aspect_frame.scss +25 -0
- package/scss/_bin.scss +26 -0
- package/scss/_button.scss +45 -0
- package/scss/_button_row.scss +5 -0
- package/scss/_calendar.scss +176 -0
- package/scss/_center_box.scss +25 -0
- package/scss/_checks.scss +6 -1
- package/scss/_clamp_scrollable.scss +28 -0
- package/scss/_color_button.scss +67 -0
- package/scss/_column_view.scss +126 -0
- package/scss/_drag_icon.scss +55 -0
- package/scss/_drawing.scss +85 -0
- package/scss/_emoji_chooser.scss +213 -0
- package/scss/_entry.scss +13 -5
- package/scss/_entry_row.scss +1 -1
- package/scss/_expander.scss +113 -0
- package/scss/_expander_row.scss +36 -3
- package/scss/_fixed.scss +29 -0
- package/scss/_flow_box.scss +94 -0
- package/scss/_font_button.scss +63 -0
- package/scss/_frame.scss +41 -0
- package/scss/_grid.scss +19 -0
- package/scss/_grid_view.scss +46 -0
- package/scss/_gtk_about_dialog.scss +186 -0
- package/scss/_headerbar.scss +134 -1
- package/scss/_icons.generated.scss +186 -0
- package/scss/_inscription.scss +125 -0
- package/scss/_level_bar.scss +190 -0
- package/scss/_link.scss +82 -0
- package/scss/_list_box.scss +88 -0
- package/scss/_list_view.scss +96 -0
- package/scss/_media_controls.scss +139 -0
- package/scss/_overlay.scss +68 -0
- package/scss/_paned.scss +130 -0
- package/scss/_password_entry.scss +83 -0
- package/scss/_picture.scss +80 -0
- package/scss/_popover_bin.scss +53 -0
- package/scss/_popover_menu_bar.scss +104 -0
- package/scss/_preferences_row.scss +60 -0
- package/scss/_print_dialogs.scss +328 -0
- package/scss/_reset.scss +21 -19
- package/scss/_revealer.scss +37 -0
- package/scss/_row.scss +36 -5
- package/scss/_scale.scss +298 -0
- package/scss/_scale_button.scss +167 -0
- package/scss/_scrollbar.scss +230 -0
- package/scss/_scrolled_window.scss +131 -0
- package/scss/_search_bar.scss +118 -0
- package/scss/_search_entry.scss +86 -0
- package/scss/_separator.scss +44 -0
- package/scss/_shortcuts_dialog.scss +100 -0
- package/scss/_spin_button.scss +172 -0
- package/scss/_spin_row.scss +56 -8
- package/scss/_spinner.scss +85 -4
- package/scss/_stack.scss +729 -0
- package/scss/_status_page.scss +1 -1
- package/scss/_switch.scss +13 -5
- package/scss/_switch_row.scss +10 -0
- package/scss/_tab_bar.scss +317 -0
- package/scss/_tab_button.scss +98 -0
- package/scss/_tab_overview.scss +483 -0
- package/scss/_text.scss +182 -0
- package/scss/_theme.scss +1 -1
- package/scss/_toggle_group.scss +28 -0
- package/scss/_tree_expander.scss +62 -0
- package/scss/_variables.scss +1 -1
- package/scss/_video.scss +146 -0
- package/scss/_view_switcher_sidebar.scss +112 -0
- package/scss/_viewport.scss +50 -0
- package/scss/_widget.scss +14 -3
- package/scss/_window.scss +131 -2
- package/scss/_window_handle.scss +20 -0
- package/scss/adwaita-skin.scss +109 -0
- package/src/adw-action-rows.spec.ts +331 -0
- package/src/adw-application-window.spec.ts +118 -0
- package/src/adw-bin.spec.ts +75 -0
- package/src/adw-breakpoint-bin.spec.ts +324 -0
- package/src/adw-clamp-scrollable.spec.ts +189 -0
- package/src/adw-header-bar.spec.ts +18 -0
- package/src/adw-multi-layout-view.spec.ts +243 -0
- package/src/adw-preferences-row.spec.ts +164 -0
- package/src/adw-row-state.spec.ts +142 -0
- package/src/adw-shortcuts.spec.ts +155 -0
- package/src/adw-status-page.spec.ts +124 -0
- package/src/adw-tab-bar.spec.ts +287 -0
- package/src/adw-tab-button.spec.ts +101 -0
- package/src/adw-tab-overview.spec.ts +443 -0
- package/src/adw-view-switcher-sidebar.spec.ts +281 -0
- package/src/adw-window.spec.ts +129 -0
- package/src/attributes.ts +52 -0
- package/src/breakpoints.ts +25 -8
- package/src/capabilities.d.mts +3 -0
- package/src/capabilities.mjs +21 -0
- package/src/connect-lifecycle.spec.ts +12 -0
- package/src/construct-vectors.spec.ts +175 -0
- package/src/elements/adw-action-row.ts +31 -2
- package/src/elements/adw-alert-dialog.ts +4 -1
- package/src/elements/adw-application-window.ts +154 -0
- package/src/elements/adw-bin.ts +101 -0
- package/src/elements/adw-breakpoint-bin.ts +287 -0
- package/src/elements/adw-button-row.ts +7 -1
- package/src/elements/adw-clamp-scrollable.ts +207 -0
- package/src/elements/adw-combo-row.ts +26 -1
- package/src/elements/adw-dialog.ts +19 -0
- package/src/elements/adw-entry-row.ts +22 -12
- package/src/elements/adw-expander-row.ts +34 -1
- package/src/elements/adw-header-bar.ts +18 -4
- package/src/elements/adw-layout-slot.ts +95 -0
- package/src/elements/adw-multi-layout-view.ts +326 -0
- package/src/elements/adw-overlay-split-view.ts +29 -6
- package/src/elements/adw-preferences-row.ts +153 -0
- package/src/elements/adw-shortcuts-dialog.ts +52 -0
- package/src/elements/adw-shortcuts-item.ts +171 -0
- package/src/elements/adw-shortcuts-section.ts +86 -0
- package/src/elements/adw-sidebar.ts +74 -7
- package/src/elements/adw-spin-row.ts +37 -2
- package/src/elements/adw-status-page.ts +10 -2
- package/src/elements/adw-switch-row.ts +53 -2
- package/src/elements/adw-tab-bar.ts +529 -0
- package/src/elements/adw-tab-button.ts +194 -0
- package/src/elements/adw-tab-overview.ts +1011 -0
- package/src/elements/adw-tab-view.ts +66 -145
- package/src/elements/adw-toggle-group.ts +138 -14
- package/src/elements/adw-view-stack.ts +18 -0
- package/src/elements/adw-view-switcher-sidebar.ts +332 -0
- package/src/elements/adw-window.ts +190 -11
- package/src/elements/checks.ts +35 -8
- package/src/elements/gtk-about-dialog.ts +811 -0
- package/src/elements/gtk-application-window.ts +108 -0
- package/src/elements/gtk-aspect-frame.ts +160 -0
- package/src/elements/gtk-button.ts +12 -0
- package/src/elements/gtk-calendar.ts +757 -0
- package/src/elements/gtk-center-box.ts +184 -0
- package/src/elements/gtk-color-dialog-button.ts +278 -0
- package/src/elements/gtk-column-view.ts +320 -0
- package/src/elements/gtk-drag-icon.ts +257 -0
- package/src/elements/gtk-drawing-area.ts +303 -0
- package/src/elements/gtk-editable-label.ts +204 -0
- package/src/elements/gtk-emoji-chooser.ts +542 -0
- package/src/elements/gtk-entry.ts +39 -5
- package/src/elements/gtk-expander.ts +301 -0
- package/src/elements/gtk-fixed.ts +99 -0
- package/src/elements/gtk-flow-box-child.ts +68 -0
- package/src/elements/gtk-flow-box.ts +480 -0
- package/src/elements/gtk-font-dialog-button.ts +432 -0
- package/src/elements/gtk-frame.ts +174 -0
- package/src/elements/gtk-gl-area.ts +476 -0
- package/src/elements/gtk-graphics-offload.ts +130 -0
- package/src/elements/gtk-grid-view.ts +168 -0
- package/src/elements/gtk-grid.ts +127 -0
- package/src/elements/gtk-header-bar.ts +273 -0
- package/src/elements/gtk-inscription.ts +387 -0
- package/src/elements/gtk-label.ts +19 -11
- package/src/elements/gtk-level-bar.ts +323 -0
- package/src/elements/gtk-link-button.ts +138 -0
- package/src/elements/gtk-list-box-row.ts +195 -0
- package/src/elements/gtk-list-box.ts +413 -0
- package/src/elements/gtk-list-view.ts +370 -0
- package/src/elements/gtk-media-controls.ts +509 -0
- package/src/elements/gtk-notebook.ts +664 -0
- package/src/elements/gtk-overlay.ts +149 -0
- package/src/elements/gtk-page-setup-unix-dialog.ts +420 -0
- package/src/elements/gtk-paned.ts +597 -0
- package/src/elements/gtk-password-entry.ts +170 -0
- package/src/elements/gtk-picture.ts +254 -0
- package/src/elements/gtk-popover-bin.ts +332 -0
- package/src/elements/gtk-popover-menu-bar.ts +355 -0
- package/src/elements/gtk-popover-menu.ts +339 -0
- package/src/elements/gtk-popover.ts +92 -10
- package/src/elements/gtk-print-unix-dialog.ts +989 -0
- package/src/elements/gtk-progress-bar.ts +24 -11
- package/src/elements/gtk-revealer.ts +406 -0
- package/src/elements/gtk-scale-button.ts +358 -0
- package/src/elements/gtk-scale.ts +492 -0
- package/src/elements/gtk-scrollbar.ts +528 -0
- package/src/elements/gtk-scrolled-window.ts +653 -0
- package/src/elements/gtk-search-bar.ts +200 -0
- package/src/elements/gtk-search-entry.ts +172 -0
- package/src/elements/gtk-separator.ts +52 -0
- package/src/elements/gtk-spin-button.ts +475 -0
- package/src/elements/gtk-spinner.ts +126 -0
- package/src/elements/gtk-stack-sidebar.ts +212 -0
- package/src/elements/gtk-stack-switcher.ts +279 -0
- package/src/elements/gtk-stack.ts +748 -0
- package/src/elements/gtk-switch.ts +52 -19
- package/src/elements/gtk-text-view.ts +290 -0
- package/src/elements/gtk-text.ts +219 -0
- package/src/elements/gtk-toggle-button.ts +239 -0
- package/src/elements/gtk-tree-expander.ts +243 -0
- package/src/elements/gtk-video.ts +423 -0
- package/src/elements/gtk-viewport.ts +277 -0
- package/src/elements/gtk-window-controls.ts +341 -0
- package/src/elements/gtk-window-handle.ts +221 -0
- package/src/elements/gtk-window.ts +372 -0
- package/src/elements/justification.ts +24 -0
- package/src/elements/popover-menu.ts +24 -0
- package/src/elements/roving-focus.ts +53 -21
- package/src/emoji-data.ts +577 -0
- package/src/entry-rows.spec.ts +31 -0
- package/src/font-description.ts +238 -0
- package/src/gtk-about-dialog.spec.ts +250 -0
- package/src/gtk-action-bar.spec.ts +89 -0
- package/src/gtk-application-window.spec.ts +107 -0
- package/src/gtk-aspect-frame.spec.ts +114 -0
- package/src/gtk-calendar.spec.ts +589 -0
- package/src/gtk-center-box.spec.ts +125 -0
- package/src/gtk-color-dialog-button.spec.ts +141 -0
- package/src/gtk-column-view.spec.ts +154 -0
- package/src/gtk-drag-icon.spec.ts +190 -0
- package/src/gtk-drawing-area.spec.ts +211 -0
- package/src/gtk-editable-label.spec.ts +190 -0
- package/src/gtk-emoji-chooser.spec.ts +173 -0
- package/src/gtk-entry.spec.ts +23 -0
- package/src/gtk-expander.spec.ts +170 -0
- package/src/gtk-fixed.spec.ts +97 -0
- package/src/gtk-flow-box.spec.ts +289 -0
- package/src/gtk-font-dialog-button.spec.ts +166 -0
- package/src/gtk-frame.spec.ts +119 -0
- package/src/gtk-gl-area.spec.ts +361 -0
- package/src/gtk-graphics-offload.spec.ts +119 -0
- package/src/gtk-grid-view.spec.ts +106 -0
- package/src/gtk-grid.spec.ts +122 -0
- package/src/gtk-header-bar.spec.ts +202 -0
- package/src/gtk-inscription.spec.ts +235 -0
- package/src/gtk-level-bar.spec.ts +199 -0
- package/src/gtk-link-button.spec.ts +117 -0
- package/src/gtk-list-box.spec.ts +422 -0
- package/src/gtk-list-view.spec.ts +203 -0
- package/src/gtk-media-controls.spec.ts +295 -0
- package/src/gtk-notebook.spec.ts +546 -0
- package/src/gtk-overlay.spec.ts +141 -0
- package/src/gtk-paned.spec.ts +267 -0
- package/src/gtk-password-entry.spec.ts +150 -0
- package/src/gtk-picture.spec.ts +172 -0
- package/src/gtk-popover-bin.spec.ts +229 -0
- package/src/gtk-popover-menu-bar.spec.ts +296 -0
- package/src/gtk-popover-menu.spec.ts +261 -0
- package/src/gtk-popover-role.spec.ts +138 -0
- package/src/gtk-popover.spec.ts +264 -0
- package/src/gtk-print-dialogs.spec.ts +251 -0
- package/src/gtk-revealer.spec.ts +164 -0
- package/src/gtk-scale-button.spec.ts +218 -0
- package/src/gtk-scale.spec.ts +213 -0
- package/src/gtk-scrollbar.spec.ts +244 -0
- package/src/gtk-scrolled-window.spec.ts +262 -0
- package/src/gtk-search-bar.spec.ts +179 -0
- package/src/gtk-search-entry.spec.ts +142 -0
- package/src/gtk-separator.spec.ts +74 -0
- package/src/gtk-spin-button.spec.ts +186 -0
- package/src/gtk-spinner.spec.ts +130 -0
- package/src/gtk-stack-sidebar.spec.ts +217 -0
- package/src/gtk-stack-switcher.spec.ts +249 -0
- package/src/gtk-stack.spec.ts +432 -0
- package/src/gtk-text-view.spec.ts +189 -0
- package/src/gtk-text.spec.ts +163 -0
- package/src/gtk-toggle-button.spec.ts +186 -0
- package/src/gtk-tree-expander.spec.ts +201 -0
- package/src/gtk-video.spec.ts +240 -0
- package/src/gtk-viewport.spec.ts +140 -0
- package/src/gtk-window-controls.spec.ts +232 -0
- package/src/gtk-window-handle.spec.ts +158 -0
- package/src/gtk-window.spec.ts +202 -0
- package/src/index.ts +9 -1
- package/src/keyboard-operable.spec.ts +77 -9
- package/src/list-view-dom.ts +121 -0
- package/src/namespace/adw.ts +12 -0
- package/src/namespace/gtk.ts +61 -0
- package/src/page-setup.ts +222 -0
- package/src/row-line-clamp.ts +74 -0
- package/src/row-tooltip.spec.ts +313 -0
- package/src/row-tooltip.ts +52 -0
- package/src/scroll-shading.ts +18 -1
- package/src/shared-tree-builder.ts +336 -41
- package/src/shared-tree-mount.spec.ts +130 -0
- package/src/shared-trees.spec.ts +15 -0
- package/src/signals.ts +15 -0
- package/src/style-classes.spec.ts +9 -8
- package/src/styles.generated.ts +1 -1
- package/src/tab-chip.ts +200 -0
- package/src/template-classes.ts +45 -0
- package/src/test.browser.mts +160 -0
- package/src/widget-size.spec.ts +117 -0
package/scss/_toggle_group.scss
CHANGED
|
@@ -24,6 +24,13 @@ adw-toggle-group {
|
|
|
24
24
|
border-radius: var(--button-radius);
|
|
25
25
|
background-color: var(--button-bg-color);
|
|
26
26
|
|
|
27
|
+
// `toggle-group:disabled` (libadwaita `_toggle-group.scss:16`) — the whole group's
|
|
28
|
+
// background mixed toward transparent. Written against `[disabled]` and not `:disabled`:
|
|
29
|
+
// a custom element is never `:disabled`, the way `_expander.scss` records.
|
|
30
|
+
&[disabled] {
|
|
31
|
+
background-color: color-mix(in srgb, var(--button-bg-color) var(--disabled-opacity), transparent);
|
|
32
|
+
}
|
|
33
|
+
|
|
27
34
|
.adw-toggle-group-inner {
|
|
28
35
|
display: flex;
|
|
29
36
|
align-items: stretch;
|
|
@@ -70,6 +77,20 @@ adw-toggle-group {
|
|
|
70
77
|
outline-offset: 1px;
|
|
71
78
|
}
|
|
72
79
|
|
|
80
|
+
// A `<button disabled>` carries GTK's `:disabled` dimming — `_buttons.scss:58`,
|
|
81
|
+
// `filter: Opacity(var(--disabled-opacity))` — and `cursor: default` with it
|
|
82
|
+
// (`_button.scss`). Hover and active are suppressed because a disabled button takes
|
|
83
|
+
// neither, so the hover fill would linger over a toggle that cannot be pressed.
|
|
84
|
+
&:disabled {
|
|
85
|
+
opacity: var(--disabled-opacity);
|
|
86
|
+
cursor: default;
|
|
87
|
+
|
|
88
|
+
&:hover,
|
|
89
|
+
&:active {
|
|
90
|
+
background-color: transparent;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
73
94
|
// The active toggle — a raised white chip, the way libadwaita draws it.
|
|
74
95
|
&.active {
|
|
75
96
|
background-color: var(--active-toggle-bg-color);
|
|
@@ -81,6 +102,13 @@ adw-toggle-group {
|
|
|
81
102
|
&:hover {
|
|
82
103
|
background-color: var(--active-toggle-bg-color);
|
|
83
104
|
}
|
|
105
|
+
|
|
106
|
+
// The raised chip is what makes it read as raised; libadwaita drops the shadow on a
|
|
107
|
+
// disabled active toggle (`_toggle-group.scss:131`) so an unavailable choice does not
|
|
108
|
+
// look pressed.
|
|
109
|
+
&:disabled {
|
|
110
|
+
box-shadow: none;
|
|
111
|
+
}
|
|
84
112
|
}
|
|
85
113
|
}
|
|
86
114
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// _tree_expander.scss — <gtk-tree-expander>: the indents and the disclosure arrow in
|
|
2
|
+
// front of a tree row's contents.
|
|
3
|
+
//
|
|
4
|
+
// libadwaita gives the widget itself ONE declaration — `treeexpander { border-spacing:
|
|
5
|
+
// 4px }` (_column-view.scss:128-130), which is the gap between the indents, the expander
|
|
6
|
+
// and the child — and styles the arrow through the generic `expander` node: a 16×16 box
|
|
7
|
+
// drawn with `pan-end-symbolic`, turning to `pan-down-symbolic` when `:checked`
|
|
8
|
+
// (_expanders.scss:1-10).
|
|
9
|
+
//
|
|
10
|
+
// An INDENT has no rule upstream at all: `GtkBuiltinIcon` with css-name `indent` draws
|
|
11
|
+
// nothing and occupies the icon's own 16px. That is why the indent below is a fixed box
|
|
12
|
+
// rather than a margin on the child — the child keeps its own box, and an expandable row
|
|
13
|
+
// and its leaf sibling line up because they have the SAME number of boxes in front of
|
|
14
|
+
// them, which is the whole point of `indent-for-icon`.
|
|
15
|
+
//
|
|
16
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_column-view.scss:128-130
|
|
17
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_expanders.scss:1-10
|
|
18
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
19
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
20
|
+
|
|
21
|
+
gtk-tree-expander {
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
// `border-spacing: 4px` between every node the widget holds.
|
|
25
|
+
gap: 4px;
|
|
26
|
+
box-sizing: border-box;
|
|
27
|
+
|
|
28
|
+
&:focus-visible {
|
|
29
|
+
outline: 2px solid var(--accent-color);
|
|
30
|
+
outline-offset: -2px;
|
|
31
|
+
border-radius: var(--button-radius);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.adw-tree-expander-indent {
|
|
35
|
+
flex: none;
|
|
36
|
+
display: block;
|
|
37
|
+
// The `indent` node is an icon-sized box that draws nothing.
|
|
38
|
+
width: 16px;
|
|
39
|
+
height: 16px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.adw-tree-expander-icon {
|
|
43
|
+
flex: none;
|
|
44
|
+
opacity: 0.7;
|
|
45
|
+
transform: rotate(0deg);
|
|
46
|
+
transition: transform 0.2s ease-out;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
|
|
49
|
+
// `:checked` turns pan-end into pan-down; one quarter turn is the same picture.
|
|
50
|
+
&.expanded {
|
|
51
|
+
transform: rotate(90deg);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&:hover {
|
|
55
|
+
opacity: 1;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&[aria-disabled='true'] .adw-tree-expander-icon {
|
|
60
|
+
filter: opacity(var(--disabled-opacity));
|
|
61
|
+
}
|
|
62
|
+
}
|
package/scss/_variables.scss
CHANGED
package/scss/_video.scss
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// _video.scss — <gtk-video>: the overlay, the big circular play glyph, and the controls
|
|
2
|
+
// bar that reveals itself for three seconds.
|
|
3
|
+
//
|
|
4
|
+
// libadwaita styles `GtkVideo` in ONE place, and it is three lines
|
|
5
|
+
// (refs/libadwaita/src/stylesheet/widgets/_misc.scss:74-81):
|
|
6
|
+
//
|
|
7
|
+
// video {
|
|
8
|
+
// & image.osd {
|
|
9
|
+
// min-width: 64px;
|
|
10
|
+
// min-height: 64px;
|
|
11
|
+
// border-radius: 32px;
|
|
12
|
+
// }
|
|
13
|
+
// }
|
|
14
|
+
//
|
|
15
|
+
// Those three values are kept VERBATIM below, and the reason they are interesting is that
|
|
16
|
+
// they are a `.circular` button at a LARGER size: libadwaita's own circular button is 34px
|
|
17
|
+
// with a 9999px radius (refs/libadwaita/src/stylesheet/widgets/_buttons.scss:311-319), and
|
|
18
|
+
// the video's icon is 64px with a 32px radius — half its own width, which for a circle is
|
|
19
|
+
// the same shape at twice the size. So the radius here is `min-width / 2` and not the 9999px
|
|
20
|
+
// the button uses, and that difference is upstream's, not a porting shortcut.
|
|
21
|
+
//
|
|
22
|
+
// The `.osd` HALF is `%osd` (refs/libadwaita/src/stylesheet/_common.scss:43-60): the
|
|
23
|
+
// on-screen-display surface — a translucent dark plate, a near-white foreground and the
|
|
24
|
+
// accent colours recomputed to sit on it. `_style_classes.scss` already owns `.osd` for every
|
|
25
|
+
// widget, so the icon here gets it for free and nothing in this partial restates it.
|
|
26
|
+
//
|
|
27
|
+
// The controls bar wears `.osd` AND `.bottom` (refs/gtk/gtk/ui/gtkvideo.ui). `.osd` is the
|
|
28
|
+
// half with a rule — the same `%osd` surface — and `.bottom` is a PLACEMENT class with no
|
|
29
|
+
// libadwaita rule anywhere: `grep` over `refs/libadwaita/src/stylesheet/` finds `bottom`
|
|
30
|
+
// only on `bottom-sheet`, `bottom-bar`, `notebook.bottom` and `colorchooser.bottom`, none of
|
|
31
|
+
// which is a video. It is GTK's own hint from the template and it is honoured here as the
|
|
32
|
+
// vertical placement it plainly is — the bar sits at the end of the cross axis — with the
|
|
33
|
+
// padding the `.osd` toolbar takes (12px, refs/libadwaita/src/stylesheet/widgets/
|
|
34
|
+
// _toolbars.scss:96-100).
|
|
35
|
+
//
|
|
36
|
+
// THE REVEALER IS A TRANSITION, NOT A TOGGLE WITH A DELAY. `gtk_video_reveal_controls`
|
|
37
|
+
// (gtkvideo.c:125-133) reveals a `GtkRevealer` and arms a 3 s timeout that hides it again,
|
|
38
|
+
// and the motion controller re-arms on every movement — so the bar is out after three
|
|
39
|
+
// seconds of stillness, not three seconds after the first movement, and the element's
|
|
40
|
+
// `revealControls()` re-arms for the same reason. The `transition` below is the revealer's
|
|
41
|
+
// own cross-fade, and `.revealed` is the only state selector: there is no `hidden` to fight
|
|
42
|
+
// because the revealer never leaves the layout.
|
|
43
|
+
//
|
|
44
|
+
// `graphics-offload` HAS NO RULE, AND SAYS SO. `GtkGraphicsOffload` moves a subtree into a
|
|
45
|
+
// shared GL texture so it and its neighbours composite on the GPU; CSS has no such
|
|
46
|
+
// mechanism, so the class the element sets is deliberately UNSTYLED. A page may target it,
|
|
47
|
+
// nothing in this package does, and the property is observed rather than listed as a gap in
|
|
48
|
+
// `check-adwaita-element-properties.mjs` — the property is read and written faithfully, what
|
|
49
|
+
// it does not buy is a faster composite.
|
|
50
|
+
//
|
|
51
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_misc.scss:74-81 (the whole GtkVideo
|
|
52
|
+
// block), _common.scss:43-60 (`%osd`), _buttons.scss:311-319 (`.circular`),
|
|
53
|
+
// _toolbars.scss:96-100 (`.toolbar.osd`)
|
|
54
|
+
// Reference: refs/gtk/gtk/ui/gtkvideo.ui (the `.osd .circular` icon, the `.osd .bottom`
|
|
55
|
+
// controls, the 3 s reveal), gtkvideo.c:125-133
|
|
56
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
57
|
+
// Copyright (c) The GTK Team. LGPLv2.1+.
|
|
58
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
59
|
+
|
|
60
|
+
gtk-video {
|
|
61
|
+
position: relative;
|
|
62
|
+
display: block;
|
|
63
|
+
overflow: hidden;
|
|
64
|
+
|
|
65
|
+
// The overlay of ui/gtkvideo.ui: the media underneath, the icon over it, the revealer
|
|
66
|
+
// over that.
|
|
67
|
+
.adw-video-surface {
|
|
68
|
+
position: relative;
|
|
69
|
+
display: flex;
|
|
70
|
+
|
|
71
|
+
> video {
|
|
72
|
+
width: 100%;
|
|
73
|
+
height: 100%;
|
|
74
|
+
object-fit: contain;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// `ui/gtkvideo.ui`'s `overlay_icon`: `halign`/`valign` 3, i.e. FILL, which is what makes
|
|
79
|
+
// it centred in an overlay on both axes — GTK's own `GTK_ALIGN_FILL` on an overlay child
|
|
80
|
+
// stretches it, and this is the web's answer for "fill the overlay and centre inside it".
|
|
81
|
+
.adw-video-overlay-icon {
|
|
82
|
+
position: absolute;
|
|
83
|
+
inset: 0;
|
|
84
|
+
margin: auto;
|
|
85
|
+
|
|
86
|
+
// `min-width: 64px; min-height: 64px; border-radius: 32px` — libadwaita's own three
|
|
87
|
+
// lines for `video image.osd` (_misc.scss:76-80). The radius is half the width, which is
|
|
88
|
+
// the same shape `.circular` gives at 34px (_buttons.scss:311-319) at twice the size.
|
|
89
|
+
min-width: 64px;
|
|
90
|
+
min-height: 64px;
|
|
91
|
+
border-radius: 32px;
|
|
92
|
+
|
|
93
|
+
// `GtkImage`'s icon inside the button, and `icon-size` 2 in the template
|
|
94
|
+
// (ui/gtkvideo.ui) is GTK's dialog-scale — which is the 64px above.
|
|
95
|
+
display: flex;
|
|
96
|
+
align-items: center;
|
|
97
|
+
justify-content: center;
|
|
98
|
+
padding: 0;
|
|
99
|
+
border: none;
|
|
100
|
+
// A GtkImage with `has-frame` unset inside an OSD plate: the plate IS the surface, so
|
|
101
|
+
// the button adds no background of its own.
|
|
102
|
+
background: none;
|
|
103
|
+
color: inherit;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
|
|
106
|
+
// `gtk_video_update_playing` (gtkvideo.c:665) sets the icon's VISIBILITY to
|
|
107
|
+
// `!playing`, so this is `visibility` rather than `display`: the icon keeps its box and
|
|
108
|
+
// the OSD plate under it is unaffected either way, which is what `[hidden]` would also
|
|
109
|
+
// give — but `hidden` is the UA rule and this one is the C's.
|
|
110
|
+
&[hidden] {
|
|
111
|
+
visibility: hidden;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// `ui/gtkvideo.ui`'s `controls_revealer`: a `GtkRevealer` with `valign` 2 (END) and
|
|
116
|
+
// `transition-type` 1 (CROSS-FADE), and `measure` 1 so the bar is allocated even while
|
|
117
|
+
// hidden — which is why this is an opacity transition and not `display: none`.
|
|
118
|
+
.adw-video-controls-revealer {
|
|
119
|
+
position: absolute;
|
|
120
|
+
inset: auto 0 0 0;
|
|
121
|
+
opacity: 0;
|
|
122
|
+
pointer-events: none;
|
|
123
|
+
transition: opacity 150ms ease-out;
|
|
124
|
+
|
|
125
|
+
&.revealed {
|
|
126
|
+
opacity: 1;
|
|
127
|
+
pointer-events: auto;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// `.osd .bottom` (ui/gtkvideo.ui). The bar is `osd` — the `%osd` surface from
|
|
131
|
+
// `_common.scss:43-60` — with the padding a standalone OSD toolbar takes: 12px against
|
|
132
|
+
// the 6px of a plain one (_toolbars.scss:91-102).
|
|
133
|
+
gtk-media-controls {
|
|
134
|
+
padding: 12px;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Playing hides the overlay icon and shows nothing over the frames. Declared as a class so
|
|
139
|
+
// a page can see the state without reading the icon's `hidden`, and because GTK's own state
|
|
140
|
+
// is a widget VISIBILITY (gtkvideo.c:665) rather than a style class.
|
|
141
|
+
&.playing .adw-video-overlay-icon {
|
|
142
|
+
pointer-events: none;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// `GtkVideo:graphics-offload` — deliberately UNSTYLED. See the header.
|
|
146
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// _view_switcher_sidebar.scss — <adw-view-switcher-sidebar>: an <adw-sidebar> driven
|
|
2
|
+
// from an <adw-view-stack>'s page list. libadwaita styles exactly ONE thing of its own —
|
|
3
|
+
// the row indicator, and only the number/dot shape inside it — because the sidebar look
|
|
4
|
+
// comes from `_sidebars.scss` and this element drives that widget rather than
|
|
5
|
+
// reimplementing it.
|
|
6
|
+
//
|
|
7
|
+
// Ported from `view-switcher-sidebar .indicator` (adw-view-switcher-sidebar.c:133-181):
|
|
8
|
+
// · `background: color-mix(in srgb, currentColor 40%, transparent)`, `border-radius: 999px`
|
|
9
|
+
// · `min-width/min-height: 1.6em`, `font-weight: bold`, `font-size: smaller`
|
|
10
|
+
// · `.dot` shrinks it to 8×8 — the unread mark with no count
|
|
11
|
+
// · `> label` is white with 6px of padding each side
|
|
12
|
+
// · `.needs-attention` swaps in `--accent-bg-color`/`--accent-fg-color`
|
|
13
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_sidebars.scss:250-277
|
|
14
|
+
// Reference: refs/libadwaita/src/adw-view-switcher-sidebar.c:104-112, :133-181, :225-249
|
|
15
|
+
// Copyright (c) 2025 GNOME Foundation Inc. (libadwaita). LGPLv2.1-or-later.
|
|
16
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
17
|
+
|
|
18
|
+
adw-view-switcher-sidebar {
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
box-sizing: border-box;
|
|
22
|
+
min-height: 0;
|
|
23
|
+
color: inherit;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-box {
|
|
27
|
+
position: relative;
|
|
28
|
+
display: flex;
|
|
29
|
+
flex: 1 1 auto;
|
|
30
|
+
min-height: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
adw-view-switcher-sidebar > adw-sidebar {
|
|
34
|
+
flex: 1 1 auto;
|
|
35
|
+
min-height: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-placeholder {
|
|
39
|
+
position: absolute;
|
|
40
|
+
inset: 0;
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
justify-content: center;
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
background-color: var(--sidebar-bg-color, var(--window-bg-color));
|
|
46
|
+
color: var(--sidebar-fg-color, var(--window-fg-color));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-placeholder[hidden] {
|
|
50
|
+
display: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// `&:not(.page).empty statuspage { @extend .compact }` — the empty state is compact in
|
|
54
|
+
// sidebar mode and a full page in `page` mode, where it is one of several boxed pages.
|
|
55
|
+
adw-view-switcher-sidebar.page > .view-switcher-sidebar-placeholder {
|
|
56
|
+
position: static;
|
|
57
|
+
margin: var(--spacing-m);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-prefix,
|
|
61
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-suffix {
|
|
62
|
+
flex-shrink: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-prefix:empty,
|
|
66
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-suffix:empty,
|
|
67
|
+
adw-view-switcher-sidebar > .view-switcher-sidebar-placeholder:empty {
|
|
68
|
+
display: none;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// --- The row indicator ----------------------------------------------------
|
|
72
|
+
|
|
73
|
+
adw-view-switcher-sidebar .indicator {
|
|
74
|
+
display: inline-flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
flex-shrink: 0;
|
|
78
|
+
box-sizing: border-box;
|
|
79
|
+
min-width: 1.6em;
|
|
80
|
+
min-height: 1.6em;
|
|
81
|
+
margin-inline-start: auto;
|
|
82
|
+
border-radius: 999px;
|
|
83
|
+
background: color-mix(in srgb, currentColor 40%, transparent);
|
|
84
|
+
font-weight: bold;
|
|
85
|
+
font-size: smaller;
|
|
86
|
+
line-height: 1;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
adw-view-switcher-sidebar .indicator[hidden] {
|
|
90
|
+
display: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
adw-view-switcher-sidebar .indicator.dot {
|
|
94
|
+
min-width: 8px;
|
|
95
|
+
min-height: 8px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
adw-view-switcher-sidebar .indicator > label,
|
|
99
|
+
adw-view-switcher-sidebar .indicator > .numeric {
|
|
100
|
+
color: white;
|
|
101
|
+
padding-left: 6px;
|
|
102
|
+
padding-right: 6px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
adw-view-switcher-sidebar .indicator.needs-attention {
|
|
106
|
+
background: var(--accent-bg-color);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
adw-view-switcher-sidebar .indicator.needs-attention > label,
|
|
110
|
+
adw-view-switcher-sidebar .indicator.needs-attention > .numeric {
|
|
111
|
+
color: var(--accent-fg-color);
|
|
112
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// _viewport.scss — <gtk-viewport>: the scrollport a `GtkScrolledWindow` puts its child in.
|
|
2
|
+
//
|
|
3
|
+
// LIBADWAITA STYLES NOTHING HERE, and that is the whole file's justification for existing:
|
|
4
|
+
// `_scrolling.scss` has rules for `scrollbar` and for `scrolledwindow` and none for
|
|
5
|
+
// `viewport`, because GTK gives the node no surface to paint (gtkviewport.c:353). What is
|
|
6
|
+
// below is therefore the CSS of the NODE GTK builds — the measurement, the clipping and the
|
|
7
|
+
// one allocation `gtk_viewport_size_allocate` performs — and each declaration says which half
|
|
8
|
+
// of it it is.
|
|
9
|
+
//
|
|
10
|
+
// THE CHILD IS ALLOCATED ITS NATURAL SIZE. GTK measures the child and hands it that
|
|
11
|
+
// (gtkviewport.c:517-560), so content wider than the window scrolls sideways instead of being
|
|
12
|
+
// squeezed into it. A flex container whose items are `flex: none` is that rule in CSS:
|
|
13
|
+
// `flex-basis: auto` sizes an item to its content and `flex-shrink: 0` keeps it there, and
|
|
14
|
+
// `align-items: flex-start` stops the cross axis from stretching it to fill.
|
|
15
|
+
//
|
|
16
|
+
// THE SCROLLING IS THE PLATFORM'S. GTK's viewport translates its child by the adjustment
|
|
17
|
+
// instead of scrolling it, and the browser's equivalent of a scrollport that scrolls is a
|
|
18
|
+
// scroll container — with the SCROLLBAR hidden, because in GTK those belong to the scrolled
|
|
19
|
+
// window (which builds them, gtkscrolledwindow.c:4356-4363) and never to the viewport. The one
|
|
20
|
+
// consequence worth writing down is the momentum after a touch release: GTK's
|
|
21
|
+
// `GtkKineticScrolling` is a deceleration curve a page cannot hand a browser, so what a reader
|
|
22
|
+
// gets is the platform's own — see `GtkScrolledWindow:kinetic-scrolling`.
|
|
23
|
+
//
|
|
24
|
+
// `overflow: auto`, not `hidden`: a browser clamps either way, but only `auto` runs the
|
|
25
|
+
// platform's momentum and rubber-banding, which is the whole of what a touch scroll does here.
|
|
26
|
+
|
|
27
|
+
gtk-viewport {
|
|
28
|
+
display: flex;
|
|
29
|
+
// A COLUMN, which is a statement about markup rather than about GTK: a GtkViewport holds
|
|
30
|
+
// exactly ONE child, so a row and a column are the same layout there. Markup can hand a
|
|
31
|
+
// viewport several children, and stacking them is the arrangement every one of them came
|
|
32
|
+
// for — a row would lay ten labels side by side, which is the one answer no reader of a
|
|
33
|
+
// scrollable expects. A single child is unaffected by the direction.
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
align-items: flex-start;
|
|
36
|
+
justify-content: flex-start;
|
|
37
|
+
overflow: auto;
|
|
38
|
+
// Both axes' scrollbars, hidden — `-webkit-scrollbar` for the engine that honours
|
|
39
|
+
// `scrollbar-width: none` only since 121, the pairing `_carousel.scss` already uses.
|
|
40
|
+
scrollbar-width: none;
|
|
41
|
+
|
|
42
|
+
&::-webkit-scrollbar {
|
|
43
|
+
display: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// `flex: none` is `flex: 0 0 auto` — GTK's "the child's natural size, not less".
|
|
47
|
+
> * {
|
|
48
|
+
flex: none;
|
|
49
|
+
}
|
|
50
|
+
}
|
package/scss/_widget.scss
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
// projected `.blp` hands them to `buildSharedTree` as attributes (`halign="center"`). Until
|
|
5
5
|
// this partial nothing read them, so the gallery's bottom sheet stretched the button its
|
|
6
6
|
// Blueprint centres. The margins are not here: an attribute cannot carry a length into CSS
|
|
7
|
-
// portably, so `shared-tree-builder.ts` writes them as inline style
|
|
7
|
+
// portably, so `shared-tree-builder.ts` writes them as inline style — and so are
|
|
8
|
+
// `width-request` / `height-request`, as the `min-width` / `min-height` they are.
|
|
8
9
|
//
|
|
9
10
|
// ALIGNMENT IS AN AUTO MARGIN, because that is the one CSS placement that means the same on
|
|
10
11
|
// both axes of a flex container and of a grid: GTK allocates a non-FILL child its natural
|
|
@@ -49,7 +50,17 @@
|
|
|
49
50
|
margin-block: auto;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
gtk-box:not([orientation='vertical']) > [hexpand],
|
|
53
|
-
gtk-box[orientation='vertical'] > [vexpand] {
|
|
53
|
+
gtk-box:not([orientation='vertical']) > [hexpand]:not([hexpand='false']),
|
|
54
|
+
gtk-box[orientation='vertical'] > [vexpand]:not([vexpand='false']) {
|
|
54
55
|
flex-grow: 1;
|
|
55
56
|
}
|
|
57
|
+
|
|
58
|
+
// An AUTHORED `hexpand: false` is the one case where absence is not enough: a widget that
|
|
59
|
+
// grows by default (`<gtk-scrolled-window>` is `flex: 1 1 0%`, the allocation of a window in a
|
|
60
|
+
// column) must stop, and GTK then gives it its NATURAL size rather than nothing — hence the
|
|
61
|
+
// `auto` basis, not just a zero grow. `width-request` (an inline `min-width`) is the floor.
|
|
62
|
+
gtk-box:not([orientation='vertical']) > [hexpand='false'],
|
|
63
|
+
gtk-box[orientation='vertical'] > [vexpand='false'] {
|
|
64
|
+
flex-grow: 0;
|
|
65
|
+
flex-basis: auto;
|
|
66
|
+
}
|
package/scss/_window.scss
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
// _window.scss — adw-window styling.
|
|
2
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_window.scss (the frame; the
|
|
3
|
+
// `.maximized`/`.fullscreen` rules at 66-72 are the ones an in-page frame can use)
|
|
2
4
|
// Reference: refs/adwaita-web/adwaita-web/scss/_window.scss
|
|
3
|
-
// Reference: refs/libadwaita/src/stylesheet/widgets/_window.scss
|
|
4
5
|
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
5
6
|
// Copyright (c) 2025 csm (adwaita-web). MIT License.
|
|
6
7
|
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
7
8
|
|
|
8
|
-
adw-window
|
|
9
|
+
// `adw-application-window` is `adw-window` plus a menubar (it extends the class and adds nothing
|
|
10
|
+
// else), so it is the same frame: without this an application window was an inline box with no
|
|
11
|
+
// size at all, and a tree rooted at one measured 0 x 0.
|
|
12
|
+
adw-window,
|
|
13
|
+
adw-application-window {
|
|
9
14
|
display: flex;
|
|
10
15
|
flex-direction: column;
|
|
11
16
|
background-color: var(--window-bg-color);
|
|
@@ -20,4 +25,128 @@ adw-window {
|
|
|
20
25
|
overflow: hidden;
|
|
21
26
|
outline: 1px solid rgb(255 255 255 / 7%);
|
|
22
27
|
outline-offset: -1px;
|
|
28
|
+
|
|
29
|
+
// `window.maximized` / `window.fullscreen` zero the radius and drop the shadow
|
|
30
|
+
// (_window.scss:66-72). A page-sized window IS the maximised one here: the frame
|
|
31
|
+
// is in-page, so there is nothing outside it to cast a shadow on.
|
|
32
|
+
&.maximized,
|
|
33
|
+
&.fullscreen {
|
|
34
|
+
--window-radius: 0px;
|
|
35
|
+
outline: none;
|
|
36
|
+
box-shadow: none;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// The content area — the one child slot `Adw.Window:content` fills. It takes the
|
|
41
|
+
// window's own column, so a toolbar view dropped in stretches both ways.
|
|
42
|
+
.adw-window-content {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex: 1 1 auto;
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
min-height: 0;
|
|
47
|
+
min-width: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// A window hands its one child the WHOLE allocation, whatever that child's own expand flags say.
|
|
51
|
+
// On the web a box is only as tall as what it holds, so the `Gtk.Box` a `.blp` roots its content
|
|
52
|
+
// in stopped at its header bar and the split view below it drew a quarter of the window.
|
|
53
|
+
.adw-window-content > gtk-box {
|
|
54
|
+
flex: 1 1 auto;
|
|
55
|
+
min-height: 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// <gtk-window> — the GTK frame, in the SAME file upstream styles `Adw.Window` in: libadwaita
|
|
59
|
+
// keys `window { &.csd { … } }` off the GtkWindow CSS node
|
|
60
|
+
// (refs/libadwaita/src/stylesheet/widgets/_window.scss:1-31), and this element IS a window
|
|
61
|
+
// as far as the stylesheet is concerned.
|
|
62
|
+
//
|
|
63
|
+
// The frame rules are `<adw-window>`'s, restated for the `gtk-` tag rather than shared
|
|
64
|
+
// through a selector list: `_reset.scss` re-roots the box model at each registered element,
|
|
65
|
+
// and a shared `adw-window, gtk-window` block would put two component resets in one rule.
|
|
66
|
+
//
|
|
67
|
+
// NOT the same as `<adw-window>`, deliberately. `Adw.Window` is a plain styled container —
|
|
68
|
+
// nothing about it is GTK's `GtkWindow` — while this one answers the FRAME properties:
|
|
69
|
+
// `decorated` drops the titlebar strip, `maximized` and `fullscreened` square the corners
|
|
70
|
+
// off and drop the shadow (`_window.scss:66-72`), and the strip itself is either the
|
|
71
|
+
// application's `titlebar` or the two `<gtk-window-controls>` a server-side decoration would
|
|
72
|
+
// have had. See `gtk-window.ts` for the whole list and each source line.
|
|
73
|
+
gtk-window,
|
|
74
|
+
gtk-application-window {
|
|
75
|
+
display: flex;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
position: relative;
|
|
78
|
+
box-sizing: border-box;
|
|
79
|
+
background-color: var(--window-bg-color);
|
|
80
|
+
color: var(--window-fg-color);
|
|
81
|
+
font-family: var(--font-family);
|
|
82
|
+
font-size: var(--font-size-base);
|
|
83
|
+
border-radius: var(--window-radius);
|
|
84
|
+
outline: 1px solid rgb(255 255 255 / 7%);
|
|
85
|
+
outline-offset: -1px;
|
|
86
|
+
box-shadow:
|
|
87
|
+
0 0 14px 5px rgb(0 0 0 / 15%),
|
|
88
|
+
0 0 5px 2px rgb(0 0 0 / 10%),
|
|
89
|
+
0 0 0 1px rgb(0 0 0 / 5%);
|
|
90
|
+
overflow: hidden;
|
|
91
|
+
|
|
92
|
+
// `_window.scss:66-72` — a maximized or fullscreen window fills the screen, so it has no
|
|
93
|
+
// corners to round and no frame to cast a shadow from.
|
|
94
|
+
&.maximized,
|
|
95
|
+
&.fullscreen {
|
|
96
|
+
--window-radius: 0px;
|
|
97
|
+
outline: none;
|
|
98
|
+
box-shadow: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// The strip: an application's `titlebar` slot, or the two window-control groups and the
|
|
102
|
+
// window's own title. `min-width: 0` on the title is what lets a long one ellipsize
|
|
103
|
+
// instead of pushing the end controls out of the frame.
|
|
104
|
+
> .adw-gtk-window-titlebar {
|
|
105
|
+
display: flex;
|
|
106
|
+
align-items: center;
|
|
107
|
+
flex-shrink: 0;
|
|
108
|
+
min-height: 47px;
|
|
109
|
+
background-color: var(--headerbar-bg-color);
|
|
110
|
+
color: var(--headerbar-fg-color);
|
|
111
|
+
box-shadow: inset 0 -1px var(--headerbar-shade-color);
|
|
112
|
+
|
|
113
|
+
> .adw-gtk-window-title {
|
|
114
|
+
flex: 1;
|
|
115
|
+
min-width: 0;
|
|
116
|
+
padding: 0 12px;
|
|
117
|
+
font-weight: bold;
|
|
118
|
+
text-align: center;
|
|
119
|
+
white-space: nowrap;
|
|
120
|
+
overflow: hidden;
|
|
121
|
+
text-overflow: ellipsis;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// A window with no title shows no title; GTK would draw the empty SSD label, and an
|
|
125
|
+
// empty flex track is exactly that.
|
|
126
|
+
&:has(> .adw-gtk-window-title:not([title])) > .adw-gtk-window-title {
|
|
127
|
+
display: none;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
> .adw-gtk-application-window-menubar {
|
|
132
|
+
display: flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
flex-shrink: 0;
|
|
135
|
+
gap: 6px;
|
|
136
|
+
padding: 0 6px;
|
|
137
|
+
background-color: var(--headerbar-bg-color);
|
|
138
|
+
color: var(--headerbar-fg-color);
|
|
139
|
+
box-shadow: inset 0 -1px var(--headerbar-shade-color);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// `Gtk.Box`'s own `border-spacing` is 0 here; the gap between the window's children is the
|
|
143
|
+
// application's business, and the content box exists so it can have one without the strip
|
|
144
|
+
// taking part.
|
|
145
|
+
> .adw-gtk-window-content {
|
|
146
|
+
display: flex;
|
|
147
|
+
flex-direction: column;
|
|
148
|
+
flex: 1;
|
|
149
|
+
min-height: 0;
|
|
150
|
+
overflow: auto;
|
|
151
|
+
}
|
|
23
152
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// _window_handle.scss — <gtk-window-handle>: the box GTK's `GtkBinLayout` gives the child.
|
|
2
|
+
//
|
|
3
|
+
// `gtk_window_handle_class_init` sets `GTK_TYPE_BIN_LAYOUT` and the `windowhandle` CSS name
|
|
4
|
+
// (gtkwindowhandle.c:553-554), and libadwaita has NO rule for either — the widget contributes
|
|
5
|
+
// no surface, a shadow or a border, only the titlebar's gestures. `display: contents` is that
|
|
6
|
+
// in CSS: the child keeps its own box, participates in its PARENT's layout as if the handle
|
|
7
|
+
// were not there, and a titlebar strip can go anywhere a header bar goes without moving
|
|
8
|
+
// anything around it.
|
|
9
|
+
//
|
|
10
|
+
// `user-select: none` is the one declaration that is not C: a titlebar is dragged, not
|
|
11
|
+
// selected, and GTK's drag gesture swallows the text selection a browser would otherwise
|
|
12
|
+
// start on the way to a triple click.
|
|
13
|
+
|
|
14
|
+
gtk-window-handle {
|
|
15
|
+
display: contents;
|
|
16
|
+
|
|
17
|
+
// The drag belongs to the strip, not to the text inside it, and a double click on the
|
|
18
|
+
// title is the `toggle-maximize` gesture rather than a word selection.
|
|
19
|
+
user-select: none;
|
|
20
|
+
}
|