@gjsify/adwaita-web 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.
- package/dist/adwaita-web.css +8070 -3037
- 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-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/breakpoints.d.ts +14 -3
- package/lib/types/construct-vectors.spec.d.ts +1 -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-dialog.d.ts +10 -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-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 +5 -0
- package/lib/types/elements/adw-switch-row.d.ts +3 -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-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 +121 -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 +97 -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/scroll-shading.d.ts +15 -1
- package/lib/types/shared-tree-builder.d.ts +30 -2
- 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/package.json +12 -8
- package/scss/_action_row.scss +2 -2
- 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/_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/_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 +132 -0
- 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 +51 -0
- package/scss/_print_dialogs.scss +328 -0
- package/scss/_reset.scss +21 -19
- package/scss/_revealer.scss +37 -0
- package/scss/_row.scss +20 -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/_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/_tree_expander.scss +62 -0
- package/scss/_variables.scss +43 -21
- package/scss/_video.scss +146 -0
- package/scss/_view_switcher_sidebar.scss +112 -0
- package/scss/_viewport.scss +50 -0
- package/scss/_window.scss +118 -1
- package/scss/_window_handle.scss +20 -0
- package/scss/adwaita-skin.scss +109 -0
- package/src/adw-action-rows.spec.ts +76 -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-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-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/breakpoints.ts +25 -8
- package/src/capabilities.d.mts +3 -0
- package/src/capabilities.mjs +18 -0
- package/src/connect-lifecycle.spec.ts +12 -0
- package/src/construct-vectors.spec.ts +175 -0
- 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-clamp-scrollable.ts +207 -0
- package/src/elements/adw-dialog.ts +19 -0
- package/src/elements/adw-layout-slot.ts +95 -0
- package/src/elements/adw-multi-layout-view.ts +326 -0
- package/src/elements/adw-preferences-row.ts +150 -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 +42 -3
- package/src/elements/adw-switch-row.ts +28 -1
- 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 +20 -5
- 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 +185 -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 +642 -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 +366 -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 +190 -0
- package/src/index.ts +9 -1
- package/src/keyboard-operable.spec.ts +33 -1
- 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/scroll-shading.ts +18 -1
- package/src/shared-tree-builder.ts +263 -21
- package/src/signals.ts +15 -0
- package/src/source-view/theme.ts +11 -5
- 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 +152 -0
|
@@ -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
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
--button-active-color: rgba(0, 0, 6, 0.19);
|
|
77
77
|
|
|
78
78
|
// Entries
|
|
79
|
-
--entry-bg-color:
|
|
79
|
+
--entry-bg-color: rgba(0, 0, 6, 0.1);
|
|
80
80
|
--entry-border-color: rgba(0, 0, 6, 0.18);
|
|
81
81
|
--entry-border-hover-color: rgba(0, 0, 6, 0.28);
|
|
82
82
|
|
|
@@ -118,21 +118,37 @@
|
|
|
118
118
|
--spacing-l: 18px;
|
|
119
119
|
--spacing-xl: 24px;
|
|
120
120
|
|
|
121
|
-
// Typography — GNOME default: Adwaita Sans 11. The
|
|
122
|
-
//
|
|
123
|
-
// and
|
|
124
|
-
//
|
|
125
|
-
// and the `sans-serif` generic is Helvetica there — #1817, a widget set that looks
|
|
126
|
-
// right on the machine it was authored on and lands on Helvetica in every screenshot
|
|
127
|
-
// a consumer takes. `system-ui` asks the host for its own UI face (San Francisco,
|
|
128
|
-
// Segoe UI); `-apple-system` and 'Segoe UI' are the pre-`system-ui` spellings of
|
|
129
|
-
// those same two answers, kept for the engines that need them.
|
|
121
|
+
// Typography — GNOME default: Adwaita Sans 11. The stack is a PROGRESSION, and the
|
|
122
|
+
// tail is what makes it one (#1817). 'Adwaita Sans' is installed on a GNOME desktop
|
|
123
|
+
// and nowhere else; 'Cantarell' is GNOME's own earlier UI face and the right second
|
|
124
|
+
// guess there; 'Inter' is the one cross-platform name an app usually has beside it.
|
|
130
125
|
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
|
|
126
|
+
// What was MISSING is macOS, and it was missing in the worst place. With no Apple face
|
|
127
|
+
// named, `sans-serif` resolved to Helvetica — measured on a Mac carrying neither
|
|
128
|
+
// Adwaita Sans nor Cantarell — which is the one typeface no libadwaita application is
|
|
129
|
+
// meant to look like, and the stylesheet said nothing about it. `system-ui` and its
|
|
130
|
+
// `-apple-system` alias are the two spellings every current engine resolves to the
|
|
131
|
+
// platform's own UI face (SF on macOS, Segoe UI Variable on Windows, Cantarell on
|
|
132
|
+
// GNOME), so they go after the named faces and BEFORE the generic: a generic asks the
|
|
133
|
+
// host for its DEFAULT, which is the substitution this is about, while `system-ui` asks
|
|
134
|
+
// for its UI face, which is what an Adwaita app wants.
|
|
135
|
+
//
|
|
136
|
+
// 'Segoe UI' stays ahead of them as the EXPLICIT Windows face: `system-ui` reached it
|
|
137
|
+
// only from Windows 8 and Segoe UI Variable only from Windows 11, so the name is still
|
|
138
|
+
// the portable spelling there. Held honest by the `stylesheet-font-families`
|
|
139
|
+
// conformance rule, whose ledger carries the reason for 'Adwaita Sans' — never delete
|
|
140
|
+
// one without the other.
|
|
141
|
+
//
|
|
142
|
+
// THE PERIOD ending this first sentence, and the absence of a comment block between
|
|
143
|
+
// these declarations, are both load-bearing rather than stylistic.
|
|
144
|
+
// `scripts/generate-adwaita-tokens.mjs` titles each token group by the first sentence
|
|
145
|
+
// of the comment block touching its FIRST declaration, so a caption with no terminator
|
|
146
|
+
// runs on into the next words — and a block sitting between two declarations starts a
|
|
147
|
+
// NEW group, which is how a paragraph about this mechanism became a section title in
|
|
148
|
+
// the website before it was moved in here. Everything past the first sentence is prose
|
|
149
|
+
// for that one reader; `check-generated-website-data.mjs` holds both derived artifacts
|
|
150
|
+
// against the run.
|
|
151
|
+
--font-family: 'Adwaita Sans', 'Cantarell', 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
|
|
136
152
|
--font-size-base: 11pt;
|
|
137
153
|
--font-size-small: 9pt;
|
|
138
154
|
--font-size-heading: 12pt;
|
|
@@ -186,14 +202,20 @@
|
|
|
186
202
|
// second lands on a font whose figures do not line up — the exact property
|
|
187
203
|
// `.monospace` exists for.
|
|
188
204
|
//
|
|
189
|
-
//
|
|
190
|
-
//
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
-
//
|
|
205
|
+
// The tail is the same PROGRESSION the sans stack is, for the same reason (#1817), and
|
|
206
|
+
// it had the gap in the other direction: `ui-monospace` covers macOS and GNOME but
|
|
207
|
+
// reaches Cascadia Mono only from Windows 10 1903, and no Windows face was named at
|
|
208
|
+
// all, so a Windows 10 host without it landed on the `monospace` GENERIC — Times New
|
|
209
|
+
// Roman, whose figures do not line up, which is the one thing this stack exists to
|
|
210
|
+
// provide. 'Cascadia Code' ships with Windows Terminal and 'Consolas' is on every
|
|
211
|
+
// Windows since Vista.
|
|
212
|
+
//
|
|
213
|
+
// ONE LINE, and not a style choice: the same generator reads this file with a line-based
|
|
214
|
+
// reader that REFUSES a declaration it cannot read rather than dropping the token
|
|
215
|
+
// without saying so, so a wrapped value makes it exit 1.
|
|
194
216
|
--document-font-family: var(--font-family);
|
|
195
217
|
--document-font-size: var(--font-size-base);
|
|
196
|
-
--monospace-font-family: 'Adwaita Mono', ui-monospace, 'SF Mono', '
|
|
218
|
+
--monospace-font-family: 'Adwaita Mono', ui-monospace, 'SF Mono', 'Cascadia Code', 'Consolas', 'Menlo', monospace;
|
|
197
219
|
--monospace-font-size: var(--font-size-base);
|
|
198
220
|
}
|
|
199
221
|
|
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/_window.scss
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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.
|
|
@@ -20,4 +21,120 @@ adw-window {
|
|
|
20
21
|
overflow: hidden;
|
|
21
22
|
outline: 1px solid rgb(255 255 255 / 7%);
|
|
22
23
|
outline-offset: -1px;
|
|
24
|
+
|
|
25
|
+
// `window.maximized` / `window.fullscreen` zero the radius and drop the shadow
|
|
26
|
+
// (_window.scss:66-72). A page-sized window IS the maximised one here: the frame
|
|
27
|
+
// is in-page, so there is nothing outside it to cast a shadow on.
|
|
28
|
+
&.maximized,
|
|
29
|
+
&.fullscreen {
|
|
30
|
+
--window-radius: 0px;
|
|
31
|
+
outline: none;
|
|
32
|
+
box-shadow: none;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// The content area — the one child slot `Adw.Window:content` fills. It takes the
|
|
37
|
+
// window's own column, so a toolbar view dropped in stretches both ways.
|
|
38
|
+
.adw-window-content {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex: 1 1 auto;
|
|
41
|
+
flex-direction: column;
|
|
42
|
+
min-height: 0;
|
|
43
|
+
min-width: 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// <gtk-window> — the GTK frame, in the SAME file upstream styles `Adw.Window` in: libadwaita
|
|
47
|
+
// keys `window { &.csd { … } }` off the GtkWindow CSS node
|
|
48
|
+
// (refs/libadwaita/src/stylesheet/widgets/_window.scss:1-31), and this element IS a window
|
|
49
|
+
// as far as the stylesheet is concerned.
|
|
50
|
+
//
|
|
51
|
+
// The frame rules are `<adw-window>`'s, restated for the `gtk-` tag rather than shared
|
|
52
|
+
// through a selector list: `_reset.scss` re-roots the box model at each registered element,
|
|
53
|
+
// and a shared `adw-window, gtk-window` block would put two component resets in one rule.
|
|
54
|
+
//
|
|
55
|
+
// NOT the same as `<adw-window>`, deliberately. `Adw.Window` is a plain styled container —
|
|
56
|
+
// nothing about it is GTK's `GtkWindow` — while this one answers the FRAME properties:
|
|
57
|
+
// `decorated` drops the titlebar strip, `maximized` and `fullscreened` square the corners
|
|
58
|
+
// off and drop the shadow (`_window.scss:66-72`), and the strip itself is either the
|
|
59
|
+
// application's `titlebar` or the two `<gtk-window-controls>` a server-side decoration would
|
|
60
|
+
// have had. See `gtk-window.ts` for the whole list and each source line.
|
|
61
|
+
gtk-window,
|
|
62
|
+
gtk-application-window {
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
position: relative;
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
background-color: var(--window-bg-color);
|
|
68
|
+
color: var(--window-fg-color);
|
|
69
|
+
font-family: var(--font-family);
|
|
70
|
+
font-size: var(--font-size-base);
|
|
71
|
+
border-radius: var(--window-radius);
|
|
72
|
+
outline: 1px solid rgb(255 255 255 / 7%);
|
|
73
|
+
outline-offset: -1px;
|
|
74
|
+
box-shadow:
|
|
75
|
+
0 0 14px 5px rgb(0 0 0 / 15%),
|
|
76
|
+
0 0 5px 2px rgb(0 0 0 / 10%),
|
|
77
|
+
0 0 0 1px rgb(0 0 0 / 5%);
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
|
|
80
|
+
// `_window.scss:66-72` — a maximized or fullscreen window fills the screen, so it has no
|
|
81
|
+
// corners to round and no frame to cast a shadow from.
|
|
82
|
+
&.maximized,
|
|
83
|
+
&.fullscreen {
|
|
84
|
+
--window-radius: 0px;
|
|
85
|
+
outline: none;
|
|
86
|
+
box-shadow: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// The strip: an application's `titlebar` slot, or the two window-control groups and the
|
|
90
|
+
// window's own title. `min-width: 0` on the title is what lets a long one ellipsize
|
|
91
|
+
// instead of pushing the end controls out of the frame.
|
|
92
|
+
> .adw-gtk-window-titlebar {
|
|
93
|
+
display: flex;
|
|
94
|
+
align-items: center;
|
|
95
|
+
flex-shrink: 0;
|
|
96
|
+
min-height: 47px;
|
|
97
|
+
background-color: var(--headerbar-bg-color);
|
|
98
|
+
color: var(--headerbar-fg-color);
|
|
99
|
+
box-shadow: inset 0 -1px var(--headerbar-shade-color);
|
|
100
|
+
|
|
101
|
+
> .adw-gtk-window-title {
|
|
102
|
+
flex: 1;
|
|
103
|
+
min-width: 0;
|
|
104
|
+
padding: 0 12px;
|
|
105
|
+
font-weight: bold;
|
|
106
|
+
text-align: center;
|
|
107
|
+
white-space: nowrap;
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
text-overflow: ellipsis;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// A window with no title shows no title; GTK would draw the empty SSD label, and an
|
|
113
|
+
// empty flex track is exactly that.
|
|
114
|
+
&:has(> .adw-gtk-window-title:not([title])) > .adw-gtk-window-title {
|
|
115
|
+
display: none;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
> .adw-gtk-application-window-menubar {
|
|
120
|
+
display: flex;
|
|
121
|
+
align-items: center;
|
|
122
|
+
flex-shrink: 0;
|
|
123
|
+
gap: 6px;
|
|
124
|
+
padding: 0 6px;
|
|
125
|
+
background-color: var(--headerbar-bg-color);
|
|
126
|
+
color: var(--headerbar-fg-color);
|
|
127
|
+
box-shadow: inset 0 -1px var(--headerbar-shade-color);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// `Gtk.Box`'s own `border-spacing` is 0 here; the gap between the window's children is the
|
|
131
|
+
// application's business, and the content box exists so it can have one without the strip
|
|
132
|
+
// taking part.
|
|
133
|
+
> .adw-gtk-window-content {
|
|
134
|
+
display: flex;
|
|
135
|
+
flex-direction: column;
|
|
136
|
+
flex: 1;
|
|
137
|
+
min-height: 0;
|
|
138
|
+
overflow: auto;
|
|
139
|
+
}
|
|
23
140
|
}
|
|
@@ -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
|
+
}
|