@skdx/docs-kit 0.39.0 → 0.40.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 (142) hide show
  1. package/dist/data/angular-inputs.json +1 -1
  2. package/dist/data/api-manifest.json +1 -1
  3. package/dist/shared/contracts/accordion.js +1 -1
  4. package/dist/shared/contracts/alert.js +1 -1
  5. package/dist/shared/contracts/autocomplete.d.ts +1 -1
  6. package/dist/shared/contracts/autocomplete.js +1 -1
  7. package/dist/shared/contracts/avatar.js +1 -1
  8. package/dist/shared/contracts/breadcrumb.js +1 -1
  9. package/dist/shared/contracts/button.js +1 -1
  10. package/dist/shared/contracts/calendar.js +1 -1
  11. package/dist/shared/contracts/card.js +1 -1
  12. package/dist/shared/contracts/carousel.js +1 -1
  13. package/dist/shared/contracts/checkbox-card.js +1 -1
  14. package/dist/shared/contracts/checkbox-group.js +1 -1
  15. package/dist/shared/contracts/collapsible.js +1 -1
  16. package/dist/shared/contracts/combobox.js +1 -1
  17. package/dist/shared/contracts/command.js +1 -1
  18. package/dist/shared/contracts/dashboard-layout.js +1 -1
  19. package/dist/shared/contracts/date-picker.js +1 -1
  20. package/dist/shared/contracts/dialog.d.ts +1 -1
  21. package/dist/shared/contracts/dialog.js +1 -1
  22. package/dist/shared/contracts/drawer.d.ts +1 -1
  23. package/dist/shared/contracts/drawer.js +1 -1
  24. package/dist/shared/contracts/field.js +1 -1
  25. package/dist/shared/contracts/file-upload.js +1 -1
  26. package/dist/shared/contracts/floating-panel.js +1 -1
  27. package/dist/shared/contracts/form.js +1 -1
  28. package/dist/shared/contracts/image.js +1 -1
  29. package/dist/shared/contracts/listbox.js +1 -1
  30. package/dist/shared/contracts/loading-overlay.js +1 -1
  31. package/dist/shared/contracts/mentions.js +1 -1
  32. package/dist/shared/contracts/menu.js +1 -1
  33. package/dist/shared/contracts/menubar.js +1 -1
  34. package/dist/shared/contracts/navigation-menu.js +1 -1
  35. package/dist/shared/contracts/pagination.js +1 -1
  36. package/dist/shared/contracts/password-input.js +1 -1
  37. package/dist/shared/contracts/popover.js +1 -1
  38. package/dist/shared/contracts/progress.js +1 -1
  39. package/dist/shared/contracts/qr-code.js +1 -1
  40. package/dist/shared/contracts/radio-card.js +1 -1
  41. package/dist/shared/contracts/radio-group.js +1 -1
  42. package/dist/shared/contracts/rating.js +1 -1
  43. package/dist/shared/contracts/resizable.js +1 -1
  44. package/dist/shared/contracts/scroll-area.js +1 -1
  45. package/dist/shared/contracts/select.js +1 -1
  46. package/dist/shared/contracts/slider.js +1 -1
  47. package/dist/shared/contracts/speed-dial.js +1 -1
  48. package/dist/shared/contracts/split-button.js +1 -1
  49. package/dist/shared/contracts/stepper.js +1 -1
  50. package/dist/shared/contracts/switch.js +1 -1
  51. package/dist/shared/contracts/table.js +3 -1
  52. package/dist/shared/contracts/tabs.js +1 -1
  53. package/dist/shared/contracts/tag-group.js +1 -1
  54. package/dist/shared/contracts/tags-input.js +1 -1
  55. package/dist/shared/contracts/text-field.js +1 -1
  56. package/dist/shared/contracts/textarea.js +1 -1
  57. package/dist/shared/contracts/timeline.js +1 -1
  58. package/dist/shared/contracts/toast.js +9 -1
  59. package/dist/shared/contracts/toolbar.js +1 -1
  60. package/dist/shared/contracts/tour.js +1 -1
  61. package/dist/shared/contracts/transfer.js +1 -1
  62. package/dist/shared/contracts/tree-select.js +1 -1
  63. package/dist/shared/contracts/tree.js +1 -1
  64. package/dist/shared/contracts/types.d.ts +2 -0
  65. package/dist/shared/contracts/workspace-switcher.js +1 -1
  66. package/dist/shared/core/field-core.d.ts +2 -0
  67. package/dist/shared/core/field-core.js +1 -1
  68. package/dist/skins-src/_foundation-fallback.css +2 -1
  69. package/dist/skins-src/components/_actuator.css +1 -1
  70. package/dist/skins-src/components/_card-control.css +1 -1
  71. package/dist/skins-src/components/_collection.css +2 -2
  72. package/dist/skins-src/components/_overlay.css +1 -1
  73. package/dist/skins-src/components/_trigger.css +1 -1
  74. package/dist/skins-src/components/accordion.css +1 -1
  75. package/dist/skins-src/components/alert.css +2 -2
  76. package/dist/skins-src/components/autocomplete.css +1 -1
  77. package/dist/skins-src/components/avatar.css +1 -1
  78. package/dist/skins-src/components/badge.css +1 -1
  79. package/dist/skins-src/components/button.css +1 -1
  80. package/dist/skins-src/components/calendar.css +8 -6
  81. package/dist/skins-src/components/card.css +1 -1
  82. package/dist/skins-src/components/carousel.css +1 -1
  83. package/dist/skins-src/components/chat-composer.css +1 -1
  84. package/dist/skins-src/components/chat-message.css +1 -1
  85. package/dist/skins-src/components/checkbox-card.css +2 -2
  86. package/dist/skins-src/components/checkbox.css +1 -1
  87. package/dist/skins-src/components/clipboard.css +2 -2
  88. package/dist/skins-src/components/color-picker.css +4 -4
  89. package/dist/skins-src/components/combobox.css +2 -2
  90. package/dist/skins-src/components/command.css +1 -1
  91. package/dist/skins-src/components/dashboard-layout.css +1 -1
  92. package/dist/skins-src/components/date-field.css +2 -2
  93. package/dist/skins-src/components/dialog.css +4 -4
  94. package/dist/skins-src/components/drawer.css +9 -9
  95. package/dist/skins-src/components/editable.css +3 -3
  96. package/dist/skins-src/components/file-upload.css +4 -4
  97. package/dist/skins-src/components/floating-panel.css +1 -1
  98. package/dist/skins-src/components/forgot-password-page.css +1 -1
  99. package/dist/skins-src/components/form-section.css +1 -1
  100. package/dist/skins-src/components/form.css +12 -2
  101. package/dist/skins-src/components/image.css +1 -1
  102. package/dist/skins-src/components/kbd.css +1 -1
  103. package/dist/skins-src/components/link.css +1 -1
  104. package/dist/skins-src/components/listbox.css +1 -1
  105. package/dist/skins-src/components/mentions.css +1 -1
  106. package/dist/skins-src/components/menubar.css +2 -2
  107. package/dist/skins-src/components/navigation-menu.css +1 -1
  108. package/dist/skins-src/components/number-field.css +1 -1
  109. package/dist/skins-src/components/onboarding-checklist.css +1 -1
  110. package/dist/skins-src/components/pagination.css +2 -2
  111. package/dist/skins-src/components/password-input.css +80 -16
  112. package/dist/skins-src/components/pin-input.css +2 -2
  113. package/dist/skins-src/components/popover.css +1 -1
  114. package/dist/skins-src/components/qr-code.css +2 -2
  115. package/dist/skins-src/components/radio-card.css +1 -1
  116. package/dist/skins-src/components/reset-password-page.css +1 -1
  117. package/dist/skins-src/components/select.css +3 -3
  118. package/dist/skins-src/components/sign-in-page.css +1 -1
  119. package/dist/skins-src/components/sign-up-page.css +1 -1
  120. package/dist/skins-src/components/skeleton.css +1 -1
  121. package/dist/skins-src/components/skip-link.css +1 -1
  122. package/dist/skins-src/components/speed-dial.css +3 -3
  123. package/dist/skins-src/components/stat-card.css +6 -1
  124. package/dist/skins-src/components/stepper.css +3 -1
  125. package/dist/skins-src/components/switch.css +21 -1
  126. package/dist/skins-src/components/table.css +4 -4
  127. package/dist/skins-src/components/tags-input.css +2 -2
  128. package/dist/skins-src/components/text-field.css +26 -21
  129. package/dist/skins-src/components/text.css +1 -1
  130. package/dist/skins-src/components/textarea.css +1 -1
  131. package/dist/skins-src/components/time-field.css +2 -2
  132. package/dist/skins-src/components/toast.css +2 -2
  133. package/dist/skins-src/components/toggle-group.css +3 -3
  134. package/dist/skins-src/components/toggle.css +1 -1
  135. package/dist/skins-src/components/toolbar.css +2 -2
  136. package/dist/skins-src/components/tree-select.css +2 -2
  137. package/dist/skins-src/components/tree.css +1 -1
  138. package/dist/skins-src/components/usage-card.css +1 -1
  139. package/dist/skins-src/components/user-menu.css +1 -1
  140. package/dist/skins-src/components/verification-page.css +1 -1
  141. package/dist/skins-src/components/workspace-switcher.css +2 -2
  142. package/package.json +14 -14
@@ -21,7 +21,7 @@
21
21
 
22
22
  background-color: var(--skdx-color-field-bg);
23
23
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
24
- border-radius: var(--skdx-radius-md);
24
+ border-radius: var(--skdx-radius-default);
25
25
  font-variant-numeric: tabular-nums;
26
26
  }
27
27
 
@@ -61,7 +61,7 @@
61
61
 
62
62
  :where(.skdx-date-field__segment) {
63
63
  padding-inline: var(--skdx-space-1);
64
- border-radius: var(--skdx-radius-sm);
64
+ border-radius: var(--skdx-radius-default);
65
65
  font-size: var(--skdx-font-size-sm);
66
66
  color: var(--skdx-color-field-text);
67
67
  /* Segments are typed into, not selected — the caret would be misleading. */
@@ -23,7 +23,7 @@
23
23
 
24
24
  padding: var(--skdx-space-6);
25
25
  gap: var(--skdx-space-4);
26
- border-radius: var(--skdx-overlay-radius);
26
+ border-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
27
27
  z-index: var(--skdx-z-index-modal);
28
28
  }
29
29
 
@@ -115,7 +115,7 @@
115
115
  color: var(--skdx-color-text-muted);
116
116
  background: transparent;
117
117
  border: 0;
118
- border-radius: var(--skdx-radius-sm);
118
+ border-radius: var(--skdx-radius-default);
119
119
  cursor: pointer;
120
120
  }
121
121
 
@@ -134,8 +134,8 @@
134
134
  inset-block-end: 0;
135
135
  inset-inline-start: 0;
136
136
  translate: none;
137
- border-start-start-radius: var(--skdx-overlay-radius);
138
- border-start-end-radius: var(--skdx-overlay-radius);
137
+ border-start-start-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
138
+ border-start-end-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
139
139
  border-end-start-radius: 0;
140
140
  border-end-end-radius: 0;
141
141
  }
@@ -36,32 +36,32 @@
36
36
  inset-block: 0;
37
37
  left: 0;
38
38
  inline-size: min(20rem, 90vw);
39
- border-top-right-radius: var(--skdx-overlay-radius);
40
- border-bottom-right-radius: var(--skdx-overlay-radius);
39
+ border-top-right-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
40
+ border-bottom-right-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
41
41
  }
42
42
 
43
43
  :where(.skdx-drawer__content)[data-side='right'] {
44
44
  inset-block: 0;
45
45
  right: 0;
46
46
  inline-size: min(20rem, 90vw);
47
- border-top-left-radius: var(--skdx-overlay-radius);
48
- border-bottom-left-radius: var(--skdx-overlay-radius);
47
+ border-top-left-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
48
+ border-bottom-left-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
49
49
  }
50
50
 
51
51
  :where(.skdx-drawer__content)[data-side='top'] {
52
52
  inset-inline: 0;
53
53
  inset-block-start: 0;
54
54
  block-size: auto;
55
- border-end-start-radius: var(--skdx-overlay-radius);
56
- border-end-end-radius: var(--skdx-overlay-radius);
55
+ border-end-start-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
56
+ border-end-end-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
57
57
  }
58
58
 
59
59
  :where(.skdx-drawer__content)[data-side='bottom'] {
60
60
  inset-inline: 0;
61
61
  inset-block-end: 0;
62
62
  block-size: auto;
63
- border-start-start-radius: var(--skdx-overlay-radius);
64
- border-start-end-radius: var(--skdx-overlay-radius);
63
+ border-start-start-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
64
+ border-start-end-radius: var(--skdx-overlay-radius, var(--skdx-radius-default));
65
65
  }
66
66
 
67
67
  /* Sized on the axis the panel isn't pinned along: left/right drawers size on inline-size, top/bottom on block-size, each split per side/size pair. */
@@ -160,7 +160,7 @@
160
160
  color: var(--skdx-color-text-muted);
161
161
  background: transparent;
162
162
  border: 0;
163
- border-radius: var(--skdx-radius-sm);
163
+ border-radius: var(--skdx-radius-default);
164
164
  cursor: pointer;
165
165
  }
166
166
  }
@@ -29,7 +29,7 @@
29
29
  padding-inline: var(--skdx-space-2);
30
30
  padding-block: var(--skdx-space-1);
31
31
  border: var(--skdx-border-width-thin) solid transparent;
32
- border-radius: var(--skdx-radius-sm);
32
+ border-radius: var(--skdx-radius-default);
33
33
  font-size: var(--skdx-font-size-sm);
34
34
  cursor: text;
35
35
  }
@@ -67,7 +67,7 @@
67
67
  color: var(--skdx-color-field-text);
68
68
  background-color: var(--skdx-color-field-bg);
69
69
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border-focus);
70
- border-radius: var(--skdx-radius-sm);
70
+ border-radius: var(--skdx-radius-default);
71
71
  font-size: var(--skdx-font-size-sm);
72
72
  }
73
73
 
@@ -77,7 +77,7 @@
77
77
  color: var(--skdx-color-field-text);
78
78
  background-color: var(--skdx-color-field-bg);
79
79
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
80
- border-radius: var(--skdx-radius-sm);
80
+ border-radius: var(--skdx-radius-default);
81
81
  font: inherit;
82
82
  resize: vertical;
83
83
  }
@@ -29,7 +29,7 @@
29
29
  color: var(--skdx-color-text-muted);
30
30
  background-color: var(--skdx-color-surface-default);
31
31
  border: var(--skdx-border-width-thick) dashed var(--skdx-color-border-default);
32
- border-radius: var(--skdx-radius-lg);
32
+ border-radius: var(--skdx-radius-default);
33
33
 
34
34
  cursor: pointer;
35
35
  transition:
@@ -69,7 +69,7 @@
69
69
 
70
70
  background-color: var(--skdx-color-surface-default);
71
71
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
72
- border-radius: var(--skdx-radius-md);
72
+ border-radius: var(--skdx-radius-default);
73
73
  }
74
74
 
75
75
  :where(.skdx-file-upload__item)[data-invalid] {
@@ -81,7 +81,7 @@
81
81
  color: var(--skdx-color-text-muted);
82
82
  background: transparent;
83
83
  border: 0;
84
- border-radius: var(--skdx-radius-sm);
84
+ border-radius: var(--skdx-radius-default);
85
85
  cursor: pointer;
86
86
  }
87
87
 
@@ -148,7 +148,7 @@
148
148
  color: var(--skdx-color-text-muted);
149
149
  background: none;
150
150
  border: 0;
151
- border-radius: var(--skdx-radius-sm);
151
+ border-radius: var(--skdx-radius-default);
152
152
  font-size: var(--skdx-font-size-sm);
153
153
  cursor: pointer;
154
154
  }
@@ -62,7 +62,7 @@
62
62
  color: var(--skdx-color-text-muted);
63
63
  background: transparent;
64
64
  border: 0;
65
- border-radius: var(--skdx-radius-sm);
65
+ border-radius: var(--skdx-radius-default);
66
66
  cursor: pointer;
67
67
  }
68
68
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  background-color: var(--skdx-color-surface-raised);
28
28
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
29
- border-radius: var(--skdx-radius-lg);
29
+ border-radius: var(--skdx-radius-default);
30
30
  box-shadow: var(--skdx-shadow-md);
31
31
  }
32
32
 
@@ -47,7 +47,7 @@
47
47
  :where(.skdx-form-section)[data-variant='bordered'] {
48
48
  padding: var(--skdx-space-5);
49
49
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
50
- border-radius: var(--skdx-radius-lg);
50
+ border-radius: var(--skdx-radius-default);
51
51
  background-color: var(--skdx-color-surface-raised);
52
52
  }
53
53
 
@@ -39,7 +39,7 @@
39
39
  background-color: var(--skdx-color-status-danger-bg);
40
40
  border: var(--skdx-border-width-thin) solid var(--skdx-color-status-danger-border);
41
41
  border-inline-start-width: var(--skdx-border-width-thicker);
42
- border-radius: var(--skdx-radius-md);
42
+ border-radius: var(--skdx-radius-default);
43
43
 
44
44
  font-size: var(--skdx-font-size-sm);
45
45
  }
@@ -82,7 +82,7 @@
82
82
 
83
83
  background-color: var(--skdx-color-field-bg);
84
84
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
85
- border-radius: var(--skdx-radius-md);
85
+ border-radius: var(--skdx-radius-default);
86
86
  }
87
87
 
88
88
  /* Never colour alone — wired to the control with `aria-describedby` so it's announced too. */
@@ -92,6 +92,16 @@
92
92
  color: var(--skdx-color-text-danger);
93
93
  }
94
94
 
95
+ /* A catch-all with no copy stays in the DOM as the Control's fallback
96
+ `aria-describedby` target, so it must not take a Field gap of its own once the
97
+ field goes invalid. `display: none` leaves that IDREF resolvable, and `:empty`
98
+ never matches a message that has something to announce. `skdx-form-message` is
99
+ excluded because its copy can live in a shadow root — an empty light DOM says
100
+ nothing about what it shows; both implementations hide themselves instead. */
101
+ :where(.skdx-form__message):empty:not(skdx-form-message) {
102
+ display: none;
103
+ }
104
+
95
105
  /* Underlined since it sits on a coloured wash where colour alone can't mark
96
106
  a link. `inline-block`, not `inline`: transforms (the shared pressed cue)
97
107
  don't apply to non-replaced inline boxes. */
@@ -13,7 +13,7 @@
13
13
  */
14
14
  @layer skdx-components {
15
15
  :where(.skdx-image, .skdx-image__fallback) {
16
- --skdx-image-radius: 0px;
16
+ --skdx-image-radius: var(--skdx-radius-default);
17
17
 
18
18
  border-radius: var(--skdx-image-radius);
19
19
  }
@@ -31,7 +31,7 @@
31
31
  /* Logical, so the "sitting on the page" edge stays on the correct side
32
32
  when the document direction flips. */
33
33
  border-block-end-width: var(--skdx-border-width-thick);
34
- border-radius: var(--skdx-radius-sm);
34
+ border-radius: var(--skdx-radius-default);
35
35
  }
36
36
 
37
37
  /* Sizes here. Only `font-size` and `padding-inline` move: the cap's height
@@ -20,7 +20,7 @@
20
20
 
21
21
  color: var(--skdx-link-color);
22
22
  text-underline-offset: var(--skdx-link-underline-offset);
23
- border-radius: var(--skdx-radius-sm);
23
+ border-radius: var(--skdx-radius-default);
24
24
  }
25
25
 
26
26
  :where(.skdx-link):visited {
@@ -22,7 +22,7 @@
22
22
 
23
23
  background-color: var(--skdx-color-field-bg);
24
24
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
25
- border-radius: var(--skdx-radius-md);
25
+ border-radius: var(--skdx-radius-default);
26
26
  }
27
27
 
28
28
  /* `orientation` is a component prop, not a skin attribute — it
@@ -32,7 +32,7 @@
32
32
  color: var(--skdx-color-field-text);
33
33
  background-color: var(--skdx-color-field-bg);
34
34
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
35
- border-radius: var(--skdx-radius-md);
35
+ border-radius: var(--skdx-radius-default);
36
36
  font-size: var(--skdx-font-size-sm);
37
37
  line-height: var(--skdx-font-line-height-normal);
38
38
 
@@ -27,7 +27,7 @@
27
27
  padding: var(--skdx-menubar-rhythm);
28
28
  background-color: var(--skdx-color-surface-default);
29
29
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
30
- border-radius: var(--skdx-radius-md);
30
+ border-radius: var(--skdx-radius-default);
31
31
  }
32
32
 
33
33
  :where(.skdx-menubar)[data-size='sm'] {
@@ -73,7 +73,7 @@
73
73
 
74
74
  background: transparent;
75
75
  border: 0;
76
- border-radius: var(--skdx-radius-sm);
76
+ border-radius: var(--skdx-radius-default);
77
77
  cursor: pointer;
78
78
  }
79
79
 
@@ -55,7 +55,7 @@
55
55
  color: var(--skdx-color-text-default);
56
56
  background: transparent;
57
57
  border: 0;
58
- border-radius: var(--skdx-radius-md);
58
+ border-radius: var(--skdx-radius-default);
59
59
 
60
60
  font-size: var(--skdx-font-size-sm);
61
61
  font-weight: var(--skdx-font-weight-medium);
@@ -38,7 +38,7 @@
38
38
 
39
39
  background-color: var(--skdx-color-field-bg);
40
40
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
41
- border-radius: var(--skdx-radius-md);
41
+ border-radius: var(--skdx-radius-default);
42
42
  overflow: hidden;
43
43
  --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
44
44
  }
@@ -17,7 +17,7 @@
17
17
 
18
18
  background-color: var(--skdx-color-surface-raised);
19
19
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
20
- border-radius: var(--skdx-radius-lg);
20
+ border-radius: var(--skdx-radius-default);
21
21
  box-shadow: var(--skdx-shadow-sm);
22
22
  color: var(--skdx-color-text-default);
23
23
  }
@@ -50,7 +50,7 @@
50
50
  color: var(--skdx-color-text-default);
51
51
  background: transparent;
52
52
  border: var(--skdx-border-width-thin) solid transparent;
53
- border-radius: var(--skdx-radius-md);
53
+ border-radius: var(--skdx-radius-default);
54
54
 
55
55
  font-size: var(--skdx-pagination-font-size, var(--skdx-font-size-sm));
56
56
  font-variant-numeric: tabular-nums;
@@ -129,7 +129,7 @@
129
129
  color: var(--skdx-color-text-default);
130
130
  background: transparent;
131
131
  border: var(--skdx-border-width-thin) solid transparent;
132
- border-radius: var(--skdx-radius-md);
132
+ border-radius: var(--skdx-radius-default);
133
133
  font-size: var(--skdx-pagination-font-size, var(--skdx-font-size-sm));
134
134
  cursor: pointer;
135
135
  }
@@ -49,25 +49,19 @@
49
49
  color: var(--skdx-color-field-text);
50
50
  background-color: var(--skdx-color-field-bg);
51
51
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
52
- border-radius: var(--skdx-radius-md);
52
+ border-radius: var(--skdx-radius-default);
53
53
  font-size: var(--skdx-password-input-font-size, var(--skdx-font-size-sm));
54
54
  }
55
55
 
56
- :where(.skdx-password-input__field):focus-visible {
56
+ :where(.skdx-password-input__field):focus-visible,
57
+ :where(.skdx-password-input__field:has(> input:focus-visible)) {
57
58
  border-color: var(--skdx-color-field-border-focus);
58
59
  }
59
60
 
60
- :where(.skdx-password-input__field)[data-invalid] {
61
- border-color: var(--skdx-color-field-border-invalid);
62
- border-width: var(--skdx-border-width-thick);
63
- }
64
-
65
- :where(.skdx-password-input__field):disabled,
66
- :where(.skdx-password-input__field)[data-disabled] {
67
- color: var(--skdx-color-text-disabled);
68
- background-color: var(--skdx-color-field-bg-disabled);
69
- border-color: var(--skdx-color-border-disabled);
70
- cursor: not-allowed;
61
+ /* Web Components paint the field on the host around a reset native input. */
62
+ :where(.skdx-password-input__field):has(> input:focus-visible) {
63
+ outline: var(--skdx-focus-ring-width) solid var(--skdx-color-focus-ring);
64
+ outline-offset: var(--skdx-focus-ring-offset);
71
65
  }
72
66
 
73
67
  :where(.skdx-password-input)[data-variant='filled'] :where(.skdx-password-input__field),
@@ -83,11 +77,28 @@
83
77
  }
84
78
 
85
79
  :where(.skdx-password-input)[data-variant='ghost']
86
- :where(.skdx-password-input__field):hover:not(:disabled, :read-only),
87
- :where(.skdx-password-input__field)[data-variant='ghost']:hover:not(:disabled, :read-only) {
80
+ :where(.skdx-password-input__field):where(
81
+ :hover:not(:disabled, :read-only, [data-disabled], [data-readonly])
82
+ ),
83
+ :where(.skdx-password-input__field)[data-variant='ghost']:where(
84
+ :hover:not(:disabled, :read-only, [data-disabled], [data-readonly])
85
+ ) {
88
86
  border-color: var(--skdx-color-field-border-hover);
89
87
  }
90
88
 
89
+ :where(.skdx-password-input__field)[data-invalid] {
90
+ border-color: var(--skdx-color-field-border-invalid);
91
+ border-width: var(--skdx-border-width-thick);
92
+ }
93
+
94
+ :where(.skdx-password-input__field):disabled,
95
+ :where(.skdx-password-input__field)[data-disabled] {
96
+ color: var(--skdx-color-text-disabled);
97
+ background-color: var(--skdx-color-field-bg-disabled);
98
+ border-color: var(--skdx-color-border-disabled);
99
+ cursor: not-allowed;
100
+ }
101
+
91
102
  :where(.skdx-password-input__toggle) {
92
103
  position: absolute;
93
104
  inset-inline-end: 0;
@@ -106,11 +117,64 @@
106
117
  color: var(--skdx-color-text-muted);
107
118
  background: transparent;
108
119
  border: 0;
109
- border-radius: var(--skdx-radius-sm);
120
+ border-radius: var(--skdx-radius-default);
110
121
  cursor: pointer;
111
122
  }
112
123
 
113
124
  :where(.skdx-password-input__toggle):hover {
114
125
  color: var(--skdx-color-text-default);
115
126
  }
127
+
128
+ /* Keep the reveal toggle in the field's grid area when a clear action
129
+ occupies its own column. Absolute positioning against the whole root
130
+ would put the two buttons on top of each other. */
131
+ :where(.skdx-password-input):has(.skdx-text-field__clear-button:not([hidden])) {
132
+ display: grid;
133
+ grid-template-columns: minmax(0, 1fr) auto;
134
+ grid-template-areas: 'field clear';
135
+ column-gap: var(--skdx-control-gap-md);
136
+ }
137
+
138
+ :where(.skdx-password-input):has(.skdx-text-field__clear-button:not([hidden])):has(
139
+ .skdx-text-field__slot
140
+ ) {
141
+ grid-template-columns: auto minmax(0, 1fr) auto;
142
+ grid-template-areas: 'leading field clear';
143
+ }
144
+
145
+ :where(.skdx-password-input):has(.skdx-text-field__clear-button:not([hidden]))
146
+ :where(.skdx-text-field__slot) {
147
+ grid-area: leading;
148
+ }
149
+
150
+ :where(.skdx-password-input):has(.skdx-text-field__clear-button:not([hidden]))
151
+ :where(.skdx-password-input__field) {
152
+ grid-area: field;
153
+ min-inline-size: 0;
154
+ }
155
+
156
+ :where(.skdx-password-input):has(.skdx-text-field__clear-button:not([hidden]))
157
+ :where(.skdx-password-input__toggle) {
158
+ grid-area: field;
159
+ position: relative;
160
+ inset-inline-end: auto;
161
+ justify-self: end;
162
+ }
163
+
164
+ :where(.skdx-password-input) :where(.skdx-text-field__clear-button) {
165
+ grid-area: clear;
166
+ }
167
+
168
+ /* Web Components place the slotted parts inside a shadow wrapper. That
169
+ wrapper, rather than its outer host, must own the same grid. */
170
+ :where(skdx-password-input):has(.skdx-text-field__clear-button:not([hidden])) {
171
+ display: block;
172
+ }
173
+
174
+ :where(skdx-password-input):has(.skdx-text-field__clear-button:not([hidden]))::part(root) {
175
+ display: grid;
176
+ grid-template-columns: inherit;
177
+ grid-template-areas: inherit;
178
+ column-gap: inherit;
179
+ }
116
180
  }
@@ -46,7 +46,7 @@
46
46
 
47
47
  :where(.skdx-pin-input),
48
48
  :where(.skdx-pin-input)[data-shape='rounded'] {
49
- --skdx-pin-input-radius: var(--skdx-radius-md);
49
+ --skdx-pin-input-radius: var(--skdx-radius-default);
50
50
  }
51
51
 
52
52
  :where(.skdx-pin-input)[data-shape='square'] {
@@ -76,7 +76,7 @@
76
76
  color: var(--skdx-color-field-text);
77
77
  background-color: var(--skdx-color-field-bg);
78
78
  border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
79
- border-radius: var(--skdx-pin-input-radius, var(--skdx-radius-md));
79
+ border-radius: var(--skdx-pin-input-radius, var(--skdx-radius-default));
80
80
 
81
81
  font-size: var(--skdx-pin-input-font-size, var(--skdx-font-size-lg));
82
82
  /* One glyph per box, centred, same width for every digit. */
@@ -48,7 +48,7 @@
48
48
  color: var(--skdx-color-text-on-inverse);
49
49
  background-color: var(--skdx-color-surface-inverse);
50
50
  border: 0;
51
- border-radius: var(--skdx-radius-md);
51
+ border-radius: var(--skdx-radius-default);
52
52
  box-shadow: var(--skdx-shadow-md);
53
53
 
54
54
  font-size: var(--skdx-font-size-xs);
@@ -18,7 +18,7 @@
18
18
  /* The mandatory quiet zone. */
19
19
  padding: var(--skdx-space-2);
20
20
  background-color: var(--skdx-color-neutral-50);
21
- border-radius: var(--skdx-radius-sm);
21
+ border-radius: var(--skdx-radius-default);
22
22
  }
23
23
 
24
24
  :where(.skdx-qr-code__pattern) {
@@ -57,6 +57,6 @@
57
57
  block-size: calc(var(--skdx-qr-code-size, 21) * 4px);
58
58
  padding: var(--skdx-space-3);
59
59
  background-color: var(--skdx-color-neutral-50);
60
- border-radius: var(--skdx-radius-md);
60
+ border-radius: var(--skdx-radius-default);
61
61
  }
62
62
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  background-color: var(--skdx-color-surface-raised);
20
20
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
21
- border-radius: var(--skdx-radius-md);
21
+ border-radius: var(--skdx-radius-default);
22
22
  cursor: pointer;
23
23
 
24
24
  transition:
@@ -26,7 +26,7 @@
26
26
 
27
27
  background-color: var(--skdx-color-surface-raised);
28
28
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
29
- border-radius: var(--skdx-radius-lg);
29
+ border-radius: var(--skdx-radius-default);
30
30
  box-shadow: var(--skdx-shadow-md);
31
31
  }
32
32
 
@@ -95,7 +95,7 @@
95
95
  color: var(--skdx-color-status-neutral-text);
96
96
  background-color: var(--skdx-color-status-neutral-bg);
97
97
  border: var(--skdx-border-width-thin) solid var(--skdx-color-status-neutral-border);
98
- border-radius: var(--skdx-radius-md);
98
+ border-radius: var(--skdx-radius-default);
99
99
 
100
100
  font-size: var(--skdx-font-size-xs);
101
101
  line-height: var(--skdx-font-line-height-tight);
@@ -154,7 +154,7 @@
154
154
  color: var(--skdx-select-tag-text);
155
155
  background-color: var(--skdx-select-tag-bg);
156
156
  border: var(--skdx-border-width-thin) solid var(--skdx-select-tag-border);
157
- border-radius: var(--skdx-radius-sm);
157
+ border-radius: var(--skdx-radius-default);
158
158
 
159
159
  /* Its own three names rather than the shared --skdx-status-* trio: those
160
160
  inherit, so a Select inside an Alert would take that alert's severity. */
@@ -196,7 +196,7 @@
196
196
  color: var(--skdx-color-text-muted);
197
197
  background: transparent;
198
198
  border: 0;
199
- border-radius: var(--skdx-radius-sm);
199
+ border-radius: var(--skdx-radius-default);
200
200
  cursor: pointer;
201
201
  }
202
202
 
@@ -25,7 +25,7 @@
25
25
 
26
26
  background-color: var(--skdx-color-surface-raised);
27
27
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
28
- border-radius: var(--skdx-radius-lg);
28
+ border-radius: var(--skdx-radius-default);
29
29
  box-shadow: var(--skdx-shadow-md);
30
30
  }
31
31
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  background-color: var(--skdx-color-surface-raised);
28
28
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
29
- border-radius: var(--skdx-radius-lg);
29
+ border-radius: var(--skdx-radius-default);
30
30
  box-shadow: var(--skdx-shadow-md);
31
31
  }
32
32
 
@@ -13,7 +13,7 @@
13
13
  @layer skdx-components {
14
14
  :where(.skdx-skeleton) {
15
15
  --skdx-skeleton-color: var(--skdx-color-skeleton);
16
- --skdx-skeleton-radius: var(--skdx-radius-sm);
16
+ --skdx-skeleton-radius: var(--skdx-radius-default);
17
17
 
18
18
  display: block;
19
19
  background-color: var(--skdx-skeleton-color);
@@ -41,7 +41,7 @@
41
41
 
42
42
  color: var(--skdx-color-action-primary-text);
43
43
  background-color: var(--skdx-color-action-primary-bg);
44
- border-radius: var(--skdx-radius-md);
44
+ border-radius: var(--skdx-radius-default);
45
45
  box-shadow: var(--skdx-shadow-lg);
46
46
 
47
47
  font-size: var(--skdx-font-size-sm);
@@ -19,7 +19,7 @@
19
19
  color: var(--skdx-color-action-primary-text);
20
20
  background-color: var(--skdx-color-action-primary-bg);
21
21
  border: 0;
22
- border-radius: var(--skdx-radius-full);
22
+ border-radius: var(--skdx-radius-default);
23
23
  box-shadow: var(--skdx-shadow-lg);
24
24
  cursor: pointer;
25
25
 
@@ -87,7 +87,7 @@
87
87
  color: var(--skdx-color-text-default);
88
88
  background-color: var(--skdx-color-surface-raised);
89
89
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
90
- border-radius: var(--skdx-radius-full);
90
+ border-radius: var(--skdx-radius-default);
91
91
  box-shadow: var(--skdx-shadow-md);
92
92
  cursor: pointer;
93
93
 
@@ -112,7 +112,7 @@
112
112
  padding-block: var(--skdx-space-1);
113
113
  color: var(--skdx-color-text-on-inverse);
114
114
  background-color: var(--skdx-color-surface-inverse);
115
- border-radius: var(--skdx-radius-sm);
115
+ border-radius: var(--skdx-radius-default);
116
116
  font-size: var(--skdx-font-size-xs);
117
117
  white-space: nowrap;
118
118
  }
@@ -17,7 +17,7 @@
17
17
 
18
18
  background-color: var(--skdx-color-surface-raised);
19
19
  border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
20
- border-radius: var(--skdx-radius-lg);
20
+ border-radius: var(--skdx-radius-default);
21
21
  box-shadow: var(--skdx-shadow-sm);
22
22
  color: var(--skdx-color-text-default);
23
23
  }
@@ -67,6 +67,11 @@
67
67
  line-height: var(--skdx-font-line-height-tight);
68
68
  }
69
69
 
70
+ /* An empty skeleton has no intrinsic width inside the shrinking flex item. */
71
+ :where(.skdx-stat-card)[data-state='loading'] :where(.skdx-stat-card__value) {
72
+ min-inline-size: 6ch;
73
+ }
74
+
70
75
  :where(.skdx-stat-card__trend) {
71
76
  display: inline-flex;
72
77
  align-items: center;