@gjsify/adwaita-web 0.64.2-next.252 → 0.64.2-next.255

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 (293) hide show
  1. package/README.md +10 -80
  2. package/dist/adwaita-web.css +52 -3
  3. package/dist/adwaita-web.css.map +1 -1
  4. package/lib/types/accessible.d.ts +8 -0
  5. package/lib/types/compute-expand.d.ts +5 -0
  6. package/lib/types/compute-expand.spec.d.ts +1 -0
  7. package/lib/types/elements/adw-about-dialog.d.ts +28 -1
  8. package/lib/types/elements/adw-action-row.d.ts +2 -1
  9. package/lib/types/elements/adw-alert-dialog.d.ts +3 -2
  10. package/lib/types/elements/adw-avatar.d.ts +2 -1
  11. package/lib/types/elements/adw-banner.d.ts +2 -1
  12. package/lib/types/elements/adw-bin.d.ts +2 -1
  13. package/lib/types/elements/adw-bottom-sheet.d.ts +5 -4
  14. package/lib/types/elements/adw-breakpoint-bin.d.ts +2 -1
  15. package/lib/types/elements/adw-button-content.d.ts +2 -1
  16. package/lib/types/elements/adw-button-row.d.ts +2 -1
  17. package/lib/types/elements/adw-card.d.ts +2 -1
  18. package/lib/types/elements/adw-carousel.d.ts +20 -3
  19. package/lib/types/elements/adw-clamp-scrollable.d.ts +2 -1
  20. package/lib/types/elements/adw-clamp.d.ts +2 -1
  21. package/lib/types/elements/adw-combo-row.d.ts +6 -1
  22. package/lib/types/elements/adw-data-grid.d.ts +2 -1
  23. package/lib/types/elements/adw-dialog.d.ts +2 -1
  24. package/lib/types/elements/adw-entry-row.d.ts +2 -1
  25. package/lib/types/elements/adw-expander-row.d.ts +2 -1
  26. package/lib/types/elements/adw-header-bar.d.ts +2 -1
  27. package/lib/types/elements/adw-inline-view-switcher.d.ts +3 -2
  28. package/lib/types/elements/adw-layout-slot.d.ts +2 -1
  29. package/lib/types/elements/adw-multi-layout-view.d.ts +2 -1
  30. package/lib/types/elements/adw-navigation-split-view.d.ts +2 -1
  31. package/lib/types/elements/adw-navigation-view.d.ts +3 -2
  32. package/lib/types/elements/adw-overlay-split-view.d.ts +2 -1
  33. package/lib/types/elements/adw-preferences-dialog.d.ts +5 -4
  34. package/lib/types/elements/adw-preferences-group.d.ts +2 -1
  35. package/lib/types/elements/adw-preferences-row.d.ts +2 -1
  36. package/lib/types/elements/adw-shortcut-label.d.ts +2 -1
  37. package/lib/types/elements/adw-shortcuts-item.d.ts +2 -1
  38. package/lib/types/elements/adw-shortcuts-section.d.ts +2 -1
  39. package/lib/types/elements/adw-sidebar.d.ts +4 -3
  40. package/lib/types/elements/adw-spin-row.d.ts +2 -1
  41. package/lib/types/elements/adw-spinner.d.ts +2 -1
  42. package/lib/types/elements/adw-split-button.d.ts +2 -1
  43. package/lib/types/elements/adw-status-page.d.ts +2 -1
  44. package/lib/types/elements/adw-switch-row.d.ts +4 -1
  45. package/lib/types/elements/adw-tab-bar.d.ts +2 -1
  46. package/lib/types/elements/adw-tab-button.d.ts +2 -1
  47. package/lib/types/elements/adw-tab-overview.d.ts +2 -1
  48. package/lib/types/elements/adw-tab-view.d.ts +3 -2
  49. package/lib/types/elements/adw-toast-overlay.d.ts +2 -1
  50. package/lib/types/elements/adw-toggle-group.d.ts +3 -2
  51. package/lib/types/elements/adw-toolbar-view.d.ts +2 -1
  52. package/lib/types/elements/adw-view-stack.d.ts +3 -1
  53. package/lib/types/elements/adw-view-switcher-bar.d.ts +2 -1
  54. package/lib/types/elements/adw-view-switcher-sidebar.d.ts +2 -1
  55. package/lib/types/elements/adw-view-switcher.d.ts +3 -2
  56. package/lib/types/elements/adw-window-title.d.ts +2 -1
  57. package/lib/types/elements/adw-wrap-box.d.ts +2 -1
  58. package/lib/types/elements/checks.d.ts +16 -1
  59. package/lib/types/elements/gtk-action-bar.d.ts +2 -1
  60. package/lib/types/elements/gtk-aspect-frame.d.ts +2 -1
  61. package/lib/types/elements/gtk-box.d.ts +5 -1
  62. package/lib/types/elements/gtk-button.d.ts +5 -7
  63. package/lib/types/elements/gtk-calendar.d.ts +2 -1
  64. package/lib/types/elements/gtk-center-box.d.ts +2 -1
  65. package/lib/types/elements/gtk-color-dialog-button.d.ts +2 -1
  66. package/lib/types/elements/gtk-drag-icon.d.ts +2 -1
  67. package/lib/types/elements/gtk-drawing-area.d.ts +2 -1
  68. package/lib/types/elements/gtk-drop-down.d.ts +2 -1
  69. package/lib/types/elements/gtk-editable-label.d.ts +2 -1
  70. package/lib/types/elements/gtk-entry.d.ts +2 -1
  71. package/lib/types/elements/gtk-expander.d.ts +2 -1
  72. package/lib/types/elements/gtk-fixed.d.ts +2 -1
  73. package/lib/types/elements/gtk-flow-box-child.d.ts +2 -1
  74. package/lib/types/elements/gtk-flow-box.d.ts +2 -1
  75. package/lib/types/elements/gtk-font-dialog-button.d.ts +2 -1
  76. package/lib/types/elements/gtk-frame.d.ts +2 -1
  77. package/lib/types/elements/gtk-gl-area.d.ts +2 -1
  78. package/lib/types/elements/gtk-graphics-offload.d.ts +2 -1
  79. package/lib/types/elements/gtk-grid.d.ts +2 -1
  80. package/lib/types/elements/gtk-header-bar.d.ts +2 -1
  81. package/lib/types/elements/gtk-image.d.ts +5 -6
  82. package/lib/types/elements/gtk-inscription.d.ts +2 -1
  83. package/lib/types/elements/gtk-label.d.ts +10 -3
  84. package/lib/types/elements/gtk-level-bar.d.ts +2 -1
  85. package/lib/types/elements/gtk-list-box-row.d.ts +2 -1
  86. package/lib/types/elements/gtk-list-box.d.ts +2 -1
  87. package/lib/types/elements/gtk-list-view.d.ts +2 -1
  88. package/lib/types/elements/gtk-media-controls.d.ts +2 -1
  89. package/lib/types/elements/gtk-menu-button.d.ts +2 -1
  90. package/lib/types/elements/gtk-notebook.d.ts +2 -1
  91. package/lib/types/elements/gtk-overlay.d.ts +2 -1
  92. package/lib/types/elements/gtk-paned.d.ts +2 -1
  93. package/lib/types/elements/gtk-picture.d.ts +2 -1
  94. package/lib/types/elements/gtk-popover-bin.d.ts +2 -1
  95. package/lib/types/elements/gtk-popover-menu-bar.d.ts +2 -1
  96. package/lib/types/elements/gtk-popover.d.ts +2 -1
  97. package/lib/types/elements/gtk-progress-bar.d.ts +2 -1
  98. package/lib/types/elements/gtk-revealer.d.ts +2 -1
  99. package/lib/types/elements/gtk-scale-button.d.ts +2 -1
  100. package/lib/types/elements/gtk-scale.d.ts +2 -1
  101. package/lib/types/elements/gtk-scrollbar.d.ts +2 -1
  102. package/lib/types/elements/gtk-scrolled-window.d.ts +2 -1
  103. package/lib/types/elements/gtk-search-bar.d.ts +2 -1
  104. package/lib/types/elements/gtk-separator.d.ts +2 -1
  105. package/lib/types/elements/gtk-spin-button.d.ts +2 -1
  106. package/lib/types/elements/gtk-spinner.d.ts +2 -1
  107. package/lib/types/elements/gtk-stack-page.d.ts +2 -1
  108. package/lib/types/elements/gtk-stack-sidebar.d.ts +2 -1
  109. package/lib/types/elements/gtk-stack-switcher.d.ts +2 -1
  110. package/lib/types/elements/gtk-stack.d.ts +2 -1
  111. package/lib/types/elements/gtk-switch.d.ts +2 -1
  112. package/lib/types/elements/gtk-text-view.d.ts +2 -1
  113. package/lib/types/elements/gtk-text.d.ts +2 -1
  114. package/lib/types/elements/gtk-tree-expander.d.ts +2 -1
  115. package/lib/types/elements/gtk-video.d.ts +2 -1
  116. package/lib/types/elements/gtk-viewport.d.ts +2 -1
  117. package/lib/types/elements/gtk-window-controls.d.ts +2 -1
  118. package/lib/types/elements/gtk-window-handle.d.ts +2 -1
  119. package/lib/types/elements/gtk-window.d.ts +2 -1
  120. package/lib/types/gobject-elements.d.ts +7 -1
  121. package/lib/types/gtksource/gtk-source-view.d.ts +2 -1
  122. package/lib/types/{icon-registry.spec.d.ts → icon-masks.spec.d.ts} +1 -1
  123. package/lib/types/icon-theme.d.ts +15 -35
  124. package/lib/types/index.d.ts +1 -2
  125. package/lib/types/namespace/gdk.d.ts +1 -0
  126. package/lib/types/namespace/gio.d.ts +1 -0
  127. package/lib/types/namespace/glib.d.ts +2 -1
  128. package/lib/types/signals.d.ts +5 -1
  129. package/lib/types/source-view/adw-source-view.d.ts +2 -1
  130. package/lib/types/styles.generated.d.ts +1 -1
  131. package/lib/types/widget-element.d.ts +25 -0
  132. package/lib/types/widget-map.spec.d.ts +1 -0
  133. package/lib/types/widget-mapping.d.ts +7 -0
  134. package/package.json +12 -12
  135. package/scss/_about_dialog.scss +46 -1
  136. package/scss/_checks.scss +5 -2
  137. package/scss/_icon.scss +3 -4
  138. package/scss/_labels.scss +2 -2
  139. package/scss/_overlay_split_view.scss +10 -0
  140. package/scss/_scrolled_window.scss +15 -0
  141. package/scss/_widget.scss +5 -1
  142. package/src/accessible.ts +29 -0
  143. package/src/adw-about-dialog.spec.ts +81 -12
  144. package/src/adw-action-rows.spec.ts +2 -2
  145. package/src/adw-button-content.spec.ts +1 -1
  146. package/src/adw-carousel.spec.ts +49 -1
  147. package/src/capabilities.mjs +1 -0
  148. package/src/checks.spec.ts +51 -1
  149. package/src/compute-expand.spec.ts +186 -0
  150. package/src/compute-expand.ts +134 -0
  151. package/src/construct-vectors.spec.ts +46 -1
  152. package/src/elements/adw-about-dialog.ts +152 -9
  153. package/src/elements/adw-action-row.ts +2 -1
  154. package/src/elements/adw-alert-dialog.ts +3 -2
  155. package/src/elements/adw-avatar.ts +2 -1
  156. package/src/elements/adw-banner.ts +2 -1
  157. package/src/elements/adw-bin.ts +2 -1
  158. package/src/elements/adw-bottom-sheet.ts +5 -4
  159. package/src/elements/adw-breakpoint-bin.ts +2 -1
  160. package/src/elements/adw-button-content.ts +2 -1
  161. package/src/elements/adw-button-row.ts +2 -1
  162. package/src/elements/adw-card.ts +2 -1
  163. package/src/elements/adw-carousel.ts +62 -3
  164. package/src/elements/adw-clamp-scrollable.ts +2 -1
  165. package/src/elements/adw-clamp.ts +2 -1
  166. package/src/elements/adw-combo-row.ts +15 -1
  167. package/src/elements/adw-data-grid.ts +2 -1
  168. package/src/elements/adw-dialog.ts +2 -1
  169. package/src/elements/adw-entry-row.ts +2 -1
  170. package/src/elements/adw-expander-row.ts +2 -1
  171. package/src/elements/adw-header-bar.ts +2 -1
  172. package/src/elements/adw-inline-view-switcher.ts +3 -2
  173. package/src/elements/adw-layout-slot.ts +2 -1
  174. package/src/elements/adw-multi-layout-view.ts +2 -1
  175. package/src/elements/adw-navigation-split-view.ts +2 -1
  176. package/src/elements/adw-navigation-view.ts +3 -2
  177. package/src/elements/adw-overlay-split-view.ts +2 -1
  178. package/src/elements/adw-preferences-dialog.ts +6 -4
  179. package/src/elements/adw-preferences-group.ts +2 -1
  180. package/src/elements/adw-preferences-row.ts +2 -1
  181. package/src/elements/adw-shortcut-label.ts +2 -1
  182. package/src/elements/adw-shortcuts-item.ts +2 -1
  183. package/src/elements/adw-shortcuts-section.ts +2 -1
  184. package/src/elements/adw-sidebar.ts +4 -3
  185. package/src/elements/adw-spin-row.ts +2 -1
  186. package/src/elements/adw-spinner.ts +2 -1
  187. package/src/elements/adw-split-button.ts +2 -1
  188. package/src/elements/adw-status-page.ts +2 -1
  189. package/src/elements/adw-switch-row.ts +10 -1
  190. package/src/elements/adw-tab-bar.ts +2 -1
  191. package/src/elements/adw-tab-button.ts +2 -1
  192. package/src/elements/adw-tab-overview.ts +2 -1
  193. package/src/elements/adw-tab-view.ts +3 -2
  194. package/src/elements/adw-toast-overlay.ts +2 -1
  195. package/src/elements/adw-toggle-group.ts +3 -2
  196. package/src/elements/adw-toolbar-view.ts +2 -1
  197. package/src/elements/adw-view-stack.ts +39 -1
  198. package/src/elements/adw-view-switcher-bar.ts +2 -1
  199. package/src/elements/adw-view-switcher-sidebar.ts +2 -1
  200. package/src/elements/adw-view-switcher.ts +3 -2
  201. package/src/elements/adw-window-title.ts +2 -1
  202. package/src/elements/adw-wrap-box.ts +2 -1
  203. package/src/elements/checks.ts +85 -6
  204. package/src/elements/gtk-action-bar.ts +2 -1
  205. package/src/elements/gtk-aspect-frame.ts +2 -1
  206. package/src/elements/gtk-box.ts +56 -1
  207. package/src/elements/gtk-button.ts +10 -22
  208. package/src/elements/gtk-calendar.ts +2 -1
  209. package/src/elements/gtk-center-box.ts +2 -1
  210. package/src/elements/gtk-color-dialog-button.ts +2 -1
  211. package/src/elements/gtk-drag-icon.ts +2 -1
  212. package/src/elements/gtk-drawing-area.ts +2 -1
  213. package/src/elements/gtk-drop-down.ts +2 -1
  214. package/src/elements/gtk-editable-label.ts +2 -1
  215. package/src/elements/gtk-entry.ts +2 -1
  216. package/src/elements/gtk-expander.ts +2 -1
  217. package/src/elements/gtk-fixed.ts +2 -1
  218. package/src/elements/gtk-flow-box-child.ts +2 -1
  219. package/src/elements/gtk-flow-box.ts +2 -1
  220. package/src/elements/gtk-font-dialog-button.ts +2 -1
  221. package/src/elements/gtk-frame.ts +2 -1
  222. package/src/elements/gtk-gl-area.ts +2 -1
  223. package/src/elements/gtk-graphics-offload.ts +2 -1
  224. package/src/elements/gtk-grid.ts +2 -1
  225. package/src/elements/gtk-header-bar.ts +2 -1
  226. package/src/elements/gtk-image.ts +14 -15
  227. package/src/elements/gtk-inscription.ts +2 -1
  228. package/src/elements/gtk-label.ts +12 -5
  229. package/src/elements/gtk-level-bar.ts +2 -1
  230. package/src/elements/gtk-list-box-row.ts +2 -1
  231. package/src/elements/gtk-list-box.ts +2 -1
  232. package/src/elements/gtk-list-view.ts +2 -1
  233. package/src/elements/gtk-media-controls.ts +2 -1
  234. package/src/elements/gtk-menu-button.ts +2 -1
  235. package/src/elements/gtk-notebook.ts +2 -1
  236. package/src/elements/gtk-overlay.ts +2 -1
  237. package/src/elements/gtk-paned.ts +2 -1
  238. package/src/elements/gtk-picture.ts +2 -1
  239. package/src/elements/gtk-popover-bin.ts +2 -1
  240. package/src/elements/gtk-popover-menu-bar.ts +2 -1
  241. package/src/elements/gtk-popover.ts +2 -1
  242. package/src/elements/gtk-progress-bar.ts +2 -1
  243. package/src/elements/gtk-revealer.ts +2 -1
  244. package/src/elements/gtk-scale-button.ts +2 -1
  245. package/src/elements/gtk-scale.ts +2 -1
  246. package/src/elements/gtk-scrollbar.ts +2 -1
  247. package/src/elements/gtk-scrolled-window.ts +8 -5
  248. package/src/elements/gtk-search-bar.ts +2 -1
  249. package/src/elements/gtk-separator.ts +2 -1
  250. package/src/elements/gtk-spin-button.ts +2 -1
  251. package/src/elements/gtk-spinner.ts +2 -1
  252. package/src/elements/gtk-stack-page.ts +2 -1
  253. package/src/elements/gtk-stack-sidebar.ts +2 -1
  254. package/src/elements/gtk-stack-switcher.ts +2 -1
  255. package/src/elements/gtk-stack.ts +2 -1
  256. package/src/elements/gtk-switch.ts +2 -1
  257. package/src/elements/gtk-text-view.ts +2 -1
  258. package/src/elements/gtk-text.ts +2 -1
  259. package/src/elements/gtk-tree-expander.ts +2 -1
  260. package/src/elements/gtk-video.ts +2 -1
  261. package/src/elements/gtk-viewport.ts +2 -1
  262. package/src/elements/gtk-window-controls.ts +2 -1
  263. package/src/elements/gtk-window-handle.ts +2 -1
  264. package/src/elements/gtk-window.ts +2 -1
  265. package/src/gio.spec.ts +13 -3
  266. package/src/glib.spec.ts +9 -0
  267. package/src/gobject-elements.ts +18 -4
  268. package/src/gtk-label.spec.ts +39 -0
  269. package/src/gtk-scrolled-window.spec.ts +6 -6
  270. package/src/gtk-value-doors.spec.ts +19 -0
  271. package/src/gtk-window.spec.ts +2 -2
  272. package/src/gtksource/gtk-source-view.ts +2 -1
  273. package/src/{icon-registry.spec.ts → icon-masks.spec.ts} +4 -100
  274. package/src/icon-theme.spec.ts +69 -124
  275. package/src/icon-theme.ts +29 -119
  276. package/src/index.ts +3 -7
  277. package/src/namespace/gdk.ts +1 -0
  278. package/src/namespace/gio.ts +8 -0
  279. package/src/namespace/glib.ts +4 -0
  280. package/src/shared-tree-builder.ts +26 -3
  281. package/src/signals.ts +11 -2
  282. package/src/source-view/adw-source-view.ts +2 -1
  283. package/src/split-button.spec.ts +1 -1
  284. package/src/style-manager.spec.ts +13 -0
  285. package/src/style-manager.ts +6 -0
  286. package/src/styles.generated.ts +1 -1
  287. package/src/test.browser.mts +6 -2
  288. package/src/widget-element.ts +75 -0
  289. package/src/widget-map.spec.ts +116 -0
  290. package/src/widget-mapping.ts +100 -0
  291. package/src/widget-visible.spec.ts +44 -0
  292. package/lib/types/icon-registry.d.ts +0 -37
  293. package/src/icon-registry.ts +0 -163
package/README.md CHANGED
@@ -248,16 +248,11 @@ visible: the icon has not silently disappeared, and nothing throws — an icon i
248
248
  and neither of the other two Adwaita renderers takes an application down over a glyph. Only
249
249
  an **absent or empty** name draws nothing, which is the host declining an icon.
250
250
 
251
- ### Registering your own
251
+ ### Icons outside the subset
252
252
 
253
- ```typescript
254
- import { registerIcon, isIconAvailable } from '@gjsify/adwaita-web';
255
- import { dialogErrorSymbolic } from '@gjsify/adwaita-icons/status';
256
-
257
- if (!isIconAvailable('dialog-error')) {
258
- registerIcon('dialog-error-symbolic', dialogErrorSymbolic);
259
- }
260
- ```
253
+ A glyph the subset does not compile — a symbolic of your own, or a full-colour application
254
+ icon — comes from the app's GResource, the way GNOME ships it (next section).
255
+ `isIconAvailable(name)` answers whether the compiled subset or a resource path draws a name.
261
256
 
262
257
  ```html
263
258
  <gtk-image icon-name="dialog-error"></gtk-image>
@@ -273,71 +268,6 @@ narrow surface such as an extension popup — a 96px icon, 24px margins and the
273
268
  <adw-status-page compact icon="dialog-error" title="No results"></adw-status-page>
274
269
  ```
275
270
 
276
- `registerIcon(name, svg)` takes the icon's **SVG source** — exactly what
277
- `@gjsify/adwaita-icons` exports, and equally any symbolic SVG of your own drawn on the 16px
278
- Adwaita grid with `fill="currentColor"`. It writes the same pair the build writes: a
279
- `--icon-<name>` custom property on the document element and a `.adw-icon--<name>` mask rule,
280
- so from then on the name is indistinguishable from a compiled one — in `<gtk-image>`, in a
281
- widget attribute, in a hand-written `class="adw-icon adw-icon--dialog-error"`, and in your
282
- own CSS as `var(--icon-dialog-error)`.
283
-
284
- Notes worth having:
285
-
286
- - **Register before you mount, where you can.** An icon already in the document shows the
287
- fallback until the registration lands. The CSS is live, so it corrects itself on the next
288
- style recalculation with no re-render — but there is a visible frame in between.
289
- - **`registerIcon` needs a live document.** It writes to `document.documentElement` and
290
- `document.head`, so calling it at module top level in an SSR/SSG build (an Astro component
291
- module, for instance) throws a `ReferenceError` before any page renders. Call it from
292
- client-side code — an `onMount`, a `client:load` boundary, a `DOMContentLoaded` handler.
293
- - **The name is normalized the same way the attribute is**: one optional `-symbolic` suffix
294
- comes off, and what is left has to be a single CSS token. `registerIcon` *throws* on a name
295
- that is not (`org.gnome.Builder`, `a b`), because a call that silently registers nothing is
296
- the failure this whole area exists to end — and because there is no mask class such a name
297
- could be given. `<gtk-image>` stays lenient with the same input: the name came from markup,
298
- so it draws `image-missing` rather than taking the page down.
299
- - **Re-registering replaces the glyph** rather than adding a second rule, so a runtime theme
300
- switch can call it as often as it likes.
301
- - `isIconAvailable(name)` reads the live cascade, not a generated list, so it also answers
302
- `true` for a glyph you supplied through your own stylesheet's `--icon-<name>`.
303
-
304
- ### Full-colour icons — an application icon
305
-
306
- A symbolic icon is recoloured; an application icon is not. On GNOME,
307
- `AdwAboutDialog`'s `application-icon` is the application ID, and GTK finds
308
- `hicolor/scalable/apps/<app-id>.svg` and draws it as it is. The web stand-in for that file is
309
- `registerColorIcon`:
310
-
311
- ```typescript
312
- import { registerColorIcon } from '@gjsify/adwaita-web';
313
- import appIcon from './icons/org.example.App.svg?raw';
314
-
315
- registerColorIcon('org.example.App', appIcon); // SVG source…
316
- registerColorIcon('org.example.Other', '/icons/other.png'); // …or an image URL
317
- ```
318
-
319
- ```html
320
- <adw-about-dialog application-icon="org.example.App" application-name="Example"></adw-about-dialog>
321
- ```
322
-
323
- Every `<gtk-image>` asking for a registered name draws the image unmasked and unrecoloured,
324
- which covers every widget that draws its icons through it, `<adw-about-dialog>` and
325
- `<gtk-about-dialog logo-icon-name>` among them. A name is looked up in the order GTK's own
326
- theme tries it (`g_themed_icon_update_names`, then gtkicontheme.c's theme order). A colour
327
- registration is hicolor's, so the current theme's symbolic glyph comes first either way:
328
-
329
- | Asked for | Tried, in order | Neither found |
330
- | --- | --- | --- |
331
- | `X` | symbolic `X-symbolic`, then colour `X` | `image-missing` |
332
- | `X-symbolic` | symbolic `X-symbolic`, then colour `X` | `image-missing` |
333
-
334
- So nothing changes for a name with no colour registration, and a colour `X` shows only where the
335
- theme has no `X-symbolic` — the same as on GNOME. `registerColorIcon` keys on the
336
- **exact** name, reverse-DNS IDs included, and *throws* on an empty or spaced name, on a
337
- `-symbolic` (`-ltr`/`-rtl`) name — that is `registerIcon`'s half — and on a source that is
338
- neither SVG source nor an `http(s):`, `blob:`, `file:` or `data:image/` URL. A registration
339
- redraws every mounted `<gtk-image>`, and `isIconAvailable` answers `true` for the name.
340
-
341
271
  ### Icons from the app's GResource (ADR 0116)
342
272
 
343
273
  The way GNOME takes: the app's compiled `.gresource`, registered with the GIO calls it already
@@ -356,9 +286,9 @@ the lookup follows `gtkicontheme.c`: hicolor subdirectories (`16x16/apps/`, `sca
356
286
  `symbolic/apps/`, …, without a `hicolor/` component) by size and scale, then files directly
357
287
  under the path. A compiled symbolic glyph still answers a `-symbolic` name first. A `-symbolic`
358
288
  file draws as a mask in `currentColor`, any other SVG or PNG as it is; an XPM or a compressed
359
- entry draws `image-missing` with a warning. After a colour registration, a resource is the next
360
- answer, so `registerColorIcon` still wins for its name. If the resource holds `gtk/menus.ui`
361
- or `gtk/help-overlay.ui` under the base path, startup throws: no builder here reads them yet.
289
+ entry draws `image-missing` with a warning. An application icon (`application-icon="org.example.App"`)
290
+ is a colour file such as `scalable/apps/org.example.App.svg` under the path. If the resource
291
+ holds `gtk/menus.ui` or `gtk/help-overlay.ui` under the base path, startup throws: no builder here reads them yet.
362
292
  `add_search_path` stays a record, since there is no file system to search.
363
293
 
364
294
  ### Why this is a web-only concern
@@ -370,14 +300,14 @@ knowing which one you are on:
370
300
  | --- | --- | --- |
371
301
  | GTK (`@gjsify/adwaita-app`) | `GtkIconTheme` looks it up in the **system** icon theme at runtime | draws the theme's `image-missing` |
372
302
  | NativeScript (`@gjsify/adwaita-nativescript`) | `GtkImage` is handed the **SVG source**, not a name | cannot happen — a missing icon is a missing import |
373
- | Web (this package) | a **compile-time** subset, the `Gtk.IconTheme` resource paths, plus `registerIcon` / `registerColorIcon` | draws `image-missing` |
303
+ | Web (this package) | a **compile-time** subset, then the `Gtk.IconTheme` resource paths | draws `image-missing` |
374
304
 
375
305
  All three therefore end on ONE glyph for a name they cannot draw. The web reaches it by two
376
306
  routes — no mask class for a known-shaped name, or no usable class for a name like
377
- `org.gnome.Builder` that no `registerColorIcon` call has answered either.
307
+ `org.gnome.Builder` that no resource path has answered either.
378
308
 
379
309
  Only the web renderer has a set that can be missing something at runtime, which is why only
380
- it needs a registration path. `scripts/check-adwaita-icon-masks.mjs` holds the compiled
310
+ it needs a compiled subset beside the resource paths. `scripts/check-adwaita-icon-masks.mjs` holds the compiled
381
311
  subset against every name this repository's SHIPPING surfaces emit, in both directions, and
382
312
  fails on a compiled glyph that did not come from `@gjsify/adwaita-icons`.
383
313
 
@@ -4201,7 +4201,8 @@ gtk-check-button .adw-check-indicator {
4201
4201
  border-radius: 6px;
4202
4202
  }
4203
4203
 
4204
- adw-radio .adw-check-indicator {
4204
+ adw-radio .adw-check-indicator,
4205
+ gtk-check-button[radio] .adw-check-indicator {
4205
4206
  border-radius: 100%;
4206
4207
  }
4207
4208
 
@@ -4211,13 +4212,15 @@ gtk-check-button[checked] .adw-check-indicator::after {
4211
4212
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14'%3E%3Cpath fill='black' d='m 12.599609,2.1992188 a 1,1 0 0 0 -1.40039,0.2011718 L 5.890625,9.4765625 2.7070313,6.2929687 a 1,1 0 0 0 -1.4140626,0 1,1 0 0 0 0,1.4140625 l 4,3.9999998 A 1.0001,1.0001 0 0 0 6.8007812,11.599609 L 12.800781,3.5996094 A 1,1 0 0 0 12.599609,2.1992188 Z'/%3E%3C/svg%3E");
4212
4213
  }
4213
4214
 
4214
- adw-radio[checked] .adw-check-indicator::after {
4215
+ adw-radio[checked] .adw-check-indicator::after,
4216
+ gtk-check-button[radio][checked] .adw-check-indicator::after {
4215
4217
  background-color: currentColor;
4216
4218
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14'%3E%3Cpath fill='black' d='M 7 3 c -2.207 0 -4 1.793 -4 4 s 1.793 4 4 4 c 2.208 0 4 -1.793 4 -4 s -1.792 -4 -4 -4 z'/%3E%3C/svg%3E");
4217
4219
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14'%3E%3Cpath fill='black' d='M 7 3 c -2.207 0 -4 1.793 -4 4 s 1.793 4 4 4 c 2.208 0 4 -1.793 4 -4 s -1.792 -4 -4 -4 z'/%3E%3C/svg%3E");
4218
4220
  }
4219
4221
 
4220
4222
  gtk-check-button[indeterminate] .adw-check-indicator::after,
4223
+ gtk-check-button[radio][indeterminate] .adw-check-indicator::after,
4221
4224
  adw-radio[indeterminate] .adw-check-indicator::after {
4222
4225
  background-color: currentColor;
4223
4226
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14'%3E%3Cpath fill='black' d='M 3 5 A 2 2 0 0 0 1 7 A 2 2 0 0 0 3 9 L 11 9 A 2 2 0 0 0 13 7 A 2 2 0 0 0 11 5 Z'/%3E%3C/svg%3E");
@@ -7262,6 +7265,12 @@ gtk-scrolled-window {
7262
7265
  }
7263
7266
  gtk-scrolled-window > gtk-viewport {
7264
7267
  grid-area: 1/1;
7268
+ width: 0;
7269
+ height: 0;
7270
+ min-width: 100%;
7271
+ min-height: 100%;
7272
+ max-width: 100%;
7273
+ max-height: 100%;
7265
7274
  }
7266
7275
  gtk-scrolled-window > gtk-scrollbar.vertical {
7267
7276
  grid-row: 1/3;
@@ -7446,6 +7455,10 @@ adw-overlay-split-view .adw-osv-content {
7446
7455
  flex-direction: column;
7447
7456
  align-self: stretch;
7448
7457
  }
7458
+ adw-overlay-split-view .adw-osv-content > :only-child,
7459
+ adw-overlay-split-view .adw-osv-sidebar > :only-child {
7460
+ flex: 1 1 auto;
7461
+ }
7449
7462
  adw-overlay-split-view:not(.collapsed) .adw-osv-sidebar {
7450
7463
  position: relative;
7451
7464
  }
@@ -9924,6 +9937,7 @@ adw-about-dialog .adw-about-dialog-sheet:focus {
9924
9937
  outline: 1px solid var(--separator-color);
9925
9938
  outline-offset: -1px;
9926
9939
  }
9940
+ adw-about-dialog adw-toast-overlay,
9927
9941
  adw-about-dialog adw-navigation-view,
9928
9942
  adw-about-dialog .adw-navigation-view-pages,
9929
9943
  adw-about-dialog .adw-navigation-page {
@@ -10034,6 +10048,39 @@ adw-about-dialog .adw-about-dialog-comments {
10034
10048
  text-align: start;
10035
10049
  white-space: pre-wrap;
10036
10050
  }
10051
+ adw-about-dialog .adw-about-dialog-release-notes {
10052
+ margin: var(--spacing-s) 0 0;
10053
+ font-size: var(--font-size-base);
10054
+ line-height: 1.5;
10055
+ white-space: pre-wrap;
10056
+ }
10057
+ adw-about-dialog .adw-about-dialog-release-notes [data-tag=heading] {
10058
+ font-weight: 800;
10059
+ font-size: 1.2em;
10060
+ }
10061
+ adw-about-dialog .adw-about-dialog-release-notes [data-tag=em] {
10062
+ font-style: italic;
10063
+ }
10064
+ adw-about-dialog .adw-about-dialog-release-notes [data-tag=code] {
10065
+ font-family: var(--monospace-font-family);
10066
+ }
10067
+ adw-about-dialog .adw-about-dialog-release-notes [data-tag=bullet] {
10068
+ opacity: var(--dim-opacity);
10069
+ }
10070
+ adw-about-dialog .adw-about-dialog-debug-info {
10071
+ margin: var(--spacing-s) 0 0;
10072
+ padding: var(--spacing-s);
10073
+ font-family: var(--monospace-font-family);
10074
+ font-size: var(--font-size-small);
10075
+ white-space: pre-wrap;
10076
+ overflow-wrap: anywhere;
10077
+ border-radius: var(--card-radius);
10078
+ background-color: var(--card-bg-color);
10079
+ }
10080
+ adw-about-dialog .adw-about-dialog-copy {
10081
+ align-self: center;
10082
+ margin-top: var(--spacing-m);
10083
+ }
10037
10084
  adw-about-dialog .adw-about-dialog-copyright {
10038
10085
  margin: var(--spacing-s) 0 0;
10039
10086
  font-size: var(--font-size-small);
@@ -10572,7 +10619,9 @@ adw-shortcuts-item + adw-shortcuts-item {
10572
10619
  }
10573
10620
 
10574
10621
  gtk-box:not([orientation=vertical]) > [hexpand]:not([hexpand=false]),
10575
- gtk-box[orientation=vertical] > [vexpand]:not([vexpand=false]) {
10622
+ gtk-box[orientation=vertical] > [vexpand]:not([vexpand=false]),
10623
+ gtk-box:not([orientation=vertical]) > [data-computed-hexpand],
10624
+ gtk-box[orientation=vertical] > [data-computed-vexpand] {
10576
10625
  flex-grow: 1;
10577
10626
  }
10578
10627