@gjsify/adwaita-web 0.54.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/README.md +8 -0
  2. package/dist/adwaita-web.css +8146 -3011
  3. package/dist/adwaita-web.css.map +1 -1
  4. package/lib/types/adw-application-window.spec.d.ts +1 -0
  5. package/lib/types/adw-bin.spec.d.ts +1 -0
  6. package/lib/types/adw-breakpoint-bin.spec.d.ts +1 -0
  7. package/lib/types/adw-clamp-scrollable.spec.d.ts +1 -0
  8. package/lib/types/adw-multi-layout-view.spec.d.ts +1 -0
  9. package/lib/types/adw-preferences-row.spec.d.ts +1 -0
  10. package/lib/types/adw-shortcuts.spec.d.ts +1 -0
  11. package/lib/types/adw-status-page.spec.d.ts +1 -0
  12. package/lib/types/adw-tab-bar.spec.d.ts +1 -0
  13. package/lib/types/adw-tab-button.spec.d.ts +1 -0
  14. package/lib/types/adw-tab-overview.spec.d.ts +1 -0
  15. package/lib/types/adw-view-switcher-sidebar.spec.d.ts +1 -0
  16. package/lib/types/adw-window.spec.d.ts +1 -0
  17. package/lib/types/attributes.d.ts +19 -0
  18. package/lib/types/breakpoints.d.ts +14 -3
  19. package/lib/types/construct-vectors.spec.d.ts +1 -0
  20. package/lib/types/elements/adw-action-row.d.ts +4 -0
  21. package/lib/types/elements/adw-application-window.d.ts +27 -0
  22. package/lib/types/elements/adw-bin.d.ts +17 -0
  23. package/lib/types/elements/adw-breakpoint-bin.d.ts +67 -0
  24. package/lib/types/elements/adw-clamp-scrollable.d.ts +38 -0
  25. package/lib/types/elements/adw-combo-row.d.ts +4 -0
  26. package/lib/types/elements/adw-dialog.d.ts +10 -0
  27. package/lib/types/elements/adw-entry-row.d.ts +6 -0
  28. package/lib/types/elements/adw-expander-row.d.ts +2 -0
  29. package/lib/types/elements/adw-header-bar.d.ts +6 -0
  30. package/lib/types/elements/adw-layout-slot.d.ts +19 -0
  31. package/lib/types/elements/adw-multi-layout-view.d.ts +101 -0
  32. package/lib/types/elements/adw-overlay-split-view.d.ts +13 -0
  33. package/lib/types/elements/adw-preferences-row.d.ts +31 -0
  34. package/lib/types/elements/adw-shortcuts-dialog.d.ts +13 -0
  35. package/lib/types/elements/adw-shortcuts-item.d.ts +36 -0
  36. package/lib/types/elements/adw-shortcuts-section.d.ts +14 -0
  37. package/lib/types/elements/adw-sidebar.d.ts +8 -2
  38. package/lib/types/elements/adw-spin-row.d.ts +6 -0
  39. package/lib/types/elements/adw-switch-row.d.ts +7 -0
  40. package/lib/types/elements/adw-tab-bar.d.ts +108 -0
  41. package/lib/types/elements/adw-tab-button.d.ts +32 -0
  42. package/lib/types/elements/adw-tab-overview.d.ts +199 -0
  43. package/lib/types/elements/adw-tab-view.d.ts +19 -23
  44. package/lib/types/elements/adw-toggle-group.d.ts +17 -0
  45. package/lib/types/elements/adw-view-switcher-sidebar.d.ts +84 -0
  46. package/lib/types/elements/adw-window.d.ts +40 -0
  47. package/lib/types/elements/gtk-about-dialog.d.ts +146 -0
  48. package/lib/types/elements/gtk-application-window.d.ts +34 -0
  49. package/lib/types/elements/gtk-aspect-frame.d.ts +27 -0
  50. package/lib/types/elements/gtk-button.d.ts +9 -0
  51. package/lib/types/elements/gtk-calendar.d.ts +159 -0
  52. package/lib/types/elements/gtk-center-box.d.ts +39 -0
  53. package/lib/types/elements/gtk-color-dialog-button.d.ts +69 -0
  54. package/lib/types/elements/gtk-column-view.d.ts +50 -0
  55. package/lib/types/elements/gtk-drag-icon.d.ts +78 -0
  56. package/lib/types/elements/gtk-drawing-area.d.ts +95 -0
  57. package/lib/types/elements/gtk-editable-label.d.ts +33 -0
  58. package/lib/types/elements/gtk-emoji-chooser.d.ts +84 -0
  59. package/lib/types/elements/gtk-entry.d.ts +20 -1
  60. package/lib/types/elements/gtk-expander.d.ts +49 -0
  61. package/lib/types/elements/gtk-fixed.d.ts +13 -0
  62. package/lib/types/elements/gtk-flow-box-child.d.ts +14 -0
  63. package/lib/types/elements/gtk-flow-box.d.ts +87 -0
  64. package/lib/types/elements/gtk-font-dialog-button.d.ts +83 -0
  65. package/lib/types/elements/gtk-frame.d.ts +24 -0
  66. package/lib/types/elements/gtk-gl-area.d.ts +136 -0
  67. package/lib/types/elements/gtk-graphics-offload.d.ts +24 -0
  68. package/lib/types/elements/gtk-grid-view.d.ts +39 -0
  69. package/lib/types/elements/gtk-grid.d.ts +27 -0
  70. package/lib/types/elements/gtk-header-bar.d.ts +60 -0
  71. package/lib/types/elements/gtk-inscription.d.ts +64 -0
  72. package/lib/types/elements/gtk-label.d.ts +3 -0
  73. package/lib/types/elements/gtk-level-bar.d.ts +59 -0
  74. package/lib/types/elements/gtk-link-button.d.ts +29 -0
  75. package/lib/types/elements/gtk-list-box-row.d.ts +54 -0
  76. package/lib/types/elements/gtk-list-box.d.ts +100 -0
  77. package/lib/types/elements/gtk-list-view.d.ts +73 -0
  78. package/lib/types/elements/gtk-media-controls.d.ts +142 -0
  79. package/lib/types/elements/gtk-notebook.d.ts +148 -0
  80. package/lib/types/elements/gtk-overlay.d.ts +22 -0
  81. package/lib/types/elements/gtk-page-setup-unix-dialog.d.ts +87 -0
  82. package/lib/types/elements/gtk-paned.d.ts +121 -0
  83. package/lib/types/elements/gtk-password-entry.d.ts +27 -0
  84. package/lib/types/elements/gtk-picture.d.ts +66 -0
  85. package/lib/types/elements/gtk-popover-bin.d.ts +82 -0
  86. package/lib/types/elements/gtk-popover-menu-bar.d.ts +66 -0
  87. package/lib/types/elements/gtk-popover-menu.d.ts +83 -0
  88. package/lib/types/elements/gtk-popover.d.ts +28 -3
  89. package/lib/types/elements/gtk-print-unix-dialog.d.ts +167 -0
  90. package/lib/types/elements/gtk-revealer.d.ts +55 -0
  91. package/lib/types/elements/gtk-scale-button.d.ts +59 -0
  92. package/lib/types/elements/gtk-scale.d.ts +98 -0
  93. package/lib/types/elements/gtk-scrollbar.d.ts +124 -0
  94. package/lib/types/elements/gtk-scrolled-window.d.ts +129 -0
  95. package/lib/types/elements/gtk-search-bar.d.ts +39 -0
  96. package/lib/types/elements/gtk-search-entry.d.ts +27 -0
  97. package/lib/types/elements/gtk-separator.d.ts +10 -0
  98. package/lib/types/elements/gtk-spin-button.d.ts +94 -0
  99. package/lib/types/elements/gtk-spinner.d.ts +14 -0
  100. package/lib/types/elements/gtk-stack-sidebar.d.ts +43 -0
  101. package/lib/types/elements/gtk-stack-switcher.d.ts +58 -0
  102. package/lib/types/elements/gtk-stack.d.ts +154 -0
  103. package/lib/types/elements/gtk-switch.d.ts +4 -1
  104. package/lib/types/elements/gtk-text-view.d.ts +62 -0
  105. package/lib/types/elements/gtk-text.d.ts +45 -0
  106. package/lib/types/elements/gtk-toggle-button.d.ts +45 -0
  107. package/lib/types/elements/gtk-tree-expander.d.ts +38 -0
  108. package/lib/types/elements/gtk-video.d.ts +97 -0
  109. package/lib/types/elements/gtk-viewport.d.ts +84 -0
  110. package/lib/types/elements/gtk-window-controls.d.ts +80 -0
  111. package/lib/types/elements/gtk-window-handle.d.ts +39 -0
  112. package/lib/types/elements/gtk-window.d.ts +103 -0
  113. package/lib/types/elements/justification.d.ts +2 -0
  114. package/lib/types/elements/popover-menu.d.ts +18 -0
  115. package/lib/types/elements/roving-focus.d.ts +29 -1
  116. package/lib/types/emoji-data.d.ts +38 -0
  117. package/lib/types/font-description.d.ts +96 -0
  118. package/lib/types/gtk-about-dialog.spec.d.ts +1 -0
  119. package/lib/types/gtk-action-bar.spec.d.ts +1 -0
  120. package/lib/types/gtk-application-window.spec.d.ts +1 -0
  121. package/lib/types/gtk-aspect-frame.spec.d.ts +1 -0
  122. package/lib/types/gtk-calendar.spec.d.ts +1 -0
  123. package/lib/types/gtk-center-box.spec.d.ts +1 -0
  124. package/lib/types/gtk-color-dialog-button.spec.d.ts +1 -0
  125. package/lib/types/gtk-column-view.spec.d.ts +1 -0
  126. package/lib/types/gtk-drag-icon.spec.d.ts +1 -0
  127. package/lib/types/gtk-drawing-area.spec.d.ts +1 -0
  128. package/lib/types/gtk-editable-label.spec.d.ts +1 -0
  129. package/lib/types/gtk-emoji-chooser.spec.d.ts +1 -0
  130. package/lib/types/gtk-expander.spec.d.ts +1 -0
  131. package/lib/types/gtk-fixed.spec.d.ts +1 -0
  132. package/lib/types/gtk-flow-box.spec.d.ts +1 -0
  133. package/lib/types/gtk-font-dialog-button.spec.d.ts +1 -0
  134. package/lib/types/gtk-frame.spec.d.ts +1 -0
  135. package/lib/types/gtk-gl-area.spec.d.ts +1 -0
  136. package/lib/types/gtk-graphics-offload.spec.d.ts +1 -0
  137. package/lib/types/gtk-grid-view.spec.d.ts +1 -0
  138. package/lib/types/gtk-grid.spec.d.ts +1 -0
  139. package/lib/types/gtk-header-bar.spec.d.ts +1 -0
  140. package/lib/types/gtk-inscription.spec.d.ts +1 -0
  141. package/lib/types/gtk-level-bar.spec.d.ts +1 -0
  142. package/lib/types/gtk-link-button.spec.d.ts +1 -0
  143. package/lib/types/gtk-list-box.spec.d.ts +1 -0
  144. package/lib/types/gtk-list-view.spec.d.ts +1 -0
  145. package/lib/types/gtk-media-controls.spec.d.ts +1 -0
  146. package/lib/types/gtk-notebook.spec.d.ts +1 -0
  147. package/lib/types/gtk-overlay.spec.d.ts +1 -0
  148. package/lib/types/gtk-paned.spec.d.ts +1 -0
  149. package/lib/types/gtk-password-entry.spec.d.ts +1 -0
  150. package/lib/types/gtk-picture.spec.d.ts +1 -0
  151. package/lib/types/gtk-popover-bin.spec.d.ts +1 -0
  152. package/lib/types/gtk-popover-menu-bar.spec.d.ts +1 -0
  153. package/lib/types/gtk-popover-menu.spec.d.ts +1 -0
  154. package/lib/types/gtk-popover-role.spec.d.ts +1 -0
  155. package/lib/types/gtk-popover.spec.d.ts +1 -0
  156. package/lib/types/gtk-print-dialogs.spec.d.ts +1 -0
  157. package/lib/types/gtk-revealer.spec.d.ts +1 -0
  158. package/lib/types/gtk-scale-button.spec.d.ts +1 -0
  159. package/lib/types/gtk-scale.spec.d.ts +1 -0
  160. package/lib/types/gtk-scrollbar.spec.d.ts +1 -0
  161. package/lib/types/gtk-scrolled-window.spec.d.ts +1 -0
  162. package/lib/types/gtk-search-bar.spec.d.ts +1 -0
  163. package/lib/types/gtk-search-entry.spec.d.ts +1 -0
  164. package/lib/types/gtk-separator.spec.d.ts +1 -0
  165. package/lib/types/gtk-spin-button.spec.d.ts +1 -0
  166. package/lib/types/gtk-spinner.spec.d.ts +1 -0
  167. package/lib/types/gtk-stack-sidebar.spec.d.ts +1 -0
  168. package/lib/types/gtk-stack-switcher.spec.d.ts +1 -0
  169. package/lib/types/gtk-stack.spec.d.ts +1 -0
  170. package/lib/types/gtk-text-view.spec.d.ts +1 -0
  171. package/lib/types/gtk-text.spec.d.ts +1 -0
  172. package/lib/types/gtk-toggle-button.spec.d.ts +1 -0
  173. package/lib/types/gtk-tree-expander.spec.d.ts +1 -0
  174. package/lib/types/gtk-video.spec.d.ts +1 -0
  175. package/lib/types/gtk-viewport.spec.d.ts +1 -0
  176. package/lib/types/gtk-window-controls.spec.d.ts +1 -0
  177. package/lib/types/gtk-window-handle.spec.d.ts +1 -0
  178. package/lib/types/gtk-window.spec.d.ts +1 -0
  179. package/lib/types/index.d.ts +4 -1
  180. package/lib/types/list-view-dom.d.ts +44 -0
  181. package/lib/types/namespace/adw.d.ts +12 -0
  182. package/lib/types/namespace/gtk.d.ts +61 -0
  183. package/lib/types/page-setup.d.ts +100 -0
  184. package/lib/types/row-line-clamp.d.ts +20 -0
  185. package/lib/types/row-tooltip.d.ts +8 -0
  186. package/lib/types/row-tooltip.spec.d.ts +1 -0
  187. package/lib/types/scroll-shading.d.ts +15 -1
  188. package/lib/types/shared-tree-builder.d.ts +75 -17
  189. package/lib/types/shared-tree-mount.spec.d.ts +1 -0
  190. package/lib/types/signals.d.ts +4 -0
  191. package/lib/types/styles.generated.d.ts +1 -1
  192. package/lib/types/tab-chip.d.ts +73 -0
  193. package/lib/types/template-classes.d.ts +11 -0
  194. package/lib/types/widget-size.spec.d.ts +1 -0
  195. package/package.json +12 -8
  196. package/scss/_action_row.scss +41 -17
  197. package/scss/_application_window.scss +26 -0
  198. package/scss/_aspect_frame.scss +25 -0
  199. package/scss/_bin.scss +26 -0
  200. package/scss/_button.scss +45 -0
  201. package/scss/_button_row.scss +5 -0
  202. package/scss/_calendar.scss +176 -0
  203. package/scss/_center_box.scss +25 -0
  204. package/scss/_checks.scss +6 -1
  205. package/scss/_clamp_scrollable.scss +28 -0
  206. package/scss/_color_button.scss +67 -0
  207. package/scss/_column_view.scss +126 -0
  208. package/scss/_drag_icon.scss +55 -0
  209. package/scss/_drawing.scss +85 -0
  210. package/scss/_emoji_chooser.scss +213 -0
  211. package/scss/_entry.scss +13 -5
  212. package/scss/_entry_row.scss +1 -1
  213. package/scss/_expander.scss +113 -0
  214. package/scss/_expander_row.scss +36 -3
  215. package/scss/_fixed.scss +29 -0
  216. package/scss/_flow_box.scss +94 -0
  217. package/scss/_font_button.scss +63 -0
  218. package/scss/_frame.scss +41 -0
  219. package/scss/_grid.scss +19 -0
  220. package/scss/_grid_view.scss +46 -0
  221. package/scss/_gtk_about_dialog.scss +186 -0
  222. package/scss/_headerbar.scss +134 -1
  223. package/scss/_icons.generated.scss +186 -0
  224. package/scss/_inscription.scss +125 -0
  225. package/scss/_level_bar.scss +190 -0
  226. package/scss/_link.scss +82 -0
  227. package/scss/_list_box.scss +88 -0
  228. package/scss/_list_view.scss +96 -0
  229. package/scss/_media_controls.scss +139 -0
  230. package/scss/_overlay.scss +68 -0
  231. package/scss/_paned.scss +130 -0
  232. package/scss/_password_entry.scss +83 -0
  233. package/scss/_picture.scss +80 -0
  234. package/scss/_popover_bin.scss +53 -0
  235. package/scss/_popover_menu_bar.scss +104 -0
  236. package/scss/_preferences_row.scss +60 -0
  237. package/scss/_print_dialogs.scss +328 -0
  238. package/scss/_reset.scss +21 -19
  239. package/scss/_revealer.scss +37 -0
  240. package/scss/_row.scss +36 -5
  241. package/scss/_scale.scss +298 -0
  242. package/scss/_scale_button.scss +167 -0
  243. package/scss/_scrollbar.scss +230 -0
  244. package/scss/_scrolled_window.scss +131 -0
  245. package/scss/_search_bar.scss +118 -0
  246. package/scss/_search_entry.scss +86 -0
  247. package/scss/_separator.scss +44 -0
  248. package/scss/_shortcuts_dialog.scss +100 -0
  249. package/scss/_spin_button.scss +172 -0
  250. package/scss/_spin_row.scss +56 -8
  251. package/scss/_spinner.scss +85 -4
  252. package/scss/_stack.scss +729 -0
  253. package/scss/_status_page.scss +1 -1
  254. package/scss/_switch.scss +13 -5
  255. package/scss/_switch_row.scss +10 -0
  256. package/scss/_tab_bar.scss +317 -0
  257. package/scss/_tab_button.scss +98 -0
  258. package/scss/_tab_overview.scss +483 -0
  259. package/scss/_text.scss +182 -0
  260. package/scss/_theme.scss +1 -1
  261. package/scss/_toggle_group.scss +28 -0
  262. package/scss/_tree_expander.scss +62 -0
  263. package/scss/_variables.scss +1 -1
  264. package/scss/_video.scss +146 -0
  265. package/scss/_view_switcher_sidebar.scss +112 -0
  266. package/scss/_viewport.scss +50 -0
  267. package/scss/_widget.scss +14 -3
  268. package/scss/_window.scss +131 -2
  269. package/scss/_window_handle.scss +20 -0
  270. package/scss/adwaita-skin.scss +109 -0
  271. package/src/adw-action-rows.spec.ts +331 -0
  272. package/src/adw-application-window.spec.ts +118 -0
  273. package/src/adw-bin.spec.ts +75 -0
  274. package/src/adw-breakpoint-bin.spec.ts +324 -0
  275. package/src/adw-clamp-scrollable.spec.ts +189 -0
  276. package/src/adw-header-bar.spec.ts +18 -0
  277. package/src/adw-multi-layout-view.spec.ts +243 -0
  278. package/src/adw-preferences-row.spec.ts +164 -0
  279. package/src/adw-row-state.spec.ts +142 -0
  280. package/src/adw-shortcuts.spec.ts +155 -0
  281. package/src/adw-status-page.spec.ts +124 -0
  282. package/src/adw-tab-bar.spec.ts +287 -0
  283. package/src/adw-tab-button.spec.ts +101 -0
  284. package/src/adw-tab-overview.spec.ts +443 -0
  285. package/src/adw-view-switcher-sidebar.spec.ts +281 -0
  286. package/src/adw-window.spec.ts +129 -0
  287. package/src/attributes.ts +52 -0
  288. package/src/breakpoints.ts +25 -8
  289. package/src/capabilities.d.mts +3 -0
  290. package/src/capabilities.mjs +21 -0
  291. package/src/connect-lifecycle.spec.ts +12 -0
  292. package/src/construct-vectors.spec.ts +175 -0
  293. package/src/elements/adw-action-row.ts +31 -2
  294. package/src/elements/adw-alert-dialog.ts +4 -1
  295. package/src/elements/adw-application-window.ts +154 -0
  296. package/src/elements/adw-bin.ts +101 -0
  297. package/src/elements/adw-breakpoint-bin.ts +287 -0
  298. package/src/elements/adw-button-row.ts +7 -1
  299. package/src/elements/adw-clamp-scrollable.ts +207 -0
  300. package/src/elements/adw-combo-row.ts +26 -1
  301. package/src/elements/adw-dialog.ts +19 -0
  302. package/src/elements/adw-entry-row.ts +22 -12
  303. package/src/elements/adw-expander-row.ts +34 -1
  304. package/src/elements/adw-header-bar.ts +18 -4
  305. package/src/elements/adw-layout-slot.ts +95 -0
  306. package/src/elements/adw-multi-layout-view.ts +326 -0
  307. package/src/elements/adw-overlay-split-view.ts +29 -6
  308. package/src/elements/adw-preferences-row.ts +153 -0
  309. package/src/elements/adw-shortcuts-dialog.ts +52 -0
  310. package/src/elements/adw-shortcuts-item.ts +171 -0
  311. package/src/elements/adw-shortcuts-section.ts +86 -0
  312. package/src/elements/adw-sidebar.ts +74 -7
  313. package/src/elements/adw-spin-row.ts +37 -2
  314. package/src/elements/adw-status-page.ts +10 -2
  315. package/src/elements/adw-switch-row.ts +53 -2
  316. package/src/elements/adw-tab-bar.ts +529 -0
  317. package/src/elements/adw-tab-button.ts +194 -0
  318. package/src/elements/adw-tab-overview.ts +1011 -0
  319. package/src/elements/adw-tab-view.ts +66 -145
  320. package/src/elements/adw-toggle-group.ts +138 -14
  321. package/src/elements/adw-view-stack.ts +18 -0
  322. package/src/elements/adw-view-switcher-sidebar.ts +332 -0
  323. package/src/elements/adw-window.ts +190 -11
  324. package/src/elements/checks.ts +35 -8
  325. package/src/elements/gtk-about-dialog.ts +811 -0
  326. package/src/elements/gtk-application-window.ts +108 -0
  327. package/src/elements/gtk-aspect-frame.ts +160 -0
  328. package/src/elements/gtk-button.ts +12 -0
  329. package/src/elements/gtk-calendar.ts +757 -0
  330. package/src/elements/gtk-center-box.ts +184 -0
  331. package/src/elements/gtk-color-dialog-button.ts +278 -0
  332. package/src/elements/gtk-column-view.ts +320 -0
  333. package/src/elements/gtk-drag-icon.ts +257 -0
  334. package/src/elements/gtk-drawing-area.ts +303 -0
  335. package/src/elements/gtk-editable-label.ts +204 -0
  336. package/src/elements/gtk-emoji-chooser.ts +542 -0
  337. package/src/elements/gtk-entry.ts +39 -5
  338. package/src/elements/gtk-expander.ts +301 -0
  339. package/src/elements/gtk-fixed.ts +99 -0
  340. package/src/elements/gtk-flow-box-child.ts +68 -0
  341. package/src/elements/gtk-flow-box.ts +480 -0
  342. package/src/elements/gtk-font-dialog-button.ts +432 -0
  343. package/src/elements/gtk-frame.ts +174 -0
  344. package/src/elements/gtk-gl-area.ts +476 -0
  345. package/src/elements/gtk-graphics-offload.ts +130 -0
  346. package/src/elements/gtk-grid-view.ts +168 -0
  347. package/src/elements/gtk-grid.ts +127 -0
  348. package/src/elements/gtk-header-bar.ts +273 -0
  349. package/src/elements/gtk-inscription.ts +387 -0
  350. package/src/elements/gtk-label.ts +19 -11
  351. package/src/elements/gtk-level-bar.ts +323 -0
  352. package/src/elements/gtk-link-button.ts +138 -0
  353. package/src/elements/gtk-list-box-row.ts +195 -0
  354. package/src/elements/gtk-list-box.ts +413 -0
  355. package/src/elements/gtk-list-view.ts +370 -0
  356. package/src/elements/gtk-media-controls.ts +509 -0
  357. package/src/elements/gtk-notebook.ts +664 -0
  358. package/src/elements/gtk-overlay.ts +149 -0
  359. package/src/elements/gtk-page-setup-unix-dialog.ts +420 -0
  360. package/src/elements/gtk-paned.ts +597 -0
  361. package/src/elements/gtk-password-entry.ts +170 -0
  362. package/src/elements/gtk-picture.ts +254 -0
  363. package/src/elements/gtk-popover-bin.ts +332 -0
  364. package/src/elements/gtk-popover-menu-bar.ts +355 -0
  365. package/src/elements/gtk-popover-menu.ts +339 -0
  366. package/src/elements/gtk-popover.ts +92 -10
  367. package/src/elements/gtk-print-unix-dialog.ts +989 -0
  368. package/src/elements/gtk-progress-bar.ts +24 -11
  369. package/src/elements/gtk-revealer.ts +406 -0
  370. package/src/elements/gtk-scale-button.ts +358 -0
  371. package/src/elements/gtk-scale.ts +492 -0
  372. package/src/elements/gtk-scrollbar.ts +528 -0
  373. package/src/elements/gtk-scrolled-window.ts +653 -0
  374. package/src/elements/gtk-search-bar.ts +200 -0
  375. package/src/elements/gtk-search-entry.ts +172 -0
  376. package/src/elements/gtk-separator.ts +52 -0
  377. package/src/elements/gtk-spin-button.ts +475 -0
  378. package/src/elements/gtk-spinner.ts +126 -0
  379. package/src/elements/gtk-stack-sidebar.ts +212 -0
  380. package/src/elements/gtk-stack-switcher.ts +279 -0
  381. package/src/elements/gtk-stack.ts +748 -0
  382. package/src/elements/gtk-switch.ts +52 -19
  383. package/src/elements/gtk-text-view.ts +290 -0
  384. package/src/elements/gtk-text.ts +219 -0
  385. package/src/elements/gtk-toggle-button.ts +239 -0
  386. package/src/elements/gtk-tree-expander.ts +243 -0
  387. package/src/elements/gtk-video.ts +423 -0
  388. package/src/elements/gtk-viewport.ts +277 -0
  389. package/src/elements/gtk-window-controls.ts +341 -0
  390. package/src/elements/gtk-window-handle.ts +221 -0
  391. package/src/elements/gtk-window.ts +372 -0
  392. package/src/elements/justification.ts +24 -0
  393. package/src/elements/popover-menu.ts +24 -0
  394. package/src/elements/roving-focus.ts +53 -21
  395. package/src/emoji-data.ts +577 -0
  396. package/src/entry-rows.spec.ts +31 -0
  397. package/src/font-description.ts +238 -0
  398. package/src/gtk-about-dialog.spec.ts +250 -0
  399. package/src/gtk-action-bar.spec.ts +89 -0
  400. package/src/gtk-application-window.spec.ts +107 -0
  401. package/src/gtk-aspect-frame.spec.ts +114 -0
  402. package/src/gtk-calendar.spec.ts +589 -0
  403. package/src/gtk-center-box.spec.ts +125 -0
  404. package/src/gtk-color-dialog-button.spec.ts +141 -0
  405. package/src/gtk-column-view.spec.ts +154 -0
  406. package/src/gtk-drag-icon.spec.ts +190 -0
  407. package/src/gtk-drawing-area.spec.ts +211 -0
  408. package/src/gtk-editable-label.spec.ts +190 -0
  409. package/src/gtk-emoji-chooser.spec.ts +173 -0
  410. package/src/gtk-entry.spec.ts +23 -0
  411. package/src/gtk-expander.spec.ts +170 -0
  412. package/src/gtk-fixed.spec.ts +97 -0
  413. package/src/gtk-flow-box.spec.ts +289 -0
  414. package/src/gtk-font-dialog-button.spec.ts +166 -0
  415. package/src/gtk-frame.spec.ts +119 -0
  416. package/src/gtk-gl-area.spec.ts +361 -0
  417. package/src/gtk-graphics-offload.spec.ts +119 -0
  418. package/src/gtk-grid-view.spec.ts +106 -0
  419. package/src/gtk-grid.spec.ts +122 -0
  420. package/src/gtk-header-bar.spec.ts +202 -0
  421. package/src/gtk-inscription.spec.ts +235 -0
  422. package/src/gtk-level-bar.spec.ts +199 -0
  423. package/src/gtk-link-button.spec.ts +117 -0
  424. package/src/gtk-list-box.spec.ts +422 -0
  425. package/src/gtk-list-view.spec.ts +203 -0
  426. package/src/gtk-media-controls.spec.ts +295 -0
  427. package/src/gtk-notebook.spec.ts +546 -0
  428. package/src/gtk-overlay.spec.ts +141 -0
  429. package/src/gtk-paned.spec.ts +267 -0
  430. package/src/gtk-password-entry.spec.ts +150 -0
  431. package/src/gtk-picture.spec.ts +172 -0
  432. package/src/gtk-popover-bin.spec.ts +229 -0
  433. package/src/gtk-popover-menu-bar.spec.ts +296 -0
  434. package/src/gtk-popover-menu.spec.ts +261 -0
  435. package/src/gtk-popover-role.spec.ts +138 -0
  436. package/src/gtk-popover.spec.ts +264 -0
  437. package/src/gtk-print-dialogs.spec.ts +251 -0
  438. package/src/gtk-revealer.spec.ts +164 -0
  439. package/src/gtk-scale-button.spec.ts +218 -0
  440. package/src/gtk-scale.spec.ts +213 -0
  441. package/src/gtk-scrollbar.spec.ts +244 -0
  442. package/src/gtk-scrolled-window.spec.ts +262 -0
  443. package/src/gtk-search-bar.spec.ts +179 -0
  444. package/src/gtk-search-entry.spec.ts +142 -0
  445. package/src/gtk-separator.spec.ts +74 -0
  446. package/src/gtk-spin-button.spec.ts +186 -0
  447. package/src/gtk-spinner.spec.ts +130 -0
  448. package/src/gtk-stack-sidebar.spec.ts +217 -0
  449. package/src/gtk-stack-switcher.spec.ts +249 -0
  450. package/src/gtk-stack.spec.ts +432 -0
  451. package/src/gtk-text-view.spec.ts +189 -0
  452. package/src/gtk-text.spec.ts +163 -0
  453. package/src/gtk-toggle-button.spec.ts +186 -0
  454. package/src/gtk-tree-expander.spec.ts +201 -0
  455. package/src/gtk-video.spec.ts +240 -0
  456. package/src/gtk-viewport.spec.ts +140 -0
  457. package/src/gtk-window-controls.spec.ts +232 -0
  458. package/src/gtk-window-handle.spec.ts +158 -0
  459. package/src/gtk-window.spec.ts +202 -0
  460. package/src/index.ts +9 -1
  461. package/src/keyboard-operable.spec.ts +77 -9
  462. package/src/list-view-dom.ts +121 -0
  463. package/src/namespace/adw.ts +12 -0
  464. package/src/namespace/gtk.ts +61 -0
  465. package/src/page-setup.ts +222 -0
  466. package/src/row-line-clamp.ts +74 -0
  467. package/src/row-tooltip.spec.ts +313 -0
  468. package/src/row-tooltip.ts +52 -0
  469. package/src/scroll-shading.ts +18 -1
  470. package/src/shared-tree-builder.ts +336 -41
  471. package/src/shared-tree-mount.spec.ts +130 -0
  472. package/src/shared-trees.spec.ts +15 -0
  473. package/src/signals.ts +15 -0
  474. package/src/style-classes.spec.ts +9 -8
  475. package/src/styles.generated.ts +1 -1
  476. package/src/tab-chip.ts +200 -0
  477. package/src/template-classes.ts +45 -0
  478. package/src/test.browser.mts +160 -0
  479. package/src/widget-size.spec.ts +117 -0
@@ -0,0 +1,113 @@
1
+ // _expander.scss — <gtk-expander>: the disclosure title, its arrow, and the row beneath.
2
+ //
3
+ // libadwaita's `_expanders.scss` is TWO selectors — the `expander` node and
4
+ // `expander-widget` — and the element has to keep them apart, because they are different
5
+ // nodes: `expander` is the ARROW and `expander-widget` is the widget. So the arrow is the
6
+ // `.adw-expander-arrow` box and the widget is the tag.
7
+ //
8
+ // THE ARROW is upstream's whole rule, with `-gtk-icon-source` as a mask swap:
9
+ //
10
+ // min-width/min-height 16px `.adw-icon`'s own size, so this repeats it only to say the
11
+ // node has no intrinsic size of its own;
12
+ // pan-end-symbolic the closed glyph;
13
+ // pan-end-symbolic-rtl `:dir(rtl)`, as upstream's second `-gtk-icon-source`;
14
+ // pan-down-symbolic `:checked`, which this stylesheet spells `.checked` — and
15
+ // `gtk_expander_set_expanded` sets the pseudoclass on the
16
+ // arrow, not on the widget (gtkexpander.c:897-900);
17
+ // disabled `Opacity(var(--disabled-opacity))`.
18
+ //
19
+ // The `:disabled` line has nothing to bite on here, because a custom element is never
20
+ // `:disabled` — the widget is a plain GtkWidget with no insensitive state of its own, and
21
+ // upstream's rule exists for the `expander` node when a `Gtk.TreeView` row disables it.
22
+ // It is written against `[disabled]` so an author who puts the attribute there gets
23
+ // upstream's dimming rather than nothing.
24
+ //
25
+ // THE TITLE is `expander-widget > box > title` (`_expanders.scss:13-28`): a 6px radius, the
26
+ // focus ring, and the arrow at 70% until the title is hovered or pressed. The box between
27
+ // them is `.adw-expander-box`, so the selector chain is the node tree rather than a
28
+ // coincidence.
29
+ //
30
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_expanders.scss
31
+ // Reference: refs/libadwaita/src/stylesheet/_drawing.scss (the focus-ring mixin: a 2px
32
+ // outline at offset -2px, which is what `outline` below spells out)
33
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
34
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
35
+
36
+ gtk-expander {
37
+ display: block;
38
+
39
+ > .adw-expander-box {
40
+ display: flex;
41
+ flex-direction: column;
42
+ }
43
+
44
+ > .adw-expander-box > .adw-expander-title {
45
+ display: flex;
46
+ align-items: center;
47
+ gap: var(--spacing-s);
48
+ min-height: 30px;
49
+ padding: var(--spacing-xs) var(--spacing-m);
50
+ border-radius: 6px;
51
+ cursor: pointer;
52
+
53
+ &:hover {
54
+ background-color: var(--button-bg-color);
55
+ }
56
+
57
+ &:active {
58
+ background-color: var(--button-active-color);
59
+ }
60
+
61
+ // `focus-ring ("> box > title")` with its default `$width: 2px` and `$offset: -$width`.
62
+ &:focus-visible {
63
+ outline: 2px solid var(--accent-color);
64
+ outline-offset: -2px;
65
+ }
66
+
67
+ .adw-expander-arrow {
68
+ opacity: 0.7;
69
+ }
70
+
71
+ &:hover .adw-expander-arrow,
72
+ &:active .adw-expander-arrow {
73
+ opacity: 1;
74
+ }
75
+ }
76
+
77
+ > .adw-expander-box > .adw-expander-content {
78
+ display: flex;
79
+ flex-direction: column;
80
+ min-width: 0;
81
+ min-height: 0;
82
+ }
83
+ }
84
+
85
+ .adw-expander-arrow {
86
+ min-width: 16px;
87
+ min-height: 16px;
88
+ flex-shrink: 0;
89
+ // `expander { -gtk-icon-source: -gtk-icontheme('pan-end-symbolic') }`. The element sets
90
+ // `icon-name="pan-end"`, so the `.checked` and `:dir(rtl)` rules below are the two
91
+ // `-gtk-icon-source` overrides — same three glyphs, same two conditions.
92
+ mask-image: var(--icon-pan-end);
93
+ -webkit-mask-image: var(--icon-pan-end);
94
+
95
+ &[disabled] {
96
+ opacity: var(--disabled-opacity);
97
+ }
98
+
99
+ // `&:checked { -gtk-icon-source: -gtk-icontheme('pan-down-symbolic') }`
100
+ &.checked {
101
+ mask-image: var(--icon-pan-down);
102
+ -webkit-mask-image: var(--icon-pan-down);
103
+ }
104
+ }
105
+
106
+ :dir(rtl) .adw-expander-arrow:not(.checked) {
107
+ // `&:dir(rtl) { -gtk-icon-source: -gtk-icontheme('pan-end-symbolic-rtl') }` — upstream
108
+ // states the RTL glyph on its own line, BEFORE the `:checked` one, so `:checked` wins for
109
+ // an RTL expander that is open. The `:not(.checked)` keeps that order without relying on
110
+ // it.
111
+ mask-image: var(--icon-pan-end-rtl);
112
+ -webkit-mask-image: var(--icon-pan-end-rtl);
113
+ }
@@ -32,12 +32,45 @@ adw-expander-row {
32
32
  }
33
33
  }
34
34
 
35
+ // Title/subtitle WRAP BY DEFAULT, matching libadwaita's GtkLabel wrap=true,
36
+ // lines=0 — stated HERE, at this row's own specificity, because `_row.scss` carries
37
+ // a `white-space: nowrap` default for `.adw-row-subtitle` and an inherited one reaches
38
+ // the title. A rule that only turns `white-space` on inside the clamp selector cannot
39
+ // make a row wrap by DEFAULT: the clamp is the minority state.
35
40
  .adw-row-title {
36
41
  font-size: var(--font-size-base);
37
42
  color: var(--card-fg-color);
38
- white-space: nowrap;
39
- overflow: hidden;
40
- text-overflow: ellipsis;
43
+ white-space: normal;
44
+ overflow-wrap: break-word;
45
+ }
46
+
47
+ .adw-row-subtitle {
48
+ font-size: var(--font-size-small);
49
+ opacity: var(--dim-opacity);
50
+ color: var(--card-fg-color);
51
+ white-space: normal;
52
+ overflow-wrap: break-word;
53
+ }
54
+
55
+ // Clamped state — JS toggles `.adw-row-clamp` on the TEXT COLUMN, the same node and
56
+ // the same class `_action_row.scss` keys off; reading it off the header instead never
57
+ // matched anything.
58
+ .adw-row-text.adw-row-clamp {
59
+ .adw-row-title,
60
+ .adw-row-subtitle {
61
+ display: -webkit-box;
62
+ -webkit-box-orient: vertical;
63
+ overflow: hidden;
64
+ text-overflow: var(--adw-row-ellipsize-overflow, ellipsis);
65
+ }
66
+
67
+ .adw-row-title {
68
+ -webkit-line-clamp: var(--adw-row-title-lines, 1);
69
+ }
70
+
71
+ .adw-row-subtitle {
72
+ -webkit-line-clamp: var(--adw-row-subtitle-lines, 1);
73
+ }
41
74
  }
42
75
 
43
76
  // The text column takes the free space so prefix/suffix widgets, the enable
@@ -0,0 +1,29 @@
1
+ // _fixed.scss — <gtk-fixed>: children at pixel positions, and a box around all of them.
2
+ //
3
+ // `gtk_fixed_init` sets `GTK_OVERFLOW_HIDDEN` (gtkfixed.c:189-195), so the fixed clips a
4
+ // child that reaches past its own bounds — and the element sizes those bounds from the
5
+ // union of the children (`gtk_fixed_layout_measure`, gtkfixedlayout.c:224-300), which is
6
+ // what makes `overflow: hidden` a clipping rule rather than a layout one.
7
+ //
8
+ // The children are out of flow, which is what a position means: `position: absolute` against
9
+ // the fixed's own padding box, which `gtk_fixed_layout_allocate` does by handing each child
10
+ // its measured size at (x, y). `left` / `top` DEFAULT TO ZERO and not to CSS's `auto`
11
+ // because `gtk_fixed_buildable_add_child` puts an unpositioned child at 0, 0
12
+ // (gtkfixed.c:171-177), and `auto` would resolve it to its STATIC position instead.
13
+ //
14
+ // Reference: refs/gtk/gtk/gtkfixed.c:171-177, :189-195
15
+ // Reference: refs/gtk/gtk/gtkfixedlayout.c:224-300
16
+ // Copyright (c) The GTK Team. LGPLv2.1+.
17
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
18
+
19
+ gtk-fixed {
20
+ display: block;
21
+ position: relative;
22
+ overflow: hidden;
23
+
24
+ > * {
25
+ position: absolute;
26
+ left: 0;
27
+ top: 0;
28
+ }
29
+ }
@@ -0,0 +1,94 @@
1
+ // _flow_box.scss — <gtk-flow-box> and its cells, the elements GTK names `flowbox` and
2
+ // `flowboxchild`.
3
+ //
4
+ // Upstream writes `flowbox > flowboxchild, gridview > child` as ONE rule (_views.scss:52-91):
5
+ // the same 3px padding, the same `$button_radius` corner, the same focus ring and the same four
6
+ // state colours — and `<gtk-grid-view>` already wears the grid half in `_grid_view.scss`, which
7
+ // `@include`s `adw-list-selectable` from `_list_view.scss` for exactly that reason. The cell
8
+ // here therefore includes the same mixin rather than restating four colours, because a drifted
9
+ // copy is four wrong ones and the hover-over-selected pair is the pair nobody checks by eye.
10
+ //
11
+ // `flex-flow: row wrap` IS the allocation. GTK hands each child a slot on a running line in
12
+ // the given orientation and starts a new one when the next would not fit
13
+ // (gtkflowbox.c:1640-1900), and a wrapping flex line with a per-child size share is that rule
14
+ // expressed in the browser's own layout language: `max-width: 100% / max-children-per-line`
15
+ // caps how many can share a line, and `min-width: 100% / min-children-per-line` is
16
+ // `min-children-per-line`, whose own documented job is that "a reasonably small height will be
17
+ // requested for the overall minimum width of the box" (gtkflowbox.c:3747-3755).
18
+ //
19
+ // `homogeneous` is `flex: 1 1 0` — GTK's "all children should be allocated the same size"
20
+ // (:3736-3739), which in a wrapping line is exactly equal growth from a zero basis.
21
+ //
22
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_views.scss:1-16 (.view), :52-91
23
+ // (flowbox > flowboxchild), :88-91 (flowbox, gridview disabled)
24
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
25
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
26
+
27
+ @use 'list_view';
28
+
29
+ gtk-flow-box {
30
+ display: block;
31
+ box-sizing: border-box;
32
+ color: var(--view-fg-color);
33
+ background-color: var(--view-bg-color);
34
+
35
+ // The line container. `--adw-flow-box-*` are written by `gtk-flow-box.ts` from the
36
+ // properties, so the stylesheet stays declarative and a `homogeneous` write is one class.
37
+ display: flex;
38
+ flex-flow: row wrap;
39
+ gap: var(--adw-flow-box-row-spacing, 0px) var(--adw-flow-box-column-spacing, 0px);
40
+
41
+ &.vertical {
42
+ flex-flow: column wrap;
43
+ }
44
+
45
+ &.view:disabled {
46
+ color: var(--view-fg-color);
47
+ }
48
+ }
49
+
50
+ gtk-flow-box-child {
51
+ @include list_view.adw-list-selectable;
52
+
53
+ display: block;
54
+ box-sizing: border-box;
55
+ // `flowbox > flowboxchild { padding: 3px; border-radius: $button_radius }`
56
+ // (_views.scss:52-56).
57
+ padding: 3px;
58
+ border-radius: var(--button-radius);
59
+ // The line share. A browser lays the children out, so this is where GTK's
60
+ // `min`/`max-children-per-line` and `homogeneous` are honoured — and the share has to
61
+ // LEAVE ROOM FOR THE SPACING. `100% / N` alone does not: N children then need N shares
62
+ // PLUS the (N-1) gaps between them, so the row overflows by the gaps and the browser
63
+ // breaks it one child early. Measured on the gallery's flow box — `min-children-per-line`
64
+ // 2, `max` 4, a 6px spacing in a 320px box — the share came out at 50% (160px), two
65
+ // children plus one gap came to 326px, and the box showed ONE child per line where
66
+ // libadwaita packs four. The share is therefore (100% - (N-1) × spacing) / N.
67
+ max-width: calc(
68
+ (100% - (var(--adw-flow-box-max-children-per-line, 7) - 1) *
69
+ var(--adw-flow-box-column-spacing, 0px)) / var(--adw-flow-box-max-children-per-line, 7)
70
+ );
71
+ min-width: calc(
72
+ (100% - (var(--adw-flow-box-min-children-per-line, 1) - 1) *
73
+ var(--adw-flow-box-column-spacing, 0px)) / var(--adw-flow-box-min-children-per-line, 1)
74
+ );
75
+ cursor: pointer;
76
+ }
77
+
78
+ gtk-flow-box.vertical > gtk-flow-box-child {
79
+ // The same arithmetic down the other axis, against the ROW spacing.
80
+ max-height: calc(
81
+ (100% - (var(--adw-flow-box-max-children-per-line, 7) - 1) *
82
+ var(--adw-flow-box-row-spacing, 0px)) / var(--adw-flow-box-max-children-per-line, 7)
83
+ );
84
+ max-width: none;
85
+ min-height: calc(
86
+ (100% - (var(--adw-flow-box-min-children-per-line, 1) - 1) *
87
+ var(--adw-flow-box-row-spacing, 0px)) / var(--adw-flow-box-min-children-per-line, 1)
88
+ );
89
+ min-width: 0;
90
+ }
91
+
92
+ gtk-flow-box.homogeneous > gtk-flow-box-child {
93
+ flex: 1 1 0;
94
+ }
@@ -0,0 +1,63 @@
1
+ // _font_button.scss — `<gtk-font-dialog-button>`: the `button.font` node and the two
2
+ // labels it holds.
3
+ //
4
+ // libadwaita has no rule for it either: `_linked.scss:7` is the only place upstream names
5
+ // `fontbutton`, and it is there because the node is a button that participates in a linked
6
+ // group. So this partial is the node's layout and nothing else — and the node's layout IS
7
+ // the C's, which builds a horizontal box of the family label (hexpand, so it takes the
8
+ // room) and the size box, the latter a vertical separator followed by the size label
9
+ // (gtkfontdialogbutton.c:121-140).
10
+ //
11
+ // The element hides the size box itself when the level is below FONT, because
12
+ // `update_font_info` ends with `gtk_widget_set_visible (self->font_size_box, self->level >=
13
+ // GTK_FONT_LEVEL_FONT)` (:685) — a family chooser shows one word where a font chooser shows
14
+ // two, and the separator with it.
15
+ //
16
+ // Reference: refs/gtk/gtk/gtkfontdialogbutton.c:52-60 (the node), :118-152 (init, the box,
17
+ // the labels), :649-687 (update_font_info, and the size box's visibility)
18
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_linked.scss:7 (`fontbutton > button`)
19
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
20
+ // Modifications: Adapted for @gjsify/adwaita-web — the labels are `<span>`s inside an
21
+ // ordinary `<button>`, and `use-font` sets their inline `font` (apply_use_font).
22
+
23
+ gtk-font-dialog-button {
24
+ display: inline-flex;
25
+ position: relative;
26
+ }
27
+
28
+ .font-button-label {
29
+ flex: 1;
30
+ text-align: start;
31
+ }
32
+
33
+ // The size box: a separator and the size, in a row of their own — which is why the element
34
+ // wraps them in a span rather than appending both to the button.
35
+ .font-button-size {
36
+ display: inline-flex;
37
+ align-items: center;
38
+ gap: 6px;
39
+ margin-inline-start: 6px;
40
+ color: color-mix(in srgb, currentColor var(--dim-opacity), transparent);
41
+ }
42
+
43
+ .font-button-size-label {
44
+ min-width: 2ch;
45
+ font-variant-numeric: tabular-nums;
46
+ }
47
+
48
+ // The chooser: one row of families. A popover rather than a `<select>` on the button
49
+ // itself, because `gtk_font_dialog_button_new()` is given a dialog and shows nothing until
50
+ // it is pressed.
51
+ .font-button-popover {
52
+ .font-button-chooser {
53
+ min-width: 180px;
54
+ max-width: 320px;
55
+ padding: 4px;
56
+ border: none;
57
+ border-radius: 6px;
58
+ background-color: var(--popover-bg-color);
59
+ color: var(--popover-fg-color);
60
+ font-family: var(--font-family);
61
+ font-size: var(--font-size-base);
62
+ }
63
+ }
@@ -0,0 +1,41 @@
1
+ // _frame.scss — <gtk-frame>: the 1px border, and the label that sits inside its top edge.
2
+ //
3
+ // libadwaita writes this rule TWICE, once for the widget node and once for the style
4
+ // class (`widgets/_misc.scss:4-7`); the widget half is here and the class half stays in
5
+ // `_style_classes.scss`, where every other `.frame` consumer already is. The label's
6
+ // `margin: 4px` (`_misc.scss:12-14`) is the inset it gets inside the border, keyed on the
7
+ // class the element puts on whatever stands in for GtkFrame's label widget — the internal
8
+ // `<gtk-label>` `label` builds, or an author's `label-widget`.
9
+ //
10
+ // The BOX is GtkFrame's, not libadwaita's: the label widget takes the top line and the
11
+ // child the rest (`gtk_frame_real_compute_child_allocation`, gtkframe.c:554-580), so the
12
+ // host is a flex column whose children grow into whatever the pinned label leaves.
13
+ // `overflow: hidden` is `GTK_OVERFLOW_HIDDEN` (gtkframe.c:246) — the GIR doc calls the
14
+ // clipping out as the way to round a child's corners, at the price of its shadows.
15
+ //
16
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_misc.scss:4-15
17
+ // Reference: refs/gtk/gtk/gtkframe.c:246, :519-580
18
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
19
+ // Copyright (c) The GTK Team. LGPLv2.1+.
20
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
21
+
22
+ gtk-frame {
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: stretch;
26
+ border: 1px solid var(--border-color);
27
+ border-radius: var(--card-radius);
28
+ overflow: hidden;
29
+
30
+ // GTK sizes the label widget itself and never grows it, so it is pinned at its own size
31
+ // (`flex: none`) and its `align-self` is the element's, written from `label-xalign`.
32
+ > .adw-frame-label {
33
+ flex: none;
34
+ margin: 4px;
35
+ }
36
+
37
+ // Everything else is the child, and it takes the height the label leaves.
38
+ > * {
39
+ flex: 1 1 auto;
40
+ }
41
+ }
@@ -0,0 +1,19 @@
1
+ // _grid.scss — <gtk-grid>: a table of cells, sized by what is in them.
2
+ //
3
+ // libadwaita styles the `grid` node nowhere — the grid has no node of its own beyond what
4
+ // GtkGridLayout builds — so this partial is `display: grid` and the one default worth
5
+ // stating: a child written without a position is attached along the columns, which is
6
+ // `grid-auto-flow: row` (`gtk_grid_buildable_add_child`, gtkgrid.c:493-507).
7
+ //
8
+ // Everything else is per-instance and inline, because a selector cannot key on a number:
9
+ // the two spacings, the two `homogeneous` flags and the orientation all go on the element
10
+ // as `row-gap` / `column-gap` / `grid-auto-rows` / `grid-auto-columns` / `grid-auto-flow`.
11
+ //
12
+ // Reference: refs/gtk/gtk/gtkgrid.c:493-507
13
+ // Copyright (c) The GTK Team. LGPLv2.1+.
14
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
15
+
16
+ gtk-grid {
17
+ display: grid;
18
+ grid-auto-flow: row;
19
+ }
@@ -0,0 +1,46 @@
1
+ // _grid_view.scss — <gtk-grid-view>: the same selectable items as a list view, reflowed
2
+ // into equal columns.
3
+ //
4
+ // Upstream writes `flowbox > flowboxchild, gridview > child` as ONE rule — the same
5
+ // padding, the same `$button_radius` corner and the same four state colours a list row
6
+ // has — so this partial includes `adw-list-selectable` from `_list_view.scss` and adds
7
+ // only the two things a grid has: the track container and the cell floor the column
8
+ // count is computed against.
9
+ //
10
+ // THE `min-width` IS LOAD-BEARING, not cosmetic. `gtk-grid-view.ts` reads it as the item
11
+ // size for `gridViewColumns` — GTK's `GTK_SCROLL_MINIMUM` branch — because the rendered
12
+ // width is `1fr`, i.e. the answer the count already produced. An author who wants wider
13
+ // cells sets `min-width` on `.adw-grid-view-child` and the count follows.
14
+ //
15
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_views.scss:52-91 (gridview > child)
16
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
17
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
18
+
19
+ @use 'list_view';
20
+
21
+ gtk-grid-view {
22
+ display: block;
23
+ box-sizing: border-box;
24
+ color: var(--view-fg-color);
25
+ background-color: var(--view-bg-color);
26
+
27
+ .adw-list-view-rows {
28
+ position: relative;
29
+ display: grid;
30
+ // Replaced per measurement by `_applyColumns`; one column is what a view with
31
+ // nothing to measure shows.
32
+ grid-template-columns: repeat(1, 1fr);
33
+ gap: 6px;
34
+ }
35
+
36
+ .adw-grid-view-child {
37
+ @include list_view.adw-list-selectable;
38
+
39
+ // `gridview > child { padding: 3px; border-radius: $button_radius }`.
40
+ padding: 3px;
41
+ border-radius: var(--button-radius);
42
+ box-sizing: border-box;
43
+ min-width: 120px;
44
+ text-align: center;
45
+ }
46
+ }
@@ -0,0 +1,186 @@
1
+ // _gtk_about_dialog.scss — <gtk-about-dialog> styling: the GTK about window's own
2
+ // layout, which is NOT libadwaita's `<adw-about-dialog>` (a navigation view of
3
+ // preference rows) but a bold name over a 128px logo and a four-page stack, with a
4
+ // stack switcher where the headerbar's title widget goes.
5
+ //
6
+ // The DIALOG itself (scrim, sheet, header, close button) is not restated here: it is
7
+ // `<adw-dialog>`'s chrome, which this element inherits, so the rules below only cover
8
+ // the parts `gtkaboutdialog.ui` declares and nothing styles upstream either.
9
+ //
10
+ // Reference: refs/gtk/gtk/ui/gtkaboutdialog.ui (the tree: 12px inner spacing, 5px
11
+ // outer margins, 8px page spacing, the 400x100 stack, the framed scrolled pages)
12
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_dialogs.scss:46-56
13
+ // (`window.aboutdialog:not(.ssd-frame)`: a FLAT titlebar, and `image.large-icons`
14
+ // at 128px — which is `icon-size: 2`, GTK's DIALOG size)
15
+ // Reference: refs/gtk/gtk/gtkaboutdialog.c:1066-1082 (the bold name label, the
16
+ // centre justification, the version label's own markup)
17
+ // Copyright (c) 2008-2024 Red Hat, Inc. / The GTK authors. LGPLv2.1+.
18
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
19
+
20
+ gtk-about-dialog {
21
+ // The `.ui` spacing, verbatim: the outer box is 5px all round with 2px between the
22
+ // two children (the head), and the head is 5px all round with 12px between the logo,
23
+ // the name and the stack.
24
+ .adw-gtk-about-dialog-box {
25
+ display: flex;
26
+ flex-direction: column;
27
+ gap: 2px;
28
+ padding: 5px;
29
+ min-width: 320px;
30
+ min-height: 220px;
31
+ }
32
+
33
+ .adw-gtk-about-dialog-head {
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ gap: 12px;
38
+ padding: 5px;
39
+ flex: 1 1 auto;
40
+ min-height: 0;
41
+ }
42
+
43
+ // `image.large-icons` → 128px. The slot exists so the logo can be absent entirely
44
+ // without the name moving up a line: `GtkImage` is a template child and is always
45
+ // there in GTK, so the space above the name is always reserved.
46
+ .adw-gtk-about-dialog-logo-slot {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ min-height: 128px;
51
+ }
52
+
53
+ .adw-gtk-about-dialog-logo {
54
+ width: 128px;
55
+ height: 128px;
56
+ // `icon-dropshadow` on the `.ui`'s logo image.
57
+ filter: drop-shadow(0 1px 2px rgba(0, 0, 6, 0.25));
58
+ }
59
+
60
+ // `<span weight="bold">` from `update_name_version`, centred like every label in the
61
+ // box (`justify: 2`).
62
+ .adw-gtk-about-dialog-name {
63
+ font-weight: bold;
64
+ font-size: 1.1em;
65
+ text-align: center;
66
+ user-select: text;
67
+ }
68
+
69
+ // `GtkStack` with `width-request: 400`, `height-request: 100`, and the crossfade
70
+ // transition (16) at 600ms.
71
+ .adw-gtk-about-dialog-stack {
72
+ position: relative;
73
+ display: flex;
74
+ width: 100%;
75
+ min-width: 300px;
76
+ min-height: 100px;
77
+ flex: 1 1 auto;
78
+ }
79
+
80
+ .adw-gtk-about-dialog-page {
81
+ display: flex;
82
+ flex-direction: column;
83
+ gap: 8px;
84
+ flex: 1 1 auto;
85
+ justify-content: center;
86
+ text-align: center;
87
+ padding: 6px 12px;
88
+ // The crossfade between pages: 600ms is the `.ui`'s `transition-duration`.
89
+ animation: adw-gtk-about-dialog-page-in 600ms ease;
90
+ }
91
+
92
+ .adw-gtk-about-dialog-version,
93
+ .adw-gtk-about-dialog-comments,
94
+ .adw-gtk-about-dialog-copyright {
95
+ // `wrap: 1` with `max-width-chars: 60` on the comments and copyright labels.
96
+ max-width: 60ch;
97
+ margin: 0 auto;
98
+ }
99
+
100
+ .adw-gtk-about-dialog-website,
101
+ .adw-gtk-about-dialog-license,
102
+ .adw-gtk-about-dialog-license-link {
103
+ max-width: 60ch;
104
+ margin: 0 auto;
105
+ }
106
+
107
+ // `GtkStackSwitcher` in the titlebar: a row of flat buttons, the visible page's
108
+ // checked. No title text beside them, because the `.ui` declares none.
109
+ .adw-gtk-about-dialog-switcher {
110
+ display: flex;
111
+ align-items: center;
112
+ gap: 2px;
113
+ }
114
+
115
+ .adw-gtk-about-dialog-switcher-item {
116
+ padding: 6px 12px;
117
+ border-radius: 999px;
118
+ font-weight: 500;
119
+ color: var(--window-fg-color);
120
+ background-color: transparent;
121
+ border: none;
122
+
123
+ &:hover {
124
+ background-color: var(--button-hover-color);
125
+ }
126
+
127
+ &:checked,
128
+ &.checked {
129
+ background-color: var(--button-active-color);
130
+ }
131
+ }
132
+
133
+ // The three framed pages: a scrolled window with `has-frame` around a `.view`
134
+ // viewport, and the credits grid inside it.
135
+ .adw-gtk-about-dialog-scrolled {
136
+ flex: 1 1 auto;
137
+ min-height: 0;
138
+ overflow: auto;
139
+ border: 1px solid var(--border-color);
140
+ border-radius: 9px;
141
+ background-color: var(--view-bg-color);
142
+ }
143
+
144
+ .adw-gtk-about-dialog-text {
145
+ margin: 5px;
146
+ // `GTK_WRAP_NONE` unless `wrap-license` asked for `GTK_WRAP_WORD`.
147
+ white-space: pre;
148
+ font-size: 0.9em;
149
+ }
150
+
151
+ .adw-gtk-about-dialog-text-view.wrap .adw-gtk-about-dialog-text {
152
+ white-space: pre-wrap;
153
+ }
154
+
155
+ // `add_credits_section`: a two-column grid, headings right-aligned in column 0 and
156
+ // people left-aligned in column 1, with 2px between rows and 8px between columns.
157
+ .adw-gtk-about-dialog-credits-grid {
158
+ display: grid;
159
+ grid-template-columns: max-content 1fr;
160
+ gap: 2px 8px;
161
+ padding: 5px;
162
+ align-items: center;
163
+ }
164
+
165
+ .adw-gtk-about-dialog-credits-heading {
166
+ text-align: right;
167
+ font-size: 0.9em;
168
+ font-weight: 500;
169
+ }
170
+
171
+ .adw-gtk-about-dialog-credits-person {
172
+ text-align: left;
173
+ font-size: 0.9em;
174
+ user-select: text;
175
+ }
176
+ }
177
+
178
+ @keyframes adw-gtk-about-dialog-page-in {
179
+ from {
180
+ opacity: 0;
181
+ }
182
+
183
+ to {
184
+ opacity: 1;
185
+ }
186
+ }