@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,73 @@
1
+ import type { AdwTabPageState } from '@gjsify/adwaita-core';
2
+ import { type GtkImage } from './elements/gtk-image.js';
3
+ export type AdwTabBarPage = AdwTabPageState<HTMLElement>;
4
+ /** `SPACING`: the slack `scroll_to_tab_full` allows before it scrolls (adw-tab-box.c:24). */
5
+ export declare const TAB_SPACING = 5;
6
+ /** The five nodes of one chip, held so a caller can refresh one without re-querying it. */
7
+ export interface TabChip {
8
+ /** The button itself: `role="tab"`, carrying `data-page-id`. */
9
+ el: HTMLButtonElement;
10
+ icon: GtkImage;
11
+ spinner: HTMLElement;
12
+ label: HTMLElement;
13
+ indicator: GtkImage;
14
+ close: HTMLButtonElement;
15
+ }
16
+ /** What the chip asks its bar for; the bar owns the model and the page list. */
17
+ export interface TabChipHooks {
18
+ /** The chip was pressed — libadwaita's `select_page`. */
19
+ onSelect: () => void;
20
+ /** The close affordance was pressed; `AdwTab`'s own button, which stops propagation. */
21
+ onClose: () => void;
22
+ /** Pointer in or out of the chip, for `update_visible`'s `hovering` term. */
23
+ onHover: (hovering: boolean) => void;
24
+ }
25
+ /**
26
+ * One chip, node for node: the icon, the spinner that replaces it while the page is
27
+ * loading, the title, the attention indicator and the close affordance — in that order,
28
+ * because `AdwTab`'s template puts the close button LAST and the indicator before it.
29
+ */
30
+ export declare const createTabChip: (hooks: TabChipHooks) => TabChip;
31
+ /**
32
+ * `update_icons`, `update_title` and `update_needs_attention` — everything about a chip
33
+ * that reads off its PAGE rather than off the bar. The bar keeps the geometry half
34
+ * ({@link refreshTabChipClose}) to itself, because that is measured against ITS scroll
35
+ * window and only it knows where the chip sits in it.
36
+ */
37
+ export declare const refreshTabChip: (chip: TabChip, page: AdwTabBarPage, defaultIcon: string | null) => void;
38
+ /**
39
+ * `get_tab_position` in the BAR's scroll space: how far the chip sits from the strip's
40
+ * scroll origin, the one coordinate both `scroll_to_tab_full` and `update_visible` compare
41
+ * against the adjustment.
42
+ *
43
+ * Never `offsetLeft`. Nothing in a tab bar is positioned, so a chip's offsetParent is
44
+ * whichever positioned ancestor the HOST page happens to have; a bar that merely sits
45
+ * indented then measured every chip against the wrong origin and reported all of them
46
+ * clipped.
47
+ */
48
+ export declare const chipPosition: (bar: HTMLElement, chip: HTMLElement) => number;
49
+ /**
50
+ * `update_visible` (adw-tab-box.c:769-797) as libadwaita applies it, with the pinned gate
51
+ * from `AdwTab` folded in: `(hovering && fullyVisible) || selected`, never on a pinned tab.
52
+ *
53
+ * `dragging` is constantly false — tab drag-and-drop is compositor work and is not modelled
54
+ * — and the SPACING slack C also demands is deliberately NOT transplanted, because it is not
55
+ * slack there either: the allocation loop starts the first tab at `pos = SPACING` and puts
56
+ * SPACING between tabs (:3270-3286), so `pos - SPACING >= value` is exactly "flush against
57
+ * the leading edge". A strip without those gaps would report the first chip clipped.
58
+ */
59
+ export declare const refreshTabChipClose: (bar: HTMLElement, chip: TabChip, page: AdwTabBarPage, state: {
60
+ hovering: boolean;
61
+ selected: boolean;
62
+ }) => void;
63
+ /**
64
+ * `scroll_to_tab_full` (adw-tab-box.c:928-961): bring the chip inside the BAR's own scroll
65
+ * window, padded by half of whichever is smaller, the chip or the leftover.
66
+ *
67
+ * The bar is the only thing C ever scrolls for a tab — `scroll_to_tab_full` writes
68
+ * `self->adjustment`, the strip's own adjustment, and nothing else. The DOM has no such
69
+ * narrow API: `focus()` and `scrollIntoView()` both walk EVERY scrollable ancestor up to
70
+ * the window. So this moves `scrollLeft` by hand, and the caller passes `preventScroll` to
71
+ * `focus()`.
72
+ */
73
+ export declare const scrollChipIntoBar: (bar: HTMLElement, chip: HTMLElement) => void;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Registers the custom element `tag` as the class a `.blp` means by `$name`, spelled as the
3
+ * file spells it (`SourceView` for `$SourceView`). The element builds its own internals,
4
+ * typically from its own `.blp?shared-tree`, and must be defined by the time a tree uses it.
5
+ *
6
+ * Registering the same pair again is a no-op; a different tag under the same name is refused,
7
+ * as `Gtk.Builder` refuses a type registered twice.
8
+ */
9
+ export declare function registerTemplateClass(name: string, tag: string): void;
10
+ /** The tag `name` was registered under, or a refusal that names what is missing. */
11
+ export declare function templateTagFor(name: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/adwaita-web",
3
- "version": "0.53.0",
3
+ "version": "0.55.0",
4
4
  "description": "Adwaita/Libadwaita web components for browser targets",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -18,6 +18,10 @@
18
18
  "types": "./lib/types/fonts.d.ts",
19
19
  "default": "./src/fonts.ts"
20
20
  },
21
+ "./capabilities": {
22
+ "types": "./src/capabilities.d.mts",
23
+ "default": "./src/capabilities.mjs"
24
+ },
21
25
  "./style.css": {
22
26
  "types": "./style.css.d.ts",
23
27
  "default": "./dist/adwaita-web.css"
@@ -45,16 +49,16 @@
45
49
  "@codemirror/language": "^6.12.4",
46
50
  "@codemirror/state": "^6.7.0",
47
51
  "@codemirror/view": "^6.43.4",
48
- "@gjsify/adwaita-core": "^0.53.0",
49
- "@gjsify/adwaita-fonts": "^0.53.0",
50
- "@gjsify/adwaita-icons": "^0.53.0",
52
+ "@gjsify/adwaita-core": "^0.55.0",
53
+ "@gjsify/adwaita-fonts": "^0.55.0",
54
+ "@gjsify/adwaita-icons": "^0.55.0",
51
55
  "@lezer/highlight": "^1.2.3"
52
56
  },
53
57
  "devDependencies": {
54
- "@gjsify/blueprint": "^0.53.0",
55
- "@gjsify/cli": "^0.53.0",
56
- "@gjsify/unit": "^0.53.0",
57
- "@gjsify/vite-plugin-blueprint": "^0.53.0",
58
+ "@gjsify/blueprint": "^0.55.0",
59
+ "@gjsify/cli": "^0.55.0",
60
+ "@gjsify/unit": "^0.55.0",
61
+ "@gjsify/vite-plugin-blueprint": "^0.55.0",
58
62
  "sass": "^1.101.0",
59
63
  "typescript": "^6.0.3"
60
64
  },
@@ -9,8 +9,8 @@ adw-action-row {
9
9
  display: flex;
10
10
  align-items: center;
11
11
  gap: var(--spacing-m);
12
- min-height: 50px;
13
- padding: var(--spacing-s) var(--spacing-m);
12
+ min-height: 54px;
13
+ padding: 0 var(--spacing-m);
14
14
  border-bottom: 1px solid var(--card-shade-color);
15
15
  color: var(--card-fg-color);
16
16
 
@@ -0,0 +1,26 @@
1
+ // _application_window.scss — the application window's menubar strip.
2
+ //
3
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_toolbars.scss (`menubar`, the
4
+ // row libadwaita styles for GtkPopoverMenuBar — the GTK 4 menubar this widget
5
+ // stands in for)
6
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_header-bar.scss (the bar it sits
7
+ // above, for the background and the border between them)
8
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+
9
+ // Modifications: Implemented for @gjsify/adwaita-web Web Components.
10
+
11
+ .adw-application-window-menubar {
12
+ display: flex;
13
+ flex: 0 0 auto;
14
+ align-items: center;
15
+ gap: 2px;
16
+ padding: 0 6px;
17
+ background-color: var(--headerbar-bg-color);
18
+ color: var(--headerbar-fg-color);
19
+ // The rule between the bar and the header bar below it, which is the whole of what
20
+ // separates one bar from another in a stacked window.
21
+ box-shadow: inset 0 -1px 0 var(--headerbar-border-color);
22
+
23
+ &[hidden] {
24
+ display: none;
25
+ }
26
+ }
@@ -0,0 +1,25 @@
1
+ // _aspect_frame.scss — <gtk-aspect-frame>: draws NOTHING, it only sizes and places.
2
+ //
3
+ // libadwaita has no rule for the `aspectframe` node (its stylesheet never names it), and
4
+ // neither should this: the widget paints no border, no background and no frame, because
5
+ // `gtk_aspect_frame_size_allocate` gives its child one allocation of the requested shape
6
+ // and puts that box at (`xalign`, `yalign`) — gtakaspectframe.c:561-587. That allocation
7
+ // IS the widget.
8
+ //
9
+ // What is left to CSS is the placing, and all of it is per-INSTANCE: the element writes
10
+ // `justify-content` and `align-items` from `xalign` / `yalign` and the child's
11
+ // `aspect-ratio`, `max-width` and `max-height` inline, because a stylesheet cannot key on a
12
+ // fraction. So this partial is the flex container and nothing else.
13
+ //
14
+ // Reference: refs/gtk/gtk/gtkaspectframe.c:561-587
15
+ // Copyright (c) The GTK Team. LGPLv2.1+.
16
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
17
+
18
+ gtk-aspect-frame {
19
+ display: flex;
20
+ // The child's shape and both alignments are written INLINE by the element, because a
21
+ // stylesheet cannot key on a fraction; these are the values in the frame before it does,
22
+ // which are also the pspec defaults for `xalign` and `yalign`.
23
+ justify-content: center;
24
+ align-items: center;
25
+ }
package/scss/_bin.scss ADDED
@@ -0,0 +1,26 @@
1
+ // _bin.scss — <adw-bin>, the one-child container.
2
+ //
3
+ // libadwaita has NO `bin` node: `adw_bin_class_init` sets no CSS name and the
4
+ // stylesheet never mentions one (the widget's whole rule is the layout manager, and
5
+ // `GtkBinLayout` gives the child the widget's entire allocation). So the only rule here
6
+ // is the block box that allocation needs, and the one cross-axis stretch that says
7
+ // "the child fills the bin" — a `GtkBinLayout` gives its child the bin's height too,
8
+ // which a block child would otherwise size to its own content.
9
+ //
10
+ // Reference: refs/libadwaita/src/adw-bin.c:123 (GtkBinLayout)
11
+ // Reference: refs/gtk/gtk/gtkbinlayout.c:81 (`gtk_bin_layout_allocate` hands the child the
12
+ // allocation on both axes)
13
+ // Copyright (c) GNOME contributors (GTK, libadwaita). LGPLv2.1+.
14
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
15
+
16
+ adw-bin {
17
+ display: block;
18
+
19
+ // One child, and it fills — `gtk_bin_layout_allocate` allocates the whole widget to
20
+ // its single child. `:only-child` rather than `> *` because a bin keeps ONE
21
+ // (`adw_bin_set_child` unparents the one it replaces), so the case where the selector
22
+ // could match two is one the element has already refused.
23
+ > :only-child {
24
+ block-size: 100%;
25
+ }
26
+ }
package/scss/_button.scss CHANGED
@@ -177,6 +177,51 @@ gtk-button {
177
177
  background-color: color-mix(in srgb, black calc(0.75 * 65%), currentColor calc(0.25 * 65%));
178
178
  }
179
179
  }
180
+
181
+ // Checked — `<gtk-toggle-button>`'s pressed state, libadwaita's `:checked`
182
+ // (_buttons.scss:44-56, 136-140, 169-177, 199-210). Last in the block so it outranks the
183
+ // hover/active/`.raised` rules of equal specificity above, which is also why the flat,
184
+ // suggested and destructive variants restate their own checked colours: upstream
185
+ // resolves them by the same source order.
186
+ &.checked {
187
+ background-color: color-mix(in srgb, currentColor 30%, transparent);
188
+
189
+ &:hover {
190
+ background-color: color-mix(in srgb, currentColor 35%, transparent);
191
+ }
192
+
193
+ &:active {
194
+ background-color: color-mix(in srgb, currentColor 40%, transparent);
195
+ }
196
+ }
197
+
198
+ &.flat.checked {
199
+ background-color: color-mix(in srgb, currentColor 10%, transparent);
200
+
201
+ &:hover {
202
+ background-color: color-mix(in srgb, currentColor 13%, transparent);
203
+ }
204
+
205
+ &:active {
206
+ background-color: color-mix(in srgb, currentColor 19%, transparent);
207
+ }
208
+ }
209
+
210
+ &.suggested-action.checked {
211
+ background-color: var(--accent-bg-color);
212
+ }
213
+
214
+ &.destructive-action.checked {
215
+ background-color: color-mix(in srgb, currentColor 35%, transparent);
216
+
217
+ &:hover {
218
+ background-color: color-mix(in srgb, currentColor 40%, transparent);
219
+ }
220
+
221
+ &:active {
222
+ background-color: color-mix(in srgb, currentColor 45%, transparent);
223
+ }
224
+ }
180
225
  }
181
226
 
182
227
  // The symbolic icon (`.adw-icon`) used to be declared here, because the first
@@ -0,0 +1,176 @@
1
+ // _calendar.scss — <gtk-calendar>: the `calendar` node, its header, and the grid of
2
+ // `day-name` / `week-number` / `day-number` labels.
3
+ //
4
+ // libadwaita's block is 58 lines and almost all of it is state: `:checked` for a MARKED day,
5
+ // `:selected` for the SELECTED one, `.today` for today's, `.other-month` for the spill. The
6
+ // port spells those as four classes off one element — `gtk-calendar.ts` raises the same four
7
+ // widget state flags `calendar_update_day_labels` does (gtkcalendar.c:1015-1046) — and the
8
+ // selectors below are the same four, in the same specificity order, so the cascade resolves
9
+ // the way the C's stylesheet resolves it.
10
+ //
11
+ // THE CASCADE ORDER MATTERS and it is why the rules are not merged: `label.today` sets an
12
+ // inset box-shadow and then CANCELS it under `:selected` (_calendar.scss:24-30), and
13
+ // `.day-number:checked` sets a 30% accent tint that `:selected` then replaces with the solid
14
+ // accent (_calendar.scss:37-51). A merged rule that applied `:checked` last would tint the
15
+ // selected day, which is exactly what upstream avoids.
16
+ //
17
+ // `font-variant-numeric: tabular-nums` is the load-bearing line for a grid of day numbers: the
18
+ // column widths come from the widest number, and proportional digits would make 1 narrower than
19
+ // 8 and the whole grid breathe as the month changes.
20
+ //
21
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_calendar.scss:1-58
22
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
23
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
24
+
25
+ gtk-calendar {
26
+ display: flex;
27
+ flex-direction: column;
28
+ box-sizing: border-box;
29
+ color: var(--view-fg-color);
30
+ background-color: var(--view-bg-color);
31
+ background-clip: padding-box;
32
+ // `calendar { border: 1px solid $border_color }` (_calendar.scss:4).
33
+ border: 1px solid var(--border-color);
34
+ border-radius: var(--window-radius);
35
+ font-variant-numeric: tabular-nums;
36
+
37
+ &.view:disabled {
38
+ color: var(--view-fg-color);
39
+ }
40
+ }
41
+
42
+ .adw-calendar-header {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: 2px;
46
+ padding: 4px;
47
+ // `> header { border-bottom: 1px solid $border_color }` (_calendar.scss:12).
48
+ border-bottom: 1px solid var(--border-color);
49
+ }
50
+
51
+ .adw-calendar-month {
52
+ font-weight: bold;
53
+ white-space: nowrap;
54
+ overflow: hidden;
55
+ text-overflow: ellipsis;
56
+ }
57
+
58
+ .adw-calendar-year {
59
+ // The C measures the year label once and adds 10px so "changing the year does not increase
60
+ // the calendar width" (gtkcalendar.c:853-858) — a fixed slot is the same promise.
61
+ flex: 0 0 auto;
62
+ font-weight: bold;
63
+ }
64
+
65
+ .adw-calendar-nav-button {
66
+ display: inline-flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ flex: 0 0 auto;
70
+ // `@extend %button_basic_flat` with `border-radius: 0` (_calendar.scss:15-16).
71
+ border-radius: 0;
72
+
73
+ &[disabled] {
74
+ opacity: var(--disabled-opacity);
75
+ }
76
+ }
77
+
78
+ .adw-calendar-grid {
79
+ display: grid;
80
+ // Column 0 is the week-number column upstream (gtkcalendar.c:786-790), and it exists whether
81
+ // or not the numbers are shown, so the day names and the days line up under it either way.
82
+ grid-template-columns: auto repeat(7, 1fr);
83
+ // `> grid { padding-left: 3px; padding-bottom: 3px }` (_calendar.scss:21-22).
84
+ padding: 3px 0 3px 3px;
85
+ }
86
+
87
+ .adw-calendar-day-name,
88
+ .adw-calendar-week-number,
89
+ .adw-calendar-week-spacer {
90
+ // `margin-top: 3px; margin-right: 3px` (_calendar.scss:34-35), applied to the labels.
91
+ margin-top: 3px;
92
+ margin-right: 3px;
93
+ font-size: var(--font-size-small);
94
+ opacity: var(--dim-opacity);
95
+ text-align: center;
96
+ }
97
+
98
+ .adw-calendar-week-number,
99
+ .adw-calendar-week-spacer {
100
+ // The week-number column is the day names' share of a cell: a number is narrower than a name,
101
+ // and letting it size itself would make the grid jitter between a wide and a narrow month.
102
+ max-width: 2.5em;
103
+ }
104
+
105
+ .adw-calendar-cell {
106
+ // `> label { margin-top: 3px; margin-right: 3px }` and `.day-number { padding: 3px }`
107
+ // (_calendar.scss:32-38).
108
+ margin-top: 3px;
109
+ margin-right: 3px;
110
+ padding: 3px;
111
+ border: none;
112
+ border-radius: 0;
113
+ background: none;
114
+ color: inherit;
115
+ font: inherit;
116
+ font-variant-numeric: inherit;
117
+ line-height: 1;
118
+ text-align: center;
119
+ cursor: pointer;
120
+
121
+ &:hover {
122
+ background-color: color-mix(in srgb, currentColor 6%, transparent);
123
+ }
124
+
125
+ &:active {
126
+ background-color: color-mix(in srgb, currentColor 12%, transparent);
127
+ }
128
+
129
+ &:focus-visible,
130
+ &.focused {
131
+ // `@include focus-ring($focus-state: ':focus')` (_calendar.scss:33) — the C focuses the
132
+ // LABEL rather than the grid, which is what `.focused` is on this port.
133
+ outline: 2px solid var(--accent-color);
134
+ outline-offset: -2px;
135
+ }
136
+
137
+ // `:checked` — `background-color: color-mix(… var(--accent-bg-color) 30%, transparent)`
138
+ // (_calendar.scss:39-43), the MARKED day.
139
+ &.marked {
140
+ border-radius: var(--button-radius);
141
+ background-color: color-mix(in srgb, var(--accent-bg-color) 30%, transparent);
142
+ }
143
+
144
+ // `:selected { background-color: var(--accent-bg-color); color: var(--accent-fg-color) }`
145
+ // (_calendar.scss:45-50), and it comes AFTER `:checked` so the selected day is not tinted.
146
+ &.selected {
147
+ border-radius: var(--button-radius);
148
+ background-color: var(--accent-bg-color);
149
+ color: var(--accent-fg-color);
150
+ }
151
+
152
+ // `.other-month { color: color-mix(in srgb, currentColor 30%, transparent) }`
153
+ // (_calendar.scss:53-55), the leading and trailing spill.
154
+ &.other-month {
155
+ color: color-mix(in srgb, currentColor 30%, transparent);
156
+ }
157
+
158
+ // `label.today { box-shadow: inset 0 0 0 -2px $border_color }` (_calendar.scss:24-25) — an
159
+ // inset rule, not a border, so it does not change the cell's size.
160
+ &.today {
161
+ box-shadow: inset 0 -2px var(--border-color);
162
+ }
163
+
164
+ // `label.today:selected { box-shadow: none }` (_calendar.scss:27-29): the selected day's
165
+ // accent fill IS the emphasis, so today's underline steps aside rather than doubling up.
166
+ &.today.selected {
167
+ box-shadow: none;
168
+ }
169
+
170
+ &[disabled] {
171
+ // `lower_limit_reached` / `upper_limit_reached` blank those cells and make them
172
+ // insensitive (gtkcalendar.c:1004-1015), so there is nothing to dim — just nothing.
173
+ background: none;
174
+ cursor: default;
175
+ }
176
+ }
@@ -0,0 +1,25 @@
1
+ // _center_box.scss — <gtk-center-box>: three children, and the space between them.
2
+ //
3
+ // `gtk_center_box_set_css_name (widget_class, I_("box"))` (gtkcenterbox.c:345) means the
4
+ // theme's `box` rule styles this widget, and libadwaita ships NO `box` rule — a box draws
5
+ // nothing, it only places. `justify-content: space-between` IS the placement: the centre
6
+ // layout puts the start child at the start, the end child at the end and the centre between
7
+ // them, growing the centre into whatever is left when it expands
8
+ // (gtkcenterlayout.c:174-186).
9
+ //
10
+ // The `shrink-center-last` weights and a `baseline-position` are written INLINE by the
11
+ // element, because both are per-instance values a selector cannot express: the weights
12
+ // differ per child, and the position is a fraction.
13
+ //
14
+ // Reference: refs/gtk/gtk/gtkcenterbox.c:345-346
15
+ // Reference: refs/gtk/gtk/gtkcenterlayout.c:144-186
16
+ // Copyright (c) The GTK Team. LGPLv2.1+.
17
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
18
+
19
+ gtk-center-box {
20
+ display: flex;
21
+ justify-content: space-between;
22
+ // A child's default `valign` is FILL, and the centre layout's one line takes the whole
23
+ // cross axis — the same thing `_box.scss` states for `<gtk-box>`.
24
+ align-items: stretch;
25
+ }
package/scss/_checks.scss CHANGED
@@ -103,7 +103,9 @@ adw-radio {
103
103
  display: block;
104
104
  width: 100%;
105
105
  height: 100%;
106
- background-color: currentColor;
106
+ // Transparent until a state supplies a glyph: an unmasked currentColor box is a
107
+ // solid square, which is what an unchecked control used to paint.
108
+ background-color: transparent;
107
109
  mask-repeat: no-repeat;
108
110
  mask-position: center;
109
111
  mask-size: 14px; // -gtk-icon-size: 14px (:25)
@@ -187,11 +189,13 @@ adw-radio .adw-check-indicator {
187
189
 
188
190
  // `check:checked` → check.svg (:70) / `radio:checked` → bullet.svg (:76)
189
191
  gtk-check-button[checked] .adw-check-indicator::after {
192
+ background-color: currentColor;
190
193
  mask-image: $check-glyph;
191
194
  -webkit-mask-image: $check-glyph;
192
195
  }
193
196
 
194
197
  adw-radio[checked] .adw-check-indicator::after {
198
+ background-color: currentColor;
195
199
  mask-image: $bullet-glyph;
196
200
  -webkit-mask-image: $bullet-glyph;
197
201
  }
@@ -203,6 +207,7 @@ adw-radio[checked] .adw-check-indicator::after {
203
207
  // in `@gjsify/adwaita-core` encodes for the a11y value.
204
208
  gtk-check-button[indeterminate] .adw-check-indicator::after,
205
209
  adw-radio[indeterminate] .adw-check-indicator::after {
210
+ background-color: currentColor;
206
211
  mask-image: $dash-glyph;
207
212
  -webkit-mask-image: $dash-glyph;
208
213
  }
@@ -0,0 +1,28 @@
1
+ // _clamp_scrollable.scss — <adw-clamp-scrollable>.
2
+ //
3
+ // The widget has NO node of its own: `adw_clamp_scrollable_class_init` ends with
4
+ // `set_layout_manager_type(ADW_TYPE_CLAMP_LAYOUT)` and `set_css_name("clamp")`
5
+ // (adw-clamp-scrollable.c:328-329), so it draws exactly what `<adw-clamp>` draws — which
6
+ // is nothing, since there is no `clamp {}` block in the libadwaita stylesheet either. A
7
+ // clamp measures; the cap and the `small`/`medium`/`large` classes are written onto the
8
+ // CHILD by the element, out of `clampAllocate`.
9
+ //
10
+ // What this element adds is `overflow`. In C the CHILD is the `Gtk.Scrollable` and four
11
+ // `g_object_bind_property` calls forward the adjustments onto it
12
+ // (adw-clamp-scrollable.c:440-455); a DOM scrollport is the element itself, so the
13
+ // scrolling moves one level up and the element writes `overflow-x`/`overflow-y` from
14
+ // `hscroll-policy`/`vscroll-policy`. This rule is the floor for an author who set
15
+ // neither policy — GTK's default is GTK_POLICY_AUTOMATIC, which shows a scrollbar only
16
+ // when there is something to scroll, which is `auto` here.
17
+ //
18
+ // Reference: refs/libadwaita/src/adw-clamp-scrollable.c:328-329 (the `clamp` node)
19
+ // Reference: refs/libadwaita/src/adw-clamp-layout.c (adw_clamp_layout_allocate — the
20
+ // size classes the element stamps on the child)
21
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
22
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components; the scrollport is the
23
+ // element where C's is the child, for the reason the element's header records.
24
+
25
+ adw-clamp-scrollable {
26
+ display: block;
27
+ overflow: auto;
28
+ }
@@ -0,0 +1,67 @@
1
+ // _color_button.scss — `<gtk-color-dialog-button>`: the `button.color` node and the
2
+ // swatch it holds.
3
+ //
4
+ // THE SWATCH IS NOT LIBADWAITA'S, and saying so is the point of this partial. GTK paints
5
+ // the `GtkColorSwatch` from GTK's OWN theme — libadwaita's `_color-chooser.scss` styles the
6
+ // `colorchooser` popover, and `grep` finds no rule for the swatch or for `colorbutton` at
7
+ // all. So what upstream does have is this:
8
+ //
9
+ // · the node `colorbutton > button.color` and the `.color` style class
10
+ // (gtkcolordialogbutton.c:63-70, :163) — which is what puts the button in the
11
+ // `.linked` group and makes it square;
12
+ //
13
+ // and what this partial adds is the geometry `gtk_color_dialog_button_init` asks for: a
14
+ // swatch as wide as the word "Black" rendered at the base size and as tall as its line
15
+ // (:139-148). 24x18 is that box at the base font size, so the button around it is the
16
+ // usual 34px-tall button.
17
+ //
18
+ // THE TRANSLUCENT CLAUSE IS GTK's own drawing, keyed off the element's `data-translucent`:
19
+ // `GtkColorSwatch` draws a checkerboard under a colour with alpha, and `rgba_to_gdk_rgba`
20
+ // is how it decides. A browser has no such thing, and a translucent colour on a plain
21
+ // background is unreadable without one.
22
+ //
23
+ // Reference: refs/gtk/gtk/gtkcolordialogbutton.c:63-70 (the node), :139-163 (the swatch,
24
+ // the `.color` class), :329-347 (the accessible name's rounding)
25
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_linked.scss:6 (`colorbutton > button`)
26
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
27
+ // Modifications: Adapted for @gjsify/adwaita-web — the swatch is a `<span>` painted with
28
+ // `background-color`, and its checkerboard is this package's drawing of GtkColorSwatch.
29
+
30
+ gtk-color-dialog-button {
31
+ display: inline-flex;
32
+ }
33
+
34
+ .color-button-swatch {
35
+ display: block;
36
+ width: 24px;
37
+ height: 18px;
38
+ border-radius: 4px;
39
+ box-shadow: 0 0 0 1px var(--shade-color);
40
+ // The checkerboard, only while the colour is translucent — the element writes
41
+ // `data-translucent` from `rgba[3] < 1`, which is GtkColorSwatch's own test.
42
+ &[data-translucent='true'] {
43
+ background-image:
44
+ linear-gradient(45deg, rgb(0 0 6 / 12%) 25%, transparent 25%),
45
+ linear-gradient(-45deg, rgb(0 0 6 / 12%) 25%, transparent 25%),
46
+ linear-gradient(45deg, transparent 75%, rgb(0 0 6 / 12%) 75%),
47
+ linear-gradient(-45deg, transparent 75%, rgb(0 0 6 / 12%) 75%);
48
+ background-position:
49
+ 0 0,
50
+ 0 4px,
51
+ 4px -4px,
52
+ -4px 0;
53
+ background-size: 8px 8px;
54
+ }
55
+ }
56
+
57
+ // The chooser itself: visually nothing, and reachable only from the button's click, which
58
+ // is why it is `aria-hidden` and out of the tab order rather than merely transparent.
59
+ .color-button-input {
60
+ position: absolute;
61
+ width: 1px;
62
+ height: 1px;
63
+ padding: 0;
64
+ border: none;
65
+ opacity: 0;
66
+ pointer-events: none;
67
+ }