@gjsify/adwaita-web 0.54.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 (439) hide show
  1. package/dist/adwaita-web.css +8066 -3033
  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 +1 -1
  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/style-classes.spec.ts +9 -8
  436. package/src/styles.generated.ts +1 -1
  437. package/src/tab-chip.ts +200 -0
  438. package/src/template-classes.ts +45 -0
  439. package/src/test.browser.mts +152 -0
@@ -0,0 +1,108 @@
1
+ // <gtk-application-window> — a `Gtk.Window` that knows about a `GtkApplication`.
2
+ //
3
+ // The subclass has exactly ONE property of its own, `show-menubar` (gtkapplicationwindow.c:
4
+ // `PROP_SHOWMENUBAR`, :693), and everything else it brings is the ACTION groups and the
5
+ // menubar: `init` inserts a `win` action group into the window (:435) and creates the private
6
+ // `menubar_section` menu the bar is assembled from (:436-437).
7
+ //
8
+ // THE MENUBAR, AND WHY IT IS A SLOT HERE. `update_menubar` (:392-431) shows the bar only when
9
+ // `show_menubar` is set AND the section has at least one item, and it BUILDS the bar with
10
+ // `gtk_popover_menu_bar_new_from_model` over a combined `GMenu` — a `GMenuModel` read from the
11
+ // `GtkApplication`, which no attribute can carry and no markup can spell. So the bar is a
12
+ // `menubar` SLOT here: the application's own menubar view, placed where `update_menubar`
13
+ // parents it — above the content and below the titlebar, because `gtk_window_set_titlebar`
14
+ // puts the titlebar above the window's child. The visibility rule is the C's, both halves of
15
+ // it: no children, or `show-menubar="false"`, and the strip is hidden.
16
+ //
17
+ // THE `win.` / `app.` PREFIXES. `GtkApplicationWindow` exports window actions under `win.` and
18
+ // application-wide ones under `app.` (:48-56), and any `GtkActionable` inside the window can
19
+ // activate either. A page has no `GActionMap`, so nothing is exported here; what this element
20
+ // adds over `<gtk-window>` is the strip and the property that shows it.
21
+ //
22
+ // Reference: refs/gtk/gtk/gtkapplicationwindow.c
23
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_window.scss (GtkWindow)
24
+ // Copyright (c) The GTK Team. LGPLv2.1+.
25
+ // Modifications: Implemented as a Web Component for @gjsify/adwaita-web.
26
+
27
+ import type { AdwSlot } from '../slotted-children.js';
28
+ import { GtkWindow } from './gtk-window.js';
29
+
30
+ export class GtkApplicationWindow extends GtkWindow {
31
+ private _menubar: HTMLDivElement | null = null;
32
+ private _menubarObserver: MutationObserver | null = null;
33
+
34
+ static get observedAttributes(): string[] {
35
+ return [...GtkWindow.observedAttributes, 'show-menubar'];
36
+ }
37
+
38
+ /** `Gtk.ApplicationWindow:show-menubar` — whether the window shows a menubar of its own. */
39
+ get showMenubar(): boolean {
40
+ return this.getAttribute('show-menubar') === 'true';
41
+ }
42
+
43
+ set showMenubar(value: boolean) {
44
+ this._write('show-menubar', String(value));
45
+ }
46
+
47
+ /**
48
+ * The menubar strip, created once and reused: `strips()` and `extraSlots()` both ask for
49
+ * it, so whichever runs first builds it and the other finds it.
50
+ */
51
+ private menubarSection(): HTMLDivElement {
52
+ if (this._menubar === null) {
53
+ const section = document.createElement('div');
54
+ section.className = 'adw-gtk-application-window-menubar';
55
+ this._menubar = section;
56
+ }
57
+ return this._menubar;
58
+ }
59
+
60
+ /**
61
+ * Titlebar, then menubar, then content — the order `update_menubar` parents the bar at
62
+ * (:418) inside a window whose titlebar sits above its own child.
63
+ */
64
+ protected override strips(): Node[] {
65
+ return [this._titlebar, this.menubarSection(), this._content];
66
+ }
67
+
68
+ /** The `menubar` slot, which is where a `GtkPopoverMenuBar` goes. */
69
+ protected override extraSlots(): AdwSlot[] {
70
+ return [{ name: 'menubar', into: this.menubarSection() }];
71
+ }
72
+
73
+ connectedCallback() {
74
+ super.connectedCallback();
75
+ this._followMenubar();
76
+ }
77
+
78
+ disconnectedCallback() {
79
+ this._menubarObserver?.disconnect();
80
+ this._menubarObserver = null;
81
+ }
82
+
83
+ attributeChangedCallback(name: string) {
84
+ super.attributeChangedCallback(name);
85
+ if (name === 'show-menubar') this._renderMenubar();
86
+ }
87
+
88
+ /**
89
+ * `update_menubar`'s visibility rule (gtkapplicationwindow.c:400-402), BOTH halves: the
90
+ * property AND at least one item in the section. This element has no `GMenuModel` to ask,
91
+ * so the second half is the SLOT — an empty `menubar` slot is an empty `menubar_section`.
92
+ * The observer is what makes the second half live: `bindSlottedChildren` adopts a
93
+ * `slot="menubar"` child after connect, and a bar that appeared then must appear.
94
+ */
95
+ private _followMenubar(): void {
96
+ this._menubarObserver?.disconnect();
97
+ this._menubarObserver = new MutationObserver(() => this._renderMenubar());
98
+ this._menubarObserver.observe(this.menubarSection(), { childList: true });
99
+ this._renderMenubar();
100
+ }
101
+
102
+ private _renderMenubar(): void {
103
+ const menubar = this.menubarSection();
104
+ menubar.hidden = !this.showMenubar || menubar.childElementCount === 0;
105
+ }
106
+ }
107
+
108
+ customElements.define('gtk-application-window', GtkApplicationWindow);
@@ -0,0 +1,160 @@
1
+ // <gtk-aspect-frame> — Gtk.AspectFrame: one child, given a shape and a place inside it.
2
+ //
3
+ // `ratio` is the width over the height of the CHILD, `xalign` / `yalign` say where that box
4
+ // sits in the space left over, and `obey-child` decides which ratio wins: TRUE — the pspec
5
+ // default (gtkaspectframe.c:180-183) — takes the ratio from the child's own natural size
6
+ // and IGNORES `ratio` (get_effective_ratio, gtkaspectframe.c:525-551). That default maps
7
+ // exactly, because a box with no `aspect-ratio` IS its own natural ratio; so the TRUE case
8
+ // writes no ratio at all rather than measuring the child and writing the answer back.
9
+ //
10
+ // THE ONE DIVERGENCE, and it is about WHICH AXIS BINDS. GTK sizes the child to
11
+ // `MIN (W, ratio * H)` on the inline axis and takes the block axis from that
12
+ // (gtkaspectframe.c:566-575). A CSS box has one definite axis and one the ratio derives, and
13
+ // a max constraint on the definite axis does not re-derive the other for a non-replaced
14
+ // element — so the child here FILLS the inline axis (`flex: 1 1 auto`, the growth
15
+ // `compute_child_allocation` does whether or not the child asks to expand) and its block axis
16
+ // follows the ratio, capped by `max-height`. That is GTK's answer whenever the WIDTH runs out
17
+ // first, which is every frame wider than `ratio * its height`; where the HEIGHT is the one
18
+ // that runs out, GTK narrows the child to `ratio * height` and this port draws a full-width
19
+ // box instead. Declared because it is visible, not because it is tidy.
20
+ //
21
+ // The two alignments move the child in what is left over (`x * (W - child_w)`,
22
+ // `y * (H - child_h)`, gtkaspectframe.c:576-577), which after the axis above is the same
23
+ // narrow case GTK itself has. Between the three zones they take the house's THREE-ZONE
24
+ // mapping (adwaita-core's `labelYalignAlignItems`, which `<gtk-label>` reads for `yalign`):
25
+ // CSS has three `align-items` / `justify-content` keywords and no ratio.
26
+ //
27
+ // GTK's minimum size (gtkaspectframe.c:604-630, `MAX (min_w, ceil (min_h * ratio))`) needs
28
+ // no rule of its own: a box with an `aspect-ratio` already derives the minimum of the other
29
+ // axis from it, and CSS 2.1 §10.4 settles the other end — `min-width` wins over `max-width`,
30
+ // so a child that declares a minimum keeps it whatever cap `max-width` writes.
31
+ //
32
+ // A11Y: `role="generic"`, GtkAspectFrame's own accessible role (gtkaspectframe.c:195).
33
+ //
34
+ // Reference: refs/gtk/gtk/gtkaspectframe.c:153-195, :525-630
35
+ // Copyright (c) The GTK Team. LGPLv2.1+.
36
+ // Modifications: Implemented as a Web Component for @gjsify/adwaita-web.
37
+
38
+ import { glibClamp, labelYalignAlignItems } from '@gjsify/adwaita-core';
39
+
40
+ import { bindSlottedChildren } from '../slotted-children.js';
41
+
42
+ /** `Gtk.AspectFrame:ratio`'s pspec range and default (gtkaspectframe.c:124-125, :172-175). */
43
+ const RATIO_MIN = 0.0001;
44
+ const RATIO_MAX = 10000;
45
+ const RATIO_DEFAULT = 1.0;
46
+
47
+ /** `xalign` / `yalign` are held in 0…1 with `0.5` as their default (gtkaspectframe.c:153-163). */
48
+ const ALIGN_DEFAULT = 0.5;
49
+
50
+ function normalizeAlign(value: string | null): number {
51
+ const parsed = Number.parseFloat(value ?? '');
52
+ return Number.isFinite(parsed) ? glibClamp(parsed, 0, 1) : ALIGN_DEFAULT;
53
+ }
54
+
55
+ /** `Gtk.AspectFrame:ratio`, clamped to the pspec's range; unparseable is the default. */
56
+ function normalizeRatio(value: string | null): number {
57
+ const parsed = Number.parseFloat(value ?? '');
58
+ return Number.isFinite(parsed) ? glibClamp(parsed, RATIO_MIN, RATIO_MAX) : RATIO_DEFAULT;
59
+ }
60
+
61
+ export class GtkAspectFrame extends HTMLElement {
62
+ static get observedAttributes() {
63
+ return ['ratio', 'xalign', 'yalign', 'obey-child'];
64
+ }
65
+
66
+ /** `Gtk.AspectFrame:ratio` — the width/height of the child. Ignored under `obey-child`. */
67
+ get ratio(): number {
68
+ return normalizeRatio(this.getAttribute('ratio'));
69
+ }
70
+
71
+ set ratio(value: number) {
72
+ this.setAttribute('ratio', String(value));
73
+ }
74
+
75
+ /** `Gtk.AspectFrame:xalign` — where the child sits horizontally. `0.5` is the centre. */
76
+ get xalign(): number {
77
+ return normalizeAlign(this.getAttribute('xalign'));
78
+ }
79
+
80
+ set xalign(value: number) {
81
+ this.setAttribute('xalign', String(value));
82
+ }
83
+
84
+ /** `Gtk.AspectFrame:yalign` — where the child sits vertically. `0.5` is the centre. */
85
+ get yalign(): number {
86
+ return normalizeAlign(this.getAttribute('yalign'));
87
+ }
88
+
89
+ set yalign(value: number) {
90
+ this.setAttribute('yalign', String(value));
91
+ }
92
+
93
+ /**
94
+ * `Gtk.AspectFrame:obey-child` — TRUE (the pspec default, and therefore the ABSENCE of
95
+ * the attribute) takes the ratio from the child and ignores `ratio`. Spelled as
96
+ * `obey-child="false"` rather than as an inverted attribute, because the default is the
97
+ * affirmative one and every other boolean on every other element here means "present".
98
+ */
99
+ get obeyChild(): boolean {
100
+ const raw = this.getAttribute('obey-child');
101
+ return raw === null || (raw !== 'false' && raw !== '0');
102
+ }
103
+
104
+ set obeyChild(value: boolean) {
105
+ if (value) this.setAttribute('obey-child', 'true');
106
+ else this.setAttribute('obey-child', 'false');
107
+ }
108
+
109
+ /** `Gtk.AspectFrame:child` — the single widget the frame shapes. */
110
+ get child(): HTMLElement | null {
111
+ return (this.firstElementChild as HTMLElement | null) ?? null;
112
+ }
113
+
114
+ set child(value: HTMLElement | null) {
115
+ if (this.firstElementChild !== null) this.firstElementChild.remove();
116
+ if (value !== null) this.append(value);
117
+ // The new child needs the shape written onto it, which is all this widget does.
118
+ this._sync();
119
+ }
120
+
121
+ connectedCallback() {
122
+ bindSlottedChildren(this, [{ name: 'child', into: this }]);
123
+ this.setAttribute('role', 'generic');
124
+ this._sync();
125
+ }
126
+
127
+ attributeChangedCallback(name: string, old: string | null, value: string | null) {
128
+ this._sync();
129
+ if (!this.isConnected) return;
130
+ const next = this._normalized(name, value);
131
+ if (next === this._normalized(name, old)) return;
132
+ this.dispatchEvent(new CustomEvent(`notify::${name}`, { bubbles: true, detail: { [name]: next } }));
133
+ }
134
+
135
+ private _normalized(name: string, raw: string | null): number | boolean {
136
+ if (name === 'ratio') return normalizeRatio(raw);
137
+ if (name === 'xalign' || name === 'yalign') return normalizeAlign(raw);
138
+ return raw !== null && raw !== 'false' && raw !== '0';
139
+ }
140
+
141
+ private _sync(): void {
142
+ const child = this.child;
143
+ if (child === null) return;
144
+ const shape = child.style;
145
+ // The child's own box, written because GTK writes the allocation on the CHILD.
146
+ if (this.obeyChild) shape.removeProperty('aspect-ratio');
147
+ else shape.aspectRatio = String(this.ratio);
148
+ // `flex: 1 1 auto` is the growth `compute_child_allocation` does unconditionally:
149
+ // the child takes as much of the frame as the ratio lets it, whether or not it asks
150
+ // to expand — which is the whole point of the widget, and why the ratio rather than
151
+ // `hexpand` is what decides its size.
152
+ shape.flex = '1 1 auto';
153
+ shape.maxWidth = '100%';
154
+ shape.maxHeight = '100%';
155
+ this.style.justifyContent = labelYalignAlignItems(this.xalign);
156
+ this.style.alignItems = labelYalignAlignItems(this.yalign);
157
+ }
158
+ }
159
+
160
+ customElements.define('gtk-aspect-frame', GtkAspectFrame);
@@ -17,12 +17,16 @@
17
17
  import { buttonStyleClasses } from '@gjsify/adwaita-core';
18
18
 
19
19
  import { bindSlottedChildren } from '../slotted-children.js';
20
+ import type { DispatchedSignals } from '../signals.js';
20
21
  import { createGtkImage } from './gtk-image.js';
21
22
 
22
23
  /** The boolean attributes that select a style class; the mapping lives in the core. */
23
24
  const STYLE_ATTRIBUTES = ['flat', 'suggested', 'destructive', 'circular', 'pill'] as const;
24
25
 
25
26
  export class GtkButton extends HTMLElement {
27
+ /** The GTK signals this element dispatches, each with the DOM event it arrives as (ADR 0093). */
28
+ static readonly signals: DispatchedSignals = { clicked: 'click' };
29
+
26
30
  private _button!: HTMLButtonElement;
27
31
  private _label = '';
28
32
  private _initialized = false;
@@ -118,7 +122,15 @@ export class GtkButton extends HTMLElement {
118
122
  btn.removeAttribute('aria-label');
119
123
  }
120
124
  btn.disabled = this.hasAttribute('disabled');
125
+ this.decorate(btn);
121
126
  }
127
+
128
+ /**
129
+ * Last step of every render, after the class and the content are written. A subclass
130
+ * adds its own state to the inner button here, because `_render` resets `className` and
131
+ * anything set earlier would be gone with it.
132
+ */
133
+ protected decorate(_button: HTMLButtonElement): void {}
122
134
  }
123
135
 
124
136
  customElements.define('gtk-button', GtkButton);