@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
package/scss/_link.scss
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// _link.scss — `link` and `button.link`, libadwaita's link treatment.
|
|
2
|
+
//
|
|
3
|
+
// UNSCOPED, because upstream's rule is on the node and the class together
|
|
4
|
+
// (`_links.scss:1-2`) and both spellings have a reader: a `Gtk.Label` that is a link is
|
|
5
|
+
// the `link` node, and a `Gtk.LinkButton` is `button.link`. `<gtk-link-button>` renders an
|
|
6
|
+
// inner `<button class="adw-button link">`, so the class is what the selector needs.
|
|
7
|
+
//
|
|
8
|
+
// THE TWO COLOURS ARE THE PALETTE'S, not new tokens: `$link_color: var(--accent-color)`
|
|
9
|
+
// and `$link_visited_color: color-mix(in srgb, var(--accent-color) 80%, var(--view-fg-color))`
|
|
10
|
+
// (`_colors.scss:265-266`) are Sass variables over tokens this package already has, so a
|
|
11
|
+
// consumer overriding `--accent-color` recolours its links with everything else.
|
|
12
|
+
//
|
|
13
|
+
// THE `:visited` CLAUSE IS PORTED AS A CLASS. Upstream styles GTK's `:visited` state
|
|
14
|
+
// (`:7-9`), which is a state FLAG on the widget (`GTK_STATE_FLAG_VISITED`,
|
|
15
|
+
// gtklinkbutton.c:743) rather than anything a selector can name from outside.
|
|
16
|
+
// `gtk_link_button_set_visited()` flips exactly that flag and no CSS class, so
|
|
17
|
+
// `<gtk-link-button>` writes `.visited` on the inner button and the rule below reads it.
|
|
18
|
+
// `:disabled` needs no such translation: a disabled `<button>` is already the UA's.
|
|
19
|
+
//
|
|
20
|
+
// `font-weight: inherit` and the transparent background in EVERY state (`:38-44`) are
|
|
21
|
+
// upstream's point: a link is a link, not a button that happens to be blue, so the
|
|
22
|
+
// hover/active/checked rules must not paint over it.
|
|
23
|
+
//
|
|
24
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_links.scss:1-49
|
|
25
|
+
// Reference: refs/libadwaita/src/stylesheet/_colors.scss:265-266
|
|
26
|
+
// Reference: refs/gtk/gtk/gtklinkbutton.c:380 (the `.link` style class), :646-672 (the
|
|
27
|
+
// URI tooltip), :742-749 (the VISITED state flag)
|
|
28
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
29
|
+
// Modifications: Adapted for @gjsify/adwaita-web — `:visited` becomes `.visited`, because
|
|
30
|
+
// a state flag has no CSS spelling a selector can match on.
|
|
31
|
+
|
|
32
|
+
$link-color: var(--accent-color);
|
|
33
|
+
$link-visited-color: color-mix(in srgb, var(--accent-color) 80%, var(--view-fg-color));
|
|
34
|
+
$osd-link-color: color-mix(in srgb, var(--accent-bg-color) 50%, white);
|
|
35
|
+
|
|
36
|
+
.link,
|
|
37
|
+
.adw-button.link {
|
|
38
|
+
color: $link-color;
|
|
39
|
+
text-decoration: underline;
|
|
40
|
+
font-weight: inherit;
|
|
41
|
+
|
|
42
|
+
&:hover {
|
|
43
|
+
color: hsl(from $link-color h calc(s * 1.1) calc(l * 1.1));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&:active {
|
|
47
|
+
color: $link-color;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&:disabled {
|
|
51
|
+
color: color-mix(in srgb, currentColor var(--disabled-opacity), transparent);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&.visited {
|
|
55
|
+
color: $link-visited-color;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// `.osd &` — a link over content, where the accent is too dark to read.
|
|
59
|
+
.osd & {
|
|
60
|
+
color: $osd-link-color;
|
|
61
|
+
|
|
62
|
+
&:visited,
|
|
63
|
+
&.visited {
|
|
64
|
+
color: color-mix(in srgb, $osd-link-color 60%, currentColor);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&:active {
|
|
68
|
+
color: $osd-link-color;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Every state transparent: upstream gives `button.link` no background at rest, on
|
|
73
|
+
// hover, on active or when checked (_links.scss:38-44), so a toggle-button-styled link
|
|
74
|
+
// cannot paint one.
|
|
75
|
+
&,
|
|
76
|
+
&:hover,
|
|
77
|
+
&:active,
|
|
78
|
+
&:checked,
|
|
79
|
+
&.checked {
|
|
80
|
+
background-color: transparent;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// _list_box.scss — <gtk-list-box> and its rows, the elements GTK names `list` and `row`.
|
|
2
|
+
//
|
|
3
|
+
// The `list` NODE and the `row` NODE, because upstream writes them as one block and because
|
|
4
|
+
// libadwaita styles them against EACH OTHER: the separator rule is
|
|
5
|
+
// `&.separators:not(.horizontal) > row:not(.separator)` (_lists.scss:29-32), which is a rule
|
|
6
|
+
// about the list's class and the row's own — a port that styled the rows alone could not
|
|
7
|
+
// express it at all.
|
|
8
|
+
//
|
|
9
|
+
// `<gtk-list-box>` IS NOT AN ORIENTABLE, which is worth the header repeating: `GtkListBase` is
|
|
10
|
+
// (gtklistbase.c:2070) and `<gtk-list-view>` therefore takes an `orientation`, while
|
|
11
|
+
// `GtkListBox` has no such property and its rows always run down. So the
|
|
12
|
+
// `&.horizontal` arm of the upstream separator rule has no counterpart here, and the partial
|
|
13
|
+
// draws only the vertical half.
|
|
14
|
+
//
|
|
15
|
+
// The colour tokens are libadwaita's own, spelled with this package's variables:
|
|
16
|
+
// `$view_hover_color` is `currentColor 4%`, `$view_active_color` `currentColor 8%` and
|
|
17
|
+
// `$view_selected_color` `var(--accent-bg-color) 25%` (_colors.scss:263-276).
|
|
18
|
+
//
|
|
19
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_lists.scss:5-38 (list), :47-95 (row)
|
|
20
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
21
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
22
|
+
|
|
23
|
+
gtk-list-box {
|
|
24
|
+
display: block;
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
color: var(--view-fg-color);
|
|
27
|
+
background-color: var(--view-bg-color);
|
|
28
|
+
background-clip: padding-box;
|
|
29
|
+
|
|
30
|
+
// `listview, list { border-color: $border_color }` (_lists.scss:10) — the upstream rule
|
|
31
|
+
// names a COLOUR and nothing else, because GTK draws a border only where a width or a
|
|
32
|
+
// style is set alongside it. So a bare list has no frame, and that is what this is: the
|
|
33
|
+
// frame used to sit here unconditionally, which made every list read as a card where
|
|
34
|
+
// libadwaita draws one only for `list.boxed-list` (_lists.scss:520) — `Adw.PreferencesGroup`
|
|
35
|
+
// carries that one, through `%card` (_preferences.scss:83), so nothing needed it here.
|
|
36
|
+
border-color: var(--border-color);
|
|
37
|
+
|
|
38
|
+
&.view:disabled {
|
|
39
|
+
color: var(--view-fg-color);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
gtk-list-box-row {
|
|
44
|
+
display: block;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
background-clip: padding-box;
|
|
47
|
+
// `listview > row { padding: 2px }` (_lists.scss:16-19).
|
|
48
|
+
padding: 2px;
|
|
49
|
+
|
|
50
|
+
&.activatable {
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&:hover {
|
|
55
|
+
background-color: color-mix(in srgb, currentColor 4%, transparent);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&:active {
|
|
59
|
+
background-color: color-mix(in srgb, currentColor 8%, transparent);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// `row &:selected { background-color: $view_selected_color }` (_lists.scss:92-94), with the
|
|
63
|
+
// hover and active shades over it (_lists.scss:83-89).
|
|
64
|
+
&.selected {
|
|
65
|
+
background-color: color-mix(in srgb, var(--accent-bg-color) 25%, transparent);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.selected:hover {
|
|
69
|
+
background-color: color-mix(in srgb, var(--accent-bg-color) 40%, transparent);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&.selected:active {
|
|
73
|
+
background-color: color-mix(in srgb, var(--accent-bg-color) 50%, transparent);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&:focus-visible {
|
|
77
|
+
outline: 2px solid var(--accent-color);
|
|
78
|
+
outline-offset: -2px;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// `.separators` is the class GTK adds for `show-separators` (gtklistbox.c:4127-4134), and the
|
|
83
|
+
// rule goes on every row but the last — upstream `> row:not(.separator)`, and a
|
|
84
|
+
// `<gtk-separator>` row is not one, so the port's `:last-child` is the same exclusion without
|
|
85
|
+
// giving the separator a class GTK would then have to know about.
|
|
86
|
+
gtk-list-box.separators > gtk-list-box-row:not(:last-child) {
|
|
87
|
+
border-bottom: 1px solid var(--border-color);
|
|
88
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// _list_view.scss — <gtk-list-view>, and the ROW rules its two relatives reuse.
|
|
2
|
+
//
|
|
3
|
+
// UNSCOPED on purpose: `gridview > child` and `columnview > listview > row` are the same
|
|
4
|
+
// selectable, activatable surface as `listview > row`, and upstream writes them as one
|
|
5
|
+
// set of colours in `_lists.scss` and `_views.scss`. The shared half is the
|
|
6
|
+
// `adw-list-selectable` MIXIN below, which `_grid_view.scss` and `_column_view.scss`
|
|
7
|
+
// include rather than restate — the hover/active/selected quartet is four colours per
|
|
8
|
+
// state and a drifted copy is four wrong ones. A mixin and not a `%placeholder`: a
|
|
9
|
+
// placeholder extended across a `@use` boundary emits into the module that DECLARED it,
|
|
10
|
+
// which would put the grid's and the column view's selectors inside this file's output.
|
|
11
|
+
//
|
|
12
|
+
// The colour tokens are libadwaita's own, spelled with this package's variables:
|
|
13
|
+
// `$view_hover_color` is `currentColor 4%`, `$view_active_color` `currentColor 8%` and
|
|
14
|
+
// `$view_selected_color` `var(--accent-bg-color) 25%` (_colors.scss:274-276).
|
|
15
|
+
//
|
|
16
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_lists.scss:5-45, 74-95 (listview, row)
|
|
17
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_views.scss:47-50 (rubberband)
|
|
18
|
+
// Reference: refs/libadwaita/src/stylesheet/_colors.scss:263-276 (the four tokens)
|
|
19
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
20
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
21
|
+
|
|
22
|
+
// The hover / active / selected quartet every item surface in the three views wears.
|
|
23
|
+
@mixin adw-list-selectable {
|
|
24
|
+
background-clip: padding-box;
|
|
25
|
+
|
|
26
|
+
&:hover {
|
|
27
|
+
background-color: color-mix(in srgb, currentColor 4%, transparent);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&:active {
|
|
31
|
+
background-color: color-mix(in srgb, currentColor 8%, transparent);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&.selected {
|
|
35
|
+
background-color: color-mix(in srgb, var(--accent-bg-color) 25%, transparent);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&:focus-visible {
|
|
39
|
+
outline: 2px solid var(--accent-color);
|
|
40
|
+
outline-offset: -2px;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// The band is positioned against the row container, which is why every view's row
|
|
45
|
+
// container is a containing block.
|
|
46
|
+
.adw-rubberband {
|
|
47
|
+
position: absolute;
|
|
48
|
+
border: 1px solid var(--accent-color);
|
|
49
|
+
background-color: color-mix(in srgb, var(--accent-color) 20%, transparent);
|
|
50
|
+
pointer-events: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// The node a factory's label lands in, in all three views.
|
|
54
|
+
.adw-list-item-label {
|
|
55
|
+
display: block;
|
|
56
|
+
overflow: hidden;
|
|
57
|
+
text-overflow: ellipsis;
|
|
58
|
+
white-space: nowrap;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
gtk-list-view {
|
|
62
|
+
display: block;
|
|
63
|
+
box-sizing: border-box;
|
|
64
|
+
color: var(--view-fg-color);
|
|
65
|
+
background-color: var(--view-bg-color);
|
|
66
|
+
background-clip: padding-box;
|
|
67
|
+
|
|
68
|
+
.adw-list-view-rows {
|
|
69
|
+
// `position: relative` is the rubber band's containing block, not decoration.
|
|
70
|
+
position: relative;
|
|
71
|
+
display: flex;
|
|
72
|
+
flex-direction: column;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&.horizontal .adw-list-view-rows {
|
|
76
|
+
flex-direction: row;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.adw-list-view-row {
|
|
80
|
+
@include adw-list-selectable;
|
|
81
|
+
|
|
82
|
+
// `listview > row { padding: 2px }` (_lists.scss:16-19).
|
|
83
|
+
padding: 2px;
|
|
84
|
+
box-sizing: border-box;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// `.separators` is the class GTK adds for `show-separators`; upstream draws the rule on
|
|
88
|
+
// the BOTTOM of every row but the separator itself, and on the LEFT when horizontal.
|
|
89
|
+
&.separators:not(.horizontal) .adw-list-view-row:not(:last-child) {
|
|
90
|
+
border-bottom: 1px solid var(--border-color);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&.separators.horizontal .adw-list-view-row:not(:last-child) {
|
|
94
|
+
border-right: 1px solid var(--border-color);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// _media_controls.scss — <gtk-media-controls>: a box of six pixels' spacing, two labels in
|
|
2
|
+
// tabular figures, and a range input.
|
|
3
|
+
//
|
|
4
|
+
// libadwaita has NO `_media-controls.scss`. `GtkMediaControls` is styled only through the
|
|
5
|
+
// `.osd` and `.bottom` classes `ui/gtkvideo.ui` puts on it, which is what `_video.scss` has
|
|
6
|
+
// already spent itself on: the `%osd` surface (_common.scss:43-60) and the 12px padding a
|
|
7
|
+
// standalone OSD toolbar takes (_toolbars.scss:96-100). So this partial is the C's layout
|
|
8
|
+
// and nothing else — the six numbers below are all the template says.
|
|
9
|
+
//
|
|
10
|
+
// THE TEMPLATE'S `spacing` 6 IS THE ONLY LAYOUT PROPERTY THAT SURVIVES.
|
|
11
|
+
// `box { spacing: 6 }` in `ui/gtkmediacontrols.ui` becomes the gap between the play button,
|
|
12
|
+
// the time box and the volume button. Nothing else in the template is a spacing: the time
|
|
13
|
+
// box has none of its own, and the labels sit against the scale with no gap at all, which is
|
|
14
|
+
// why `gap` is applied to the OUTER box only.
|
|
15
|
+
//
|
|
16
|
+
// `font-variant-numeric: tabular-nums` IS BOTH LABELS' `font-features "tnum=1"`. That
|
|
17
|
+
// attribute on each label (`ui/gtkmediacontrols.ui`) is the only reason the class exists, and
|
|
18
|
+
// it is load-bearing rather than cosmetic: a position counting 9→10 must not change the
|
|
19
|
+
// width of the string, or the seek scale beside it shifts sideways once a second. The same
|
|
20
|
+
// declaration `_labels.scss` applies to the `.numeric` utility class reaches a
|
|
21
|
+
// `Gtk.Label`; this widget's labels are spans of the element's own tree, so the class is
|
|
22
|
+
// applied here.
|
|
23
|
+
//
|
|
24
|
+
// THE SEEK SCALE IS `<input type="range">` WITH GTK'S ADJUSTMENT SPELLED OUT.
|
|
25
|
+
// `time_adjustment` is `upper` 10, `step-increment` 1, `page-increment` 10
|
|
26
|
+
// (`ui/gtkmediacontrols.ui`), and every real duration arrives by resetting the adjustment's
|
|
27
|
+
// range to the media's own — so `min` 0, `max` the duration in seconds and `step` 1 second.
|
|
28
|
+
// `page-increment` 10 has no HTML equivalent: a range input's Page key moves by ten STEPS,
|
|
29
|
+
// not by ten units, which is a different thing and cannot be made to agree. That is the one
|
|
30
|
+
// adjustment property that does not survive, and it is worth naming rather than leaving to be
|
|
31
|
+
// discovered.
|
|
32
|
+
//
|
|
33
|
+
// THE VOLUME SLIDE IS THE OTHER ADJUSTMENT, AND IT IS A DIFFERENT SHAPE.
|
|
34
|
+
// `volume_adjustment` is `upper` 1, `step-increment` 0.1, `page-increment` 1, `value` 1 —
|
|
35
|
+
// full scale in tenths — so `min` 0, `max` 1, `step` 0.1. It lives in the volume button's
|
|
36
|
+
// popover because `GtkVolumeButton` IS a menu button with an adjustment popover; the
|
|
37
|
+
// popover surface is `_popovers.scss`'s, reused through the `.adw-popover` class rather than
|
|
38
|
+
// restated here.
|
|
39
|
+
//
|
|
40
|
+
// `.insensitive` IS THE TEMPLATE'S `sensitive` 0. `ui/gtkmediacontrols.ui` sets it on the
|
|
41
|
+
// whole box, and `gtk_media_controls_set_sensitive` is what re-enables it — so a controls
|
|
42
|
+
// bar with no stream attached is inert, which is the state the element renders by default.
|
|
43
|
+
// GTK's `:disabled` opacity is `_buttons.scss`'s `$disabled-opacity`, and the same token is
|
|
44
|
+
// used here for the whole bar rather than per button, because in the C the insensitivity is
|
|
45
|
+
// the CONTAINER's.
|
|
46
|
+
//
|
|
47
|
+
// Reference: refs/gtk/gtk/ui/gtkmediacontrols.ui (the node tree and both adjustments)
|
|
48
|
+
// Reference: refs/libadwaita/src/stylesheet/_common.scss:43-60 (`%osd`, applied by
|
|
49
|
+
// `_video.scss`), widgets/_toolbars.scss:96-100 (the `.osd` toolbar's 12px padding)
|
|
50
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_buttons.scss (`:disabled` opacity)
|
|
51
|
+
// Copyright (c) The GTK Team. LGPLv2.1+.
|
|
52
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
53
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
54
|
+
|
|
55
|
+
gtk-media-controls {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
color: var(--window-fg-color);
|
|
59
|
+
|
|
60
|
+
// `box { sensitive: 0; spacing: 6 }` (ui/gtkmediacontrols.ui).
|
|
61
|
+
gap: 6px;
|
|
62
|
+
|
|
63
|
+
// `gtk_media_controls_set_sensitive` — the container's own insensitivity, which is where
|
|
64
|
+
// the template puts it. Same token `_buttons.scss` uses for a `:disabled` button.
|
|
65
|
+
&.insensitive,
|
|
66
|
+
&:disabled {
|
|
67
|
+
opacity: var(--disabled-opacity);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.adw-media-controls-box {
|
|
71
|
+
display: flex;
|
|
72
|
+
flex: 1;
|
|
73
|
+
gap: 6px;
|
|
74
|
+
align-items: center;
|
|
75
|
+
min-width: 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// `play_button` is a `GtkButton` with `has-frame` 0 — a flat button — and so is the
|
|
79
|
+
// `volume_button` beside it. `.adw-flat` is this package's flat-button class; `_button.scss`
|
|
80
|
+
// owns the shape, and nothing here restates it.
|
|
81
|
+
.adw-media-controls-button {
|
|
82
|
+
flex-shrink: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// `time_box` — the middle `GtkBox`, `hexpand` on the scale inside it.
|
|
86
|
+
.adw-media-controls-time-box {
|
|
87
|
+
display: flex;
|
|
88
|
+
flex: 1;
|
|
89
|
+
align-items: center;
|
|
90
|
+
min-width: 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// BOTH labels' `font-features "tnum=1"` (ui/gtkmediacontrols.ui). Tabular figures, so a
|
|
94
|
+
// position counting 9→10 does not resize its own string and shift the scale sideways.
|
|
95
|
+
.adw-media-controls-time-label,
|
|
96
|
+
.adw-media-controls-duration-label {
|
|
97
|
+
// `font-variant-numeric: tabular-nums` is a UTILITY class on a label in libadwaita
|
|
98
|
+
// (`_labels.scss`); it is applied here directly because these are spans of this element's
|
|
99
|
+
// own tree rather than `<gtk-label>`s a consumer styled.
|
|
100
|
+
font-variant-numeric: tabular-nums;
|
|
101
|
+
// The two labels must never be squeezed: they are the numbers the seek bar is read
|
|
102
|
+
// against, and a truncated `-1:02:03` is worse than a narrower scale.
|
|
103
|
+
flex-shrink: 0;
|
|
104
|
+
padding: 0 2px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// `seek_scale` — the `GtkScale`, `hexpand` 1 and `restrict-to-fill-level` 0.
|
|
108
|
+
.adw-media-controls-seek-scale {
|
|
109
|
+
flex: 1;
|
|
110
|
+
min-width: 0;
|
|
111
|
+
accent-color: var(--accent-color);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// The volume button is a POSITIONING context for its own popover, which is what makes the
|
|
115
|
+
// surface sit below the button rather than beside the bar — `GtkVolumeButton` is a
|
|
116
|
+
// `GtkMenuButton`, so the surface hangs off its anchor.
|
|
117
|
+
.adw-media-controls-volume-button {
|
|
118
|
+
position: relative;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// `<gtk-popover>` is this package's ONE popover surface and `_popover.scss`'s header says
|
|
122
|
+
// why: three hand-rolled copies of the plate disagreed with libadwaita and with each
|
|
123
|
+
// other before it was lifted out. So the volume slide goes in a real one and this partial
|
|
124
|
+
// states nothing about its shape — only that it hangs from the button and does not take
|
|
125
|
+
// clicks meant for the slide.
|
|
126
|
+
.adw-media-controls-volume-popover {
|
|
127
|
+
top: calc(100% + 6px);
|
|
128
|
+
left: 50%;
|
|
129
|
+
// `_popover.scss`'s own `$popover-gap`, restated here rather than imported: the gap is
|
|
130
|
+
// the DISTANCE from anchor to surface, which is a property of the anchor's positioning
|
|
131
|
+
// and belongs to the widget that owns the anchor.
|
|
132
|
+
transform: translateX(-50%);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.adw-media-controls-volume-scale {
|
|
136
|
+
width: 120px;
|
|
137
|
+
accent-color: var(--accent-color);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// _overlay.scss — <gtk-overlay>: a main child, and siblings stacked on top of it.
|
|
2
|
+
//
|
|
3
|
+
// libadwaita has NO `_overlay.scss`: `grep` over `src/stylesheet/widgets/` finds no
|
|
4
|
+
// `overlay` node rule, because an overlay draws nothing of its own — GTK's whole CSS
|
|
5
|
+
// node contract for it is the `overlay` name plus the `.left` / `.right` / `.top` /
|
|
6
|
+
// `.bottom` classes an edge-aligned child is given (gtkoverlay.c:66-71). So this partial
|
|
7
|
+
// is LAYOUT, not a look, and the geometry it encodes is `gtk_overlay_get_child_position`
|
|
8
|
+
// (gtkoverlay.c:130-196) rather than a style.
|
|
9
|
+
//
|
|
10
|
+
// · `.adw-overlay-child` is `display: contents` so the main child is laid out as a
|
|
11
|
+
// DIRECT child of the host and the overlay takes its size — which is exactly
|
|
12
|
+
// gtk_overlay_compute_expand and the "sizes are those of its main child" rule
|
|
13
|
+
// (gtkoverlay.c:56-58, :291-308). A wrapper that generated a box would put a
|
|
14
|
+
// layout node between the overlay and the child, and the child's own `hexpand`
|
|
15
|
+
// would have to be re-implemented here.
|
|
16
|
+
// · `.adw-overlay-layer` is the box an overlay child is placed in. `inset: 0` over
|
|
17
|
+
// the whole host is the C's `graphene_rect_init (&bounds, 0, 0, width, height)`
|
|
18
|
+
// (gtkoverlay.c:214-216), and `display: flex` is what lets a child's own
|
|
19
|
+
// `[halign]` / `[valign]` auto-margin rules place it — `gtk_overlay_get_child_position`
|
|
20
|
+
// reads nothing but those two properties.
|
|
21
|
+
// · `align-items: stretch` is `GTK_ALIGN_FILL` on the cross axis, the default for
|
|
22
|
+
// `GtkWidget:valign`. A child that names a `valign` carries an auto cross margin,
|
|
23
|
+
// and a flex item with an auto cross margin does NOT stretch (CSS Flexbox § 9.4),
|
|
24
|
+
// which is precisely the branch the C takes for START, CENTER and END.
|
|
25
|
+
// · `pointer-events: none`, re-enabled per child: GTK hands an event to the widget
|
|
26
|
+
// whose allocation contains it, so an overlay child that is smaller than the overlay
|
|
27
|
+
// must not make the main child unreachable underneath it.
|
|
28
|
+
//
|
|
29
|
+
// The `:not([halign])` guard on the main axis is the whole of `GTK_ALIGN_FILL` there —
|
|
30
|
+
// `flex-grow` WITHOUT it would be cancelled by the auto margin `_widget.scss` gives a
|
|
31
|
+
// child that names an alignment, since free space is handed to flex-grow first and only
|
|
32
|
+
// the remainder reaches an auto margin. Specificity has to beat `_widget.scss`'s
|
|
33
|
+
// `[halign='start']` (0,1,0), which `:not([halign])` lifts this rule to.
|
|
34
|
+
//
|
|
35
|
+
// Reference: refs/gtk/gtk/gtkoverlay.c (get_child_position, the `overlay` CSS node)
|
|
36
|
+
// Reference: refs/gtk/gtk/gtkoverlaylayout.c (gtk_overlay_child_allocate, clip bounds)
|
|
37
|
+
// Copyright (c) The GTK Team. LGPLv2.1+.
|
|
38
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
39
|
+
|
|
40
|
+
gtk-overlay {
|
|
41
|
+
display: block;
|
|
42
|
+
position: relative;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.adw-overlay-child {
|
|
46
|
+
// The main child, in the host's own flow — see the header.
|
|
47
|
+
display: contents;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.adw-overlay-layer {
|
|
51
|
+
position: absolute;
|
|
52
|
+
inset: 0;
|
|
53
|
+
display: flex;
|
|
54
|
+
align-items: stretch;
|
|
55
|
+
justify-content: flex-start;
|
|
56
|
+
pointer-events: none;
|
|
57
|
+
|
|
58
|
+
> * {
|
|
59
|
+
// GTK delivers an event to the widget whose ALLOCATION it lands in (gtkoverlay.c:150-193),
|
|
60
|
+
// so only the overlay child's own box takes input.
|
|
61
|
+
pointer-events: auto;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// GTK_ALIGN_FILL on the main axis: the child grows to the overlay's whole allocation.
|
|
65
|
+
> *:not([halign]) {
|
|
66
|
+
flex: 1 1 auto;
|
|
67
|
+
}
|
|
68
|
+
}
|
package/scss/_paned.scss
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// _paned.scss — <gtk-paned>: two panes, and the hairline between them.
|
|
2
|
+
//
|
|
3
|
+
// This is libadwaita's `_paned.scss` transposed onto the element. Upstream styles the CSS
|
|
4
|
+
// NODE TREE `paned > separator[.wide]` (gtkpaned.c:88-98) rather than a tag, so the selector
|
|
5
|
+
// here is the element and the handle class it carries:
|
|
6
|
+
//
|
|
7
|
+
// · the rule draws NOTHING with a background — `background: none` upstream — and paints
|
|
8
|
+
// the rule as an INSET BOX SHADOW on the leading edge, `inset 1px 0 $border_color` for a
|
|
9
|
+
// horizontal paned in an LTR row and the mirrored `-1px` under RTL. `<gtk-separator>`'s
|
|
10
|
+
// own partial fills its background instead, which is why the handle is a plain box with
|
|
11
|
+
// the `separator` class rather than a `<gtk-separator>`: upstream's two selectors can
|
|
12
|
+
// then mean different things, as they do in GTK.
|
|
13
|
+
// · `.wide` is `gtk_paned_set_wide_handle` adding the class to the handle node
|
|
14
|
+
// (gtkpaned.c:2566), and upstream widens the node itself to 5px rather than fattening a
|
|
15
|
+
// 1px rule — so the rule's shadow moves to BOTH edges.
|
|
16
|
+
//
|
|
17
|
+
// The HIT AREA is the part upstream has no CSS for: `gtk_paned_handle_contains` insets the
|
|
18
|
+
// node's border rect by `- HANDLE_EXTRA_SIZE` (6px) on every side unless the handle is wide
|
|
19
|
+
// (gtkpanedhandle.c:49, :60-73), and `initiates_touch_drag` adds 50px more for a touch
|
|
20
|
+
// sequence (gtkpaned.c:862-884). A `::before` with negative insets is the same rectangle
|
|
21
|
+
// without moving the rule, and a pseudo-element is not itself an event target, so the events
|
|
22
|
+
// land on the handle.
|
|
23
|
+
//
|
|
24
|
+
// `.adw-paned-child` is a flex column and its adopted child fills it, which is the pattern
|
|
25
|
+
// `adw-navigation-view` / `adw-navigation-split-view` already use for the pane bins they
|
|
26
|
+
// build themselves. `min-height: 0` / `min-width: 0` on the child is what lets a pane's
|
|
27
|
+
// scroll container shrink inside the divider instead of pushing it.
|
|
28
|
+
//
|
|
29
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_paned.scss
|
|
30
|
+
// Reference: refs/gtk/gtk/gtkpanedhandle.c (HANDLE_EXTRA_SIZE, gtk_paned_handle_contains)
|
|
31
|
+
// Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
|
|
32
|
+
// Copyright (c) The GTK Team. LGPLv2.1+.
|
|
33
|
+
// Modifications: Adapted for @gjsify/adwaita-web Web Components.
|
|
34
|
+
|
|
35
|
+
gtk-paned {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: row;
|
|
38
|
+
min-height: 0;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
|
|
41
|
+
&.vertical {
|
|
42
|
+
flex-direction: column;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
gtk-paned > .adw-paned-child {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
min-width: 0;
|
|
50
|
+
min-height: 0;
|
|
51
|
+
|
|
52
|
+
> * {
|
|
53
|
+
flex: 1 1 auto;
|
|
54
|
+
min-width: 0;
|
|
55
|
+
min-height: 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
gtk-paned > .adw-paned-handle {
|
|
60
|
+
position: relative;
|
|
61
|
+
flex: none;
|
|
62
|
+
// The 1px (or 5px) node `gtk_paned_handle_new` measures with
|
|
63
|
+
// `gtk_widget_measure (handle_widget, orientation, -1, NULL, &handle_size, …)`.
|
|
64
|
+
min-width: 1px;
|
|
65
|
+
min-height: 1px;
|
|
66
|
+
// Upstream's `background: none` — the rule below is an inset shadow, not a fill, which is
|
|
67
|
+
// what leaves the two separators (this one and `<gtk-separator>`) free to differ.
|
|
68
|
+
background: none;
|
|
69
|
+
|
|
70
|
+
&.wide {
|
|
71
|
+
min-width: 5px;
|
|
72
|
+
min-height: 5px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// `graphene_rect_inset (&area, -HANDLE_EXTRA_SIZE, -HANDLE_EXTRA_SIZE)`.
|
|
76
|
+
&::before {
|
|
77
|
+
content: '';
|
|
78
|
+
position: absolute;
|
|
79
|
+
inset: -6px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&:focus-visible {
|
|
83
|
+
outline: 2px solid var(--accent-color);
|
|
84
|
+
outline-offset: 2px;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
gtk-paned.horizontal > .adw-paned-handle {
|
|
89
|
+
&:dir(ltr) {
|
|
90
|
+
box-shadow: inset 1px 0 var(--border-color);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&:dir(rtl) {
|
|
94
|
+
box-shadow: inset -1px 0 var(--border-color);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&.wide {
|
|
98
|
+
&:dir(ltr) {
|
|
99
|
+
box-shadow:
|
|
100
|
+
inset 1px 0 var(--border-color),
|
|
101
|
+
inset -1px 0 var(--border-color);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&:dir(rtl) {
|
|
105
|
+
box-shadow:
|
|
106
|
+
inset -1px 0 var(--border-color),
|
|
107
|
+
inset 1px 0 var(--border-color);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
gtk-paned.vertical > .adw-paned-handle {
|
|
113
|
+
box-shadow: inset 0 1px var(--border-color);
|
|
114
|
+
|
|
115
|
+
&.wide {
|
|
116
|
+
box-shadow:
|
|
117
|
+
inset 0 1px var(--border-color),
|
|
118
|
+
inset 0 -1px var(--border-color);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// `gtk_widget_set_cursor_from_name (handle_widget, "col-resize")` (gtkpaned.c:1527) — the
|
|
123
|
+
// C picks it from the handle node's own orientation, which the classes carry.
|
|
124
|
+
gtk-paned.horizontal > .adw-paned-handle {
|
|
125
|
+
cursor: col-resize;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
gtk-paned.vertical > .adw-paned-handle {
|
|
129
|
+
cursor: row-resize;
|
|
130
|
+
}
|