@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,131 @@
1
+ // _scrolled_window.scss — <gtk-scrolled-window>: the allocation GTK's
2
+ // `gtk_scrolled_window_allocate_child` / `allocate_scrollbar` pair performs.
3
+ //
4
+ // THE PLACEMENT IS A GRID of two cells and one corner, because that is what
5
+ // `gtk_scrolled_window_allocate_scrollbar` (gtkscrolledwindow.c:3227-3305) computes: the
6
+ // content takes what is left after each bar has taken its edge, and which edge that is comes
7
+ // from two booleans the C derives from `window-placement`.
8
+ //
9
+ // · `is_top` — `window-placement` is `top-left` or `top-right` — decides whether the
10
+ // HORIZONTAL bar is on the far (bottom) row or the near (top) one.
11
+ // · `is_left = ltr != is_start` — `is_start` being the same corner's left half — decides
12
+ // whether the VERTICAL bar is on the end edge or the start one. The direction half is
13
+ // `:dir(rtl)` here rather than a class, because C reads it off the widget and CSS reads it
14
+ // off the document.
15
+ //
16
+ // The third corner cell is `junction`, the node GTK draws where two bars meet
17
+ // (gtkscrolledwindow.c:134-135); libadwaita paints nothing there, and neither does this — an
18
+ // empty grid cell is the same absence with no node to hold it.
19
+ //
20
+ // AN OVERLAY INDICATOR IS LAID OUT INSIDE THE CONTENT, not beside it. That is
21
+ // `priv->use_indicators` in the same function (gtkscrolledwindow.c:3255-3300): the bar's
22
+ // allocation starts at the content's far edge MINUS the bar's own thickness, so it lies over
23
+ // the content instead of shrinking it. Hence the second template — positioned against the
24
+ // window, which is `position: relative` here for the reason GTK's is a child of the
25
+ // scrolledwindow node.
26
+ //
27
+ // `.frame` is `GtkScrolledWindow:has-frame`, which its own CSS-node documentation spells out:
28
+ // "It gets a .frame style class added when `has-frame` is TRUE" (gtkscrolledwindow.c:122-124).
29
+ // The rule behind the class is libadwaita's `_misc.scss:4-7`, which `_style_classes.scss`
30
+ // already carries, so no selector for it is repeated here.
31
+
32
+ gtk-scrolled-window {
33
+ position: relative;
34
+ display: grid;
35
+ // GTK asks its parent for as little as it can: `gtk_scrolled_window_measure` reports the
36
+ // child's minimum only under `POLICY_NEVER` (gtkscrolledwindow.c:1846-1895) and the bars'
37
+ // own thickness otherwise. `minmax(0, 1fr)` is that request — a track that may collapse to
38
+ // nothing rather than one that demands its content's height, which is what
39
+ // `gtk_widget_set_size_request` lets an author override afterwards.
40
+ grid-template-columns: minmax(0, 1fr) auto;
41
+ grid-template-rows: minmax(0, 1fr) auto;
42
+ min-width: 0;
43
+ min-height: 0;
44
+ // GTK GIVES THIS WIDGET AN ALLOCATION from its parent and never decides its own size:
45
+ // `gtk_scrolled_window_measure` reports the child's MINIMUM and the bars' own thickness
46
+ // (gtkscrolledwindow.c:1846-1895), and `size_allocate` fills whatever it is
47
+ // given. A browser scrolled window needs the same from its author — a height, a
48
+ // `flex-basis`, a parent track — because an auto-height box grows with its content and then
49
+ // has nothing to scroll. `flex: 1 1 0%` is that allocation for the ordinary case of a
50
+ // window in a column, and it is 0 in an auto-height column, so an author who wants the
51
+ // natural size writes one.
52
+ flex: 1 1 0%;
53
+ overflow: hidden;
54
+
55
+ > gtk-viewport {
56
+ grid-area: 1 / 1;
57
+ }
58
+
59
+ // The vertical bar spans BOTH rows, which is `gtk_widget_size_allocate` giving it the
60
+ // whole content height (gtkscrolledwindow.c:3295-3305) minus whatever the horizontal bar
61
+ // takes when that one is a layout neighbour rather than an overlay.
62
+ > gtk-scrollbar.vertical {
63
+ grid-row: 1 / 3;
64
+ grid-column: 2;
65
+ justify-self: end;
66
+ }
67
+
68
+ > gtk-scrollbar.horizontal {
69
+ grid-column: 1 / 3;
70
+ grid-row: 2;
71
+ align-self: end;
72
+ }
73
+
74
+ // `is_top` false: the horizontal bar takes the NEAR row, and the content is what is left.
75
+ &.bottom-left,
76
+ &.bottom-right {
77
+ grid-template-rows: auto minmax(0, 1fr);
78
+
79
+ > gtk-scrollbar.horizontal {
80
+ grid-row: 1;
81
+ align-self: start;
82
+ }
83
+ }
84
+
85
+ // `is_left` true: the vertical bar takes the START column.
86
+ &.top-right,
87
+ &.bottom-right {
88
+ grid-template-columns: auto minmax(0, 1fr);
89
+
90
+ > gtk-scrollbar.vertical {
91
+ grid-column: 1;
92
+ justify-self: start;
93
+ }
94
+ }
95
+
96
+ // The direction half of `is_left = ltr != is_start`: everything the C inverts under RTL.
97
+ &:dir(rtl) {
98
+ grid-template-columns: auto minmax(0, 1fr);
99
+
100
+ > gtk-scrollbar.vertical {
101
+ grid-column: 1;
102
+ justify-self: start;
103
+ }
104
+
105
+ &.top-right,
106
+ &.bottom-right {
107
+ grid-template-columns: minmax(0, 1fr) auto;
108
+
109
+ > gtk-scrollbar.vertical {
110
+ grid-column: 2;
111
+ justify-self: end;
112
+ }
113
+ }
114
+ }
115
+
116
+ // The overlay case, which is the whole of what `use_indicators` changes in the allocation:
117
+ // both bars leave the grid and lie over the content.
118
+ &.overlay-scrolling > gtk-scrollbar.overlay-indicator {
119
+ position: absolute;
120
+
121
+ &.vertical {
122
+ inset-block: 0;
123
+ right: 0;
124
+ }
125
+
126
+ &.horizontal {
127
+ inset-inline: 0;
128
+ bottom: 0;
129
+ }
130
+ }
131
+ }
@@ -0,0 +1,118 @@
1
+ // _search_bar.scss — `<gtk-search-bar>`, the strip that reveals a search entry.
2
+ //
3
+ // The whole of libadwaita's rule is `searchbar > revealer > box` plus a `.close` button
4
+ // (_toolbars.scss:113-159): the box is a HEADER BAR surface — the same `--headerbar-bg-color`
5
+ // pair and the same 1px shade along its bottom edge as `adw-header-bar` draws
6
+ // (`_header-bar.scss`) — and the strip sits at the bottom of a window, so that edge is the
7
+ // one that separates it from the content.
8
+ //
9
+ // THE REVEALER IS THE STATE. `search-mode-enabled` IS `reveal-child` (gtksearchbar.c:183-205,
10
+ // 512-517), so the strip animates its own height and the element drives nothing else. One
11
+ // grid row that goes `0fr` → `1fr` is the one CSS mechanism that animates to a height the
12
+ // CONTENT decides; `max-height` would be a guess at that height, and `display: none` would
13
+ // not animate at all.
14
+ //
15
+ // TWO RULES ARE DELIBERATELY ABSENT. `:backdrop` — the dimmed variant libadwaita draws when
16
+ // the window is unfocused (_toolbars.scss:125-133) — has no state here: this port has no
17
+ // toplevel whose focus it could follow. And `%toolbar`'s reset rules (_toolbars.scss:5-66)
18
+ // only classify the BUTTON classes inside a toolbar, which `<gtk-button>` already owns
19
+ // (`_button.scss`).
20
+ //
21
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_toolbars.scss:109-185 (searchbar)
22
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
23
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
24
+
25
+ gtk-search-bar {
26
+ display: grid;
27
+ // THE REVEALER (`reveal-child`). `0fr` clips the box to nothing without taking it out of
28
+ // the layout, which is what a GTK revealer does; `1fr` gives the box its own height.
29
+ grid-template-rows: 0fr;
30
+ transition: grid-template-rows 200ms ease;
31
+
32
+ &.revealed {
33
+ grid-template-rows: 1fr;
34
+ }
35
+
36
+ @media (prefers-reduced-motion: reduce) {
37
+ transition: none;
38
+ }
39
+
40
+ .adw-search-bar-box {
41
+ // The clip the `0fr` row needs, and the header-bar surface libadwaita puts on it
42
+ // (_toolbars.scss:115-122).
43
+ overflow: hidden;
44
+ min-height: 0;
45
+ display: flex;
46
+ align-items: center;
47
+ gap: 6px;
48
+ padding: 6px 6px 7px 6px;
49
+ background-color: var(--headerbar-bg-color);
50
+ color: var(--headerbar-fg-color);
51
+ box-shadow: inset 0 -1px var(--headerbar-shade-color);
52
+
53
+ @media (prefers-contrast: more) {
54
+ box-shadow: inset 0 -1px var(--separator-color);
55
+ }
56
+ }
57
+
58
+ // The `GtkCenterBox` the C wraps the child in (gtksearchbar.c:378-386): the entry takes
59
+ // the free space, the close button sits at its end.
60
+ .adw-search-bar-center {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 6px;
64
+ flex: 1 1 auto;
65
+ min-width: 0;
66
+ }
67
+
68
+ // `button.close` (_toolbars.scss:137-153): a 18px round flat button, with the 10px/4px
69
+ // ltr margins upstream writes and the 4px/10px rtl mirror.
70
+ .adw-search-bar-close {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ min-width: 18px;
75
+ min-height: 18px;
76
+ margin-left: 10px;
77
+ margin-right: 4px;
78
+ padding: 4px;
79
+ border: none;
80
+ border-radius: 50%;
81
+ background-color: transparent;
82
+ color: inherit;
83
+ cursor: pointer;
84
+ transition: background-color 150ms ease-in-out;
85
+
86
+ &:hover {
87
+ background-color: var(--button-hover-color);
88
+ }
89
+
90
+ &:active {
91
+ background-color: var(--button-active-color);
92
+ }
93
+
94
+ &:focus-visible {
95
+ outline: 2px solid var(--accent-color);
96
+ outline-offset: 1px;
97
+ }
98
+
99
+ &[hidden] {
100
+ display: none;
101
+ }
102
+ }
103
+
104
+ // `&:dir(rtl)` (_toolbars.scss:150-153) — the margins swap sides, not the order.
105
+ &:dir(rtl) .adw-search-bar-close {
106
+ margin-left: 4px;
107
+ margin-right: 10px;
108
+ }
109
+
110
+ // `searchbar.inline` (_toolbars.scss:156-158) drops the header-bar surface, which is what
111
+ // an author adds when the strip sits inside a page rather than at a window's edge.
112
+ &.inline .adw-search-bar-box {
113
+ background-color: transparent;
114
+ color: inherit;
115
+ box-shadow: none;
116
+ padding-bottom: 6px;
117
+ }
118
+ }
@@ -0,0 +1,86 @@
1
+ // _search_entry.scss — <gtk-search-entry>: the same `entry` box with a magnifying glass
2
+ // leading and a clear button trailing.
3
+ //
4
+ // libadwaita has no `entry.search` rule at all: `Gtk.SearchEntry`'s CSS node is `entry`
5
+ // carrying the `.search` STYLE CLASS (gtksearchentry.c:884), and every rule that reaches it
6
+ // is one `_entries.scss` already states for `entry` (:1-96) — the box, the focus ring, the
7
+ // icons at 70%, and their `&.right { margin-left: 6px }`. So this partial is those same
8
+ // rules applied to the two extra nodes this widget has, and it deliberately adds nothing of
9
+ // its own: a rule that could select `entry.search` but does not is a rule that rots, which
10
+ // is the reasoning `_progress_bar.scss` records for `progressbar.vertical`.
11
+ //
12
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_entries.scss:1-96
13
+ // Reference: refs/gtk/gtk/gtksearchentry.c:884 (the `.search` style class, and the CSS node name `entry`)
14
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
15
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
16
+
17
+ gtk-search-entry {
18
+ display: flex;
19
+ flex: 1;
20
+ min-width: 0;
21
+ align-items: center;
22
+ box-sizing: border-box;
23
+ min-height: 34px;
24
+ padding: 0 9px;
25
+ border-radius: var(--button-radius);
26
+ background-color: var(--button-bg-color);
27
+ background-clip: padding-box;
28
+ caret-color: currentColor;
29
+
30
+ @media (prefers-contrast: more) {
31
+ box-shadow: inset 0 0 0 1px var(--border-color);
32
+ }
33
+
34
+ // `@include focus-ring($focus-state: ':focus-within')` (_entries.scss:17). The host is the
35
+ // focusable node here rather than a wrapping box, so it is the host's own focus that
36
+ // paints the ring — which is the same ring `:focus-within` draws, one node further out.
37
+ &:focus-within {
38
+ outline: 2px solid var(--accent-color);
39
+ outline-offset: -2px;
40
+ }
41
+
42
+ .adw-entry {
43
+ flex: 1;
44
+ min-width: 0;
45
+ min-height: auto;
46
+ padding: 0 6px;
47
+ background-color: transparent;
48
+ box-shadow: none;
49
+
50
+ &:focus,
51
+ &:focus-visible {
52
+ box-shadow: none;
53
+ }
54
+ }
55
+
56
+ // `> image { opacity: 70%; &.left { margin-right: 6px } }` (_entries.scss:42-61)
57
+ .adw-search-entry-icon {
58
+ flex: none;
59
+ margin-right: 6px;
60
+ opacity: 70%;
61
+ color: inherit;
62
+
63
+ @media (prefers-contrast: more) {
64
+ opacity: 85%;
65
+ }
66
+ }
67
+
68
+ .adw-search-entry-clear {
69
+ flex: none;
70
+ margin-left: 6px;
71
+ opacity: 70%;
72
+ color: inherit;
73
+
74
+ @media (prefers-contrast: more) {
75
+ opacity: 85%;
76
+ }
77
+
78
+ &:hover {
79
+ opacity: 100%;
80
+ }
81
+
82
+ &:active {
83
+ opacity: 80%;
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,44 @@
1
+ // _separator.scss — <gtk-separator>: a one-pixel rule, and the `.spacer` variant that draws
2
+ // nothing and only keeps its distance.
3
+ //
4
+ // libadwaita's whole rule is `separator { background: $border_color; min-width: 1px;
5
+ // min-height: 1px }` plus `.spacer` (_misc.scss:21-31). GTK gives the widget its extent from
6
+ // the orientation: a horizontal separator is 1px tall and as wide as it is given, a vertical
7
+ // one the reverse. A flex or block parent hands that width through `align-self: stretch`,
8
+ // which is why the cross-axis size is `auto` rather than a number.
9
+ //
10
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_misc.scss:21-31
11
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
12
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
13
+
14
+ gtk-separator {
15
+ display: block;
16
+ flex: none;
17
+ align-self: stretch;
18
+ background: var(--border-color);
19
+ min-width: 1px;
20
+ min-height: 1px;
21
+
22
+ &.horizontal {
23
+ height: 1px;
24
+ }
25
+
26
+ &.vertical {
27
+ width: 1px;
28
+ }
29
+
30
+ &.spacer {
31
+ background: none;
32
+
33
+ &.horizontal {
34
+ min-width: 12px;
35
+ }
36
+
37
+ // The generic `.spacer` in `_style_classes.scss` also floors the WIDTH at 12px for an
38
+ // element with no orientation; a vertical separator's width is its 1px, so say so.
39
+ &.vertical {
40
+ min-width: 1px;
41
+ min-height: 12px;
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,100 @@
1
+ // _shortcuts_dialog.scss — the shortcuts dialog: sections of shortcut rows, and the
2
+ // rows themselves.
3
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_shortcuts-dialog.scss (16-27 the
4
+ // `.shortcut-row` padding and the `.title-box` subtitle; 1-14 the spacing between the
5
+ // groups inside the dialog's page)
6
+ // Copyright (c) 2025 GNOME Foundation Inc. (libadwaita). LGPLv2.1+
7
+ // Modifications: Implemented for @gjsify/adwaita-web Web Components.
8
+
9
+ // The class list libadwaita gives the dialog itself is `dialog.shortcuts`, and the
10
+ // stylesheet reaches through it into a preferences page. Here the sections are the
11
+ // dialog's children in the base's own content area, so the element is the same hook
12
+ // in one selector — and the CONTENT AREA is the box the stylesheet spaces out
13
+ // (`border-spacing: 18px` there, which is a `GtkBox` doing what a gap does).
14
+ adw-shortcuts-dialog .adw-dialog-content {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: 18px;
18
+ }
19
+
20
+ adw-shortcuts-dialog adw-shortcuts-section {
21
+ flex: 0 0 auto;
22
+ }
23
+
24
+ adw-shortcuts-section {
25
+ display: flex;
26
+ flex-direction: column;
27
+ gap: 6px;
28
+ }
29
+
30
+ .adw-shortcuts-section-title {
31
+ font-weight: 700;
32
+
33
+ &[hidden] {
34
+ display: none;
35
+ }
36
+ }
37
+
38
+ .adw-shortcuts-section-body {
39
+ display: flex;
40
+ flex-direction: column;
41
+ // The boxed-list surface the sections read as — a card with a hairline, exactly the
42
+ // one `adw-preferences-group` draws and the one `_shortcuts-dialog.scss` inherits.
43
+ border: 1px solid var(--card-shade-color);
44
+ border-radius: var(--card-radius);
45
+ background-color: var(--card-bg-color);
46
+ color: var(--card-fg-color);
47
+ overflow: hidden;
48
+ }
49
+
50
+ adw-shortcuts-item {
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: space-between;
54
+ gap: var(--spacing-m);
55
+ // `.shortcut-row { padding: 9px 12px; min-height: 36px }` (_shortcuts-dialog.scss:16-19)
56
+ padding: 9px 12px;
57
+ min-height: 36px;
58
+
59
+ &[hidden] {
60
+ display: none;
61
+ }
62
+
63
+ &:not(:first-child) {
64
+ border-top: 1px solid var(--card-shade-color);
65
+ }
66
+
67
+ + adw-shortcuts-item {
68
+ border-top: 1px solid var(--card-shade-color);
69
+ }
70
+ }
71
+
72
+ // `.title-box { border-spacing: 3px }` with the subtitle under the title: the source
73
+ // is a vertical box, so the title and the subtitle stack and the subtitle is dimmed
74
+ // and caption-sized (`@extend .caption; @extend .dimmed`).
75
+ .adw-shortcuts-item-title,
76
+ .adw-shortcuts-item-subtitle {
77
+ flex: 0 1 auto;
78
+ min-width: 0;
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .adw-shortcuts-item-subtitle {
85
+ font-size: var(--font-size-small);
86
+ opacity: var(--dim-opacity);
87
+ margin-top: 3px;
88
+
89
+ &[hidden] {
90
+ display: none;
91
+ }
92
+ }
93
+
94
+ .adw-shortcuts-item-label {
95
+ flex: 0 0 auto;
96
+
97
+ &[hidden] {
98
+ display: none;
99
+ }
100
+ }
@@ -0,0 +1,172 @@
1
+ // _spin_button.scss — <gtk-spin-button>: an entry-shaped box with a decrement and an
2
+ // increment arrow inside it.
3
+ //
4
+ // libadwaita merges this into `_entries.scss`'s shape: `spinbutton { @extend %entry }`
5
+ // (:1-2), so the OUTER box is an entry — `min-height: 34px`, the 9px horizontal padding,
6
+ // `$button_radius` and `$button_color` — and only the two ARROWS are styled here. That is
7
+ // why the partial below adds no background of its own and why the arrows are `.image-button`
8
+ // with `border-radius: 0` and a hairline of their own.
9
+ //
10
+ // THE CHILD ORDER THE `&:last-child` / `&:first-child` RULES BELOW DEPEND ON is
11
+ // `Gtk.SpinButton`'s, not the one a spinner usually draws: C parents its children as text,
12
+ // down, up (gtkspinbutton.c:1091-1126) and the box layout lays them out in that order, so
13
+ // the horizontal widget reads `text ▼ ▲` and the vertical one `▲ text ▼`. The element
14
+ // re-parents on an orientation change exactly as `gtk_spin_button_set_orientation` does
15
+ // (gtkspinbutton.c:1290-1299), so the selectors below select what they select on a desktop:
16
+ // the up arrow hugs the rounded end, whichever end that is.
17
+ //
18
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_spin-button.scss:1-76
19
+ // Reference: refs/libadwaita/src/stylesheet/widgets/_entries.scss:1-19 (%entry)
20
+ // Copyright (c) GNOME contributors (libadwaita). LGPLv2.1+.
21
+ // Modifications: Adapted for @gjsify/adwaita-web Web Components.
22
+
23
+ // `> text { @extend .dimmed; > placeholder { @extend .dimmed } }` is the entry's own rule
24
+ // (_entries.scss:19-28) and this package states it on `.adw-entry` instead; the placeholder
25
+ // colour is the browser's.
26
+ @use 'labels';
27
+
28
+ gtk-spin-button {
29
+ // `spinbutton { @extend %entry; @extend .numeric; }` (:1-3), taken apart: this package's
30
+ // `_entry.scss` writes the entry shape as the `.adw-entry` CLASS on an `<input>` rather
31
+ // than as a placeholder every node can extend, so the eight declarations `%entry`
32
+ // contributes are written out here and `.numeric` is @extended on the text instead.
33
+ display: flex;
34
+ flex: 1;
35
+ min-width: 0;
36
+ align-items: center;
37
+ box-sizing: border-box;
38
+ min-height: 34px;
39
+ padding: 0 9px;
40
+ border-radius: var(--button-radius);
41
+ background-color: var(--button-bg-color);
42
+ background-clip: padding-box;
43
+ caret-color: currentColor;
44
+
45
+ @media (prefers-contrast: more) {
46
+ box-shadow: inset 0 0 0 1px var(--border-color);
47
+ }
48
+
49
+ // `&:disabled { filter: Opacity(var(--disabled-opacity)) }` (_entries.scss:40)
50
+ &[disabled] {
51
+ opacity: var(--disabled-opacity);
52
+ }
53
+
54
+ // The numeric text. `.numeric` is `spinbutton`'s own `@extend .numeric` (:3).
55
+ .adw-spin-button-text {
56
+ @extend .numeric;
57
+
58
+ flex: 1;
59
+ box-sizing: border-box;
60
+ min-width: 0;
61
+ padding: 6px;
62
+ border: none;
63
+ outline: none;
64
+ background: none;
65
+ color: inherit;
66
+ font-family: var(--font-family);
67
+ font-size: var(--font-size-base);
68
+ text-align: start;
69
+
70
+ &:focus-visible {
71
+ outline: none;
72
+ }
73
+
74
+ &::placeholder {
75
+ @extend .dimmed;
76
+ }
77
+ }
78
+
79
+ // `> button.image-button.up` and `.down` (:9-24) — `:not` there upstream only to outrank
80
+ // the list button styling, which has no counterpart here; the flat treatment does.
81
+ .image-button {
82
+ display: inline-flex;
83
+ flex: none;
84
+ align-items: center;
85
+ justify-content: center;
86
+ margin: 0;
87
+ padding: 4px;
88
+ border: none;
89
+ border-radius: 0;
90
+ background-color: transparent;
91
+ color: inherit;
92
+ box-shadow: none;
93
+ border-style: solid;
94
+ border-width: 0;
95
+ border-color: color-mix(in srgb, currentColor 10%, transparent);
96
+
97
+ @media (prefers-contrast: more) {
98
+ border-color: color-mix(in srgb, currentColor 50%, transparent);
99
+ }
100
+
101
+ &:hover {
102
+ background-color: var(--button-hover-color);
103
+ }
104
+
105
+ &:active {
106
+ background-color: var(--button-active-color);
107
+ }
108
+
109
+ // `update_buttons_sensitivity` (gtkspinbutton.c:1214-1226) disables an arrow that has
110
+ // no room to move, and a disabled button has to LOOK it: libadwaita's `&:disabled`
111
+ // dimming is on the widget, which is here.
112
+ &:disabled {
113
+ opacity: var(--disabled-opacity);
114
+ cursor: default;
115
+ }
116
+ }
117
+
118
+ &:not(.vertical) {
119
+ .adw-spin-button-text {
120
+ min-width: 28px;
121
+ }
122
+
123
+ .image-button {
124
+ min-height: 16px;
125
+ min-width: 22px;
126
+ padding-top: 0;
127
+ padding-bottom: 0;
128
+ border-left-width: 1px;
129
+
130
+ &:dir(rtl) {
131
+ border-left-width: 0;
132
+ border-right-width: 1px;
133
+ }
134
+
135
+ // The up arrow is the LAST child in a horizontal box (see the file header), so it is
136
+ // the one that carries the rounded right end — and `:dir(rtl)` mirrors it.
137
+ &:dir(ltr):last-child {
138
+ border-radius: 0 var(--button-radius) var(--button-radius) 0;
139
+ }
140
+
141
+ &:dir(rtl):last-child {
142
+ border-radius: var(--button-radius) 0 0 var(--button-radius);
143
+ }
144
+ }
145
+ }
146
+
147
+ &.vertical {
148
+ flex-direction: column;
149
+ padding: 9px 0;
150
+
151
+ .adw-spin-button-text {
152
+ min-height: 30px;
153
+ min-width: 30px;
154
+ padding: 0;
155
+ text-align: center;
156
+ }
157
+
158
+ // The up arrow is FIRST here and the down arrow LAST, so the two rules land on the two
159
+ // ends the way they do vertically on a desktop.
160
+ .image-button {
161
+ &:first-child {
162
+ border-bottom-width: 1px;
163
+ border-radius: var(--button-radius) var(--button-radius) 0 0;
164
+ }
165
+
166
+ &:last-child {
167
+ border-top-width: 1px;
168
+ border-radius: 0 0 var(--button-radius) var(--button-radius);
169
+ }
170
+ }
171
+ }
172
+ }