@celestia-island/hikari 0.43.10 → 0.43.13
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.
- package/package.json +1 -1
- package/src/components/HkAboutModal.scss +12 -1
- package/src/components/HkAdaptiveDialog.scss +2 -2
- package/src/components/HkAffixPicker.scss +55 -27
- package/src/components/HkAlert.scss +35 -31
- package/src/components/HkAltSignIn.scss +10 -4
- package/src/components/HkAuthMethodList.scss +5 -5
- package/src/components/HkAuthSubmitButton.scss +3 -3
- package/src/components/HkAvatar.scss +10 -49
- package/src/components/HkBadge.scss +6 -9
- package/src/components/HkBlockingToast.scss +27 -10
- package/src/components/HkBoard.scss +26 -6
- package/src/components/HkBreadcrumb.scss +82 -268
- package/src/components/HkButton.scss +26 -3
- package/src/components/HkCaptchaWidget.scss +2 -3
- package/src/components/HkCard.scss +14 -8
- package/src/components/HkCheckbox.scss +11 -9
- package/src/components/HkColorPicker.scss +22 -8
- package/src/components/HkContextRing.scss +8 -4
- package/src/components/HkCookieConsent.scss +12 -3
- package/src/components/HkDatePicker.scss +49 -65
- package/src/components/HkDateTimePicker.scss +48 -31
- package/src/components/HkDivider.scss +14 -15
- package/src/components/HkDraggableGrid.scss +41 -11
- package/src/components/HkDraggableList.scss +22 -11
- package/src/components/HkDrawer.scss +24 -4
- package/src/components/HkEmptyState.scss +10 -11
- package/src/components/HkErrorLanding.scss +5 -5
- package/src/components/HkExpansionPanel.scss +6 -2
- package/src/components/HkFab.scss +29 -12
- package/src/components/HkFileBrowserDialog.scss +21 -10
- package/src/components/HkFileField.scss +20 -9
- package/src/components/HkFilePickerField.scss +12 -6
- package/src/components/HkGaugeRing.scss +8 -0
- package/src/components/HkHoverRevealAction.scss +30 -12
- package/src/components/HkIcon.scss +0 -18
- package/src/components/HkIconButton.scss +29 -62
- package/src/components/HkIconButtonVars.scss +8 -28
- package/src/components/HkImageLightbox.scss +4 -3
- package/src/components/HkImagePreview.scss +17 -9
- package/src/components/HkImageViewer.scss +8 -0
- package/src/components/HkInput.scss +28 -28
- package/src/components/HkJsonTree.scss +13 -9
- package/src/components/HkKeywordSearchModal.scss +40 -29
- package/src/components/HkLabel.scss +8 -3
- package/src/components/HkListTransition.scss +16 -1
- package/src/components/HkLoadMore.scss +11 -2
- package/src/components/HkLocalizedInput.scss +11 -11
- package/src/components/HkLogWindow.scss +22 -4
- package/src/components/HkLogo.scss +12 -3
- package/src/components/HkMarkdownRenderer.scss +19 -13
- package/src/components/HkMediaControlBar.scss +2 -4
- package/src/components/HkMediaSlider.scss +0 -2
- package/src/components/HkMenu.scss +32 -20
- package/src/components/HkMenuIdentityItem.scss +3 -3
- package/src/components/HkMinimap.scss +23 -8
- package/src/components/HkModal.scss +17 -20
- package/src/components/HkModalBreadcrumb.scss +25 -6
- package/src/components/HkModelTag.scss +23 -13
- package/src/components/HkNavItem.scss +27 -14
- package/src/components/HkNumberInput.scss +25 -21
- package/src/components/HkPageHeader.scss +7 -6
- package/src/components/HkPasswordInput.scss +36 -36
- package/src/components/HkPhaseTransition.scss +16 -0
- package/src/components/HkPhoneInput.scss +10 -5
- package/src/components/HkPickerPane.scss +32 -5
- package/src/components/HkPlaceholderMarquee.scss +7 -2
- package/src/components/HkPlaceholderMarquee.test.ts +27 -0
- package/src/components/HkPlaceholderMarquee.tsx +14 -6
- package/src/components/HkPopover.scss +18 -10
- package/src/components/HkPopupSelect.scss +28 -7
- package/src/components/HkProgressBar.scss +29 -7
- package/src/components/HkProgressDialog.scss +4 -2
- package/src/components/HkProgressRing.scss +7 -14
- package/src/components/HkProtocolModal.scss +0 -3
- package/src/components/HkQrCode.scss +2 -2
- package/src/components/HkRadio.scss +15 -6
- package/src/components/HkRichInput.scss +29 -13
- package/src/components/HkRollingNumber.scss +14 -6
- package/src/components/HkScrollContainer.scss +20 -8
- package/src/components/HkSearchInput.scss +12 -10
- package/src/components/HkSecretRevealModal.scss +11 -1
- package/src/components/HkSelect.scss +35 -17
- package/src/components/HkSelectionGrid.scss +41 -20
- package/src/components/HkSelectionWaterfall.scss +21 -9
- package/src/components/HkShareBar.scss +14 -5
- package/src/components/HkSidebar.scss +23 -9
- package/src/components/HkSkeleton.scss +16 -8
- package/src/components/HkSlider.scss +12 -2
- package/src/components/HkSpinner.scss +15 -9
- package/src/components/HkSplash.scss +10 -10
- package/src/components/HkStatCard.scss +7 -3
- package/src/components/HkStatusPill.scss +4 -7
- package/src/components/HkStepFlow.scss +24 -4
- package/src/components/HkSwitch.scss +41 -9
- package/src/components/HkTable.scss +25 -20
- package/src/components/HkTabs.scss +40 -26
- package/src/components/HkTag.scss +35 -29
- package/src/components/HkTagInput.scss +22 -16
- package/src/components/HkTextarea.scss +8 -6
- package/src/components/HkThemeToggle.scss +28 -18
- package/src/components/HkTimeline.scss +46 -29
- package/src/components/HkTimeline.test.tsx +39 -0
- package/src/components/HkTimeline.tsx +16 -2
- package/src/components/HkTitleBar.scss +16 -7
- package/src/components/HkToast.scss +40 -10
- package/src/components/HkTokenUsagePanel.scss +11 -6
- package/src/components/HkToolBlock.scss +23 -11
- package/src/components/HkTooltip.scss +5 -9
- package/src/components/HkTree.scss +26 -35
- package/src/components/HkVoiceInputPopup.scss +11 -6
- package/src/components/HkWindowedItem.scss +3 -9
- package/src/components/HkZoomToolbar.scss +12 -10
- package/src/components/_menu-item.scss +4 -3
- package/src/components/window-close.scss +8 -13
- package/src/composables/layoutGeometry.test.ts +177 -0
- package/src/composables/layoutGeometry.ts +231 -0
- package/src/composables/useOverlayScrollbar.test.ts +32 -0
- package/src/composables/useOverlayScrollbar.ts +9 -1
- package/src/composables/usePointerReorder.test.ts +5 -2
- package/src/composables/usePointerReorder.ts +83 -147
|
@@ -133,7 +133,10 @@
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
/* :not(:focus-visible) keeps the keyboard double ring winning while a
|
|
137
|
+
focused button is under the cursor — this hover rule's (0,3,0)
|
|
138
|
+
box-shadow would otherwise beat the (0,2,0) :focus-visible ring. */
|
|
139
|
+
.hk-btn-primary:hover:not(:disabled):not(:focus-visible) {
|
|
137
140
|
filter: brightness(1.1);
|
|
138
141
|
box-shadow: var(--shadow-button);
|
|
139
142
|
}
|
|
@@ -151,11 +154,16 @@
|
|
|
151
154
|
backdrop-filter: blur(var(--blur-sm));
|
|
152
155
|
}
|
|
153
156
|
|
|
157
|
+
/* background stays the base surface — the hover declaration only restated
|
|
158
|
+
it; hover emphasis comes from the border-color change below. */
|
|
154
159
|
.hk-btn-secondary:hover:not(:disabled) {
|
|
155
|
-
background: rgb(var(--color-surface));
|
|
156
160
|
border-color: var(--c-primary-strong);
|
|
157
161
|
}
|
|
158
162
|
|
|
163
|
+
.hk-btn-secondary:active:not(:disabled) {
|
|
164
|
+
filter: brightness(0.95);
|
|
165
|
+
}
|
|
166
|
+
|
|
159
167
|
/* ---- Outline ---- */
|
|
160
168
|
|
|
161
169
|
.hk-btn-outline {
|
|
@@ -169,6 +177,10 @@
|
|
|
169
177
|
border-color: rgb(var(--color-primary));
|
|
170
178
|
}
|
|
171
179
|
|
|
180
|
+
.hk-btn-outline:active:not(:disabled) {
|
|
181
|
+
filter: brightness(0.95);
|
|
182
|
+
}
|
|
183
|
+
|
|
172
184
|
/* ---- Ghost ---- */
|
|
173
185
|
|
|
174
186
|
.hk-btn-ghost {
|
|
@@ -181,6 +193,10 @@
|
|
|
181
193
|
background: var(--c-primary-light);
|
|
182
194
|
}
|
|
183
195
|
|
|
196
|
+
.hk-btn-ghost:active:not(:disabled) {
|
|
197
|
+
filter: brightness(0.95);
|
|
198
|
+
}
|
|
199
|
+
|
|
184
200
|
/* ---- Danger ---- */
|
|
185
201
|
|
|
186
202
|
.hk-btn-danger {
|
|
@@ -188,11 +204,15 @@
|
|
|
188
204
|
color: rgb(var(--color-on-solid));
|
|
189
205
|
}
|
|
190
206
|
|
|
191
|
-
.hk-btn-danger:hover:not(:disabled) {
|
|
207
|
+
.hk-btn-danger:hover:not(:disabled):not(:focus-visible) {
|
|
192
208
|
filter: brightness(1.1);
|
|
193
209
|
box-shadow: var(--shadow-button-danger);
|
|
194
210
|
}
|
|
195
211
|
|
|
212
|
+
.hk-btn-danger:active:not(:disabled) {
|
|
213
|
+
filter: brightness(0.95);
|
|
214
|
+
}
|
|
215
|
+
|
|
196
216
|
/* ---- Block ---- */
|
|
197
217
|
|
|
198
218
|
.hk-btn-block {
|
|
@@ -201,6 +221,9 @@
|
|
|
201
221
|
|
|
202
222
|
/* ---- Loading ---- */
|
|
203
223
|
|
|
224
|
+
/* pointer-events: none is deliberate, not dead: the tsx already forces
|
|
225
|
+
`disabled` while loading (HkButton.tsx), so this only suppresses the
|
|
226
|
+
:disabled not-allowed cursor — a busy spinner reads busy, not broken. */
|
|
204
227
|
.hk-btn-loading {
|
|
205
228
|
pointer-events: none;
|
|
206
229
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
align-items: center;
|
|
5
5
|
gap: var(--space-8, 0.5rem);
|
|
6
|
-
min-height: 4rem;
|
|
6
|
+
min-height: var(--space-64, 4rem);
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
.s-captcha-widget-loading {
|
|
@@ -19,9 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
.s-captcha-widget-placeholder {
|
|
21
21
|
justify-content: center;
|
|
22
|
-
min-height: 4rem;
|
|
23
22
|
padding: var(--space-16, 1rem);
|
|
24
|
-
border: 1px dashed var(--border-faint, rgb(var(--color-border) /
|
|
23
|
+
border: 1px dashed var(--border-faint, rgb(var(--color-border) / 10%));
|
|
25
24
|
border-radius: var(--radius-md, 8px);
|
|
26
25
|
color: rgb(var(--color-muted));
|
|
27
26
|
font-size: var(--text-xs, 0.75rem);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
@use "../tokens";
|
|
2
2
|
|
|
3
|
-
/* HkCard — canonical surface card. Hover
|
|
4
|
-
|
|
5
|
-
never displaces
|
|
3
|
+
/* HkCard — canonical surface card. Hover emphasis is border-color only
|
|
4
|
+
(the base elevation shadow is already at its resting value). No
|
|
5
|
+
transforms, so the card never displaces neighbors or reflows layout. */
|
|
6
6
|
.hk-card {
|
|
7
7
|
display: block;
|
|
8
8
|
overflow: hidden;
|
|
@@ -15,16 +15,22 @@
|
|
|
15
15
|
|
|
16
16
|
.hk-card-hoverable {
|
|
17
17
|
cursor: pointer;
|
|
18
|
-
transition:
|
|
19
|
-
box-shadow var(--duration-normal) ease,
|
|
20
|
-
border-color var(--duration-normal) ease;
|
|
18
|
+
transition: border-color var(--duration-normal) ease;
|
|
21
19
|
}
|
|
22
20
|
|
|
23
21
|
.hk-card-hoverable:hover {
|
|
24
|
-
box-shadow: var(--shadow-elevated);
|
|
25
22
|
border-color: var(--c-primary-intense);
|
|
26
23
|
}
|
|
27
24
|
|
|
25
|
+
.hk-card-hoverable:active {
|
|
26
|
+
border-color: rgb(var(--color-primary) / 45%);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.hk-card-hoverable:focus-visible {
|
|
30
|
+
outline: 2px solid rgb(var(--color-primary));
|
|
31
|
+
outline-offset: 2px;
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
.hk-card-header {
|
|
29
35
|
padding: var(--space-12) var(--space-16);
|
|
30
36
|
border-bottom: 1px solid var(--border-faint);
|
|
@@ -45,5 +51,5 @@
|
|
|
45
51
|
|
|
46
52
|
.hk-card-footer {
|
|
47
53
|
padding: var(--space-12) var(--space-16);
|
|
48
|
-
border-top: 1px solid
|
|
54
|
+
border-top: 1px solid var(--border-faint);
|
|
49
55
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
.hk-checkbox {
|
|
6
6
|
display: inline-flex;
|
|
7
7
|
align-items: center;
|
|
8
|
-
gap: var(--
|
|
8
|
+
gap: var(--space-8, 0.5rem);
|
|
9
9
|
cursor: pointer;
|
|
10
10
|
user-select: none;
|
|
11
11
|
}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
justify-content: center;
|
|
24
24
|
width: 1.125rem;
|
|
25
25
|
height: 1.125rem;
|
|
26
|
-
border-radius: var(--hi-radius-
|
|
26
|
+
border-radius: var(--hi-radius-sm, 4px);
|
|
27
27
|
border: 1px solid var(--hi-color-border, rgba(0, 0, 0, 0.08));
|
|
28
28
|
background: var(--hi-color-surface, rgba(255, 255, 255, 0.95));
|
|
29
29
|
transition:
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
.hk-checkbox-box[data-checked] {
|
|
41
41
|
background: var(--hi-color-primary, #ff6b9d);
|
|
42
42
|
border-color: var(--hi-color-primary, #ff6b9d);
|
|
43
|
-
color: rgb(var(--color-on-solid-text, 255 255 255));
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
.hk-checkbox-box[data-indeterminate] {
|
|
@@ -48,12 +47,6 @@
|
|
|
48
47
|
border-color: var(--hi-color-primary, #ff6b9d);
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
.hk-checkbox:hover .hk-checkbox-box[data-checked],
|
|
52
|
-
.hk-checkbox[data-animating] .hk-checkbox-box[data-checked] {
|
|
53
|
-
background: var(--hi-color-primary, #ff6b9d);
|
|
54
|
-
border-color: var(--hi-color-primary, #ff6b9d);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
50
|
/* ---------- input ---------- */
|
|
58
51
|
|
|
59
52
|
.hk-checkbox-input {
|
|
@@ -64,6 +57,15 @@
|
|
|
64
57
|
pointer-events: none;
|
|
65
58
|
}
|
|
66
59
|
|
|
60
|
+
/* Keyboard focus: the native input is visually hidden, so draw the house
|
|
61
|
+
double ring (HkButton/HkTable pattern) on the box via :has();
|
|
62
|
+
:focus-visible keeps mouse toggles ring-free. */
|
|
63
|
+
.hk-checkbox-box:has(.hk-checkbox-input:focus-visible) {
|
|
64
|
+
box-shadow:
|
|
65
|
+
0 0 0 2px var(--hi-color-surface, rgba(255, 255, 255, 0.95)),
|
|
66
|
+
0 0 0 4px var(--hi-color-primary, #ff6b9d);
|
|
67
|
+
}
|
|
68
|
+
|
|
67
69
|
/* ---------- markers ---------- */
|
|
68
70
|
|
|
69
71
|
.hk-checkbox-icon {
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
.hk-color-picker[data-layout="row"] {
|
|
11
11
|
.hk-color-picker-swatch-btn {
|
|
12
12
|
flex-direction: row;
|
|
13
|
-
align-items: center;
|
|
14
13
|
gap: var(--space-8);
|
|
15
14
|
width: 100%;
|
|
16
15
|
}
|
|
@@ -26,14 +25,10 @@
|
|
|
26
25
|
max-width: 100%;
|
|
27
26
|
overflow: hidden;
|
|
28
27
|
text-overflow: ellipsis;
|
|
29
|
-
text-align:
|
|
28
|
+
text-align: start;
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
.hk-color-picker-trigger {
|
|
34
|
-
outline: none;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
32
|
.hk-color-picker-swatch-btn {
|
|
38
33
|
display: inline-flex;
|
|
39
34
|
flex-direction: column;
|
|
@@ -47,6 +42,14 @@
|
|
|
47
42
|
outline: none;
|
|
48
43
|
}
|
|
49
44
|
|
|
45
|
+
/* The trigger button removes the outline; restore a keyboard indicator
|
|
46
|
+
with the house double ring (HkButton pattern). */
|
|
47
|
+
.hk-color-picker-swatch-btn:focus-visible {
|
|
48
|
+
box-shadow:
|
|
49
|
+
0 0 0 2px rgb(var(--color-surface)),
|
|
50
|
+
0 0 0 4px rgb(var(--color-primary));
|
|
51
|
+
}
|
|
52
|
+
|
|
50
53
|
.hk-color-picker-swatch {
|
|
51
54
|
width: 24px;
|
|
52
55
|
height: 24px;
|
|
@@ -134,7 +137,6 @@
|
|
|
134
137
|
min-width: 60px;
|
|
135
138
|
height: 10px;
|
|
136
139
|
border-radius: var(--radius-full);
|
|
137
|
-
display: block;
|
|
138
140
|
overflow: hidden;
|
|
139
141
|
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 10%);
|
|
140
142
|
// Explicit on the hit targets too (not only the container): touch-action
|
|
@@ -173,12 +175,24 @@
|
|
|
173
175
|
&:active { cursor: grabbing; }
|
|
174
176
|
}
|
|
175
177
|
|
|
178
|
+
/* Thumb hover scale is a transform micro-interaction; drop the scale and
|
|
179
|
+
the transform transition for reduced-motion users (house pattern). */
|
|
180
|
+
@media (prefers-reduced-motion: reduce) {
|
|
181
|
+
.hk-color-picker-slider-thumb {
|
|
182
|
+
transition: none;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.hk-color-picker-slider-thumb:hover {
|
|
186
|
+
transform: translate(-50%, -50%);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
176
190
|
.hk-color-picker-slider-value {
|
|
177
191
|
font-size: var(--text-2xs);
|
|
178
192
|
font-weight: 500;
|
|
179
193
|
color: rgb(var(--color-muted));
|
|
180
194
|
width: 26px;
|
|
181
|
-
text-align:
|
|
195
|
+
text-align: end;
|
|
182
196
|
flex-shrink: 0;
|
|
183
197
|
font-variant-numeric: tabular-nums;
|
|
184
198
|
}
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
cursor: pointer;
|
|
11
11
|
border-radius: var(--radius-full, 999px);
|
|
12
12
|
-webkit-tap-highlight-color: transparent;
|
|
13
|
+
transition: background-color 200ms ease;
|
|
14
|
+
|
|
15
|
+
&:hover {
|
|
16
|
+
background: rgb(var(--color-text) / 6%);
|
|
17
|
+
}
|
|
13
18
|
|
|
14
19
|
&:focus-visible {
|
|
15
20
|
outline: 2px solid rgb(var(--color-primary));
|
|
@@ -79,7 +84,7 @@
|
|
|
79
84
|
margin: 0;
|
|
80
85
|
padding: 0;
|
|
81
86
|
display: grid;
|
|
82
|
-
gap:
|
|
87
|
+
gap: var(--space-2, 0.125rem);
|
|
83
88
|
}
|
|
84
89
|
|
|
85
90
|
.hk-ctx-legend-row {
|
|
@@ -93,9 +98,8 @@
|
|
|
93
98
|
.hk-ctx-legend-swatch {
|
|
94
99
|
width: 8px;
|
|
95
100
|
height: 8px;
|
|
96
|
-
border-radius: 2px;
|
|
101
|
+
border-radius: var(--radius-xs, 2px);
|
|
97
102
|
align-self: center;
|
|
98
|
-
flex-shrink: 0;
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
.hk-ctx-legend-label {
|
|
@@ -112,7 +116,7 @@
|
|
|
112
116
|
.hk-ctx-legend-pct {
|
|
113
117
|
color: rgb(var(--color-muted));
|
|
114
118
|
font-variant-numeric: tabular-nums;
|
|
115
|
-
text-align:
|
|
119
|
+
text-align: end;
|
|
116
120
|
min-width: 3ch;
|
|
117
121
|
}
|
|
118
122
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.s-cookie-consent {
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
|
-
gap:
|
|
5
|
-
font-size: 0.625rem;
|
|
4
|
+
gap: var(--space-4, 0.25rem);
|
|
5
|
+
font-size: var(--text-2xs, 0.625rem);
|
|
6
6
|
color: rgb(var(--color-muted));
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -11,8 +11,17 @@
|
|
|
11
11
|
border: none;
|
|
12
12
|
color: rgb(var(--color-primary));
|
|
13
13
|
cursor: pointer;
|
|
14
|
-
font-size: 0.625rem;
|
|
14
|
+
font-size: var(--text-2xs, 0.625rem);
|
|
15
15
|
font-weight: 600;
|
|
16
|
+
|
|
17
|
+
&:hover {
|
|
18
|
+
text-decoration: underline;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&:focus-visible {
|
|
22
|
+
outline: 2px solid rgb(var(--color-primary));
|
|
23
|
+
outline-offset: 2px;
|
|
24
|
+
}
|
|
16
25
|
}
|
|
17
26
|
|
|
18
27
|
.s-cookie-consent-icon {
|
|
@@ -13,33 +13,40 @@
|
|
|
13
13
|
opacity: 0.5;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
/* ── Trigger
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
align-items: center;
|
|
22
|
-
gap: var(--hi-space-6, 6px);
|
|
16
|
+
/* ── Trigger / native input ──────────────────────────────────── */
|
|
17
|
+
/* The custom trigger and the native <input type="date"> carry
|
|
18
|
+
* byte-identical field chrome, so those declarations live in one group. */
|
|
19
|
+
.hk-dp-trigger,
|
|
20
|
+
.hk-dp-native {
|
|
23
21
|
width: 100%;
|
|
24
22
|
min-height: 2.5rem;
|
|
25
|
-
padding: var(--
|
|
23
|
+
padding: var(--space-8, 8px) var(--space-12, 12px);
|
|
26
24
|
background: color-mix(in srgb, rgb(var(--color-surface)) 55%, transparent);
|
|
27
25
|
border: 1px solid color-mix(in srgb, rgb(var(--color-text)) 14%, transparent);
|
|
28
26
|
border-radius: var(--hi-radius-sm, 4px);
|
|
29
27
|
color: rgb(var(--color-text));
|
|
30
28
|
font-family: inherit;
|
|
31
|
-
font-size: var(--
|
|
29
|
+
font-size: var(--text-sm, 0.875rem);
|
|
32
30
|
line-height: 1.5;
|
|
33
|
-
cursor: pointer;
|
|
34
|
-
user-select: none;
|
|
35
31
|
transition:
|
|
36
32
|
background-color var(--hi-duration-fast, 0.15s) ease,
|
|
37
33
|
border-color var(--hi-duration-fast, 0.15s) ease,
|
|
38
34
|
box-shadow var(--hi-duration-fast, 0.15s) ease;
|
|
39
35
|
}
|
|
40
36
|
|
|
37
|
+
.hk-dp-trigger {
|
|
38
|
+
position: relative;
|
|
39
|
+
display: flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
gap: var(--space-6, 6px);
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
user-select: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
41
46
|
.hk-dp:not(.is-disabled) .hk-dp-trigger:hover,
|
|
42
|
-
.hk-dp
|
|
47
|
+
.hk-dp:not(.is-disabled) .hk-dp-native:hover,
|
|
48
|
+
.hk-dp-trigger:focus-visible,
|
|
49
|
+
.hk-dp-native:focus-visible {
|
|
43
50
|
border-color: rgb(var(--color-focused-border));
|
|
44
51
|
}
|
|
45
52
|
|
|
@@ -53,8 +60,9 @@
|
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
62
|
|
|
56
|
-
/* Focus ring + open state live on the
|
|
57
|
-
.hk-dp-trigger:focus-visible
|
|
63
|
+
/* Focus ring + open state live on the field itself. */
|
|
64
|
+
.hk-dp-trigger:focus-visible,
|
|
65
|
+
.hk-dp-native:focus-visible {
|
|
58
66
|
outline: none;
|
|
59
67
|
box-shadow: var(--shadow-focus);
|
|
60
68
|
background: rgb(var(--color-surface));
|
|
@@ -67,8 +75,8 @@
|
|
|
67
75
|
|
|
68
76
|
.hk-dp-trigger-sm {
|
|
69
77
|
min-height: 2rem;
|
|
70
|
-
padding: var(--
|
|
71
|
-
font-size: var(--
|
|
78
|
+
padding: var(--space-4, 4px) var(--space-10, 10px);
|
|
79
|
+
font-size: var(--text-xs, 0.75rem);
|
|
72
80
|
}
|
|
73
81
|
|
|
74
82
|
.hk-dp-value {
|
|
@@ -102,7 +110,6 @@
|
|
|
102
110
|
|
|
103
111
|
.hk-dp-trigger:hover &,
|
|
104
112
|
.hk-dp-trigger:focus &,
|
|
105
|
-
.hk-dp-trigger:focus-visible &,
|
|
106
113
|
.hk-dp-clear:focus-visible {
|
|
107
114
|
opacity: 1;
|
|
108
115
|
}
|
|
@@ -124,13 +131,13 @@
|
|
|
124
131
|
/* ── Calendar panel ──────────────────────────────────────────── */
|
|
125
132
|
|
|
126
133
|
.hk-dp-popover.hk-popover-panel {
|
|
127
|
-
padding: var(--
|
|
134
|
+
padding: var(--space-10, 10px) var(--space-12, 12px) var(--space-8, 8px);
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
.hk-dp-panel {
|
|
131
138
|
display: flex;
|
|
132
139
|
flex-direction: column;
|
|
133
|
-
gap: var(--
|
|
140
|
+
gap: var(--space-8, 8px);
|
|
134
141
|
min-width: 17.5rem;
|
|
135
142
|
user-select: none;
|
|
136
143
|
color: var(--hi-color-text-primary);
|
|
@@ -152,10 +159,7 @@
|
|
|
152
159
|
display: grid;
|
|
153
160
|
grid-template-columns: 1fr auto 1fr;
|
|
154
161
|
align-items: center;
|
|
155
|
-
gap: var(--
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.hk-dp-header {
|
|
162
|
+
gap: var(--space-4, 4px);
|
|
159
163
|
/* Fixed height keeps the header row — and therefore the shared stage
|
|
160
164
|
* height — identical in every view and locale (enlarged on touch). */
|
|
161
165
|
height: var(--hk-picker-header);
|
|
@@ -164,7 +168,7 @@
|
|
|
164
168
|
.hk-dp-header-side {
|
|
165
169
|
display: flex;
|
|
166
170
|
align-items: center;
|
|
167
|
-
gap: var(--
|
|
171
|
+
gap: var(--space-2, 2px);
|
|
168
172
|
min-width: 0;
|
|
169
173
|
}
|
|
170
174
|
|
|
@@ -192,6 +196,10 @@
|
|
|
192
196
|
color: var(--hi-color-text-primary);
|
|
193
197
|
}
|
|
194
198
|
|
|
199
|
+
&:active:not(:disabled) {
|
|
200
|
+
filter: brightness(0.95);
|
|
201
|
+
}
|
|
202
|
+
|
|
195
203
|
&:focus-visible {
|
|
196
204
|
outline: 2px solid color-mix(in srgb, var(--hi-color-primary) 55%, transparent);
|
|
197
205
|
outline-offset: 1px;
|
|
@@ -204,22 +212,21 @@
|
|
|
204
212
|
}
|
|
205
213
|
|
|
206
214
|
.hk-dp-title {
|
|
207
|
-
font-size: var(--
|
|
215
|
+
font-size: var(--text-sm, 0.875rem);
|
|
208
216
|
font-weight: 600;
|
|
209
217
|
color: var(--hi-color-text-primary);
|
|
210
218
|
font-variant-numeric: tabular-nums;
|
|
211
|
-
text-align: center;
|
|
212
219
|
display: flex;
|
|
213
220
|
align-items: center;
|
|
214
221
|
justify-content: center;
|
|
215
|
-
gap: var(--
|
|
222
|
+
gap: var(--space-4, 4px);
|
|
216
223
|
}
|
|
217
224
|
|
|
218
225
|
.hk-dp-title-btn {
|
|
219
226
|
appearance: none;
|
|
220
227
|
background: transparent;
|
|
221
228
|
border: 0;
|
|
222
|
-
padding: var(--
|
|
229
|
+
padding: var(--space-2, 2px) var(--space-4, 4px);
|
|
223
230
|
font: inherit;
|
|
224
231
|
font-weight: 600;
|
|
225
232
|
color: inherit;
|
|
@@ -233,6 +240,10 @@
|
|
|
233
240
|
color: var(--hi-color-primary);
|
|
234
241
|
}
|
|
235
242
|
|
|
243
|
+
&:active:not(:disabled) {
|
|
244
|
+
filter: brightness(0.95);
|
|
245
|
+
}
|
|
246
|
+
|
|
236
247
|
&:focus-visible {
|
|
237
248
|
outline: 2px solid color-mix(in srgb, var(--hi-color-primary) 55%, transparent);
|
|
238
249
|
outline-offset: 1px;
|
|
@@ -243,7 +254,7 @@
|
|
|
243
254
|
.hk-dp-grid {
|
|
244
255
|
display: grid;
|
|
245
256
|
grid-template-columns: repeat(7, 1fr);
|
|
246
|
-
gap: 2px;
|
|
257
|
+
gap: var(--space-2, 2px);
|
|
247
258
|
}
|
|
248
259
|
|
|
249
260
|
/* Month/year pick grids sit in the same fixed stage as the day grid and
|
|
@@ -254,7 +265,7 @@
|
|
|
254
265
|
|
|
255
266
|
.hk-dp-wd {
|
|
256
267
|
text-align: center;
|
|
257
|
-
font-size: var(--
|
|
268
|
+
font-size: var(--text-xs, 0.75rem);
|
|
258
269
|
font-weight: 600;
|
|
259
270
|
color: var(--hi-color-muted);
|
|
260
271
|
height: var(--hk-picker-wd);
|
|
@@ -278,7 +289,7 @@
|
|
|
278
289
|
justify-content: center;
|
|
279
290
|
color: color-mix(in srgb, var(--hi-color-text-secondary) 70%, transparent);
|
|
280
291
|
cursor: pointer;
|
|
281
|
-
font-size: var(--
|
|
292
|
+
font-size: var(--text-xs, 0.75rem);
|
|
282
293
|
font-variant-numeric: tabular-nums;
|
|
283
294
|
transition: background var(--hi-duration-fast, 0.15s) ease, color var(--hi-duration-fast, 0.15s) ease;
|
|
284
295
|
|
|
@@ -287,6 +298,10 @@
|
|
|
287
298
|
color: var(--hi-color-text-primary);
|
|
288
299
|
}
|
|
289
300
|
|
|
301
|
+
&:active:not(:disabled) {
|
|
302
|
+
filter: brightness(0.95);
|
|
303
|
+
}
|
|
304
|
+
|
|
290
305
|
&:focus-visible {
|
|
291
306
|
outline: 2px solid color-mix(in srgb, var(--hi-color-primary) 55%, transparent);
|
|
292
307
|
outline-offset: -1px;
|
|
@@ -299,10 +314,6 @@
|
|
|
299
314
|
&.is-disabled {
|
|
300
315
|
cursor: default;
|
|
301
316
|
opacity: 0.25;
|
|
302
|
-
|
|
303
|
-
&:hover {
|
|
304
|
-
background: transparent;
|
|
305
|
-
}
|
|
306
317
|
}
|
|
307
318
|
|
|
308
319
|
&.is-today:not(.is-selected) {
|
|
@@ -315,10 +326,6 @@
|
|
|
315
326
|
background: var(--hi-color-primary);
|
|
316
327
|
color: rgb(var(--color-on-solid-text, 255 255 255));
|
|
317
328
|
font-weight: 600;
|
|
318
|
-
|
|
319
|
-
&:hover {
|
|
320
|
-
background: var(--hi-color-primary);
|
|
321
|
-
}
|
|
322
329
|
}
|
|
323
330
|
}
|
|
324
331
|
|
|
@@ -331,41 +338,18 @@
|
|
|
331
338
|
.hk-dp-footer {
|
|
332
339
|
display: flex;
|
|
333
340
|
justify-content: center;
|
|
334
|
-
padding-top: var(--
|
|
341
|
+
padding-top: var(--space-6, 6px);
|
|
335
342
|
border-top: 1px solid color-mix(in srgb, var(--hi-color-border) 10%, transparent);
|
|
336
343
|
}
|
|
337
344
|
|
|
338
345
|
/* ── Native mobile input ─────────────────────────────────────── */
|
|
346
|
+
/* Unique native-input bits only; the shared field chrome comes from the
|
|
347
|
+
* .hk-dp-trigger / .hk-dp-native group at the top of the file. */
|
|
339
348
|
|
|
340
349
|
.hk-dp-native {
|
|
341
350
|
display: block;
|
|
342
|
-
width: 100%;
|
|
343
|
-
min-height: 2.5rem;
|
|
344
351
|
box-sizing: border-box;
|
|
345
|
-
padding: var(--hi-space-8, 8px) var(--hi-space-12, 12px);
|
|
346
|
-
background: color-mix(in srgb, rgb(var(--color-surface)) 55%, transparent);
|
|
347
|
-
border: 1px solid color-mix(in srgb, rgb(var(--color-text)) 14%, transparent);
|
|
348
|
-
border-radius: var(--hi-radius-sm, 4px);
|
|
349
|
-
color: rgb(var(--color-text));
|
|
350
|
-
font-family: inherit;
|
|
351
|
-
font-size: var(--hi-text-sm, 0.875rem);
|
|
352
|
-
line-height: 1.5;
|
|
353
352
|
font-variant-numeric: tabular-nums;
|
|
354
|
-
transition:
|
|
355
|
-
background-color var(--hi-duration-fast, 0.15s) ease,
|
|
356
|
-
border-color var(--hi-duration-fast, 0.15s) ease,
|
|
357
|
-
box-shadow var(--hi-duration-fast, 0.15s) ease;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
.hk-dp:not(.is-disabled) .hk-dp-native:hover,
|
|
361
|
-
.hk-dp-native:focus-visible {
|
|
362
|
-
border-color: rgb(var(--color-focused-border));
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
.hk-dp-native:focus-visible {
|
|
366
|
-
outline: none;
|
|
367
|
-
box-shadow: var(--shadow-focus);
|
|
368
|
-
background: rgb(var(--color-surface));
|
|
369
353
|
}
|
|
370
354
|
|
|
371
355
|
.hk-dp.is-disabled .hk-dp-native {
|