@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.
Files changed (440) hide show
  1. package/dist/adwaita-web.css +8070 -3037
  2. package/dist/adwaita-web.css.map +1 -1
  3. package/lib/types/adw-application-window.spec.d.ts +1 -0
  4. package/lib/types/adw-bin.spec.d.ts +1 -0
  5. package/lib/types/adw-breakpoint-bin.spec.d.ts +1 -0
  6. package/lib/types/adw-clamp-scrollable.spec.d.ts +1 -0
  7. package/lib/types/adw-multi-layout-view.spec.d.ts +1 -0
  8. package/lib/types/adw-preferences-row.spec.d.ts +1 -0
  9. package/lib/types/adw-shortcuts.spec.d.ts +1 -0
  10. package/lib/types/adw-tab-bar.spec.d.ts +1 -0
  11. package/lib/types/adw-tab-button.spec.d.ts +1 -0
  12. package/lib/types/adw-tab-overview.spec.d.ts +1 -0
  13. package/lib/types/adw-view-switcher-sidebar.spec.d.ts +1 -0
  14. package/lib/types/adw-window.spec.d.ts +1 -0
  15. package/lib/types/breakpoints.d.ts +14 -3
  16. package/lib/types/construct-vectors.spec.d.ts +1 -0
  17. package/lib/types/elements/adw-application-window.d.ts +27 -0
  18. package/lib/types/elements/adw-bin.d.ts +17 -0
  19. package/lib/types/elements/adw-breakpoint-bin.d.ts +67 -0
  20. package/lib/types/elements/adw-clamp-scrollable.d.ts +38 -0
  21. package/lib/types/elements/adw-dialog.d.ts +10 -0
  22. package/lib/types/elements/adw-layout-slot.d.ts +19 -0
  23. package/lib/types/elements/adw-multi-layout-view.d.ts +101 -0
  24. package/lib/types/elements/adw-preferences-row.d.ts +31 -0
  25. package/lib/types/elements/adw-shortcuts-dialog.d.ts +13 -0
  26. package/lib/types/elements/adw-shortcuts-item.d.ts +36 -0
  27. package/lib/types/elements/adw-shortcuts-section.d.ts +14 -0
  28. package/lib/types/elements/adw-sidebar.d.ts +5 -0
  29. package/lib/types/elements/adw-switch-row.d.ts +3 -0
  30. package/lib/types/elements/adw-tab-bar.d.ts +108 -0
  31. package/lib/types/elements/adw-tab-button.d.ts +32 -0
  32. package/lib/types/elements/adw-tab-overview.d.ts +199 -0
  33. package/lib/types/elements/adw-tab-view.d.ts +19 -23
  34. package/lib/types/elements/adw-view-switcher-sidebar.d.ts +84 -0
  35. package/lib/types/elements/adw-window.d.ts +40 -0
  36. package/lib/types/elements/gtk-about-dialog.d.ts +146 -0
  37. package/lib/types/elements/gtk-application-window.d.ts +34 -0
  38. package/lib/types/elements/gtk-aspect-frame.d.ts +27 -0
  39. package/lib/types/elements/gtk-button.d.ts +9 -0
  40. package/lib/types/elements/gtk-calendar.d.ts +159 -0
  41. package/lib/types/elements/gtk-center-box.d.ts +39 -0
  42. package/lib/types/elements/gtk-color-dialog-button.d.ts +69 -0
  43. package/lib/types/elements/gtk-column-view.d.ts +50 -0
  44. package/lib/types/elements/gtk-drag-icon.d.ts +78 -0
  45. package/lib/types/elements/gtk-drawing-area.d.ts +95 -0
  46. package/lib/types/elements/gtk-editable-label.d.ts +33 -0
  47. package/lib/types/elements/gtk-emoji-chooser.d.ts +84 -0
  48. package/lib/types/elements/gtk-entry.d.ts +20 -1
  49. package/lib/types/elements/gtk-expander.d.ts +49 -0
  50. package/lib/types/elements/gtk-fixed.d.ts +13 -0
  51. package/lib/types/elements/gtk-flow-box-child.d.ts +14 -0
  52. package/lib/types/elements/gtk-flow-box.d.ts +87 -0
  53. package/lib/types/elements/gtk-font-dialog-button.d.ts +83 -0
  54. package/lib/types/elements/gtk-frame.d.ts +24 -0
  55. package/lib/types/elements/gtk-gl-area.d.ts +136 -0
  56. package/lib/types/elements/gtk-graphics-offload.d.ts +24 -0
  57. package/lib/types/elements/gtk-grid-view.d.ts +39 -0
  58. package/lib/types/elements/gtk-grid.d.ts +27 -0
  59. package/lib/types/elements/gtk-header-bar.d.ts +60 -0
  60. package/lib/types/elements/gtk-inscription.d.ts +64 -0
  61. package/lib/types/elements/gtk-label.d.ts +3 -0
  62. package/lib/types/elements/gtk-level-bar.d.ts +59 -0
  63. package/lib/types/elements/gtk-link-button.d.ts +29 -0
  64. package/lib/types/elements/gtk-list-box-row.d.ts +54 -0
  65. package/lib/types/elements/gtk-list-box.d.ts +100 -0
  66. package/lib/types/elements/gtk-list-view.d.ts +73 -0
  67. package/lib/types/elements/gtk-media-controls.d.ts +142 -0
  68. package/lib/types/elements/gtk-notebook.d.ts +148 -0
  69. package/lib/types/elements/gtk-overlay.d.ts +22 -0
  70. package/lib/types/elements/gtk-page-setup-unix-dialog.d.ts +87 -0
  71. package/lib/types/elements/gtk-paned.d.ts +121 -0
  72. package/lib/types/elements/gtk-password-entry.d.ts +27 -0
  73. package/lib/types/elements/gtk-picture.d.ts +66 -0
  74. package/lib/types/elements/gtk-popover-bin.d.ts +82 -0
  75. package/lib/types/elements/gtk-popover-menu-bar.d.ts +66 -0
  76. package/lib/types/elements/gtk-popover-menu.d.ts +83 -0
  77. package/lib/types/elements/gtk-popover.d.ts +28 -3
  78. package/lib/types/elements/gtk-print-unix-dialog.d.ts +167 -0
  79. package/lib/types/elements/gtk-revealer.d.ts +55 -0
  80. package/lib/types/elements/gtk-scale-button.d.ts +59 -0
  81. package/lib/types/elements/gtk-scale.d.ts +98 -0
  82. package/lib/types/elements/gtk-scrollbar.d.ts +124 -0
  83. package/lib/types/elements/gtk-scrolled-window.d.ts +121 -0
  84. package/lib/types/elements/gtk-search-bar.d.ts +39 -0
  85. package/lib/types/elements/gtk-search-entry.d.ts +27 -0
  86. package/lib/types/elements/gtk-separator.d.ts +10 -0
  87. package/lib/types/elements/gtk-spin-button.d.ts +94 -0
  88. package/lib/types/elements/gtk-spinner.d.ts +14 -0
  89. package/lib/types/elements/gtk-stack-sidebar.d.ts +43 -0
  90. package/lib/types/elements/gtk-stack-switcher.d.ts +58 -0
  91. package/lib/types/elements/gtk-stack.d.ts +154 -0
  92. package/lib/types/elements/gtk-switch.d.ts +4 -1
  93. package/lib/types/elements/gtk-text-view.d.ts +62 -0
  94. package/lib/types/elements/gtk-text.d.ts +45 -0
  95. package/lib/types/elements/gtk-toggle-button.d.ts +45 -0
  96. package/lib/types/elements/gtk-tree-expander.d.ts +38 -0
  97. package/lib/types/elements/gtk-video.d.ts +97 -0
  98. package/lib/types/elements/gtk-viewport.d.ts +84 -0
  99. package/lib/types/elements/gtk-window-controls.d.ts +80 -0
  100. package/lib/types/elements/gtk-window-handle.d.ts +39 -0
  101. package/lib/types/elements/gtk-window.d.ts +97 -0
  102. package/lib/types/elements/justification.d.ts +2 -0
  103. package/lib/types/elements/popover-menu.d.ts +18 -0
  104. package/lib/types/elements/roving-focus.d.ts +29 -1
  105. package/lib/types/emoji-data.d.ts +38 -0
  106. package/lib/types/font-description.d.ts +96 -0
  107. package/lib/types/gtk-about-dialog.spec.d.ts +1 -0
  108. package/lib/types/gtk-action-bar.spec.d.ts +1 -0
  109. package/lib/types/gtk-application-window.spec.d.ts +1 -0
  110. package/lib/types/gtk-aspect-frame.spec.d.ts +1 -0
  111. package/lib/types/gtk-calendar.spec.d.ts +1 -0
  112. package/lib/types/gtk-center-box.spec.d.ts +1 -0
  113. package/lib/types/gtk-color-dialog-button.spec.d.ts +1 -0
  114. package/lib/types/gtk-column-view.spec.d.ts +1 -0
  115. package/lib/types/gtk-drag-icon.spec.d.ts +1 -0
  116. package/lib/types/gtk-drawing-area.spec.d.ts +1 -0
  117. package/lib/types/gtk-editable-label.spec.d.ts +1 -0
  118. package/lib/types/gtk-emoji-chooser.spec.d.ts +1 -0
  119. package/lib/types/gtk-expander.spec.d.ts +1 -0
  120. package/lib/types/gtk-fixed.spec.d.ts +1 -0
  121. package/lib/types/gtk-flow-box.spec.d.ts +1 -0
  122. package/lib/types/gtk-font-dialog-button.spec.d.ts +1 -0
  123. package/lib/types/gtk-frame.spec.d.ts +1 -0
  124. package/lib/types/gtk-gl-area.spec.d.ts +1 -0
  125. package/lib/types/gtk-graphics-offload.spec.d.ts +1 -0
  126. package/lib/types/gtk-grid-view.spec.d.ts +1 -0
  127. package/lib/types/gtk-grid.spec.d.ts +1 -0
  128. package/lib/types/gtk-header-bar.spec.d.ts +1 -0
  129. package/lib/types/gtk-inscription.spec.d.ts +1 -0
  130. package/lib/types/gtk-level-bar.spec.d.ts +1 -0
  131. package/lib/types/gtk-link-button.spec.d.ts +1 -0
  132. package/lib/types/gtk-list-box.spec.d.ts +1 -0
  133. package/lib/types/gtk-list-view.spec.d.ts +1 -0
  134. package/lib/types/gtk-media-controls.spec.d.ts +1 -0
  135. package/lib/types/gtk-notebook.spec.d.ts +1 -0
  136. package/lib/types/gtk-overlay.spec.d.ts +1 -0
  137. package/lib/types/gtk-paned.spec.d.ts +1 -0
  138. package/lib/types/gtk-password-entry.spec.d.ts +1 -0
  139. package/lib/types/gtk-picture.spec.d.ts +1 -0
  140. package/lib/types/gtk-popover-bin.spec.d.ts +1 -0
  141. package/lib/types/gtk-popover-menu-bar.spec.d.ts +1 -0
  142. package/lib/types/gtk-popover-menu.spec.d.ts +1 -0
  143. package/lib/types/gtk-popover-role.spec.d.ts +1 -0
  144. package/lib/types/gtk-popover.spec.d.ts +1 -0
  145. package/lib/types/gtk-print-dialogs.spec.d.ts +1 -0
  146. package/lib/types/gtk-revealer.spec.d.ts +1 -0
  147. package/lib/types/gtk-scale-button.spec.d.ts +1 -0
  148. package/lib/types/gtk-scale.spec.d.ts +1 -0
  149. package/lib/types/gtk-scrollbar.spec.d.ts +1 -0
  150. package/lib/types/gtk-scrolled-window.spec.d.ts +1 -0
  151. package/lib/types/gtk-search-bar.spec.d.ts +1 -0
  152. package/lib/types/gtk-search-entry.spec.d.ts +1 -0
  153. package/lib/types/gtk-separator.spec.d.ts +1 -0
  154. package/lib/types/gtk-spin-button.spec.d.ts +1 -0
  155. package/lib/types/gtk-spinner.spec.d.ts +1 -0
  156. package/lib/types/gtk-stack-sidebar.spec.d.ts +1 -0
  157. package/lib/types/gtk-stack-switcher.spec.d.ts +1 -0
  158. package/lib/types/gtk-stack.spec.d.ts +1 -0
  159. package/lib/types/gtk-text-view.spec.d.ts +1 -0
  160. package/lib/types/gtk-text.spec.d.ts +1 -0
  161. package/lib/types/gtk-toggle-button.spec.d.ts +1 -0
  162. package/lib/types/gtk-tree-expander.spec.d.ts +1 -0
  163. package/lib/types/gtk-video.spec.d.ts +1 -0
  164. package/lib/types/gtk-viewport.spec.d.ts +1 -0
  165. package/lib/types/gtk-window-controls.spec.d.ts +1 -0
  166. package/lib/types/gtk-window-handle.spec.d.ts +1 -0
  167. package/lib/types/gtk-window.spec.d.ts +1 -0
  168. package/lib/types/index.d.ts +4 -1
  169. package/lib/types/list-view-dom.d.ts +44 -0
  170. package/lib/types/namespace/adw.d.ts +12 -0
  171. package/lib/types/namespace/gtk.d.ts +61 -0
  172. package/lib/types/page-setup.d.ts +100 -0
  173. package/lib/types/scroll-shading.d.ts +15 -1
  174. package/lib/types/shared-tree-builder.d.ts +30 -2
  175. package/lib/types/signals.d.ts +4 -0
  176. package/lib/types/styles.generated.d.ts +1 -1
  177. package/lib/types/tab-chip.d.ts +73 -0
  178. package/lib/types/template-classes.d.ts +11 -0
  179. package/package.json +12 -8
  180. package/scss/_action_row.scss +2 -2
  181. package/scss/_application_window.scss +26 -0
  182. package/scss/_aspect_frame.scss +25 -0
  183. package/scss/_bin.scss +26 -0
  184. package/scss/_button.scss +45 -0
  185. package/scss/_calendar.scss +176 -0
  186. package/scss/_center_box.scss +25 -0
  187. package/scss/_checks.scss +6 -1
  188. package/scss/_clamp_scrollable.scss +28 -0
  189. package/scss/_color_button.scss +67 -0
  190. package/scss/_column_view.scss +126 -0
  191. package/scss/_drag_icon.scss +55 -0
  192. package/scss/_drawing.scss +85 -0
  193. package/scss/_emoji_chooser.scss +213 -0
  194. package/scss/_entry.scss +13 -5
  195. package/scss/_entry_row.scss +1 -1
  196. package/scss/_expander.scss +113 -0
  197. package/scss/_fixed.scss +29 -0
  198. package/scss/_flow_box.scss +94 -0
  199. package/scss/_font_button.scss +63 -0
  200. package/scss/_frame.scss +41 -0
  201. package/scss/_grid.scss +19 -0
  202. package/scss/_grid_view.scss +46 -0
  203. package/scss/_gtk_about_dialog.scss +186 -0
  204. package/scss/_headerbar.scss +132 -0
  205. package/scss/_icons.generated.scss +186 -0
  206. package/scss/_inscription.scss +125 -0
  207. package/scss/_level_bar.scss +190 -0
  208. package/scss/_link.scss +82 -0
  209. package/scss/_list_box.scss +88 -0
  210. package/scss/_list_view.scss +96 -0
  211. package/scss/_media_controls.scss +139 -0
  212. package/scss/_overlay.scss +68 -0
  213. package/scss/_paned.scss +130 -0
  214. package/scss/_password_entry.scss +83 -0
  215. package/scss/_picture.scss +80 -0
  216. package/scss/_popover_bin.scss +53 -0
  217. package/scss/_popover_menu_bar.scss +104 -0
  218. package/scss/_preferences_row.scss +51 -0
  219. package/scss/_print_dialogs.scss +328 -0
  220. package/scss/_reset.scss +21 -19
  221. package/scss/_revealer.scss +37 -0
  222. package/scss/_row.scss +20 -5
  223. package/scss/_scale.scss +298 -0
  224. package/scss/_scale_button.scss +167 -0
  225. package/scss/_scrollbar.scss +230 -0
  226. package/scss/_scrolled_window.scss +131 -0
  227. package/scss/_search_bar.scss +118 -0
  228. package/scss/_search_entry.scss +86 -0
  229. package/scss/_separator.scss +44 -0
  230. package/scss/_shortcuts_dialog.scss +100 -0
  231. package/scss/_spin_button.scss +172 -0
  232. package/scss/_spin_row.scss +56 -8
  233. package/scss/_spinner.scss +85 -4
  234. package/scss/_stack.scss +729 -0
  235. package/scss/_switch.scss +13 -5
  236. package/scss/_switch_row.scss +10 -0
  237. package/scss/_tab_bar.scss +317 -0
  238. package/scss/_tab_button.scss +98 -0
  239. package/scss/_tab_overview.scss +483 -0
  240. package/scss/_text.scss +182 -0
  241. package/scss/_theme.scss +1 -1
  242. package/scss/_tree_expander.scss +62 -0
  243. package/scss/_variables.scss +43 -21
  244. package/scss/_video.scss +146 -0
  245. package/scss/_view_switcher_sidebar.scss +112 -0
  246. package/scss/_viewport.scss +50 -0
  247. package/scss/_window.scss +118 -1
  248. package/scss/_window_handle.scss +20 -0
  249. package/scss/adwaita-skin.scss +109 -0
  250. package/src/adw-action-rows.spec.ts +76 -0
  251. package/src/adw-application-window.spec.ts +118 -0
  252. package/src/adw-bin.spec.ts +75 -0
  253. package/src/adw-breakpoint-bin.spec.ts +324 -0
  254. package/src/adw-clamp-scrollable.spec.ts +189 -0
  255. package/src/adw-multi-layout-view.spec.ts +243 -0
  256. package/src/adw-preferences-row.spec.ts +164 -0
  257. package/src/adw-row-state.spec.ts +142 -0
  258. package/src/adw-shortcuts.spec.ts +155 -0
  259. package/src/adw-tab-bar.spec.ts +287 -0
  260. package/src/adw-tab-button.spec.ts +101 -0
  261. package/src/adw-tab-overview.spec.ts +443 -0
  262. package/src/adw-view-switcher-sidebar.spec.ts +281 -0
  263. package/src/adw-window.spec.ts +129 -0
  264. package/src/breakpoints.ts +25 -8
  265. package/src/capabilities.d.mts +3 -0
  266. package/src/capabilities.mjs +18 -0
  267. package/src/connect-lifecycle.spec.ts +12 -0
  268. package/src/construct-vectors.spec.ts +175 -0
  269. package/src/elements/adw-application-window.ts +154 -0
  270. package/src/elements/adw-bin.ts +101 -0
  271. package/src/elements/adw-breakpoint-bin.ts +287 -0
  272. package/src/elements/adw-clamp-scrollable.ts +207 -0
  273. package/src/elements/adw-dialog.ts +19 -0
  274. package/src/elements/adw-layout-slot.ts +95 -0
  275. package/src/elements/adw-multi-layout-view.ts +326 -0
  276. package/src/elements/adw-preferences-row.ts +150 -0
  277. package/src/elements/adw-shortcuts-dialog.ts +52 -0
  278. package/src/elements/adw-shortcuts-item.ts +171 -0
  279. package/src/elements/adw-shortcuts-section.ts +86 -0
  280. package/src/elements/adw-sidebar.ts +42 -3
  281. package/src/elements/adw-switch-row.ts +28 -1
  282. package/src/elements/adw-tab-bar.ts +529 -0
  283. package/src/elements/adw-tab-button.ts +194 -0
  284. package/src/elements/adw-tab-overview.ts +1011 -0
  285. package/src/elements/adw-tab-view.ts +66 -145
  286. package/src/elements/adw-toggle-group.ts +20 -5
  287. package/src/elements/adw-view-stack.ts +18 -0
  288. package/src/elements/adw-view-switcher-sidebar.ts +332 -0
  289. package/src/elements/adw-window.ts +185 -11
  290. package/src/elements/checks.ts +35 -8
  291. package/src/elements/gtk-about-dialog.ts +811 -0
  292. package/src/elements/gtk-application-window.ts +108 -0
  293. package/src/elements/gtk-aspect-frame.ts +160 -0
  294. package/src/elements/gtk-button.ts +12 -0
  295. package/src/elements/gtk-calendar.ts +757 -0
  296. package/src/elements/gtk-center-box.ts +184 -0
  297. package/src/elements/gtk-color-dialog-button.ts +278 -0
  298. package/src/elements/gtk-column-view.ts +320 -0
  299. package/src/elements/gtk-drag-icon.ts +257 -0
  300. package/src/elements/gtk-drawing-area.ts +303 -0
  301. package/src/elements/gtk-editable-label.ts +204 -0
  302. package/src/elements/gtk-emoji-chooser.ts +542 -0
  303. package/src/elements/gtk-entry.ts +39 -5
  304. package/src/elements/gtk-expander.ts +301 -0
  305. package/src/elements/gtk-fixed.ts +99 -0
  306. package/src/elements/gtk-flow-box-child.ts +68 -0
  307. package/src/elements/gtk-flow-box.ts +480 -0
  308. package/src/elements/gtk-font-dialog-button.ts +432 -0
  309. package/src/elements/gtk-frame.ts +174 -0
  310. package/src/elements/gtk-gl-area.ts +476 -0
  311. package/src/elements/gtk-graphics-offload.ts +130 -0
  312. package/src/elements/gtk-grid-view.ts +168 -0
  313. package/src/elements/gtk-grid.ts +127 -0
  314. package/src/elements/gtk-header-bar.ts +273 -0
  315. package/src/elements/gtk-inscription.ts +387 -0
  316. package/src/elements/gtk-label.ts +19 -11
  317. package/src/elements/gtk-level-bar.ts +323 -0
  318. package/src/elements/gtk-link-button.ts +138 -0
  319. package/src/elements/gtk-list-box-row.ts +195 -0
  320. package/src/elements/gtk-list-box.ts +413 -0
  321. package/src/elements/gtk-list-view.ts +370 -0
  322. package/src/elements/gtk-media-controls.ts +509 -0
  323. package/src/elements/gtk-notebook.ts +664 -0
  324. package/src/elements/gtk-overlay.ts +149 -0
  325. package/src/elements/gtk-page-setup-unix-dialog.ts +420 -0
  326. package/src/elements/gtk-paned.ts +597 -0
  327. package/src/elements/gtk-password-entry.ts +170 -0
  328. package/src/elements/gtk-picture.ts +254 -0
  329. package/src/elements/gtk-popover-bin.ts +332 -0
  330. package/src/elements/gtk-popover-menu-bar.ts +355 -0
  331. package/src/elements/gtk-popover-menu.ts +339 -0
  332. package/src/elements/gtk-popover.ts +92 -10
  333. package/src/elements/gtk-print-unix-dialog.ts +989 -0
  334. package/src/elements/gtk-progress-bar.ts +24 -11
  335. package/src/elements/gtk-revealer.ts +406 -0
  336. package/src/elements/gtk-scale-button.ts +358 -0
  337. package/src/elements/gtk-scale.ts +492 -0
  338. package/src/elements/gtk-scrollbar.ts +528 -0
  339. package/src/elements/gtk-scrolled-window.ts +642 -0
  340. package/src/elements/gtk-search-bar.ts +200 -0
  341. package/src/elements/gtk-search-entry.ts +172 -0
  342. package/src/elements/gtk-separator.ts +52 -0
  343. package/src/elements/gtk-spin-button.ts +475 -0
  344. package/src/elements/gtk-spinner.ts +126 -0
  345. package/src/elements/gtk-stack-sidebar.ts +212 -0
  346. package/src/elements/gtk-stack-switcher.ts +279 -0
  347. package/src/elements/gtk-stack.ts +748 -0
  348. package/src/elements/gtk-switch.ts +52 -19
  349. package/src/elements/gtk-text-view.ts +290 -0
  350. package/src/elements/gtk-text.ts +219 -0
  351. package/src/elements/gtk-toggle-button.ts +239 -0
  352. package/src/elements/gtk-tree-expander.ts +243 -0
  353. package/src/elements/gtk-video.ts +423 -0
  354. package/src/elements/gtk-viewport.ts +277 -0
  355. package/src/elements/gtk-window-controls.ts +341 -0
  356. package/src/elements/gtk-window-handle.ts +221 -0
  357. package/src/elements/gtk-window.ts +366 -0
  358. package/src/elements/justification.ts +24 -0
  359. package/src/elements/popover-menu.ts +24 -0
  360. package/src/elements/roving-focus.ts +53 -21
  361. package/src/emoji-data.ts +577 -0
  362. package/src/entry-rows.spec.ts +31 -0
  363. package/src/font-description.ts +238 -0
  364. package/src/gtk-about-dialog.spec.ts +250 -0
  365. package/src/gtk-action-bar.spec.ts +89 -0
  366. package/src/gtk-application-window.spec.ts +107 -0
  367. package/src/gtk-aspect-frame.spec.ts +114 -0
  368. package/src/gtk-calendar.spec.ts +589 -0
  369. package/src/gtk-center-box.spec.ts +125 -0
  370. package/src/gtk-color-dialog-button.spec.ts +141 -0
  371. package/src/gtk-column-view.spec.ts +154 -0
  372. package/src/gtk-drag-icon.spec.ts +190 -0
  373. package/src/gtk-drawing-area.spec.ts +211 -0
  374. package/src/gtk-editable-label.spec.ts +190 -0
  375. package/src/gtk-emoji-chooser.spec.ts +173 -0
  376. package/src/gtk-entry.spec.ts +23 -0
  377. package/src/gtk-expander.spec.ts +170 -0
  378. package/src/gtk-fixed.spec.ts +97 -0
  379. package/src/gtk-flow-box.spec.ts +289 -0
  380. package/src/gtk-font-dialog-button.spec.ts +166 -0
  381. package/src/gtk-frame.spec.ts +119 -0
  382. package/src/gtk-gl-area.spec.ts +361 -0
  383. package/src/gtk-graphics-offload.spec.ts +119 -0
  384. package/src/gtk-grid-view.spec.ts +106 -0
  385. package/src/gtk-grid.spec.ts +122 -0
  386. package/src/gtk-header-bar.spec.ts +202 -0
  387. package/src/gtk-inscription.spec.ts +235 -0
  388. package/src/gtk-level-bar.spec.ts +199 -0
  389. package/src/gtk-link-button.spec.ts +117 -0
  390. package/src/gtk-list-box.spec.ts +422 -0
  391. package/src/gtk-list-view.spec.ts +203 -0
  392. package/src/gtk-media-controls.spec.ts +295 -0
  393. package/src/gtk-notebook.spec.ts +546 -0
  394. package/src/gtk-overlay.spec.ts +141 -0
  395. package/src/gtk-paned.spec.ts +267 -0
  396. package/src/gtk-password-entry.spec.ts +150 -0
  397. package/src/gtk-picture.spec.ts +172 -0
  398. package/src/gtk-popover-bin.spec.ts +229 -0
  399. package/src/gtk-popover-menu-bar.spec.ts +296 -0
  400. package/src/gtk-popover-menu.spec.ts +261 -0
  401. package/src/gtk-popover-role.spec.ts +138 -0
  402. package/src/gtk-popover.spec.ts +264 -0
  403. package/src/gtk-print-dialogs.spec.ts +251 -0
  404. package/src/gtk-revealer.spec.ts +164 -0
  405. package/src/gtk-scale-button.spec.ts +218 -0
  406. package/src/gtk-scale.spec.ts +213 -0
  407. package/src/gtk-scrollbar.spec.ts +244 -0
  408. package/src/gtk-scrolled-window.spec.ts +262 -0
  409. package/src/gtk-search-bar.spec.ts +179 -0
  410. package/src/gtk-search-entry.spec.ts +142 -0
  411. package/src/gtk-separator.spec.ts +74 -0
  412. package/src/gtk-spin-button.spec.ts +186 -0
  413. package/src/gtk-spinner.spec.ts +130 -0
  414. package/src/gtk-stack-sidebar.spec.ts +217 -0
  415. package/src/gtk-stack-switcher.spec.ts +249 -0
  416. package/src/gtk-stack.spec.ts +432 -0
  417. package/src/gtk-text-view.spec.ts +189 -0
  418. package/src/gtk-text.spec.ts +163 -0
  419. package/src/gtk-toggle-button.spec.ts +186 -0
  420. package/src/gtk-tree-expander.spec.ts +201 -0
  421. package/src/gtk-video.spec.ts +240 -0
  422. package/src/gtk-viewport.spec.ts +140 -0
  423. package/src/gtk-window-controls.spec.ts +232 -0
  424. package/src/gtk-window-handle.spec.ts +158 -0
  425. package/src/gtk-window.spec.ts +190 -0
  426. package/src/index.ts +9 -1
  427. package/src/keyboard-operable.spec.ts +33 -1
  428. package/src/list-view-dom.ts +121 -0
  429. package/src/namespace/adw.ts +12 -0
  430. package/src/namespace/gtk.ts +61 -0
  431. package/src/page-setup.ts +222 -0
  432. package/src/scroll-shading.ts +18 -1
  433. package/src/shared-tree-builder.ts +263 -21
  434. package/src/signals.ts +15 -0
  435. package/src/source-view/theme.ts +11 -5
  436. package/src/style-classes.spec.ts +9 -8
  437. package/src/styles.generated.ts +1 -1
  438. package/src/tab-chip.ts +200 -0
  439. package/src/template-classes.ts +45 -0
  440. package/src/test.browser.mts +152 -0
@@ -0,0 +1,126 @@
1
+ // _column_view.scss — <gtk-column-view>: a header of column buttons over the same rows a
2
+ // list view draws, with one cell per column.
3
+ //
4
+ // Every number here is upstream's: the header button's `3px 6px` padding and its
5
+ // `border-left: 1px solid transparent` (which `.column-separators` then COLOURS rather
6
+ // than adds, so turning separators on cannot shift the layout), the cells' `8px 6px`, and
7
+ // the header text at 40% of `currentColor` rising to 70% on hover
8
+ // (_column-view.scss:12-48).
9
+ //
10
+ // `.separators` is deliberately the SAME class a list view uses: `show-row-separators` is
11
+ // passed straight through to the inner list view upstream, whose node then carries
12
+ // `.separators` — so the rule reads `columnview.separators > row`, one hop shorter than
13
+ // the C's node tree and with the same meaning.
14
+ //
15
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_column-view.scss:1-112
16
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_labels.scss (.caption-heading)
17
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
18
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
19
+
20
+ @use 'list_view';
21
+
22
+ gtk-column-view {
23
+ display: block;
24
+ box-sizing: border-box;
25
+ color: var(--view-fg-color);
26
+ background-color: var(--view-bg-color);
27
+
28
+ .adw-column-view-header {
29
+ display: grid;
30
+ }
31
+
32
+ .adw-column-view-header-cell {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 6px;
36
+ // `> header > button { padding: 3px 6px; border-radius: 0; background: transparent }`.
37
+ padding: 3px 6px;
38
+ border: 0;
39
+ border-left: 1px solid transparent;
40
+ border-radius: 0;
41
+ background: transparent;
42
+ font: inherit;
43
+ font-size: var(--font-size-small);
44
+ font-weight: 700;
45
+ text-align: start;
46
+ color: color-mix(in srgb, currentColor 40%, transparent);
47
+ cursor: pointer;
48
+
49
+ &:first-child {
50
+ border-left-width: 0;
51
+ }
52
+
53
+ &:hover {
54
+ color: color-mix(in srgb, currentColor 70%, transparent);
55
+ }
56
+
57
+ &:active {
58
+ color: currentColor;
59
+ }
60
+
61
+ // A column with no sorter is not a button in any useful sense: upstream simply never
62
+ // activates it, and the cursor is what says so here.
63
+ &:disabled {
64
+ cursor: default;
65
+ }
66
+
67
+ &:focus-visible {
68
+ outline: 2px solid var(--accent-color);
69
+ outline-offset: -2px;
70
+ }
71
+ }
72
+
73
+ .adw-column-view-header-title {
74
+ overflow: hidden;
75
+ text-overflow: ellipsis;
76
+ white-space: nowrap;
77
+ }
78
+
79
+ // `sort-indicator { min-height: 16px; min-width: 16px }`, drawn as pan-up when
80
+ // ascending — here one `go-down` icon turned over, the substitution the element header
81
+ // records.
82
+ .adw-column-view-sort-indicator {
83
+ flex: none;
84
+ margin-inline-start: auto;
85
+
86
+ &.ascending {
87
+ transform: rotate(180deg);
88
+ }
89
+ }
90
+
91
+ .adw-list-view-rows {
92
+ position: relative;
93
+ display: flex;
94
+ flex-direction: column;
95
+ }
96
+
97
+ .adw-column-view-row {
98
+ @include list_view.adw-list-selectable;
99
+
100
+ // `> listview > row { padding: 0 }` — the padding moved to the cells.
101
+ display: grid;
102
+ padding: 0;
103
+ box-sizing: border-box;
104
+ }
105
+
106
+ .adw-column-view-cell {
107
+ padding: 8px 6px;
108
+ box-sizing: border-box;
109
+ border-left: 1px solid transparent;
110
+
111
+ &:first-child {
112
+ border-left-width: 0;
113
+ }
114
+ }
115
+
116
+ &.column-separators {
117
+ .adw-column-view-cell,
118
+ .adw-column-view-header-cell {
119
+ border-left-color: var(--border-color);
120
+ }
121
+ }
122
+
123
+ &.separators .adw-column-view-row:not(:last-child) {
124
+ border-bottom: 1px solid var(--border-color);
125
+ }
126
+ }
@@ -0,0 +1,55 @@
1
+ // _drag_icon.scss — <gtk-drag-icon>: the one widget whose CSS node libadwaita styles for
2
+ // the WHOLE widget rather than for one state.
3
+ //
4
+ // `gtk_widget_class_set_css_name (widget_class, "dnd")` (gtkdragicon.c:383) is the whole
5
+ // of the widget's styling, and libadwaita's only rule on that node is a foreground colour
6
+ // (`_common.scss:30-32`). The second rule naming it — `dnd tab` in `_tab-view.scss` — is a
7
+ // `GtkTabView` tab being dragged out of a tab view, which is that widget's node to style,
8
+ // not a property of this one.
9
+ //
10
+ // EVERYTHING ELSE HERE IS GEOMETRY, and each value says which part of the C it stands in
11
+ // for. The box is FIXED-POSITIONED because a drag icon has no parent to lay out in: it is
12
+ // a `GtkRoot` with its own surface (:106-108), and `gtk_drag_icon_move_resize` (:138-150)
13
+ // does the one thing a layout would have done — put the icon where the pointer is, at the
14
+ // child's preferred size (`:180-188`).
15
+ //
16
+ // Reference: refs/gtk/gtk/gtkdragicon.c:106-108,138-150,180-188,380,386-390
17
+ // Reference: refs/libadwaita/src/stylesheet/_common.scss:30-32
18
+ // Copyright (c) The GTK Team. LGPLv2.1+.
19
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
20
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
21
+
22
+ gtk-drag-icon {
23
+ // `dnd { color: var(--window-fg-color) }` — the whole of libadwaita's rule, and the
24
+ // reason a drag icon's LABEL is the window foreground rather than its own.
25
+ color: var(--window-fg-color);
26
+ // `gtk_widget_set_can_target (self, FALSE)` (:386-390) has no CSS of its own, but this
27
+ // is the layer it describes: an icon that is pointed at takes no pointer event.
28
+ pointer-events: none;
29
+ // The drag surface is a root of its own (:106-108), so it is placed against the
30
+ // VIEWPORT rather than a parent box. The element writes the position itself, on every
31
+ // `dragover` — which is `gtk_drag_icon_move_resize` (:138-150) on the surface.
32
+ position: fixed;
33
+ left: 0;
34
+ top: 0;
35
+ // Above the window chrome and below the toasts, which is where a drag image belongs: it
36
+ // is over the window it was dragged out of, and under a toast that arrived after it.
37
+ z-index: 5000;
38
+ // `surface_compute_size` (:180-188) sizes the surface to the child's PREFERRED size, so
39
+ // the icon is exactly as big as what it carries: `max-content` is the one CSS length that
40
+ // measures content rather than a box.
41
+ width: max-content;
42
+ height: max-content;
43
+
44
+ // The `GtkColorSwatch` `createWidgetForValue` builds for a `GdkRGBA`
45
+ // (gtkdragicon.c:544-553), which is a square of the colour it carries — nothing else,
46
+ // because `set_can_drag`/`set_can_drop` are FALSE and the two states are the only thing
47
+ // a swatch has that this one does not need. The large size is `ICON_SIZE_LARGE`, which
48
+ // is the 32px `.large-icons` sets (_common.scss:38-41).
49
+ .adw-drag-icon-swatch {
50
+ display: block;
51
+ width: 32px;
52
+ height: 32px;
53
+ border-radius: 50%;
54
+ }
55
+ }
@@ -0,0 +1,85 @@
1
+ // _drawing.scss — <gtk-drawing-area>, and the page's other hand-drawn surfaces.
2
+ //
3
+ // THERE IS NO UPSTREAM FILE TO PORT. `GtkDrawingArea` sets no CSS name of its own, so
4
+ // its node is the default `widget` node (gtkwidget.c:1982), and libadwaita's stylesheet
5
+ // has no rule for it — nor for `glarea`, which sets no name either, nor for
6
+ // `graphicsoffload`, whose only rule is the widget-node layout GTK gives a bin. So this
7
+ // partial is GEOMETRY, and every value in it is transcribed from a measure function in
8
+ // the C rather than from a stylesheet upstream does not have. Saying that is the point:
9
+ // the rules below are not a re-skin, they are the measurement written out.
10
+ //
11
+ // CONTENT-WIDTH IS A FLOOR, NOT A SIZE. `gtk_drawing_area_measure` returns
12
+ // `content_width` as the minimum AND the natural width (gtkdrawingarea.c:210-231), so a
13
+ // parent may hand the area MORE than it asked for — which is what `width: <length>`
14
+ // means for a block box — and cannot hand it less, which is `min-width`. The zero default
15
+ // is "no intrinsic size", and `auto` is the block box's own answer to that.
16
+ //
17
+ // Reference: refs/gtk/gtk/gtkdrawingarea.c:210-231,240-267
18
+ // Copyright (c) The GTK Team. LGPLv2.1+.
19
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
20
+
21
+ gtk-drawing-area {
22
+ display: block;
23
+ // The natural half: a parent with room to spare gives the area more, and a parent
24
+ // without gives it exactly the floor below.
25
+ width: var(--adw-drawing-width, auto);
26
+ height: var(--adw-drawing-height, auto);
27
+ // The minimum half — the same number, which is why both read one custom property.
28
+ min-width: var(--adw-drawing-width, 0);
29
+ min-height: var(--adw-drawing-height, 0);
30
+
31
+ // The cairo region GTK hands the draw function is the whole allocation
32
+ // (gtkdrawingarea.c:248-262), so the canvas is the whole box rather than a scaled
33
+ // child of it.
34
+ .adw-drawing-area-canvas {
35
+ display: block;
36
+ width: 100%;
37
+ height: 100%;
38
+ }
39
+ }
40
+
41
+ // <gtk-gl-area> — `GtkGLArea` sets no CSS name (no `gtk_widget_class_set_css_name` in
42
+ // gtkglarea.c), so its node is the generic `widget` node and libadwaita has no rule for
43
+ // it. It also has NO measure function, which is the rule that shapes what follows: the
44
+ // area reports no intrinsic size on either axis, so a parent gives it one.
45
+ gtk-gl-area {
46
+ display: block;
47
+ position: relative;
48
+
49
+ .adw-gl-area-canvas {
50
+ display: block;
51
+ width: 100%;
52
+ height: 100%;
53
+ }
54
+
55
+ // `gtk_gl_area_draw_error_screen` (:701-723): the error message laid out across the
56
+ // widget's width and centred vertically — `pango_layout_set_width (width *
57
+ // PANGO_SCALE)` and `PANGO_ALIGN_CENTER`, at `(height - layout_height) / 2`. The
58
+ // canvas stays behind it, as GTK's snapshot replaces a frame's contents rather than
59
+ // the widget's node.
60
+ .adw-gl-area-error {
61
+ position: absolute;
62
+ inset: 0;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ text-align: center;
67
+ padding: 12px;
68
+ }
69
+ }
70
+ // <gtk-graphics-offload> — `GTK_TYPE_BIN_LAYOUT` (gtkgraphicsoffload.c:290) gives the
71
+ // child the whole allocation, and the black rectangle `black_background` paints over that
72
+ // allocation BEFORE the child (:222-229) is a BACKGROUND rather than a layer: what the
73
+ // letterbox bars need is the wrapper black exactly where the child does not cover it.
74
+ gtk-graphics-offload {
75
+ display: block;
76
+ position: relative;
77
+ // No `overflow: hidden` here: GTK's subsurface is rectangular and a rounded corner or a
78
+ // clip is one of the things that PROHIBITS offload (:66-68), so clipping this box would
79
+ // be the very condition the widget exists to avoid. It does not clip.
80
+ .adw-graphics-offload-child {
81
+ display: block;
82
+ width: 100%;
83
+ height: 100%;
84
+ }
85
+ }
@@ -0,0 +1,213 @@
1
+ // _emoji_chooser.scss — <gtk-emoji-chooser> styling, mirroring libadwaita's
2
+ // `_emoji-chooser.scss` node for node.
3
+ //
4
+ // The upstream partial is short because GTK does the work: `popover.emoji-picker > contents`
5
+ // gets no padding, the two boxes get theirs, and the section buttons are circular flat
6
+ // image buttons. What it does NOT style is the list itself — GTK's `.view` scrolled
7
+ // window and `GtkFlowBox` do that — so the flow box, the headings and the empty page are
8
+ // spelled out here from the `.ui` instead (6px margins and spacing, a heading label per
9
+ // section, and the `edit-find` glyph at 72px over "No Results Found").
10
+ //
11
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_emoji-chooser.scss:1-57
12
+ // (`popover.emoji-picker > contents`, `.emoji-searchbar`, `.emoji-toolbar`,
13
+ // `button.emoji-section.image-button` as a 32px circular flat button,
14
+ // `popover.emoji-picker emoji` at `font-size: x-large` with 6px padding and
15
+ // `$button_radius` corners, hover/active fills and a high-contrast outline,
16
+ // `scrolledwindow.view` with undershoot shading)
17
+ // Reference: refs/gtk/gtk/ui/gtkemojichooser.ui (6px margins and spacing, the headings,
18
+ // the empty page's 72px glyph, `max-content-height: 320`)
19
+ // Copyright (c) 2021-2024 The GTK authors. LGPLv2.1+.
20
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
21
+
22
+ gtk-emoji-chooser {
23
+ // `popover.emoji-picker > contents { padding: 0 }` — the surface carries no padding
24
+ // of its own; the searchbar and the toolbar bring theirs.
25
+ padding: 0;
26
+
27
+ .emoji-picker-root {
28
+ display: flex;
29
+ flex-direction: column;
30
+ min-width: 260px;
31
+ }
32
+
33
+ .emoji-searchbar {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: 6px;
37
+ padding: 6px;
38
+ }
39
+
40
+ .emoji-search-icon {
41
+ flex: 0 0 auto;
42
+ }
43
+
44
+ .emoji-search-entry {
45
+ flex: 1 1 auto;
46
+ min-width: 0;
47
+ padding: 6px 8px;
48
+ font: inherit;
49
+ color: inherit;
50
+ background-color: var(--entry-bg-color);
51
+ border: 1px solid var(--entry-border-color);
52
+ border-radius: 9px;
53
+
54
+ &:focus {
55
+ outline: none;
56
+ border-color: var(--accent-color);
57
+ }
58
+ }
59
+
60
+ .emoji-stack {
61
+ display: flex;
62
+ flex-direction: column;
63
+ min-height: 0;
64
+ }
65
+
66
+ // `scrolledwindow.view` (`max-content-height: 320`) with the undershoot shading the
67
+ // upstream rule draws at the two ends the scroll position is not at.
68
+ .emoji-list {
69
+ display: flex;
70
+ flex-direction: column;
71
+ gap: 6px;
72
+ max-height: 320px;
73
+ overflow-y: auto;
74
+ padding: 6px;
75
+ background-color: var(--view-bg-color);
76
+ color: var(--view-fg-color);
77
+ }
78
+
79
+ .emoji-heading {
80
+ font-weight: 500;
81
+ text-align: start;
82
+ padding: 2px 0;
83
+ }
84
+
85
+ // `GtkFlowBox` with `homogeneous: 1`: every emoji the same width, wrapping by row.
86
+ .emoji-flowbox {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ gap: 2px;
90
+ }
91
+
92
+ // `popover.emoji-picker emoji` — `font-size: x-large`, 6px padding, the button radius.
93
+ .emoji {
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: center;
97
+ min-width: 32px;
98
+ min-height: 32px;
99
+ padding: 6px;
100
+ font-size: 1.5em;
101
+ line-height: 1;
102
+ border-radius: var(--button-radius);
103
+ border: none;
104
+ background-color: transparent;
105
+ color: inherit;
106
+
107
+ &:focus,
108
+ &:hover {
109
+ background-color: var(--button-hover-color);
110
+ }
111
+
112
+ &:active {
113
+ background-color: var(--button-active-color);
114
+ }
115
+
116
+ @media (prefers-contrast: more) {
117
+ &:focus,
118
+ &:hover,
119
+ &:active {
120
+ box-shadow: inset 0 0 0 1px var(--border-color);
121
+ }
122
+ }
123
+ }
124
+
125
+ .emoji-recent-box {
126
+ margin-bottom: 2px;
127
+ }
128
+
129
+ // The `empty` stack page: `dim-label` throughout, the glyph at 72px.
130
+ .emoji-empty {
131
+ display: flex;
132
+ flex-direction: column;
133
+ align-items: center;
134
+ gap: 12px;
135
+ padding: 18px 12px;
136
+ color: var(--dim-label-color, var(--window-fg-color));
137
+ opacity: 0.6;
138
+ }
139
+
140
+ .emoji-empty-icon {
141
+ width: 72px;
142
+ height: 72px;
143
+ }
144
+
145
+ .emoji-empty-title {
146
+ font-weight: bold;
147
+ font-size: 1.4em;
148
+ }
149
+
150
+ .emoji-empty-hint {
151
+ font-size: 0.95em;
152
+ }
153
+
154
+ // `emoji-toolbar`: 3px of padding, because the flow box children already carry 3px.
155
+ .emoji-toolbar {
156
+ display: flex;
157
+ align-items: center;
158
+ padding: 3px;
159
+ border-top: 1px solid var(--separator-color);
160
+ }
161
+
162
+ // `button.emoji-section.image-button` — circular, flat, 32x32, unchecked by default and
163
+ // checked for the section the list is scrolled into.
164
+ .emoji-section {
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: center;
168
+ width: 32px;
169
+ height: 32px;
170
+ padding: 0;
171
+ border: none;
172
+ border-radius: 999px;
173
+ background-color: transparent;
174
+ color: inherit;
175
+
176
+ &:hover:not(:disabled) {
177
+ background-color: var(--button-hover-color);
178
+ }
179
+
180
+ &:checked,
181
+ &.checked {
182
+ background-color: var(--button-active-color);
183
+ }
184
+
185
+ &:disabled {
186
+ opacity: 0.4;
187
+ }
188
+ }
189
+
190
+ .emoji-section-icon {
191
+ width: 16px;
192
+ height: 16px;
193
+ }
194
+
195
+ // `show_variations` (:508-548): a `view`-backed box beside the emoji holding the six
196
+ // variants, so the second click on an emoji with skin tones lands somewhere.
197
+ .emoji-variations {
198
+ position: absolute;
199
+ z-index: 1;
200
+ padding: 6px;
201
+ border-radius: var(--button-radius);
202
+ background-color: var(--popover-bg-color);
203
+ color: var(--popover-fg-color);
204
+ box-shadow:
205
+ 0 1px 4px rgba(0, 0, 6, 0.2),
206
+ 0 2px 8px rgba(0, 0, 6, 0.12);
207
+ }
208
+
209
+ .emoji-variations-row {
210
+ display: flex;
211
+ gap: 2px;
212
+ }
213
+ }
package/scss/_entry.scss CHANGED
@@ -22,7 +22,12 @@ gtk-entry {
22
22
  color: var(--view-fg-color);
23
23
  font-family: var(--font-family);
24
24
  font-size: var(--font-size-base);
25
- box-shadow: inset 0 0 0 1px var(--entry-border-color);
25
+ // NO FRAME. `%entry_basic` (_entries.scss:1-11) draws a fill and a radius and
26
+ // nothing else: the one-pixel border appears ONLY under `prefers-contrast: more`
27
+ // (:13-15). The frame sat here unconditionally, so every entry — entry, search entry,
28
+ // password entry, the text view — read as an outlined box where libadwaita draws a
29
+ // flat grey one. Confirmed against the native reference: a focused entry carries the
30
+ // accent ring, an unfocused one carries no edge at all.
26
31
  transition: box-shadow 0.1s ease;
27
32
 
28
33
  &::placeholder {
@@ -30,10 +35,6 @@ gtk-entry {
30
35
  opacity: var(--dim-opacity);
31
36
  }
32
37
 
33
- &:hover {
34
- box-shadow: inset 0 0 0 1px var(--entry-border-hover-color);
35
- }
36
-
37
38
  &:focus,
38
39
  &:focus-visible {
39
40
  outline: none;
@@ -44,6 +45,13 @@ gtk-entry {
44
45
  &:disabled {
45
46
  opacity: 0.45;
46
47
  cursor: default;
48
+ }
49
+
50
+ @media (prefers-contrast: more) {
47
51
  box-shadow: inset 0 0 0 1px var(--entry-border-color);
52
+
53
+ &:hover {
54
+ box-shadow: inset 0 0 0 1px var(--entry-border-hover-color);
55
+ }
48
56
  }
49
57
  }
@@ -10,7 +10,7 @@ adw-entry-row {
10
10
  align-items: center;
11
11
  gap: var(--spacing-m);
12
12
  min-height: 50px;
13
- padding: var(--spacing-xs) var(--spacing-m);
13
+ padding: 0 var(--spacing-m);
14
14
  border-bottom: 1px solid var(--card-shade-color);
15
15
 
16
16
  &:last-child {
@@ -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
+ }
@@ -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
+ }