@fungi.computer/caps 0.7.1 → 0.9.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 (45) hide show
  1. package/README.md +58 -0
  2. package/dist/blocks/app-bar.d.ts +4 -2
  3. package/dist/blocks/app-bar.js +3 -3
  4. package/dist/blocks/empty-state.d.ts +31 -4
  5. package/dist/blocks/empty-state.js +14 -4
  6. package/dist/blocks/loading-state.d.ts +41 -0
  7. package/dist/blocks/loading-state.js +18 -3
  8. package/dist/blocks/permission-grid.js +1 -1
  9. package/dist/blocks/result-state.d.ts +18 -0
  10. package/dist/blocks/result-state.js +7 -2
  11. package/dist/blocks/setup-notice.d.ts +32 -0
  12. package/dist/blocks/setup-notice.js +23 -0
  13. package/dist/components/button.js +2 -2
  14. package/dist/components/confirm-action.d.ts +6 -1
  15. package/dist/components/confirm-action.js +3 -3
  16. package/dist/components/dialog.js +1 -1
  17. package/dist/components/failure-line.d.ts +46 -0
  18. package/dist/components/failure-line.js +12 -0
  19. package/dist/components/keycap.d.ts +15 -2
  20. package/dist/components/keycap.js +3 -3
  21. package/dist/components/loader-blobs.d.ts +3 -2
  22. package/dist/components/loader-blobs.js +5 -3
  23. package/dist/components/loader.d.ts +8 -2
  24. package/dist/components/loader.js +4 -2
  25. package/dist/components/toaster.d.ts +5 -1
  26. package/dist/components/toaster.js +16 -2
  27. package/dist/styles.css +485 -28
  28. package/docs/api/README.md +2 -0
  29. package/docs/api/blocks/app-bar.md +9 -1
  30. package/docs/api/blocks/empty-state.md +30 -11
  31. package/docs/api/blocks/loading-state.md +33 -0
  32. package/docs/api/blocks/result-state.md +30 -6
  33. package/docs/api/blocks/setup-notice.md +82 -0
  34. package/docs/api/components/confirm-action.md +8 -6
  35. package/docs/api/components/data-list.md +33 -0
  36. package/docs/api/components/failure-line.md +50 -0
  37. package/docs/api/components/field.md +9 -8
  38. package/docs/api/components/icon-checkbox.md +55 -0
  39. package/docs/api/components/icon-radio.md +39 -5
  40. package/docs/api/components/keycap.md +10 -7
  41. package/docs/api/components/loader.md +18 -7
  42. package/docs/api/components/toaster.md +2 -0
  43. package/package.json +15 -6
  44. package/src/first-run.css +100 -0
  45. package/src/styles.css +394 -21
package/dist/styles.css CHANGED
@@ -5795,6 +5795,10 @@
5795
5795
  width: calc(var(--spacing) * 12);
5796
5796
  height: calc(var(--spacing) * 12);
5797
5797
  }
5798
+ .size-48 {
5799
+ width: calc(var(--spacing) * 48);
5800
+ height: calc(var(--spacing) * 48);
5801
+ }
5798
5802
  .size-\[var\(--stipe-icon-size-lg\)\] {
5799
5803
  width: var(--stipe-icon-size-lg);
5800
5804
  height: var(--stipe-icon-size-lg);
@@ -6450,7 +6454,7 @@
6450
6454
  --tw-prose-bold: var(--color-base-content);
6451
6455
  --tw-prose-counters: var(--stipe-fg-muted);
6452
6456
  --tw-prose-bullets: var(--stipe-fg-muted);
6453
- --tw-prose-hr: var(--stipe-hairline);
6457
+ --tw-prose-hr: var(--stipe-hairline-quiet);
6454
6458
  --tw-prose-quotes: var(--color-base-content);
6455
6459
  --tw-prose-quote-borders: var(--stipe-linework);
6456
6460
  --tw-prose-captions: var(--stipe-fg-muted);
@@ -6459,7 +6463,7 @@
6459
6463
  --tw-prose-pre-code: var(--color-base-content);
6460
6464
  --tw-prose-pre-bg: var(--color-base-200);
6461
6465
  --tw-prose-th-borders: var(--stipe-linework);
6462
- --tw-prose-td-borders: var(--stipe-hairline);
6466
+ --tw-prose-td-borders: var(--stipe-hairline-quiet);
6463
6467
  font-family: var(--font-sans);
6464
6468
  line-height: var(--caps-prose-leading, 1.75);
6465
6469
  }
@@ -6691,6 +6695,9 @@
6691
6695
  color: color-mix(in oklab, var(--color-base-content) 70%, transparent);
6692
6696
  }
6693
6697
  }
6698
+ .text-current {
6699
+ color: currentcolor;
6700
+ }
6694
6701
  .text-error {
6695
6702
  color: var(--color-error);
6696
6703
  }
@@ -7641,6 +7648,14 @@
7641
7648
  transparent
7642
7649
  );
7643
7650
  }
7651
+ --stipe-hairline-quiet: var(--color-base-content);
7652
+ @supports (color: color-mix(in lab, red, red)) {
7653
+ --stipe-hairline-quiet: color-mix(
7654
+ in oklab,
7655
+ var(--color-base-content) 10%,
7656
+ transparent
7657
+ );
7658
+ }
7644
7659
  --stipe-figure-ink: var(--color-base-content);
7645
7660
  --stipe-density-compact: 0rem;
7646
7661
  --stipe-density-comfortable: 0.25rem;
@@ -7747,6 +7762,7 @@
7747
7762
  transparent
7748
7763
  );
7749
7764
  }
7765
+ --stipe-hairline-quiet: var(--stipe-hairline);
7750
7766
  --stipe-fg-muted: var(--color-base-content);
7751
7767
  @supports (color: color-mix(in lab, red, red)) {
7752
7768
  --stipe-fg-muted: color-mix(
@@ -7975,6 +7991,14 @@
7975
7991
  transparent
7976
7992
  );
7977
7993
  }
7994
+ --stipe-hairline-quiet: var(--color-base-content);
7995
+ @supports (color: color-mix(in lab, red, red)) {
7996
+ --stipe-hairline-quiet: color-mix(
7997
+ in oklab,
7998
+ var(--color-base-content) 10%,
7999
+ transparent
8000
+ );
8001
+ }
7978
8002
  --caps-button-linework: 0%;
7979
8003
  --caps-print-ink: var(--color-base-content);
7980
8004
  --caps-print-filter: url("#caps-print");
@@ -8154,6 +8178,7 @@
8154
8178
  transparent
8155
8179
  );
8156
8180
  }
8181
+ --stipe-hairline-quiet: var(--stipe-hairline);
8157
8182
  --stipe-surface-frame-width: 2px;
8158
8183
  --stipe-surface-frame-image: linear-gradient(
8159
8184
  var(--color-base-content),
@@ -8380,6 +8405,7 @@
8380
8405
  --stipe-fg-muted: light-dark(#5c5f66, #9a9ea6);
8381
8406
  --stipe-linework: light-dark(#e2e2dd, #25282c);
8382
8407
  --stipe-hairline: light-dark(#edede9, #1c1f22);
8408
+ --stipe-hairline-quiet: var(--stipe-hairline);
8383
8409
  --radius-selector: 0.25rem;
8384
8410
  --radius-field: 0.25rem;
8385
8411
  --radius-box: 0.25rem;
@@ -8765,6 +8791,101 @@
8765
8791
  position: static;
8766
8792
  flex: none;
8767
8793
  }
8794
+ @layer utilities {
8795
+ .caps-setup-notice-frame {
8796
+ container-type: inline-size;
8797
+ }
8798
+ .caps-setup-notice-title {
8799
+ display: flex;
8800
+ align-items: center;
8801
+ gap: var(--spacing-sm);
8802
+ }
8803
+ .caps-setup-notice[data-variant] {
8804
+ border-color: var(--color-warning);
8805
+ @supports (color: color-mix(in lab, red, red)) {
8806
+ border-color: color-mix(in oklab, var(--color-warning) 45%, transparent);
8807
+ }
8808
+ background: var(--color-warning);
8809
+ @supports (color: color-mix(in lab, red, red)) {
8810
+ background: color-mix( in oklab, var(--color-warning) 12%, var(--stipe-surface-raised) );
8811
+ }
8812
+ color: var(--color-base-content);
8813
+ }
8814
+ .caps-setup-notice-actions {
8815
+ display: flex;
8816
+ flex-wrap: wrap;
8817
+ align-items: center;
8818
+ justify-content: flex-end;
8819
+ gap: var(--spacing-xs);
8820
+ }
8821
+ .caps-setup-notice-dot {
8822
+ margin-block: var(--spacing-md);
8823
+ scale: 2.5;
8824
+ }
8825
+ .caps-setup-notice-available {
8826
+ color: var(--stipe-fg-muted);
8827
+ }
8828
+ .caps-setup-notice[data-variant="inline"] {
8829
+ padding: var(--spacing-xs) var(--spacing-sm);
8830
+ font-size: var(--text-sm);
8831
+ }
8832
+ .caps-setup-notice[data-variant="banner"] {
8833
+ border-radius: 0;
8834
+ border-inline: 0;
8835
+ }
8836
+ @container (width <= 36rem) {
8837
+ .caps-setup-notice[data-variant] {
8838
+ flex-direction: column;
8839
+ align-items: stretch;
8840
+ }
8841
+ .caps-setup-notice[data-variant] > * {
8842
+ flex: none;
8843
+ width: 100%;
8844
+ }
8845
+ .caps-setup-notice-actions {
8846
+ justify-content: flex-start;
8847
+ }
8848
+ }
8849
+ .caps-failure-line {
8850
+ display: flex;
8851
+ align-items: flex-start;
8852
+ gap: var(--spacing-sm);
8853
+ min-width: 0;
8854
+ font-size: var(--text-sm);
8855
+ }
8856
+ .caps-failure-line-copy {
8857
+ display: grid;
8858
+ flex: 1;
8859
+ min-width: 0;
8860
+ gap: var(--spacing-2xs);
8861
+ }
8862
+ .caps-failure-line-count {
8863
+ color: var(--stipe-fg-muted);
8864
+ font-size: var(--text-xs);
8865
+ }
8866
+ .caps-failure-line > .caps-status {
8867
+ margin-block-start: var(--spacing-2xs);
8868
+ }
8869
+ .caps-failure-line-actions {
8870
+ display: flex;
8871
+ flex: none;
8872
+ gap: var(--spacing-2xs);
8873
+ }
8874
+ .caps-failure-line[data-density="tile"] {
8875
+ flex-direction: column;
8876
+ align-items: center;
8877
+ justify-content: center;
8878
+ height: 100%;
8879
+ padding: var(--spacing-md);
8880
+ text-align: center;
8881
+ }
8882
+ .caps-failure-line[data-density="tile"] > .caps-status {
8883
+ margin-block-start: 0;
8884
+ }
8885
+ .caps-failure-line[data-density="tile"] .caps-failure-line-copy {
8886
+ flex: none;
8887
+ }
8888
+ }
8768
8889
  :root, [data-theme] {
8769
8890
  --caps-primary-text: light-dark(
8770
8891
  oklch(from var(--color-primary) clamp(0.2, l, 0.4) c h),
@@ -8784,6 +8905,130 @@
8784
8905
  .caps-toaster[data-sonner-toaster] {
8785
8906
  z-index: var(--stipe-layer-toast);
8786
8907
  }
8908
+ .caps-toaster[data-sonner-toaster][data-sonner-theme] {
8909
+ font-family: inherit;
8910
+ --border-radius: var(--radius-box);
8911
+ --normal-bg: var(--stipe-surface-raised);
8912
+ --normal-bg-hover: var(--color-base-200);
8913
+ --normal-border: var(--stipe-hairline-quiet);
8914
+ --normal-border-hover: var(--stipe-hairline);
8915
+ --normal-text: var(--color-base-content);
8916
+ --success-bg: var(--color-success);
8917
+ @supports (color: color-mix(in lab, red, red)) {
8918
+ --success-bg: color-mix(
8919
+ in oklab,
8920
+ var(--color-success) 10%,
8921
+ var(--stipe-surface-raised)
8922
+ );
8923
+ }
8924
+ --success-border: var(--color-success);
8925
+ @supports (color: color-mix(in lab, red, red)) {
8926
+ --success-border: color-mix(in oklab, var(--color-success) 35%, transparent);
8927
+ }
8928
+ --success-text: var(--color-base-content);
8929
+ --info-bg: var(--color-info);
8930
+ @supports (color: color-mix(in lab, red, red)) {
8931
+ --info-bg: color-mix(
8932
+ in oklab,
8933
+ var(--color-info) 10%,
8934
+ var(--stipe-surface-raised)
8935
+ );
8936
+ }
8937
+ --info-border: var(--color-info);
8938
+ @supports (color: color-mix(in lab, red, red)) {
8939
+ --info-border: color-mix(in oklab, var(--color-info) 35%, transparent);
8940
+ }
8941
+ --info-text: var(--color-base-content);
8942
+ --warning-bg: var(--color-warning);
8943
+ @supports (color: color-mix(in lab, red, red)) {
8944
+ --warning-bg: color-mix(
8945
+ in oklab,
8946
+ var(--color-warning) 12%,
8947
+ var(--stipe-surface-raised)
8948
+ );
8949
+ }
8950
+ --warning-border: var(--color-warning);
8951
+ @supports (color: color-mix(in lab, red, red)) {
8952
+ --warning-border: color-mix(in oklab, var(--color-warning) 40%, transparent);
8953
+ }
8954
+ --warning-text: var(--color-base-content);
8955
+ --error-bg: var(--color-error);
8956
+ @supports (color: color-mix(in lab, red, red)) {
8957
+ --error-bg: color-mix(
8958
+ in oklab,
8959
+ var(--color-error) 10%,
8960
+ var(--stipe-surface-raised)
8961
+ );
8962
+ }
8963
+ --error-border: var(--color-error);
8964
+ @supports (color: color-mix(in lab, red, red)) {
8965
+ --error-border: color-mix(in oklab, var(--color-error) 40%, transparent);
8966
+ }
8967
+ --error-text: var(--color-base-content);
8968
+ }
8969
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled="true"] {
8970
+ font-size: var(--text-sm);
8971
+ line-height: 1.35;
8972
+ box-shadow: 0 0.25rem 0.75rem var(--color-base-content);
8973
+ @supports (color: color-mix(in lab, red, red)) {
8974
+ box-shadow: 0 0.25rem 0.75rem color-mix( in oklab, var(--color-base-content) calc(var(--depth) * 14%), transparent );
8975
+ }
8976
+ }
8977
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] {
8978
+ align-items: flex-start;
8979
+ font-family: inherit;
8980
+ }
8981
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-icon] {
8982
+ align-items: center;
8983
+ height: calc(var(--text-sm) * 1.35);
8984
+ margin: 0;
8985
+ }
8986
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-description] {
8987
+ color: var(--color-base-content);
8988
+ @supports (color: color-mix(in lab, red, red)) {
8989
+ color: color-mix(in oklab, var(--color-base-content) 78%, transparent);
8990
+ }
8991
+ }
8992
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-close-button] {
8993
+ position: static;
8994
+ order: 99;
8995
+ align-self: flex-start;
8996
+ margin-inline-start: auto;
8997
+ transform: none;
8998
+ flex: none;
8999
+ }
9000
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-icon] {
9001
+ color: var(--color-base-content);
9002
+ }
9003
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled][data-type="success"] [data-icon] {
9004
+ color: var(--color-success);
9005
+ }
9006
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled][data-type="error"] [data-icon] {
9007
+ color: var(--color-error);
9008
+ }
9009
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled][data-type="warning"] [data-icon] {
9010
+ color: var(--color-warning);
9011
+ }
9012
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled][data-type="info"] [data-icon] {
9013
+ color: var(--color-info);
9014
+ }
9015
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-close-button] {
9016
+ width: 1.25rem;
9017
+ height: 1.25rem;
9018
+ color: var(--color-base-content);
9019
+ background: var(--stipe-surface-raised);
9020
+ border: var(--border) solid var(--stipe-hairline);
9021
+ transition-duration: var(--stipe-motion-fast);
9022
+ }
9023
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-close-button]:hover {
9024
+ background: var(--color-base-200);
9025
+ border-color: var(--stipe-hairline);
9026
+ }
9027
+ .caps-toaster[data-sonner-toaster] [data-sonner-toast][data-styled] [data-close-button]:focus-visible {
9028
+ outline: 2px solid var(--caps-focus-ring);
9029
+ outline-offset: 1px;
9030
+ box-shadow: none;
9031
+ }
8787
9032
  @layer caps-dropdown {
8788
9033
  .caps-dropdown-popup {
8789
9034
  max-height: var(--available-height);
@@ -8851,6 +9096,10 @@
8851
9096
  outline: none;
8852
9097
  box-shadow: none;
8853
9098
  }
9099
+ .caps-button.btn-ghost[aria-busy="true"]:is( :disabled, [aria-disabled="true"] ) {
9100
+ --btn-fg: var(--color-base-content);
9101
+ color: var(--color-base-content);
9102
+ }
8854
9103
  }
8855
9104
  @layer components {
8856
9105
  .caps-app-canvas {
@@ -8900,7 +9149,7 @@
8900
9149
  align-items: center;
8901
9150
  justify-content: space-between;
8902
9151
  gap: var(--spacing-sm);
8903
- border-bottom: var(--border) solid var(--stipe-hairline);
9152
+ border-bottom: var(--border) solid var(--stipe-hairline-quiet);
8904
9153
  padding: var(--spacing-xs) var(--spacing-xs) var(--spacing-xs) var(--spacing-md);
8905
9154
  }
8906
9155
  .caps-copy-field-title {
@@ -9069,6 +9318,11 @@
9069
9318
  color: var(--marginalia-ink);
9070
9319
  font-size: 0.875em;
9071
9320
  }
9321
+ @media (pointer: coarse) {
9322
+ .caps-keycap[data-touch="hide"] {
9323
+ display: none;
9324
+ }
9325
+ }
9072
9326
  .caps-keycap {
9073
9327
  display: inline-grid;
9074
9328
  min-width: var(--caps-keycap-legend-min-size, 2rem);
@@ -10170,6 +10424,11 @@
10170
10424
  .caps-shortcuts dt, .caps-shortcuts dd {
10171
10425
  margin: 0;
10172
10426
  }
10427
+ .caps-dialog-popup-default {
10428
+ width: min( var(--container-lg), calc( 100% - max(1rem, env(safe-area-inset-left)) - max(1rem, env(safe-area-inset-right)) ) );
10429
+ max-width: none;
10430
+ max-height: calc( 100dvh - max(1rem, env(safe-area-inset-top)) - max(1rem, env(safe-area-inset-bottom)) );
10431
+ }
10173
10432
  dialog.caps-surface {
10174
10433
  color: inherit;
10175
10434
  }
@@ -10871,22 +11130,23 @@
10871
11130
  min-width: 0;
10872
11131
  width: 100%;
10873
11132
  max-width: 100%;
11133
+ overflow-x: auto;
10874
11134
  margin: 0;
10875
11135
  color: var(--color-base-content);
10876
- border: var(--border) solid color-mix(in oklch, var(--color-base-content) 22%, var(--color-base-100));
11136
+ border: var(--border) solid var(--color-base-content);
11137
+ @supports (color: color-mix(in lab, red, red)) {
11138
+ border: var(--border) solid color-mix(in oklch, var(--color-base-content) 22%, var(--color-base-100));
11139
+ }
10877
11140
  border-radius: var(--radius-box);
10878
11141
  background: var(--color-base-100);
10879
- overflow-x: auto;
11142
+ container-type: inline-size;
10880
11143
  }
10881
11144
  .caps-permission-grid-caption {
10882
11145
  display: flex;
10883
11146
  flex-direction: column;
10884
11147
  gap: var(--spacing-2xs);
10885
11148
  padding: var(--spacing-sm) var(--spacing-md);
10886
- border-bottom: var(--border) solid var(--color-base-content);
10887
- @supports (color: color-mix(in lab, red, red)) {
10888
- border-bottom: var(--border) solid color-mix(in oklch, var(--color-base-content) 22%, var(--color-base-100));
10889
- }
11149
+ border-bottom: var(--border) solid var(--stipe-hairline-quiet);
10890
11150
  }
10891
11151
  .caps-permission-grid-title {
10892
11152
  font-family: var(--font-mono);
@@ -10902,8 +11162,18 @@
10902
11162
  .caps-permission-grid table {
10903
11163
  width: 100%;
10904
11164
  border-collapse: collapse;
11165
+ table-layout: fixed;
10905
11166
  font-size: 0.875rem;
10906
11167
  }
11168
+ .caps-permission-grid-col-state {
11169
+ width: 5rem;
11170
+ }
11171
+ .caps-permission-grid-col-scope {
11172
+ width: 28%;
11173
+ }
11174
+ .caps-permission-grid-col-control {
11175
+ width: 5.5rem;
11176
+ }
10907
11177
  .caps-permission-grid thead th {
10908
11178
  padding: var(--spacing-xs) var(--spacing-md);
10909
11179
  font-family: var(--font-mono);
@@ -10913,26 +11183,20 @@
10913
11183
  text-align: start;
10914
11184
  text-transform: uppercase;
10915
11185
  opacity: 0.7;
10916
- border-bottom: var(--border) solid var(--color-base-content);
10917
- @supports (color: color-mix(in lab, red, red)) {
10918
- border-bottom: var(--border) solid color-mix(in oklch, var(--color-base-content) 22%, var(--color-base-100));
10919
- }
11186
+ border-bottom: var(--border) solid var(--stipe-hairline-quiet);
10920
11187
  }
10921
11188
  .caps-permission-grid tbody td, .caps-permission-grid tbody th {
10922
11189
  padding: var(--spacing-xs) var(--spacing-md);
10923
11190
  text-align: start;
10924
11191
  vertical-align: middle;
10925
11192
  font-weight: 400;
10926
- border-bottom: var(--border) dashed var(--color-base-content);
10927
- @supports (color: color-mix(in lab, red, red)) {
10928
- border-bottom: var(--border) dashed color-mix(in oklch, var(--color-base-content) 14%, var(--color-base-100));
10929
- }
11193
+ border-bottom: var(--border) solid var(--stipe-hairline-quiet);
10930
11194
  }
10931
11195
  .caps-permission-grid tbody tr:last-child > * {
10932
11196
  border-bottom: 0;
10933
11197
  }
10934
11198
  .caps-permission-grid-index {
10935
- width: 1%;
11199
+ width: 5.5rem;
10936
11200
  white-space: nowrap;
10937
11201
  font-family: var(--font-mono);
10938
11202
  font-size: 0.75rem;
@@ -10941,7 +11205,12 @@
10941
11205
  .caps-permission-grid-index > span {
10942
11206
  display: block;
10943
11207
  }
11208
+ .caps-permission-grid-index {
11209
+ overflow: hidden;
11210
+ }
10944
11211
  .caps-permission-grid-group {
11212
+ overflow: hidden;
11213
+ text-overflow: ellipsis;
10945
11214
  font-size: 0.625rem;
10946
11215
  letter-spacing: 0.08em;
10947
11216
  text-transform: uppercase;
@@ -10989,6 +11258,37 @@
10989
11258
  font-size: 0.75rem;
10990
11259
  opacity: 0.8;
10991
11260
  }
11261
+ @container (width <= 30rem) {
11262
+ .caps-permission-grid-index {
11263
+ display: none;
11264
+ }
11265
+ .caps-permission-grid-col-state {
11266
+ width: 3.25rem;
11267
+ }
11268
+ .caps-permission-grid-col-scope {
11269
+ width: 5.5rem;
11270
+ }
11271
+ .caps-permission-grid-col-control {
11272
+ width: 3.75rem;
11273
+ }
11274
+ .caps-permission-grid thead th, .caps-permission-grid tbody td, .caps-permission-grid tbody th {
11275
+ padding-inline: var(--spacing-xs);
11276
+ }
11277
+ .caps-permission-grid-capability {
11278
+ gap: var(--spacing-xs);
11279
+ }
11280
+ .caps-permission-grid-mark {
11281
+ width: 1.25rem;
11282
+ height: 1.25rem;
11283
+ }
11284
+ .caps-permission-grid-state {
11285
+ font-size: 0.625rem;
11286
+ letter-spacing: 0.02em;
11287
+ }
11288
+ .caps-permission-grid-scope {
11289
+ font-size: 0.6875rem;
11290
+ }
11291
+ }
10992
11292
  .caps-alert {
10993
11293
  display: flex;
10994
11294
  align-items: flex-start;
@@ -11626,7 +11926,7 @@
11626
11926
  }
11627
11927
  .result-state {
11628
11928
  display: grid;
11629
- gap: var(--spacing-md);
11929
+ gap: var(--spacing-sm);
11630
11930
  justify-items: start;
11631
11931
  padding: var(--spacing-xl);
11632
11932
  border: var(--border) solid var(--color-base-300);
@@ -11644,9 +11944,102 @@
11644
11944
  background: var(--color-base-200);
11645
11945
  color: var(--color-base-content);
11646
11946
  }
11647
- .result-state h2 {
11947
+ .result-state > * {
11948
+ margin: 0;
11949
+ }
11950
+ .result-state :is(h2, h3, h4) {
11951
+ display: flex;
11952
+ align-items: center;
11953
+ gap: var(--spacing-sm);
11648
11954
  font-size: var(--text-xl);
11649
- font-weight: 700;
11955
+ font-weight: 600;
11956
+ }
11957
+ .result-state[data-tone="failed"] .result-state-visual {
11958
+ color: var(--color-error);
11959
+ }
11960
+ .result-state[data-tone="done"] .result-state-visual {
11961
+ color: var(--color-success);
11962
+ }
11963
+ .result-state[data-tone="failed"] {
11964
+ border-color: var(--color-error);
11965
+ @supports (color: color-mix(in lab, red, red)) {
11966
+ border-color: color-mix( in oklab, var(--color-error) 45%, var(--color-base-300) );
11967
+ }
11968
+ }
11969
+ .result-state[data-tone="done"] {
11970
+ border-color: var(--color-success);
11971
+ @supports (color: color-mix(in lab, red, red)) {
11972
+ border-color: color-mix( in oklab, var(--color-success) 45%, var(--color-base-300) );
11973
+ }
11974
+ }
11975
+ .result-state-visual {
11976
+ display: grid;
11977
+ place-items: center;
11978
+ max-width: 100%;
11979
+ color: var(--color-primary);
11980
+ }
11981
+ .result-state-steps {
11982
+ display: grid;
11983
+ gap: var(--spacing-xs);
11984
+ margin: 0;
11985
+ padding-inline-start: var(--spacing-lg);
11986
+ font-size: var(--text-sm);
11987
+ list-style: decimal;
11988
+ }
11989
+ .result-state-visual > svg {
11990
+ width: 3rem;
11991
+ height: 3rem;
11992
+ }
11993
+ .caps-loading-state[data-framed="false"] {
11994
+ min-height: 0;
11995
+ padding: 0;
11996
+ border: 0;
11997
+ border-radius: 0;
11998
+ background: transparent;
11999
+ }
12000
+ .caps-loading-state-copy {
12001
+ display: grid;
12002
+ flex: 0 1 auto;
12003
+ min-width: 0;
12004
+ gap: var(--spacing-2xs);
12005
+ }
12006
+ .caps-loading-state > .caps-loader {
12007
+ width: 4rem;
12008
+ }
12009
+ .caps-loading-state[data-size="sm"] > .caps-loader {
12010
+ width: 2rem;
12011
+ }
12012
+ .caps-loading-state[data-size="lg"] > .caps-loader {
12013
+ width: 7rem;
12014
+ }
12015
+ .caps-loading-state[data-icon] {
12016
+ flex-direction: column;
12017
+ justify-content: center;
12018
+ gap: var(--spacing-sm);
12019
+ text-align: center;
12020
+ }
12021
+ .caps-loading-state[data-icon] > .caps-loader {
12022
+ width: auto;
12023
+ }
12024
+ .caps-loading-state-icon {
12025
+ display: grid;
12026
+ place-items: center;
12027
+ width: 3rem;
12028
+ height: 3rem;
12029
+ }
12030
+ .caps-loading-state-icon > svg {
12031
+ width: 100%;
12032
+ height: 100%;
12033
+ }
12034
+ .caps-loading-state-retry {
12035
+ flex: none;
12036
+ }
12037
+ .caps-loading-state-detail {
12038
+ color: var(--stipe-fg-muted);
12039
+ font-size: var(--text-sm);
12040
+ }
12041
+ .caps-loading-state[data-size="lg"] {
12042
+ min-height: 6rem;
11650
12043
  }
11651
12044
  .result-state-actions {
11652
12045
  display: flex;
@@ -12231,7 +12624,7 @@
12231
12624
  }
12232
12625
  .caps-pricing-card-banded .caps-pricing-card-description {
12233
12626
  padding-bottom: var(--spacing-md);
12234
- border-bottom: var(--border) solid var(--stipe-hairline);
12627
+ border-bottom: var(--border) solid var(--stipe-hairline-quiet);
12235
12628
  color: var(--color-base-content);
12236
12629
  font-size: var(--text-base);
12237
12630
  }
@@ -12499,7 +12892,7 @@
12499
12892
  border-top: calc(var(--border) * 2) solid var(--color-base-content);
12500
12893
  }
12501
12894
  .caps-spec-faq-item {
12502
- border-bottom: var(--border) solid var(--stipe-hairline);
12895
+ border-bottom: var(--border) solid var(--stipe-hairline-quiet);
12503
12896
  }
12504
12897
  .caps-spec-faq-question {
12505
12898
  display: grid;
@@ -13830,6 +14223,26 @@
13830
14223
  .caps-button:disabled {
13831
14224
  opacity: 1;
13832
14225
  }
14226
+ .caps-button[aria-busy="true"]:is(:disabled, [aria-disabled="true"]) {
14227
+ cursor: progress;
14228
+ }
14229
+ .caps-button > .caps-loader {
14230
+ width: 1.25rem;
14231
+ height: 1.25rem;
14232
+ margin-inline-end: calc(var(--spacing-xs) * -0.5);
14233
+ }
14234
+ .caps-button-filled[aria-busy="true"]:is(:disabled, [aria-disabled="true"]) {
14235
+ opacity: 1;
14236
+ background-color: var(--btn-bg);
14237
+ color: var(--btn-fg);
14238
+ border-color: var(--caps-button-filled-edge);
14239
+ box-shadow: var(--caps-button-filled-drop);
14240
+ }
14241
+ .caps-button.btn-outline[aria-busy="true"]:is( :disabled, [aria-disabled="true"] ) {
14242
+ background-color: var(--caps-key-face);
14243
+ color: var(--caps-button-outline-ink, var(--color-base-content));
14244
+ outline: none;
14245
+ }
13833
14246
  .caps-button-filled, .caps-button.btn-outline {
13834
14247
  border-width: var(--caps-button-border-width, var(--border));
13835
14248
  font-weight: var(--caps-button-weight, 600);
@@ -15633,7 +16046,7 @@
15633
16046
  .empty-state-panel .empty-state-title, .empty-state-bubble .empty-state-title {
15634
16047
  margin: 0;
15635
16048
  font-size: var(--text-lg);
15636
- font-weight: 800;
16049
+ font-weight: 600;
15637
16050
  line-height: 1.25;
15638
16051
  text-wrap: balance;
15639
16052
  }
@@ -15654,11 +16067,38 @@
15654
16067
  .empty-state-panel .empty-state-actions {
15655
16068
  justify-content: center;
15656
16069
  }
16070
+ .empty-state-panel > .empty-state-visual {
16071
+ min-height: 0;
16072
+ margin-block-end: 0;
16073
+ }
16074
+ .empty-state-suggestions .caps-button {
16075
+ min-height: 2rem;
16076
+ height: 2rem;
16077
+ font-size: var(--text-xs);
16078
+ }
16079
+ .empty-state-suggestions .caps-button:is(:disabled, [aria-disabled="true"]):not([aria-busy="true"]) {
16080
+ opacity: 0.5;
16081
+ outline: none;
16082
+ box-shadow: none;
16083
+ }
16084
+ .empty-state-primary {
16085
+ display: grid;
16086
+ justify-items: start;
16087
+ gap: var(--spacing-2xs);
16088
+ margin-block-start: var(--spacing-sm);
16089
+ }
16090
+ .empty-state-panel .empty-state-primary {
16091
+ justify-items: center;
16092
+ }
16093
+ .empty-state-reason {
16094
+ color: var(--stipe-fg-muted);
16095
+ font-size: var(--text-sm);
16096
+ }
15657
16097
  .empty-state-suggestions {
15658
16098
  display: flex;
15659
16099
  flex-wrap: wrap;
15660
- gap: var(--spacing-xs);
15661
- margin: var(--spacing-xs) 0 0;
16100
+ gap: var(--spacing-sm);
16101
+ margin: var(--spacing-sm) 0 0;
15662
16102
  padding: 0;
15663
16103
  list-style: none;
15664
16104
  }
@@ -15834,7 +16274,7 @@
15834
16274
  margin: 0;
15835
16275
  color: var(--color-base-content);
15836
16276
  font-size: var(--text-sm);
15837
- font-weight: 700;
16277
+ font-weight: 600;
15838
16278
  }
15839
16279
  .empty-state-hint p {
15840
16280
  max-width: 30rem;
@@ -15857,7 +16297,7 @@
15857
16297
  margin: 0;
15858
16298
  color: var(--color-base-content);
15859
16299
  font-size: var(--text-sm);
15860
- font-weight: 700;
16300
+ font-weight: 600;
15861
16301
  line-height: 1.5;
15862
16302
  }
15863
16303
  .empty-state-quiet > p {
@@ -16547,6 +16987,23 @@
16547
16987
  min-width: var(--caps-keycap-label-min-width, auto);
16548
16988
  line-height: var(--caps-keycap-label-line-height, inherit);
16549
16989
  }
16990
+ .caps-keycap[data-size="hint"] {
16991
+ display: inline-block;
16992
+ min-width: 0;
16993
+ min-height: 0;
16994
+ margin-inline: var(--spacing-2xs);
16995
+ padding: 0 var(--spacing-2xs);
16996
+ border-radius: var(--radius-selector);
16997
+ border-color: var(--stipe-hairline-quiet);
16998
+ background: transparent;
16999
+ box-shadow: none;
17000
+ color: var(--color-base-content);
17001
+ @supports (color: color-mix(in lab, red, red)) {
17002
+ color: color-mix(in oklab, var(--color-base-content) 65%, transparent);
17003
+ }
17004
+ font-size: var(--text-xs);
17005
+ line-height: 1.25;
17006
+ }
16550
17007
  .caps-keycap-button .caps-keycap {
16551
17008
  flex: var(--caps-keycap-shortcut-flex, 0 1 auto);
16552
17009
  min-width: var( --caps-keycap-shortcut-size, var(--caps-keycap-legend-min-size, 2rem) );