@celestia-island/hikari 0.43.9 → 0.43.12

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 (113) hide show
  1. package/package.json +1 -1
  2. package/src/components/HkAboutModal.scss +12 -1
  3. package/src/components/HkAdaptiveDialog.scss +2 -2
  4. package/src/components/HkAffixPicker.scss +55 -27
  5. package/src/components/HkAlert.scss +35 -31
  6. package/src/components/HkAltSignIn.scss +10 -4
  7. package/src/components/HkAuthMethodList.scss +5 -5
  8. package/src/components/HkAuthSubmitButton.scss +3 -3
  9. package/src/components/HkAvatar.scss +10 -49
  10. package/src/components/HkBadge.scss +6 -9
  11. package/src/components/HkBlockingToast.scss +27 -10
  12. package/src/components/HkBoard.scss +26 -6
  13. package/src/components/HkBreadcrumb.scss +82 -268
  14. package/src/components/HkButton.scss +26 -3
  15. package/src/components/HkCaptchaWidget.scss +2 -3
  16. package/src/components/HkCard.scss +14 -8
  17. package/src/components/HkCheckbox.scss +11 -9
  18. package/src/components/HkColorPicker.scss +22 -8
  19. package/src/components/HkContextRing.scss +8 -4
  20. package/src/components/HkCookieConsent.scss +12 -3
  21. package/src/components/HkDatePicker.scss +49 -65
  22. package/src/components/HkDateTimePicker.scss +48 -31
  23. package/src/components/HkDivider.scss +14 -15
  24. package/src/components/HkDraggableGrid.scss +41 -11
  25. package/src/components/HkDraggableList.scss +22 -11
  26. package/src/components/HkDrawer.scss +24 -4
  27. package/src/components/HkEmptyState.scss +10 -11
  28. package/src/components/HkErrorLanding.scss +5 -5
  29. package/src/components/HkExpansionPanel.scss +6 -2
  30. package/src/components/HkFab.scss +29 -12
  31. package/src/components/HkFileBrowserDialog.scss +21 -10
  32. package/src/components/HkFileField.scss +20 -9
  33. package/src/components/HkFilePickerField.scss +12 -6
  34. package/src/components/HkGaugeRing.scss +8 -0
  35. package/src/components/HkHoverRevealAction.scss +30 -12
  36. package/src/components/HkIcon.scss +0 -18
  37. package/src/components/HkIconButton.scss +29 -62
  38. package/src/components/HkIconButtonVars.scss +8 -28
  39. package/src/components/HkImageLightbox.scss +4 -3
  40. package/src/components/HkImagePreview.scss +17 -9
  41. package/src/components/HkImageViewer.scss +8 -0
  42. package/src/components/HkInput.scss +28 -28
  43. package/src/components/HkJsonTree.scss +13 -9
  44. package/src/components/HkKeywordSearchModal.scss +40 -29
  45. package/src/components/HkLabel.scss +8 -3
  46. package/src/components/HkListTransition.scss +16 -1
  47. package/src/components/HkLoadMore.scss +11 -2
  48. package/src/components/HkLocalizedInput.scss +11 -11
  49. package/src/components/HkLogWindow.scss +22 -4
  50. package/src/components/HkLogo.scss +12 -3
  51. package/src/components/HkMarkdownRenderer.scss +19 -13
  52. package/src/components/HkMediaControlBar.scss +2 -4
  53. package/src/components/HkMediaSlider.scss +0 -2
  54. package/src/components/HkMenu.scss +32 -20
  55. package/src/components/HkMenuIdentityItem.scss +3 -3
  56. package/src/components/HkMinimap.scss +23 -8
  57. package/src/components/HkModal.scss +17 -20
  58. package/src/components/HkModalBreadcrumb.scss +25 -6
  59. package/src/components/HkModelTag.scss +23 -13
  60. package/src/components/HkNavItem.scss +27 -14
  61. package/src/components/HkNumberInput.scss +25 -21
  62. package/src/components/HkPageHeader.scss +7 -6
  63. package/src/components/HkPasswordInput.scss +36 -36
  64. package/src/components/HkPhaseTransition.scss +16 -0
  65. package/src/components/HkPhoneInput.scss +10 -5
  66. package/src/components/HkPickerPane.scss +32 -5
  67. package/src/components/HkPlaceholderMarquee.scss +7 -2
  68. package/src/components/HkPopover.scss +18 -10
  69. package/src/components/HkPopupSelect.scss +28 -7
  70. package/src/components/HkProgressBar.scss +29 -7
  71. package/src/components/HkProgressDialog.scss +4 -2
  72. package/src/components/HkProgressRing.scss +7 -14
  73. package/src/components/HkProtocolModal.scss +0 -3
  74. package/src/components/HkQrCode.scss +2 -2
  75. package/src/components/HkRadio.scss +15 -6
  76. package/src/components/HkRichInput.scss +29 -13
  77. package/src/components/HkRollingNumber.scss +14 -6
  78. package/src/components/HkScrollContainer.scss +20 -8
  79. package/src/components/HkSearchInput.scss +12 -10
  80. package/src/components/HkSecretRevealModal.scss +11 -1
  81. package/src/components/HkSelect.scss +35 -17
  82. package/src/components/HkSelectionGrid.scss +41 -20
  83. package/src/components/HkSelectionWaterfall.scss +21 -9
  84. package/src/components/HkShareBar.scss +14 -5
  85. package/src/components/HkSidebar.scss +23 -9
  86. package/src/components/HkSkeleton.scss +16 -8
  87. package/src/components/HkSlider.scss +12 -2
  88. package/src/components/HkSpinner.scss +15 -9
  89. package/src/components/HkSplash.scss +10 -10
  90. package/src/components/HkStatCard.scss +7 -3
  91. package/src/components/HkStatusPill.scss +4 -7
  92. package/src/components/HkStepFlow.scss +24 -4
  93. package/src/components/HkSwitch.scss +41 -9
  94. package/src/components/HkTable.scss +25 -20
  95. package/src/components/HkTabs.scss +40 -26
  96. package/src/components/HkTag.scss +35 -29
  97. package/src/components/HkTagInput.scss +22 -16
  98. package/src/components/HkTextarea.scss +8 -6
  99. package/src/components/HkThemeToggle.scss +28 -18
  100. package/src/components/HkTimeline.scss +46 -29
  101. package/src/components/HkTitleBar.scss +16 -7
  102. package/src/components/HkToast.scss +40 -10
  103. package/src/components/HkTokenUsagePanel.scss +11 -6
  104. package/src/components/HkToolBlock.scss +23 -11
  105. package/src/components/HkTooltip.scss +5 -9
  106. package/src/components/HkTree.scss +26 -35
  107. package/src/components/HkVoiceInputPopup.scss +11 -6
  108. package/src/components/HkWindowedItem.scss +3 -9
  109. package/src/components/HkZoomToolbar.scss +12 -10
  110. package/src/components/_menu-item.scss +4 -3
  111. package/src/components/window-close.scss +8 -13
  112. package/src/composables/usePointerReorder.test.ts +429 -0
  113. package/src/composables/usePointerReorder.ts +74 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celestia-island/hikari",
3
- "version": "0.43.9",
3
+ "version": "0.43.12",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Hikari Vue 3 component library — production-grade UI components based on shittim-chest design system",
@@ -78,17 +78,28 @@
78
78
 
79
79
  .s-about-modal-link {
80
80
  padding: var(--space-4, 0.25rem) var(--space-8, 0.5rem);
81
- border-radius: var(--radius-sm, 6px);
81
+ border-radius: var(--radius-sm, 4px);
82
82
  background: rgb(var(--color-primary) / 12%);
83
83
  color: rgb(var(--color-primary));
84
84
  font-size: var(--text-xs, 0.75rem);
85
85
  text-decoration: none;
86
+ transition: background 200ms ease;
86
87
  }
87
88
 
88
89
  .s-about-modal-link:hover {
89
90
  background: rgb(var(--color-primary) / 20%);
90
91
  }
91
92
 
93
+ .s-about-modal-link:active {
94
+ background: rgb(var(--color-primary) / 26%);
95
+ }
96
+
97
+ .s-about-modal-link:focus-visible {
98
+ box-shadow:
99
+ 0 0 0 2px rgb(var(--color-surface)),
100
+ 0 0 0 4px rgb(var(--color-primary));
101
+ }
102
+
92
103
  .s-about-modal-footer {
93
104
  display: flex;
94
105
  justify-content: flex-end;
@@ -10,7 +10,7 @@
10
10
  display: flex;
11
11
  flex-direction: column;
12
12
  align-items: flex-start;
13
- gap: var(--hi-space-4, 4px);
13
+ gap: var(--space-4, 4px);
14
14
  flex: 1;
15
15
  min-width: 0;
16
16
  }
@@ -18,5 +18,5 @@
18
18
  .hk-adaptive-dialog-footer {
19
19
  display: flex;
20
20
  justify-content: flex-end;
21
- gap: var(--hi-space-8, 8px);
21
+ gap: var(--space-8, 8px);
22
22
  }
@@ -12,7 +12,10 @@
12
12
  align-items: center;
13
13
  gap: 0.3rem;
14
14
  max-width: 11rem;
15
- padding: 2px 6px 2px 4px;
15
+ /* Logical axes: the wide side reserves caret room at inline-end and
16
+ * flips together with the host input's RTL suffix/prefix side. */
17
+ padding-block: 2px;
18
+ padding-inline: 4px 6px;
16
19
  border: none;
17
20
  border-radius: var(--radius-sm, 6px);
18
21
  background: transparent;
@@ -25,6 +28,10 @@
25
28
  background: rgb(var(--color-primary) / 14%);
26
29
  }
27
30
 
31
+ &:active:not(:disabled) {
32
+ background: rgb(var(--color-primary) / 20%);
33
+ }
34
+
28
35
  &:disabled {
29
36
  cursor: default;
30
37
  opacity: 0.6;
@@ -33,7 +40,7 @@
33
40
 
34
41
  .hk-affix-chip-label {
35
42
  font-weight: 600;
36
- font-size: var(--text-sm, 14px);
43
+ font-size: var(--text-sm, 0.8125rem);
37
44
  white-space: nowrap;
38
45
  overflow: hidden;
39
46
  text-overflow: ellipsis;
@@ -44,6 +51,13 @@
44
51
  color: rgb(var(--color-muted));
45
52
  }
46
53
 
54
+ /* Open disclosure state (aria-expanded sits on the chip button): flip the
55
+ * caret so the popup direction reads at a glance. Instant swap — no
56
+ * transition, so the reduced-motion guard below needs no entry. */
57
+ .hk-affix-chip[aria-expanded="true"] .hk-affix-chip-caret {
58
+ transform: rotate(180deg);
59
+ }
60
+
47
61
  /* ── popup head: tags (multi) + search ─────────────────────────────── */
48
62
  .hk-affix-head {
49
63
  display: flex;
@@ -51,18 +65,18 @@
51
65
  }
52
66
 
53
67
  .hk-affix-search {
54
- padding: 8px 10px 6px;
68
+ padding: var(--space-8, 8px) var(--space-10, 10px) var(--space-6, 6px);
55
69
  }
56
70
 
57
71
  .hk-affix-tags {
58
- padding: 10px 10px 8px;
72
+ padding: var(--space-10, 10px) var(--space-10, 10px) var(--space-8, 8px);
59
73
  border-bottom: 1px solid var(--border-faint);
60
74
  }
61
75
 
62
76
  .hk-affix-tag-list {
63
77
  display: flex;
64
78
  flex-direction: column;
65
- gap: 6px;
79
+ gap: var(--space-6, 6px);
66
80
  min-width: min(18rem, 100%);
67
81
  max-width: 24rem;
68
82
  }
@@ -75,12 +89,12 @@
75
89
  .hk-affix-tag {
76
90
  display: flex;
77
91
  align-items: center;
78
- gap: 8px;
92
+ gap: var(--space-8, 8px);
79
93
  min-height: 2.25rem;
80
- padding: 4px var(--space-16);
94
+ padding: var(--space-4, 4px) var(--space-16, 16px);
81
95
  border: 1px solid var(--border-subtle);
82
96
  border-radius: var(--radius-md);
83
- background: rgb(var(--color-surface) / var(--opacity-half, 50%));
97
+ background: rgb(var(--color-surface) / var(--opacity-half));
84
98
  transition: border-color 0.12s ease, background 0.12s ease;
85
99
 
86
100
  &:hover {
@@ -103,16 +117,21 @@
103
117
  min-width: 0;
104
118
  display: inline-flex;
105
119
  align-items: center;
106
- gap: 6px;
120
+ gap: var(--space-6, 6px);
107
121
  padding: 0;
108
122
  border: 0;
109
123
  background: transparent;
110
124
  color: rgb(var(--color-text));
111
125
  font-size: var(--text-sm);
112
126
  line-height: 1.4;
113
- text-align: left;
127
+ text-align: start;
114
128
  cursor: pointer;
115
129
  appearance: none;
130
+
131
+ &:focus-visible {
132
+ outline: 2px solid rgb(var(--color-primary));
133
+ outline-offset: 2px;
134
+ }
116
135
  }
117
136
 
118
137
  .hk-affix-tag-flag {
@@ -166,7 +185,7 @@
166
185
  height: 1.5rem;
167
186
  padding: 0;
168
187
  border: 0;
169
- border-radius: 999px;
188
+ border-radius: var(--radius-full, 999px);
170
189
  background: transparent;
171
190
  color: rgb(var(--color-muted));
172
191
  cursor: pointer;
@@ -211,32 +230,40 @@
211
230
  display: flex;
212
231
  flex-direction: column;
213
232
  gap: 1px;
214
- padding: 4px 6px 8px;
233
+ padding: var(--space-4, 4px) var(--space-6, 6px) var(--space-8, 8px);
215
234
  }
216
235
 
217
236
  .hk-affix-row {
218
237
  display: flex;
219
238
  align-items: center;
220
- gap: 8px;
239
+ gap: var(--space-8, 8px);
221
240
  width: 100%;
222
241
  min-height: 2.25rem;
223
- padding: 4px 8px;
242
+ padding: var(--space-4, 4px) var(--space-8, 8px);
224
243
  border: none;
225
244
  border-radius: var(--radius-sm, 6px);
226
245
  background: transparent;
227
246
  color: rgb(var(--color-text));
228
- font-size: var(--text-sm, 14px);
229
- text-align: left;
247
+ font-size: var(--text-sm, 0.8125rem);
248
+ text-align: start;
230
249
  cursor: pointer;
231
250
  appearance: none;
232
251
  transition: background 0.1s ease;
233
252
 
234
- &:hover,
235
- &:focus-visible {
253
+ &:hover {
236
254
  background: rgb(var(--color-primary) / 10%);
237
255
  outline: none;
238
256
  }
239
257
 
258
+ /* Keyboard position is drawn INSIDE the row (HkSelectionGrid branch-fix
259
+ * pattern) and distinct from the hover tint, so overlapping popup/sheet
260
+ * chrome cannot shave a per-side outer ring and focus reads as focus. */
261
+ &:focus-visible {
262
+ background: rgb(var(--color-primary) / 10%);
263
+ outline: 2px solid rgb(var(--color-primary));
264
+ outline-offset: -2px;
265
+ }
266
+
240
267
  &[data-active] {
241
268
  background: rgb(var(--color-primary) / 16%);
242
269
  font-weight: 600;
@@ -246,27 +273,28 @@
246
273
  opacity: 0.5;
247
274
  cursor: default;
248
275
 
249
- &:hover {
276
+ /* The button stays keyboard-focusable (data-disabled only), so the
277
+ * unpickable row must not paint the pickable tint on focus either. */
278
+ &:hover,
279
+ &:focus-visible {
250
280
  background: transparent;
251
281
  }
252
282
  }
253
283
 
254
- /* The "Use <query>" free-text row reads as an add affordance. */
284
+ /* The "Use <query>" free-text row reads as an add affordance. Truncation
285
+ * comes from the base .hk-affix-row-label — only the emphasis is new. */
255
286
  &[data-custom="true"] {
256
287
  color: rgb(var(--color-primary));
257
288
 
258
289
  .hk-affix-row-label {
259
290
  font-weight: 600;
260
- overflow: hidden;
261
- text-overflow: ellipsis;
262
- white-space: nowrap;
263
291
  }
264
292
  }
265
293
  }
266
294
 
267
295
  .hk-affix-row-flag {
268
296
  flex: none;
269
- font-size: calc(var(--text-base, 15px) * 1.05);
297
+ font-size: calc(var(--text-base, 0.875rem) * 1.05);
270
298
  line-height: 1;
271
299
  font-family: "Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji",
272
300
  sans-serif;
@@ -283,14 +311,14 @@
283
311
  .hk-affix-row-meta {
284
312
  flex: none;
285
313
  color: rgb(var(--color-muted));
286
- font-size: calc(var(--text-sm, 14px) * 0.9);
314
+ font-size: calc(var(--text-sm, 0.8125rem) * 0.9);
287
315
  font-variant-numeric: tabular-nums;
288
316
  }
289
317
 
290
318
  .hk-affix-empty {
291
- padding: 14px 12px;
319
+ padding: var(--space-14, 14px) var(--space-12, 12px);
292
320
  color: rgb(var(--color-muted));
293
- font-size: var(--text-sm, 14px);
321
+ font-size: var(--text-sm, 0.8125rem);
294
322
  text-align: center;
295
323
  }
296
324
 
@@ -1,12 +1,12 @@
1
1
  .hk-alert {
2
2
  display: flex;
3
3
  align-items: flex-start;
4
- gap: var(--hi-space-12, 12px);
5
- padding: var(--hi-space-12, 12px) var(--hi-space-16, 16px);
4
+ gap: var(--space-12, 12px);
5
+ padding: var(--space-12, 12px) var(--space-16, 16px);
6
6
  border-radius: var(--hi-radius-md, 8px);
7
7
  border: 1px solid transparent;
8
- border-left-width: 4px;
9
- color: var(--hi-color-text-primary);
8
+ border-inline-start-width: 4px;
9
+ color: var(--hi-color-text-primary, #333);
10
10
  }
11
11
 
12
12
  .hk-alert-banner {
@@ -20,52 +20,52 @@
20
20
  /* ── Sizes ─────────────────────────────────────── */
21
21
 
22
22
  .hk-alert-sm {
23
- padding: var(--hi-space-8, 8px) var(--hi-space-12, 12px);
24
- font-size: var(--hi-text-xs, 0.75rem);
23
+ padding: var(--space-8, 8px) var(--space-12, 12px);
24
+ font-size: var(--text-xs, 0.75rem);
25
25
  }
26
26
 
27
27
  .hk-alert-md {
28
- padding: var(--hi-space-12, 12px) var(--hi-space-16, 16px);
29
- font-size: var(--hi-text-sm, 0.875rem);
28
+ /* md padding == the .hk-alert base values; only the type size differs. */
29
+ font-size: var(--text-sm, 0.875rem);
30
30
  }
31
31
 
32
32
  .hk-alert-lg {
33
- padding: var(--hi-space-16, 16px) var(--hi-space-24, 24px);
34
- font-size: var(--hi-text-base, 1rem);
33
+ padding: var(--space-16, 16px) var(--space-24, 24px);
34
+ font-size: var(--text-base, 0.875rem);
35
35
  }
36
36
 
37
37
  /* ── Variants ──────────────────────────────────── */
38
38
 
39
39
  .hk-alert-error {
40
- background: color-mix(in srgb, var(--hi-color-danger) 8%, transparent);
41
- border-color: color-mix(in srgb, var(--hi-color-danger) 15%, transparent);
42
- border-left-color: var(--hi-color-danger);
40
+ background: color-mix(in srgb, var(--hi-color-danger, #f85149) 8%, transparent);
41
+ border-color: color-mix(in srgb, var(--hi-color-danger, #f85149) 15%, transparent);
42
+ border-inline-start-color: var(--hi-color-danger, #f85149);
43
43
 
44
- .hk-alert-icon { color: var(--hi-color-danger); }
44
+ .hk-alert-icon { color: var(--hi-color-danger, #f85149); }
45
45
  }
46
46
 
47
47
  .hk-alert-warning {
48
- background: color-mix(in srgb, var(--hi-color-warning) 8%, transparent);
49
- border-color: color-mix(in srgb, var(--hi-color-warning) 15%, transparent);
50
- border-left-color: var(--hi-color-warning);
48
+ background: color-mix(in srgb, var(--hi-color-warning, #d29922) 8%, transparent);
49
+ border-color: color-mix(in srgb, var(--hi-color-warning, #d29922) 15%, transparent);
50
+ border-inline-start-color: var(--hi-color-warning, #d29922);
51
51
 
52
- .hk-alert-icon { color: var(--hi-color-warning); }
52
+ .hk-alert-icon { color: var(--hi-color-warning, #d29922); }
53
53
  }
54
54
 
55
55
  .hk-alert-info {
56
- background: color-mix(in srgb, var(--hi-color-primary) 8%, transparent);
57
- border-color: color-mix(in srgb, var(--hi-color-primary) 15%, transparent);
58
- border-left-color: var(--hi-color-primary);
56
+ background: color-mix(in srgb, var(--hi-color-primary, #58a6ff) 8%, transparent);
57
+ border-color: color-mix(in srgb, var(--hi-color-primary, #58a6ff) 15%, transparent);
58
+ border-inline-start-color: var(--hi-color-primary, #58a6ff);
59
59
 
60
- .hk-alert-icon { color: var(--hi-color-primary); }
60
+ .hk-alert-icon { color: var(--hi-color-primary, #58a6ff); }
61
61
  }
62
62
 
63
63
  .hk-alert-success {
64
- background: color-mix(in srgb, var(--hi-color-success) 8%, transparent);
65
- border-color: color-mix(in srgb, var(--hi-color-success) 15%, transparent);
66
- border-left-color: var(--hi-color-success);
64
+ background: color-mix(in srgb, var(--hi-color-success, #3fb950) 8%, transparent);
65
+ border-color: color-mix(in srgb, var(--hi-color-success, #3fb950) 15%, transparent);
66
+ border-inline-start-color: var(--hi-color-success, #3fb950);
67
67
 
68
- .hk-alert-icon { color: var(--hi-color-success); }
68
+ .hk-alert-icon { color: var(--hi-color-success, #3fb950); }
69
69
  }
70
70
 
71
71
  /* ── Icon ──────────────────────────────────────── */
@@ -87,14 +87,13 @@
87
87
  .hk-alert-title {
88
88
  margin: 0 0 2px;
89
89
  font-weight: 600;
90
- font-size: inherit;
91
90
  line-height: 1.4;
92
91
  }
93
92
 
94
93
  .hk-alert-text {
95
94
  margin: 0;
96
95
  line-height: 1.5;
97
- color: color-mix(in srgb, var(--hi-color-text-secondary) 85%, transparent);
96
+ color: color-mix(in srgb, var(--hi-color-text-secondary, #666) 85%, transparent);
98
97
  }
99
98
 
100
99
  /* ── Close button ──────────────────────────────── */
@@ -109,13 +108,18 @@
109
108
  border: 0;
110
109
  background: transparent;
111
110
  border-radius: var(--hi-radius-sm, 4px);
112
- color: var(--hi-color-muted);
111
+ color: var(--hi-color-muted, #666);
113
112
  cursor: pointer;
114
113
  padding: 0;
115
114
  transition: background var(--hi-duration-fast, 0.15s) ease, color var(--hi-duration-fast, 0.15s) ease;
116
115
 
117
116
  &:hover {
118
- background: var(--hi-color-surface);
119
- color: var(--hi-color-text-primary);
117
+ background: var(--hi-color-surface, #fff);
118
+ color: var(--hi-color-text-primary, #333);
119
+ }
120
+
121
+ &:focus-visible {
122
+ outline: 2px solid var(--hi-color-primary, #58a6ff);
123
+ outline-offset: 2px;
120
124
  }
121
125
  }
@@ -5,7 +5,6 @@
5
5
  .hk-alt-signin {
6
6
  display: flex;
7
7
  flex-direction: column;
8
- align-items: stretch;
9
8
  width: 100%;
10
9
  }
11
10
 
@@ -25,10 +24,17 @@
25
24
  opacity var(--duration-normal, 0.3s) ease;
26
25
  }
27
26
 
28
- .hk-alt-signin__trigger:hover:not(:disabled) {
27
+ .hk-alt-signin__trigger:hover:not(:disabled),
28
+ .hk-alt-signin__trigger[aria-expanded="true"] {
29
29
  color: var(--hi-color-text-secondary, #999);
30
30
  }
31
31
 
32
+ /* Keyboard position feedback on the full-width disclosure row. */
33
+ .hk-alt-signin__trigger:focus-visible:not(:disabled) {
34
+ outline: 2px solid var(--hi-color-primary, #58a6ff);
35
+ outline-offset: 2px;
36
+ }
37
+
32
38
  .hk-alt-signin__trigger:disabled {
33
39
  opacity: 0.5;
34
40
  cursor: not-allowed;
@@ -39,7 +45,7 @@
39
45
  .hk-alt-signin__rule {
40
46
  flex: 1 1 auto;
41
47
  height: 1px;
42
- background: var(--hi-color-border-subtle, rgba(0, 0, 0, 0.08));
48
+ background: var(--border-subtle);
43
49
  }
44
50
 
45
51
  .hk-alt-signin__label {
@@ -51,5 +57,5 @@
51
57
  flex-direction: column;
52
58
  gap: var(--space-2, 0.125rem);
53
59
  min-width: 12rem;
54
- padding: var(--space-4, 0.25rem) var(--space-4, 0.25rem);
60
+ padding: var(--space-4, 0.25rem);
55
61
  }
@@ -7,8 +7,7 @@
7
7
  .s-auth-methods-divider {
8
8
  display: flex;
9
9
  align-items: center;
10
- justify-content: center;
11
- gap: 10px;
10
+ gap: var(--space-10, 0.625rem);
12
11
  margin: 0 0 var(--space-4, 0.25rem);
13
12
  color: var(--hi-color-muted, #999);
14
13
  font-size: var(--text-xs, 0.75rem);
@@ -32,9 +31,10 @@
32
31
 
33
32
  /* Fixed icon + label columns: the two spans keep the same width on every
34
33
  row, so icons and labels align across buttons while each button stays a
35
- centered hk-btn-block. HkButton has a fragment root, so inbound classes
36
- don't fall through — scope everything off the `.s-auth-methods`
37
- container (descendant match: the component wrapper is display:contents).
34
+ centered hk-btn-block. The part classes sit on the default-slot spans
35
+ inside HkButton's single <button> root — scope everything off the
36
+ `.s-auth-methods` container (descendant match: the component wrapper
37
+ is display:contents).
38
38
  The label column width is MEASURED by the component (widest label text
39
39
  + 1px headroom, published as `--auth-methods-label-width` on its
40
40
  wrapper, inherited into the rows); the `max-content` fallback only
@@ -1,12 +1,12 @@
1
1
  .s-auth-submit {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- gap: 6px;
4
+ gap: var(--space-6, 0.375rem);
5
5
  width: 100%;
6
6
  }
7
7
 
8
8
  .s-auth-submit-error {
9
9
  margin: 0;
10
- font-size: 0.8125rem;
11
- color: rgb(var(--color-danger, 229 62 62));
10
+ font-size: var(--text-sm, 0.8125rem);
11
+ color: rgb(var(--color-error, 240 70 80));
12
12
  }
@@ -9,7 +9,6 @@
9
9
  overflow: hidden;
10
10
  background-color: var(--hi-color-gray-200, #E5E7EB);
11
11
  color: var(--hi-color-gray-600, #4B5563);
12
- font-weight: 500;
13
12
  transition: all 0.2s ease;
14
13
 
15
14
  img {
@@ -19,46 +18,24 @@
19
18
  }
20
19
  }
21
20
 
22
- .hk-avatar-xs {
23
- width: 24px;
24
- height: 24px;
25
- font-size: 0.625rem;
26
- }
27
-
28
21
  .hk-avatar-sm {
29
- width: 32px;
30
- height: 32px;
31
- font-size: 0.75rem;
22
+ width: var(--space-32);
23
+ height: var(--space-32);
24
+ font-size: var(--text-xs);
32
25
  }
33
26
 
34
27
  .hk-avatar-md {
35
- width: 40px;
36
- height: 40px;
37
- font-size: 0.875rem;
28
+ width: var(--space-40);
29
+ height: var(--space-40);
30
+ font-size: var(--text-base);
38
31
  }
39
32
 
40
33
  .hk-avatar-lg {
34
+ /* 48px: --space-48 exists only in theme/_layout.scss, not in every
35
+ token sheet this component's other tokens live in — keep literal. */
41
36
  width: 48px;
42
37
  height: 48px;
43
- font-size: 1rem;
44
- }
45
-
46
- .hk-avatar-xl {
47
- width: 64px;
48
- height: 64px;
49
- font-size: 1.25rem;
50
- }
51
-
52
- .hk-avatar-circular {
53
- border-radius: 50%;
54
- }
55
-
56
- .hk-avatar-rounded {
57
- border-radius: 8px;
58
- }
59
-
60
- .hk-avatar-square {
61
- border-radius: 0;
38
+ font-size: var(--text-md);
62
39
  }
63
40
 
64
41
  .hk-avatar-fallback {
@@ -71,23 +48,7 @@
71
48
  font-weight: 600;
72
49
  }
73
50
 
74
- .hk-avatar-icon {
75
- color: var(--hi-color-text-secondary);
76
- opacity: 0.8;
77
- }
78
-
79
- .hk-avatar-img {
80
- display: block;
81
- width: 100%;
82
- height: 100%;
83
- }
84
-
85
51
  [data-theme="dark"] .hk-avatar {
86
52
  background-color: var(--hi-surface);
87
- color: var(--hi-color-text-secondary);
88
- }
89
-
90
- [data-theme="dark"] .hk-avatar-icon {
91
- color: var(--hi-color-text-secondary);
92
- opacity: 0.6;
53
+ color: var(--hi-color-text-secondary, rgba(255, 255, 255, 0.6));
93
54
  }
@@ -7,6 +7,9 @@
7
7
  * (rendered as inline --hk-badge-* custom properties).
8
8
  */
9
9
 
10
+ // Use theme variables with namespace to avoid conflicts
11
+ @use "./hikari-vars" as vars;
12
+
10
13
  .hk-badge {
11
14
  --hk-badge-text: inherit;
12
15
  --hk-badge-bg: transparent;
@@ -32,11 +35,6 @@
32
35
  padding: var(--space-1) var(--space-6);
33
36
  }
34
37
 
35
- .hk-badge[data-size="md"] {
36
- font-size: var(--text-xs);
37
- padding: var(--space-2) var(--space-8);
38
- }
39
-
40
38
  /* ---------- shape ---------- */
41
39
  .hk-badge[data-pill="false"] {
42
40
  border-radius: var(--radius-sm);
@@ -44,8 +42,7 @@
44
42
 
45
43
  /* ---------- typography ---------- */
46
44
  .hk-badge[data-mono] {
47
- font-family: var(--font-mono);
48
- font-weight: 600;
45
+ font-family: var(--font-mono, vars.$hikari-font-family-mono);
49
46
  }
50
47
 
51
48
  .hk-badge[data-uppercase] {
@@ -55,8 +52,8 @@
55
52
 
56
53
  /* ---------- dot indicator ---------- */
57
54
  .hk-badge [data-el="dot"] {
58
- width: 6px;
59
- height: 6px;
55
+ width: var(--space-6);
56
+ height: var(--space-6);
60
57
  border-radius: 50%;
61
58
  background: var(--hk-badge-text);
62
59
  flex-shrink: 0;