@gjsify/adwaita-web 0.55.0 → 0.56.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 (71) hide show
  1. package/README.md +8 -0
  2. package/dist/adwaita-web.css +129 -27
  3. package/dist/adwaita-web.css.map +1 -1
  4. package/lib/types/adw-status-page.spec.d.ts +1 -0
  5. package/lib/types/attributes.d.ts +19 -0
  6. package/lib/types/elements/adw-action-row.d.ts +4 -0
  7. package/lib/types/elements/adw-combo-row.d.ts +4 -0
  8. package/lib/types/elements/adw-entry-row.d.ts +6 -0
  9. package/lib/types/elements/adw-expander-row.d.ts +2 -0
  10. package/lib/types/elements/adw-header-bar.d.ts +6 -0
  11. package/lib/types/elements/adw-overlay-split-view.d.ts +13 -0
  12. package/lib/types/elements/adw-sidebar.d.ts +3 -2
  13. package/lib/types/elements/adw-spin-row.d.ts +6 -0
  14. package/lib/types/elements/adw-switch-row.d.ts +4 -0
  15. package/lib/types/elements/adw-toggle-group.d.ts +17 -0
  16. package/lib/types/elements/gtk-scrolled-window.d.ts +10 -2
  17. package/lib/types/elements/gtk-window.d.ts +8 -2
  18. package/lib/types/index.d.ts +1 -1
  19. package/lib/types/row-line-clamp.d.ts +20 -0
  20. package/lib/types/row-tooltip.d.ts +8 -0
  21. package/lib/types/row-tooltip.spec.d.ts +1 -0
  22. package/lib/types/shared-tree-builder.d.ts +49 -19
  23. package/lib/types/shared-tree-mount.spec.d.ts +1 -0
  24. package/lib/types/styles.generated.d.ts +1 -1
  25. package/lib/types/widget-size.spec.d.ts +1 -0
  26. package/package.json +8 -8
  27. package/scss/_action_row.scss +39 -15
  28. package/scss/_button_row.scss +5 -0
  29. package/scss/_expander_row.scss +36 -3
  30. package/scss/_headerbar.scss +2 -1
  31. package/scss/_preferences_row.scss +9 -0
  32. package/scss/_row.scss +16 -0
  33. package/scss/_status_page.scss +1 -1
  34. package/scss/_toggle_group.scss +28 -0
  35. package/scss/_widget.scss +14 -3
  36. package/scss/_window.scss +13 -1
  37. package/src/adw-action-rows.spec.ts +255 -0
  38. package/src/adw-header-bar.spec.ts +18 -0
  39. package/src/adw-status-page.spec.ts +124 -0
  40. package/src/attributes.ts +52 -0
  41. package/src/capabilities.mjs +3 -0
  42. package/src/construct-vectors.spec.ts +1 -1
  43. package/src/elements/adw-action-row.ts +31 -2
  44. package/src/elements/adw-alert-dialog.ts +4 -1
  45. package/src/elements/adw-button-row.ts +7 -1
  46. package/src/elements/adw-combo-row.ts +26 -1
  47. package/src/elements/adw-entry-row.ts +22 -12
  48. package/src/elements/adw-expander-row.ts +34 -1
  49. package/src/elements/adw-header-bar.ts +18 -4
  50. package/src/elements/adw-overlay-split-view.ts +29 -6
  51. package/src/elements/adw-preferences-row.ts +5 -2
  52. package/src/elements/adw-sidebar.ts +33 -5
  53. package/src/elements/adw-spin-row.ts +37 -2
  54. package/src/elements/adw-status-page.ts +10 -2
  55. package/src/elements/adw-switch-row.ts +25 -1
  56. package/src/elements/adw-toggle-group.ts +119 -10
  57. package/src/elements/adw-window.ts +9 -4
  58. package/src/elements/gtk-scrolled-window.ts +18 -7
  59. package/src/elements/gtk-window.ts +9 -3
  60. package/src/gtk-window.spec.ts +12 -0
  61. package/src/index.ts +1 -1
  62. package/src/keyboard-operable.spec.ts +47 -11
  63. package/src/row-line-clamp.ts +74 -0
  64. package/src/row-tooltip.spec.ts +313 -0
  65. package/src/row-tooltip.ts +52 -0
  66. package/src/shared-tree-builder.ts +88 -35
  67. package/src/shared-tree-mount.spec.ts +130 -0
  68. package/src/shared-trees.spec.ts +15 -0
  69. package/src/styles.generated.ts +1 -1
  70. package/src/test.browser.mts +8 -0
  71. package/src/widget-size.spec.ts +117 -0
package/README.md CHANGED
@@ -219,6 +219,14 @@ if (!isIconAvailable('dialog-error')) {
219
219
  <adw-status-page icon="dialog-error" title="Could not connect"></adw-status-page>
220
220
  ```
221
221
 
222
+ A status page also takes libadwaita's `.compact` style class as a boolean attribute, for a
223
+ narrow surface such as an extension popup — a 96px icon, 24px margins and the smaller
224
+ `.title-2` heading (`style-classes.md` "Compact Status Page"):
225
+
226
+ ```html
227
+ <adw-status-page compact icon="dialog-error" title="No results"></adw-status-page>
228
+ ```
229
+
222
230
  `registerIcon(name, svg)` takes the icon's **SVG source** — exactly what
223
231
  `@gjsify/adwaita-icons` exports, and equally any symbolic SVG of your own drawn on the 16px
224
232
  Adwaita grid with `fill="currentColor"`. It writes the same pair the build writes: a
@@ -2066,7 +2066,8 @@ adw-card,
2066
2066
  box-shadow: inset 6px 0 6px -6px color-mix(in srgb, currentColor 6%, transparent);
2067
2067
  }
2068
2068
 
2069
- adw-window {
2069
+ adw-window,
2070
+ adw-application-window {
2070
2071
  display: flex;
2071
2072
  flex-direction: column;
2072
2073
  background-color: var(--window-bg-color);
@@ -2079,7 +2080,9 @@ adw-window {
2079
2080
  outline: 1px solid rgba(255, 255, 255, 0.07);
2080
2081
  outline-offset: -1px;
2081
2082
  }
2082
- adw-window.maximized, adw-window.fullscreen {
2083
+ adw-window.maximized, adw-window.fullscreen,
2084
+ adw-application-window.maximized,
2085
+ adw-application-window.fullscreen {
2083
2086
  --window-radius: 0px;
2084
2087
  outline: none;
2085
2088
  box-shadow: none;
@@ -2093,6 +2096,11 @@ adw-window.maximized, adw-window.fullscreen {
2093
2096
  min-width: 0;
2094
2097
  }
2095
2098
 
2099
+ .adw-window-content > gtk-box {
2100
+ flex: 1 1 auto;
2101
+ min-height: 0;
2102
+ }
2103
+
2096
2104
  gtk-window,
2097
2105
  gtk-application-window {
2098
2106
  display: flex;
@@ -2234,7 +2242,8 @@ adw-header-bar .adw-header-btn:active {
2234
2242
  }
2235
2243
 
2236
2244
  .devel adw-header-bar,
2237
- adw-window.devel adw-header-bar {
2245
+ adw-window.devel adw-header-bar,
2246
+ adw-application-window.devel adw-header-bar {
2238
2247
  background-image: linear-gradient(to bottom, transparent 0%, var(--headerbar-bg-color) 100%), repeating-linear-gradient(116.565deg, color-mix(in srgb, currentColor 5%, transparent) 0 32px, transparent 32px 64px);
2239
2248
  }
2240
2249
 
@@ -3307,6 +3316,9 @@ adw-toggle-group {
3307
3316
  border-radius: var(--button-radius);
3308
3317
  background-color: var(--button-bg-color);
3309
3318
  }
3319
+ adw-toggle-group[disabled] {
3320
+ background-color: color-mix(in srgb, var(--button-bg-color) var(--disabled-opacity), transparent);
3321
+ }
3310
3322
  adw-toggle-group .adw-toggle-group-inner {
3311
3323
  display: flex;
3312
3324
  align-items: stretch;
@@ -3345,6 +3357,13 @@ adw-toggle-group .adw-toggle:focus-visible {
3345
3357
  outline: 2px solid var(--accent-color);
3346
3358
  outline-offset: 1px;
3347
3359
  }
3360
+ adw-toggle-group .adw-toggle:disabled {
3361
+ opacity: var(--disabled-opacity);
3362
+ cursor: default;
3363
+ }
3364
+ adw-toggle-group .adw-toggle:disabled:hover, adw-toggle-group .adw-toggle:disabled:active {
3365
+ background-color: transparent;
3366
+ }
3348
3367
  adw-toggle-group .adw-toggle.active {
3349
3368
  background-color: var(--active-toggle-bg-color);
3350
3369
  color: var(--active-toggle-fg-color);
@@ -3353,6 +3372,9 @@ adw-toggle-group .adw-toggle.active {
3353
3372
  adw-toggle-group .adw-toggle.active:hover {
3354
3373
  background-color: var(--active-toggle-bg-color);
3355
3374
  }
3375
+ adw-toggle-group .adw-toggle.active:disabled {
3376
+ box-shadow: none;
3377
+ }
3356
3378
  adw-toggle-group.round {
3357
3379
  border-radius: 17px;
3358
3380
  }
@@ -5240,6 +5262,9 @@ adw-preferences-row {
5240
5262
  adw-preferences-row .adw-row-title {
5241
5263
  user-select: none;
5242
5264
  }
5265
+ adw-preferences-row .adw-row-title:has(~ .adw-preferences-row-content[hidden]) {
5266
+ flex: 1 1 auto;
5267
+ }
5243
5268
  adw-preferences-row .adw-preferences-row-content {
5244
5269
  display: flex;
5245
5270
  align-items: center;
@@ -6284,6 +6309,10 @@ adw-combo-row:last-child {
6284
6309
  border-bottom: none;
6285
6310
  }
6286
6311
 
6312
+ [data-row-tooltip] {
6313
+ align-self: stretch;
6314
+ }
6315
+
6287
6316
  .adw-row-text {
6288
6317
  display: flex;
6289
6318
  flex-direction: column;
@@ -6318,7 +6347,10 @@ adw-combo-row:last-child {
6318
6347
  flex-shrink: 0;
6319
6348
  }
6320
6349
 
6321
- adw-action-row {
6350
+ adw-action-row,
6351
+ adw-switch-row,
6352
+ adw-combo-row,
6353
+ adw-spin-row {
6322
6354
  display: flex;
6323
6355
  align-items: center;
6324
6356
  gap: var(--spacing-m);
@@ -6327,46 +6359,90 @@ adw-action-row {
6327
6359
  border-bottom: 1px solid var(--card-shade-color);
6328
6360
  color: var(--card-fg-color);
6329
6361
  }
6330
- adw-action-row:last-child {
6362
+ adw-action-row:last-child,
6363
+ adw-switch-row:last-child,
6364
+ adw-combo-row:last-child,
6365
+ adw-spin-row:last-child {
6331
6366
  border-bottom: none;
6332
6367
  }
6333
- adw-action-row.activatable {
6368
+ adw-action-row.activatable,
6369
+ adw-switch-row.activatable,
6370
+ adw-combo-row.activatable,
6371
+ adw-spin-row.activatable {
6334
6372
  cursor: pointer;
6335
6373
  }
6336
- adw-action-row.activatable:hover {
6374
+ adw-action-row.activatable:hover,
6375
+ adw-switch-row.activatable:hover,
6376
+ adw-combo-row.activatable:hover,
6377
+ adw-spin-row.activatable:hover {
6337
6378
  background-color: var(--button-bg-color);
6338
6379
  }
6339
- adw-action-row.activatable:active {
6380
+ adw-action-row.activatable:active,
6381
+ adw-switch-row.activatable:active,
6382
+ adw-combo-row.activatable:active,
6383
+ adw-spin-row.activatable:active {
6340
6384
  background-color: var(--button-active-color);
6341
6385
  }
6342
6386
  adw-action-row .adw-action-row-prefix,
6343
- adw-action-row .adw-action-row-suffix {
6387
+ adw-action-row .adw-action-row-suffix,
6388
+ adw-action-row .adw-switch-row-prefix,
6389
+ adw-switch-row .adw-action-row-prefix,
6390
+ adw-switch-row .adw-action-row-suffix,
6391
+ adw-switch-row .adw-switch-row-prefix,
6392
+ adw-combo-row .adw-action-row-prefix,
6393
+ adw-combo-row .adw-action-row-suffix,
6394
+ adw-combo-row .adw-switch-row-prefix,
6395
+ adw-spin-row .adw-action-row-prefix,
6396
+ adw-spin-row .adw-action-row-suffix,
6397
+ adw-spin-row .adw-switch-row-prefix {
6344
6398
  display: flex;
6345
6399
  align-items: center;
6346
6400
  gap: var(--spacing-xs);
6347
6401
  flex-shrink: 0;
6348
6402
  }
6349
- adw-action-row .adw-action-row-text {
6350
- display: flex;
6351
- flex-direction: column;
6352
- justify-content: center;
6353
- flex: 1 1 auto;
6354
- min-width: 0;
6355
- }
6356
- adw-action-row .adw-row-title {
6403
+ adw-action-row .adw-row-title,
6404
+ adw-switch-row .adw-row-title,
6405
+ adw-combo-row .adw-row-title,
6406
+ adw-spin-row .adw-row-title {
6357
6407
  font-size: var(--font-size-base);
6358
6408
  color: var(--card-fg-color);
6359
- white-space: nowrap;
6360
- overflow: hidden;
6361
- text-overflow: ellipsis;
6409
+ white-space: normal;
6410
+ overflow-wrap: break-word;
6362
6411
  }
6363
- adw-action-row .adw-row-subtitle {
6412
+ adw-action-row .adw-row-subtitle,
6413
+ adw-switch-row .adw-row-subtitle,
6414
+ adw-combo-row .adw-row-subtitle,
6415
+ adw-spin-row .adw-row-subtitle {
6364
6416
  font-size: var(--font-size-small);
6365
6417
  opacity: var(--dim-opacity);
6366
6418
  color: var(--card-fg-color);
6367
- white-space: nowrap;
6419
+ white-space: normal;
6420
+ overflow-wrap: break-word;
6421
+ }
6422
+ adw-action-row .adw-row-text.adw-row-clamp .adw-row-title,
6423
+ adw-action-row .adw-row-text.adw-row-clamp .adw-row-subtitle,
6424
+ adw-switch-row .adw-row-text.adw-row-clamp .adw-row-title,
6425
+ adw-switch-row .adw-row-text.adw-row-clamp .adw-row-subtitle,
6426
+ adw-combo-row .adw-row-text.adw-row-clamp .adw-row-title,
6427
+ adw-combo-row .adw-row-text.adw-row-clamp .adw-row-subtitle,
6428
+ adw-spin-row .adw-row-text.adw-row-clamp .adw-row-title,
6429
+ adw-spin-row .adw-row-text.adw-row-clamp .adw-row-subtitle {
6430
+ display: -webkit-box;
6431
+ -webkit-box-orient: vertical;
6368
6432
  overflow: hidden;
6369
- text-overflow: ellipsis;
6433
+ text-overflow: var(--adw-row-ellipsize-overflow, ellipsis);
6434
+ }
6435
+ adw-action-row .adw-row-text.adw-row-clamp .adw-row-title,
6436
+ adw-switch-row .adw-row-text.adw-row-clamp .adw-row-title,
6437
+ adw-combo-row .adw-row-text.adw-row-clamp .adw-row-title,
6438
+ adw-spin-row .adw-row-text.adw-row-clamp .adw-row-title {
6439
+ -webkit-line-clamp: var(--adw-row-title-lines, 1);
6440
+ }
6441
+ adw-action-row .adw-row-text.adw-row-clamp .adw-row-subtitle,
6442
+ adw-switch-row .adw-row-text.adw-row-clamp .adw-row-subtitle,
6443
+ adw-combo-row .adw-row-text.adw-row-clamp .adw-row-subtitle,
6444
+ adw-spin-row .adw-row-text.adw-row-clamp .adw-row-subtitle {
6445
+ -webkit-line-clamp: var(--adw-row-subtitle-lines, 1);
6370
6446
  }
6371
6447
 
6372
6448
  adw-action-row.property .adw-row-title,
@@ -6588,6 +6664,7 @@ adw-button-row .adw-button-row-contents {
6588
6664
  justify-content: center;
6589
6665
  gap: var(--spacing-xs);
6590
6666
  min-width: 0;
6667
+ flex: 1 1 auto;
6591
6668
  }
6592
6669
  adw-button-row .adw-button-row-title {
6593
6670
  font-size: var(--font-size-base);
@@ -6656,9 +6733,28 @@ adw-expander-row .adw-expander-row-header:active {
6656
6733
  adw-expander-row .adw-row-title {
6657
6734
  font-size: var(--font-size-base);
6658
6735
  color: var(--card-fg-color);
6659
- white-space: nowrap;
6736
+ white-space: normal;
6737
+ overflow-wrap: break-word;
6738
+ }
6739
+ adw-expander-row .adw-row-subtitle {
6740
+ font-size: var(--font-size-small);
6741
+ opacity: var(--dim-opacity);
6742
+ color: var(--card-fg-color);
6743
+ white-space: normal;
6744
+ overflow-wrap: break-word;
6745
+ }
6746
+ adw-expander-row .adw-row-text.adw-row-clamp .adw-row-title,
6747
+ adw-expander-row .adw-row-text.adw-row-clamp .adw-row-subtitle {
6748
+ display: -webkit-box;
6749
+ -webkit-box-orient: vertical;
6660
6750
  overflow: hidden;
6661
- text-overflow: ellipsis;
6751
+ text-overflow: var(--adw-row-ellipsize-overflow, ellipsis);
6752
+ }
6753
+ adw-expander-row .adw-row-text.adw-row-clamp .adw-row-title {
6754
+ -webkit-line-clamp: var(--adw-row-title-lines, 1);
6755
+ }
6756
+ adw-expander-row .adw-row-text.adw-row-clamp .adw-row-subtitle {
6757
+ -webkit-line-clamp: var(--adw-row-subtitle-lines, 1);
6662
6758
  }
6663
6759
  adw-expander-row .adw-expander-row-header > .adw-row-text {
6664
6760
  flex: 1;
@@ -10420,11 +10516,17 @@ adw-shortcuts-item + adw-shortcuts-item {
10420
10516
  margin-block: auto;
10421
10517
  }
10422
10518
 
10423
- gtk-box:not([orientation=vertical]) > [hexpand],
10424
- gtk-box[orientation=vertical] > [vexpand] {
10519
+ gtk-box:not([orientation=vertical]) > [hexpand]:not([hexpand=false]),
10520
+ gtk-box[orientation=vertical] > [vexpand]:not([vexpand=false]) {
10425
10521
  flex-grow: 1;
10426
10522
  }
10427
10523
 
10524
+ gtk-box:not([orientation=vertical]) > [hexpand=false],
10525
+ gtk-box[orientation=vertical] > [vexpand=false] {
10526
+ flex-grow: 0;
10527
+ flex-basis: auto;
10528
+ }
10529
+
10428
10530
  [hidden] {
10429
10531
  display: none !important;
10430
10532
  }