@kjun-ui/native 0.16.0 → 0.17.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.
- package/dist/index.cjs +1985 -1913
- package/dist/index.js +1866 -1793
- package/dist/index.web.cjs +2009 -1937
- package/dist/index.web.js +1883 -1810
- package/dist/styles.css +74 -30
- package/dist/types/packages/native/src/alert-actions-context.d.cts +3 -0
- package/dist/types/packages/native/src/alert-actions-context.d.ts +3 -0
- package/dist/types/packages/native/src/app-navigation.d.cts +9 -3
- package/dist/types/packages/native/src/app-navigation.d.ts +9 -3
- package/dist/types/packages/native/src/choice-controls.d.cts +3 -1
- package/dist/types/packages/native/src/choice-controls.d.ts +3 -1
- package/dist/types/packages/native/src/display-primitives.d.cts +1 -11
- package/dist/types/packages/native/src/display-primitives.d.ts +1 -11
- package/dist/types/packages/native/src/kpi-row.d.cts +6 -2
- package/dist/types/packages/native/src/kpi-row.d.ts +6 -2
- package/dist/types/packages/native/src/layer-backdrop.d.cts +5 -0
- package/dist/types/packages/native/src/layer-backdrop.d.ts +5 -0
- package/dist/types/packages/native/src/list.d.cts +3 -1
- package/dist/types/packages/native/src/list.d.ts +3 -1
- package/dist/types/packages/native/src/media.d.cts +1 -1
- package/dist/types/packages/native/src/media.d.ts +1 -1
- package/dist/types/packages/native/src/progress.d.cts +16 -0
- package/dist/types/packages/native/src/progress.d.ts +16 -0
- package/dist/types/packages/native/src/range-input.d.cts +4 -0
- package/dist/types/packages/native/src/range-input.d.ts +4 -0
- package/dist/types/shared/package-runtime/alert-tone.d.cts +11 -0
- package/dist/types/shared/package-runtime/alert-tone.d.ts +11 -0
- package/dist/types/shared/package-runtime/drawer-geometry.d.cts +10 -4
- package/dist/types/shared/package-runtime/drawer-geometry.d.ts +10 -4
- package/dist/types/shared/package-runtime/progress-circle.d.cts +5 -0
- package/dist/types/shared/package-runtime/progress-circle.d.ts +5 -0
- package/package.json +3 -3
package/dist/styles.css
CHANGED
|
@@ -273,6 +273,9 @@
|
|
|
273
273
|
--_kjun-extension-list-description-gap: 4px;
|
|
274
274
|
--_kjun-extension-list-actions-gap: 8px;
|
|
275
275
|
--_kjun-extension-list-actions-padding: 16px;
|
|
276
|
+
--_kjun-extension-list-leading-width: 40px;
|
|
277
|
+
--_kjun-extension-list-bare-heading-padding-bottom: 4px;
|
|
278
|
+
--_kjun-extension-list-icon-size: 20px;
|
|
276
279
|
--_kjun-extension-navigation-minimum-height: 56px;
|
|
277
280
|
--_kjun-extension-navigation-padding: 16px;
|
|
278
281
|
--_kjun-extension-navigation-gap: 12px;
|
|
@@ -327,12 +330,16 @@
|
|
|
327
330
|
--_kjun-extension-bottom-navigation-badge-offset: 4px;
|
|
328
331
|
--_kjun-extension-bottom-navigation-badge-overlap: 8px;
|
|
329
332
|
--_kjun-extension-bottom-navigation-badge-radius: 9999px;
|
|
333
|
+
--_kjun-extension-avatar-xs: 24px;
|
|
330
334
|
--_kjun-extension-avatar-sm: 32px;
|
|
331
335
|
--_kjun-extension-avatar-md: 40px;
|
|
332
336
|
--_kjun-extension-avatar-lg: 56px;
|
|
337
|
+
--_kjun-extension-avatar-xl: 72px;
|
|
338
|
+
--_kjun-extension-avatar-fallback-icon-sizes-xs: 12px;
|
|
333
339
|
--_kjun-extension-avatar-fallback-icon-sizes-sm: 14px;
|
|
334
340
|
--_kjun-extension-avatar-fallback-icon-sizes-md: 18px;
|
|
335
341
|
--_kjun-extension-avatar-fallback-icon-sizes-lg: 24px;
|
|
342
|
+
--_kjun-extension-avatar-fallback-icon-sizes-xl: 32px;
|
|
336
343
|
--_kjun-extension-avatar-fallback-icon-size: 18px;
|
|
337
344
|
--_kjun-extension-chip-sm: 28px;
|
|
338
345
|
--_kjun-extension-chip-md: 32px;
|
|
@@ -444,23 +451,25 @@
|
|
|
444
451
|
--_kjun-extension-toast-action-gap: 8px;
|
|
445
452
|
--_kjun-extension-toast-radius: 12px;
|
|
446
453
|
--_kjun-extension-toast-close-radius: 6px;
|
|
447
|
-
--_kjun-extension-alert-radius:
|
|
448
|
-
--_kjun-extension-alert-description-gap:
|
|
454
|
+
--_kjun-extension-alert-radius: 16px;
|
|
455
|
+
--_kjun-extension-alert-description-gap: 2px;
|
|
449
456
|
--_kjun-extension-alert-close-size: 28px;
|
|
450
457
|
--_kjun-extension-alert-close-radius: 8px;
|
|
451
458
|
--_kjun-extension-alert-actions-gap: 8px;
|
|
452
|
-
--_kjun-extension-alert-
|
|
453
|
-
--_kjun-extension-alert-sm-
|
|
454
|
-
--_kjun-extension-alert-sm-
|
|
459
|
+
--_kjun-extension-alert-warning-icon-lift: 0.5px;
|
|
460
|
+
--_kjun-extension-alert-sm-radius: 12px;
|
|
461
|
+
--_kjun-extension-alert-sm-padding-x: 14px;
|
|
462
|
+
--_kjun-extension-alert-sm-padding-y: 12px;
|
|
463
|
+
--_kjun-extension-alert-sm-gap: 10px;
|
|
455
464
|
--_kjun-extension-alert-sm-close-size: 24px;
|
|
456
|
-
--_kjun-extension-alert-sm-action-gap:
|
|
457
|
-
--_kjun-extension-alert-md-padding-x:
|
|
458
|
-
--_kjun-extension-alert-md-padding-y:
|
|
459
|
-
--_kjun-extension-alert-md-gap:
|
|
465
|
+
--_kjun-extension-alert-sm-action-gap: 10px;
|
|
466
|
+
--_kjun-extension-alert-md-padding-x: 16px;
|
|
467
|
+
--_kjun-extension-alert-md-padding-y: 16px;
|
|
468
|
+
--_kjun-extension-alert-md-gap: 12px;
|
|
460
469
|
--_kjun-extension-alert-md-action-gap: 12px;
|
|
461
|
-
--_kjun-extension-alert-icon-sizes-sm:
|
|
462
|
-
--_kjun-extension-alert-icon-sizes-md:
|
|
463
|
-
--_kjun-extension-alert-close-icon-size:
|
|
470
|
+
--_kjun-extension-alert-icon-sizes-sm: 16px;
|
|
471
|
+
--_kjun-extension-alert-icon-sizes-md: 18px;
|
|
472
|
+
--_kjun-extension-alert-close-icon-size: 16px;
|
|
464
473
|
--_kjun-extension-table-card-padding: 12px;
|
|
465
474
|
--_kjun-extension-table-card-radius: 12px;
|
|
466
475
|
--_kjun-extension-table-card-gap: 8px;
|
|
@@ -706,6 +715,11 @@
|
|
|
706
715
|
--_kjun-state-opacity-deviation-low: 0.08;
|
|
707
716
|
--_kjun-state-opacity-deviation-medium: 0.14;
|
|
708
717
|
--_kjun-state-opacity-deviation-strong: 0.22;
|
|
718
|
+
--_kjun-state-opacity-tint-fill: 0.06;
|
|
719
|
+
--_kjun-state-opacity-tint-control: 0.08;
|
|
720
|
+
--_kjun-state-opacity-tint-hover: 0.12;
|
|
721
|
+
--_kjun-state-opacity-tint-active: 0.16;
|
|
722
|
+
--_kjun-state-opacity-muted: 0.55;
|
|
709
723
|
--_kjun-state-focus-width: 2px;
|
|
710
724
|
--_kjun-state-focus-offset: 2px;
|
|
711
725
|
--_kjun-state-focus-choice-offset: 3px;
|
|
@@ -2124,18 +2138,26 @@
|
|
|
2124
2138
|
display: flex;
|
|
2125
2139
|
align-items: flex-start;
|
|
2126
2140
|
gap: var(--_kjun-extension-alert-md-gap);
|
|
2127
|
-
border: var(--_kjun-border-default-width) solid;
|
|
2128
2141
|
border-radius: var(--_kjun-extension-alert-radius);
|
|
2142
|
+
word-break: keep-all;
|
|
2129
2143
|
padding: var(--_kjun-extension-alert-md-padding-y) var(--_kjun-extension-alert-md-padding-x);
|
|
2130
2144
|
--_kjun-alert-line: var(--_kjun-type-control-line);
|
|
2131
2145
|
--_kjun-alert-close: var(--_kjun-extension-alert-close-size);
|
|
2132
2146
|
--_kjun-alert-action-gap: var(--_kjun-extension-alert-md-action-gap);
|
|
2133
|
-
|
|
2147
|
+
/* Text-role tints stay readable on any fill and page background, light or dark. */
|
|
2148
|
+
--_kjun-alert-tint-fill: color-mix(in srgb, var(--_kjun-color-text) calc(var(--_kjun-state-opacity-tint-fill) * 100%), transparent);
|
|
2149
|
+
--_kjun-alert-tint-control: color-mix(in srgb, var(--_kjun-color-text) calc(var(--_kjun-state-opacity-tint-control) * 100%), transparent);
|
|
2150
|
+
--_kjun-alert-tint-hover: color-mix(in srgb, var(--_kjun-color-text) calc(var(--_kjun-state-opacity-tint-hover) * 100%), transparent);
|
|
2151
|
+
--_kjun-alert-tint-active: color-mix(in srgb, var(--_kjun-color-text) calc(var(--_kjun-state-opacity-tint-active) * 100%), transparent);
|
|
2152
|
+
}
|
|
2153
|
+
/* Info has no fill role: a translucent tint keeps its edge on white and gray pages alike. */
|
|
2154
|
+
.kjun-alert[data-tone="info"] { background: var(--_kjun-alert-tint-fill); }
|
|
2134
2155
|
.kjun-alert[data-size="sm"] {
|
|
2135
2156
|
--_kjun-alert-line: var(--_kjun-type-control-small-line);
|
|
2136
2157
|
--_kjun-alert-close: var(--_kjun-extension-alert-sm-close-size);
|
|
2137
2158
|
--_kjun-alert-action-gap: var(--_kjun-extension-alert-sm-action-gap);
|
|
2138
2159
|
gap: var(--_kjun-extension-alert-sm-gap);
|
|
2160
|
+
border-radius: var(--_kjun-extension-alert-sm-radius);
|
|
2139
2161
|
padding: var(--_kjun-extension-alert-sm-padding-y) var(--_kjun-extension-alert-sm-padding-x);
|
|
2140
2162
|
}
|
|
2141
2163
|
.kjun-alert-icon {
|
|
@@ -2144,6 +2166,8 @@
|
|
|
2144
2166
|
flex-shrink: 0;
|
|
2145
2167
|
height: var(--_kjun-alert-line);
|
|
2146
2168
|
}
|
|
2169
|
+
/* A triangle's optical center sits below its box center. */
|
|
2170
|
+
.kjun-alert[data-tone="warning"] .kjun-alert-icon svg { transform: translateY(calc(-1 * var(--_kjun-extension-alert-warning-icon-lift))); }
|
|
2147
2171
|
.kjun-alert-content {
|
|
2148
2172
|
min-height: var(--_kjun-alert-line);
|
|
2149
2173
|
overflow-wrap: anywhere;
|
|
@@ -2152,15 +2176,16 @@
|
|
|
2152
2176
|
}
|
|
2153
2177
|
.kjun-alert-title {
|
|
2154
2178
|
margin: 0;
|
|
2155
|
-
font-size: var(--_kjun-type-control-size);
|
|
2156
2179
|
color: var(--_kjun-color-text);
|
|
2180
|
+
font-size: var(--_kjun-type-control-size);
|
|
2157
2181
|
line-height: var(--_kjun-type-control-line);
|
|
2158
2182
|
font-weight: var(--_kjun-type-control-weight);
|
|
2159
2183
|
letter-spacing: var(--_kjun-type-control-tracking);
|
|
2160
2184
|
}
|
|
2185
|
+
/* Body copy stays on the text role: secondary gray turns muddy on tinted fills. */
|
|
2161
2186
|
.kjun-alert-description {
|
|
2162
2187
|
font-size: var(--_kjun-type-body-size);
|
|
2163
|
-
color: var(--_kjun-color-text
|
|
2188
|
+
color: var(--_kjun-color-text);
|
|
2164
2189
|
line-height: var(--_kjun-type-body-line);
|
|
2165
2190
|
font-weight: var(--_kjun-type-body-weight);
|
|
2166
2191
|
letter-spacing: var(--_kjun-type-body-tracking);
|
|
@@ -2192,7 +2217,7 @@
|
|
|
2192
2217
|
background: transparent;
|
|
2193
2218
|
border: 0;
|
|
2194
2219
|
padding: 0;
|
|
2195
|
-
color: var(--_kjun-color-text-
|
|
2220
|
+
color: color-mix(in srgb, var(--_kjun-color-text) calc(var(--_kjun-state-opacity-muted) * 100%), transparent);
|
|
2196
2221
|
cursor: pointer;
|
|
2197
2222
|
}
|
|
2198
2223
|
.kjun-alert-actions {
|
|
@@ -2202,15 +2227,15 @@
|
|
|
2202
2227
|
gap: var(--_kjun-extension-alert-actions-gap);
|
|
2203
2228
|
margin-top: var(--_kjun-alert-action-gap);
|
|
2204
2229
|
}
|
|
2205
|
-
/* Secondary actions
|
|
2206
|
-
.kjun-alert-actions .kjun-button[data-variant="secondary"] { background: var(--_kjun-
|
|
2207
|
-
.kjun-alert-actions .kjun-button[data-variant="secondary"]:hover:not(:disabled) { background: var(--_kjun-
|
|
2208
|
-
.kjun-alert-actions .kjun-button[data-variant="secondary"]:active:not(:disabled) { background: var(--_kjun-
|
|
2230
|
+
/* Secondary actions and the close button tint the alert's own fill instead of sitting on it as gray or white. */
|
|
2231
|
+
.kjun-alert-actions .kjun-button[data-variant="secondary"] { background: var(--_kjun-alert-tint-control); }
|
|
2232
|
+
.kjun-alert-actions .kjun-button[data-variant="secondary"]:hover:not(:disabled) { background: var(--_kjun-alert-tint-hover); }
|
|
2233
|
+
.kjun-alert-actions .kjun-button[data-variant="secondary"]:active:not(:disabled) { background: var(--_kjun-alert-tint-active); }
|
|
2209
2234
|
@media (hover: none), (pointer: coarse) {
|
|
2210
|
-
.kjun-alert-actions .kjun-button[data-variant="secondary"]:hover:not(:disabled):not(:active) { background: var(--_kjun-
|
|
2235
|
+
.kjun-alert-actions .kjun-button[data-variant="secondary"]:hover:not(:disabled):not(:active) { background: var(--_kjun-alert-tint-control); }
|
|
2211
2236
|
}
|
|
2212
|
-
.kjun-alert-close:hover { background: var(--_kjun-
|
|
2213
|
-
.kjun-alert-close:active { background: var(--_kjun-
|
|
2237
|
+
.kjun-alert-close:hover { background: var(--_kjun-alert-tint-hover); color: var(--_kjun-color-text); }
|
|
2238
|
+
.kjun-alert-close:active { background: var(--_kjun-alert-tint-active); color: var(--_kjun-color-text); }
|
|
2214
2239
|
.kjun-alert-close:focus-visible {
|
|
2215
2240
|
outline: var(--_kjun-state-focus-width) solid var(--_kjun-color-focus-ring);
|
|
2216
2241
|
outline-offset: var(--_kjun-state-focus-offset);
|
|
@@ -2235,6 +2260,20 @@
|
|
|
2235
2260
|
border-radius: inherit;
|
|
2236
2261
|
transition: width var(--_kjun-motion-progress) var(--_kjun-ease-out);
|
|
2237
2262
|
}
|
|
2263
|
+
.kjun-progress[data-state="indeterminate"] .kjun-progress-track > div {
|
|
2264
|
+
animation: kjun-progress-indeterminate var(--_kjun-motion-spin) linear infinite;
|
|
2265
|
+
transition: none;
|
|
2266
|
+
}
|
|
2267
|
+
@keyframes kjun-progress-indeterminate {
|
|
2268
|
+
from { transform: translateX(-100%); }
|
|
2269
|
+
to { transform: translateX(334%); }
|
|
2270
|
+
}
|
|
2271
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2272
|
+
.kjun-progress[data-state="indeterminate"] .kjun-progress-track > div {
|
|
2273
|
+
animation: none;
|
|
2274
|
+
transform: translateX(116%);
|
|
2275
|
+
}
|
|
2276
|
+
}
|
|
2238
2277
|
.kjun-progress-sub {
|
|
2239
2278
|
font-size: var(--_kjun-type-caption-size);
|
|
2240
2279
|
margin-top: var(--_kjun-geometry-dimension-value4);
|
|
@@ -4820,7 +4859,11 @@
|
|
|
4820
4859
|
|
|
4821
4860
|
.kjun-list-section,.kjun-top-navigation,.kjun-bottom-navigation,.kjun-bottom-action-bar{min-width:0;max-width:100%;color:var(--_kjun-color-text);background:var(--_kjun-color-surface)}
|
|
4822
4861
|
.kjun-list-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--_kjun-extension-list-gap);padding:var(--_kjun-extension-list-padding)}.kjun-list-heading h3{font-size:var(--_kjun-type-card-title-size);margin:0;line-height:var(--_kjun-type-card-title-line);font-weight:var(--_kjun-type-card-title-weight);letter-spacing:var(--_kjun-type-card-title-tracking)}.kjun-list-heading p{margin:var(--_kjun-geometry-dimension-value4) 0 0;font-size:var(--_kjun-type-caption-size);color:var(--_kjun-color-text-secondary);overflow-wrap:anywhere;line-height:var(--_kjun-type-caption-line);font-weight:var(--_kjun-type-caption-weight);letter-spacing:var(--_kjun-type-caption-tracking)}
|
|
4823
|
-
.kjun-list{list-style:none;padding:0;margin:0}.kjun-list-row{display:flex;align-items:center;gap:var(--_kjun-extension-list-gap);
|
|
4862
|
+
.kjun-list{list-style:none;padding:0;margin:0}.kjun-list-row{display:flex;align-items:center;gap:var(--_kjun-extension-list-gap);position:relative;min-width:0}/* Dividers start where the text does: the row inset, or past the fixed leading column. */
|
|
4863
|
+
.kjun-list-row:not(:last-child)::after,.kjun-list-item:not(:last-child)::after{content:"";position:absolute;inset-inline:var(--_kjun-list-divider-inset,var(--_kjun-extension-list-padding)) 0;bottom:0;height:var(--_kjun-border-default-width);background:var(--_kjun-color-divider);pointer-events:none}
|
|
4864
|
+
.kjun-list-row[data-leading]{--_kjun-list-divider-inset:calc(var(--_kjun-extension-list-padding) + var(--_kjun-extension-list-leading-width) + var(--_kjun-extension-list-gap))}.kjun-list[data-divider=false]>:is(.kjun-list-row,.kjun-list-item)::after{content:none}.kjun-list[data-density=compact] .kjun-list-main{min-height:var(--_kjun-extension-list-compact-minimum-height);padding-block:var(--_kjun-extension-list-compact-padding-y)}.kjun-list-main{display:flex;align-items:center;gap:var(--_kjun-extension-list-gap);flex:1;min-width:0;min-height:var(--_kjun-extension-list-minimum-height);padding:var(--_kjun-extension-list-padding);text-align:start;color:inherit;text-decoration:none;background:transparent;border:0;font:inherit}.kjun-list-main:is(button,a):hover{background:var(--_kjun-color-hover)}.kjun-list-body{flex:1;min-width:0}.kjun-list-content{display:block;margin-top:var(--_kjun-extension-list-description-gap)}.kjun-list-title,.kjun-list-description{display:block;overflow-wrap:anywhere;line-height:1.5}.kjun-list-title{font-size:var(--_kjun-type-control-size);line-height:var(--_kjun-type-control-line);font-weight:var(--_kjun-type-control-weight);letter-spacing:var(--_kjun-type-control-tracking)}.kjun-list-description{font-size:var(--_kjun-type-caption-size);color:var(--_kjun-color-text-secondary);line-height:var(--_kjun-type-caption-line);font-weight:var(--_kjun-type-caption-weight);letter-spacing:var(--_kjun-type-caption-tracking)}/* A fixed leading column keeps titles on one line whether a row shows an icon, an avatar or a wider image. */
|
|
4865
|
+
.kjun-list-leading{flex-shrink:0;display:flex;align-items:center;justify-content:center;min-width:var(--_kjun-extension-list-leading-width)}
|
|
4866
|
+
.kjun-list-icon{color:var(--_kjun-color-text-secondary)}.kjun-list-trailing{overflow-wrap:anywhere;max-width:35%}.kjun-list-actions{display:flex;flex-wrap:wrap;gap:var(--_kjun-extension-list-actions-gap);padding-inline-end:var(--_kjun-extension-list-actions-padding);max-width:45%}
|
|
4824
4867
|
/* A disabled row disables its actions too, so the row never reads as partly available. */
|
|
4825
4868
|
.kjun-list-actions[data-disabled]{opacity:var(--_kjun-state-opacity-disabled)}
|
|
4826
4869
|
.kjun-navigation-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--_kjun-extension-navigation-actions-gap);min-width:0}
|
|
@@ -4828,7 +4871,7 @@
|
|
|
4828
4871
|
/* Initials scale with the avatar (about 40% of its side) and show Latin initials in capitals. */
|
|
4829
4872
|
.kjun-avatar .kjun-image-fallback{text-transform:uppercase;font-size:var(--_kjun-type-input-size);line-height:var(--_kjun-type-input-line)}
|
|
4830
4873
|
.kjun-avatar[data-size=sm] .kjun-image-fallback{font-size:var(--_kjun-type-control-size);line-height:var(--_kjun-type-control-line)}
|
|
4831
|
-
.kjun-avatar[data-size=lg] .kjun-image-fallback{font-size:var(--_kjun-type-section-title-size);line-height:var(--_kjun-type-section-title-line)}.kjun-avatar[data-shape=square]{border-radius:var(--_kjun-geometry-radius-radius8)}
|
|
4874
|
+
.kjun-avatar[data-size=lg] .kjun-image-fallback{font-size:var(--_kjun-type-section-title-size);line-height:var(--_kjun-type-section-title-line)}.kjun-avatar[data-size=xs] .kjun-image-fallback{font-size:var(--_kjun-type-control-small-size);line-height:var(--_kjun-type-control-small-line)}.kjun-avatar[data-size=xl] .kjun-image-fallback{font-size:var(--_kjun-type-page-title-size);line-height:var(--_kjun-type-page-title-line)}.kjun-avatar[data-shape=square]{border-radius:var(--_kjun-geometry-radius-radius8)}
|
|
4832
4875
|
/* App colors (color/textColor) arrive as private custom properties; without them the image roles stay. */
|
|
4833
4876
|
.kjun-avatar .kjun-image{background:var(--_kjun-avatar-color,var(--_kjun-color-secondary))}.kjun-avatar .kjun-image-fallback{color:var(--_kjun-avatar-text-color,var(--_kjun-color-text-secondary))}
|
|
4834
4877
|
.kjun-chip{--_kjun-chip-remove-icon:var(--_kjun-extension-chip-remove-icon-sizes-md);display:inline-flex;max-width:100%;align-items:center;gap:var(--_kjun-extension-chip-gap);min-height:var(--_kjun-extension-chip-md);padding:var(--_kjun-extension-chip-padding-y) var(--_kjun-extension-chip-padding-x);border-radius:var(--_kjun-extension-chip-radius);background:var(--_kjun-color-secondary);font-size:var(--_kjun-extension-chip-typography-md-font-size-px);line-height:var(--_kjun-extension-chip-typography-md-line-height-px);font-weight:var(--_kjun-extension-chip-typography-md-font-weight);letter-spacing:var(--_kjun-extension-chip-typography-md-letter-spacing-em)}
|
|
@@ -5034,6 +5077,9 @@
|
|
|
5034
5077
|
.kjun-list-description { margin-top:var(--_kjun-extension-list-description-gap); }
|
|
5035
5078
|
|
|
5036
5079
|
.kjun-list-heading > div { flex:1; min-width:0; overflow-wrap:anywhere; }
|
|
5080
|
+
/* A title without a description labels the rows below as a small group header instead of floating above them. */
|
|
5081
|
+
.kjun-list-heading[data-bare] { padding-bottom:var(--_kjun-extension-list-bare-heading-padding-bottom); }
|
|
5082
|
+
.kjun-list-heading[data-bare] h3 { font-size:var(--_kjun-type-control-small-size); line-height:var(--_kjun-type-control-small-line); font-weight:var(--_kjun-type-control-small-weight); letter-spacing:var(--_kjun-type-control-small-tracking); color:var(--_kjun-color-text-secondary); }
|
|
5037
5083
|
|
|
5038
5084
|
/* KjunFab: a round action pinned to the viewport's bottom end, above page content and clear of the safe area. */
|
|
5039
5085
|
.kjun-fab{position:fixed;right:var(--_kjun-extension-fab-inset);z-index:var(--_kjun-layer-page-navigation);display:inline-flex;align-items:center;justify-content:center;width:var(--_kjun-extension-fab-size);height:var(--_kjun-extension-fab-size);padding:0;border:0;border-radius:50%;background:var(--_kjun-color-brand);color:var(--_kjun-color-on-brand);box-shadow:var(--_kjun-elevation-floating);cursor:pointer}
|
|
@@ -5042,15 +5088,13 @@
|
|
|
5042
5088
|
.kjun-fab:disabled{opacity:var(--_kjun-state-opacity-disabled);cursor:not-allowed}
|
|
5043
5089
|
|
|
5044
5090
|
/* 0.14.0: plain sections, destructive rows, decorative chevrons and non-row list items share the row inset. */
|
|
5045
|
-
.kjun-list-section[data-surface="false"]{background:transparent}
|
|
5091
|
+
.kjun-list-section[data-surface="false"],.kjun-top-navigation[data-surface="false"],.kjun-bottom-navigation[data-surface="false"],.kjun-bottom-action-bar[data-surface="false"]{background:transparent}
|
|
5046
5092
|
/* A rounded section clips its rows to the corners; row focus rings move inside so the clip does not cut them. */
|
|
5047
5093
|
.kjun-list-section[data-radius]{overflow:hidden;overflow:clip}
|
|
5048
5094
|
.kjun-list-section[data-radius] .kjun-list-main:focus-visible{outline-offset:var(--_kjun-state-focus-inset-offset)}
|
|
5049
5095
|
.kjun-list-row[data-destructive] .kjun-list-title{color:var(--_kjun-color-danger)}
|
|
5050
5096
|
.kjun-list-chevron{flex-shrink:0;color:var(--_kjun-color-text-tertiary)}
|
|
5051
|
-
.kjun-list-item{padding:var(--_kjun-extension-list-padding);
|
|
5052
|
-
.kjun-list-item:last-child{border-bottom:0}
|
|
5053
|
-
.kjun-list[data-divider=false]>.kjun-list-item{border-bottom:0}
|
|
5097
|
+
.kjun-list-item{padding:var(--_kjun-extension-list-padding);position:relative;min-width:0}
|
|
5054
5098
|
.kjun-list[data-density=compact]>.kjun-list-item{padding-block:var(--_kjun-extension-list-compact-padding-y)}
|
|
5055
5099
|
|
|
5056
5100
|
/* Compound fields share input geometry; buttons retain their own size contract. */
|
|
@@ -1 +1,4 @@
|
|
|
1
|
+
import type { ColorValue } from "react-native";
|
|
1
2
|
export declare const AlertActionsContext: import("react").Context<boolean>;
|
|
3
|
+
/** Text-role tint at a state opacity, like the web color-mix; colors it cannot parse use the fallback role. */
|
|
4
|
+
export declare function alertTint(text: ColorValue, amount: 'tintFill' | 'tintControl' | 'tintHover' | 'tintActive' | 'muted', fallback: ColorValue): ColorValue;
|
|
@@ -1 +1,4 @@
|
|
|
1
|
+
import type { ColorValue } from "react-native";
|
|
1
2
|
export declare const AlertActionsContext: import("react").Context<boolean>;
|
|
3
|
+
/** Text-role tint at a state opacity, like the web color-mix; colors it cannot parse use the fallback role. */
|
|
4
|
+
export declare function alertTint(text: ColorValue, amount: 'tintFill' | 'tintControl' | 'tintHover' | 'tintActive' | 'muted', fallback: ColorValue): ColorValue;
|
|
@@ -6,8 +6,10 @@ export interface KjunTopNavigationProps {
|
|
|
6
6
|
leading?: ReactNode;
|
|
7
7
|
actions?: ReactNode;
|
|
8
8
|
safeAreaTop?: number;
|
|
9
|
+
/** Paints the surface background (default true); false lets the page background show through, so the bar does not read as a separate band. */
|
|
10
|
+
surface?: boolean;
|
|
9
11
|
}
|
|
10
|
-
export declare function KjunTopNavigation({ title, description, leading, actions, safeAreaTop }: KjunTopNavigationProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function KjunTopNavigation({ title, description, leading, actions, safeAreaTop, surface }: KjunTopNavigationProps): import("react/jsx-runtime").JSX.Element;
|
|
11
13
|
export interface NavigationDestination {
|
|
12
14
|
key: string;
|
|
13
15
|
label: string;
|
|
@@ -24,13 +26,17 @@ export interface KjunBottomNavigationProps {
|
|
|
24
26
|
keyboardVisible?: boolean;
|
|
25
27
|
hideOnKeyboard?: boolean;
|
|
26
28
|
onNavigate?: (key: string, event: GestureResponderEvent) => void;
|
|
29
|
+
/** Paints the surface background (default true); false lets the page background show through, so the bar does not read as a separate band. */
|
|
30
|
+
surface?: boolean;
|
|
27
31
|
}
|
|
28
|
-
export declare function KjunBottomNavigation({ items, value, ariaLabel, safeAreaBottom, keyboardVisible, hideOnKeyboard, onNavigate }: KjunBottomNavigationProps): import("react/jsx-runtime").JSX.Element | null;
|
|
32
|
+
export declare function KjunBottomNavigation({ items, value, ariaLabel, safeAreaBottom, keyboardVisible, hideOnKeyboard, onNavigate, surface }: KjunBottomNavigationProps): import("react/jsx-runtime").JSX.Element | null;
|
|
29
33
|
export interface KjunBottomActionBarProps {
|
|
30
34
|
description?: string;
|
|
31
35
|
children: ReactNode;
|
|
32
36
|
safeAreaBottom?: number;
|
|
33
37
|
keyboardVisible?: boolean;
|
|
34
38
|
hideOnKeyboard?: boolean;
|
|
39
|
+
/** Paints the surface background (default true); false lets the page background show through, so the bar does not read as a separate band. */
|
|
40
|
+
surface?: boolean;
|
|
35
41
|
}
|
|
36
|
-
export declare function KjunBottomActionBar({ description, children, safeAreaBottom, keyboardVisible, hideOnKeyboard }: KjunBottomActionBarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
42
|
+
export declare function KjunBottomActionBar({ description, children, safeAreaBottom, keyboardVisible, hideOnKeyboard, surface }: KjunBottomActionBarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -6,8 +6,10 @@ export interface KjunTopNavigationProps {
|
|
|
6
6
|
leading?: ReactNode;
|
|
7
7
|
actions?: ReactNode;
|
|
8
8
|
safeAreaTop?: number;
|
|
9
|
+
/** Paints the surface background (default true); false lets the page background show through, so the bar does not read as a separate band. */
|
|
10
|
+
surface?: boolean;
|
|
9
11
|
}
|
|
10
|
-
export declare function KjunTopNavigation({ title, description, leading, actions, safeAreaTop }: KjunTopNavigationProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function KjunTopNavigation({ title, description, leading, actions, safeAreaTop, surface }: KjunTopNavigationProps): import("react/jsx-runtime").JSX.Element;
|
|
11
13
|
export interface NavigationDestination {
|
|
12
14
|
key: string;
|
|
13
15
|
label: string;
|
|
@@ -24,13 +26,17 @@ export interface KjunBottomNavigationProps {
|
|
|
24
26
|
keyboardVisible?: boolean;
|
|
25
27
|
hideOnKeyboard?: boolean;
|
|
26
28
|
onNavigate?: (key: string, event: GestureResponderEvent) => void;
|
|
29
|
+
/** Paints the surface background (default true); false lets the page background show through, so the bar does not read as a separate band. */
|
|
30
|
+
surface?: boolean;
|
|
27
31
|
}
|
|
28
|
-
export declare function KjunBottomNavigation({ items, value, ariaLabel, safeAreaBottom, keyboardVisible, hideOnKeyboard, onNavigate }: KjunBottomNavigationProps): import("react/jsx-runtime").JSX.Element | null;
|
|
32
|
+
export declare function KjunBottomNavigation({ items, value, ariaLabel, safeAreaBottom, keyboardVisible, hideOnKeyboard, onNavigate, surface }: KjunBottomNavigationProps): import("react/jsx-runtime").JSX.Element | null;
|
|
29
33
|
export interface KjunBottomActionBarProps {
|
|
30
34
|
description?: string;
|
|
31
35
|
children: ReactNode;
|
|
32
36
|
safeAreaBottom?: number;
|
|
33
37
|
keyboardVisible?: boolean;
|
|
34
38
|
hideOnKeyboard?: boolean;
|
|
39
|
+
/** Paints the surface background (default true); false lets the page background show through, so the bar does not read as a separate band. */
|
|
40
|
+
surface?: boolean;
|
|
35
41
|
}
|
|
36
|
-
export declare function KjunBottomActionBar({ description, children, safeAreaBottom, keyboardVisible, hideOnKeyboard }: KjunBottomActionBarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
42
|
+
export declare function KjunBottomActionBar({ description, children, safeAreaBottom, keyboardVisible, hideOnKeyboard, surface }: KjunBottomActionBarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -11,6 +11,8 @@ export interface ChoiceOption<T = ChoiceValue> {
|
|
|
11
11
|
}
|
|
12
12
|
export interface KjunCheckboxProps<T = ChoiceValue> {
|
|
13
13
|
value: boolean | T[];
|
|
14
|
+
/** Mixed selection display; value and change callbacks keep their boolean/array shape. */
|
|
15
|
+
indeterminate?: boolean;
|
|
14
16
|
val?: T;
|
|
15
17
|
label?: string;
|
|
16
18
|
ariaLabel?: string;
|
|
@@ -20,7 +22,7 @@ export interface KjunCheckboxProps<T = ChoiceValue> {
|
|
|
20
22
|
onValueChange?: (value: boolean | T[]) => void;
|
|
21
23
|
onChange?: (value: boolean | T[]) => void;
|
|
22
24
|
}
|
|
23
|
-
export declare function KjunCheckbox<T = ChoiceValue>({ value, val, label, ariaLabel, disabled, size, children, onValueChange, onChange, }: KjunCheckboxProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export declare function KjunCheckbox<T = ChoiceValue>({ value, indeterminate, val, label, ariaLabel, disabled, size, children, onValueChange, onChange, }: KjunCheckboxProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
24
26
|
export interface KjunSwitchProps {
|
|
25
27
|
value: boolean;
|
|
26
28
|
label?: string;
|
|
@@ -11,6 +11,8 @@ export interface ChoiceOption<T = ChoiceValue> {
|
|
|
11
11
|
}
|
|
12
12
|
export interface KjunCheckboxProps<T = ChoiceValue> {
|
|
13
13
|
value: boolean | T[];
|
|
14
|
+
/** Mixed selection display; value and change callbacks keep their boolean/array shape. */
|
|
15
|
+
indeterminate?: boolean;
|
|
14
16
|
val?: T;
|
|
15
17
|
label?: string;
|
|
16
18
|
ariaLabel?: string;
|
|
@@ -20,7 +22,7 @@ export interface KjunCheckboxProps<T = ChoiceValue> {
|
|
|
20
22
|
onValueChange?: (value: boolean | T[]) => void;
|
|
21
23
|
onChange?: (value: boolean | T[]) => void;
|
|
22
24
|
}
|
|
23
|
-
export declare function KjunCheckbox<T = ChoiceValue>({ value, val, label, ariaLabel, disabled, size, children, onValueChange, onChange, }: KjunCheckboxProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export declare function KjunCheckbox<T = ChoiceValue>({ value, indeterminate, val, label, ariaLabel, disabled, size, children, onValueChange, onChange, }: KjunCheckboxProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
24
26
|
export interface KjunSwitchProps {
|
|
25
27
|
value: boolean;
|
|
26
28
|
label?: string;
|
|
@@ -41,14 +41,4 @@ export interface KjunAlertProps {
|
|
|
41
41
|
onClose?: () => void;
|
|
42
42
|
}
|
|
43
43
|
export declare function KjunAlert({ type, variant, size, title, closable, live, children, actions, onClose, }: KjunAlertProps): import("react/jsx-runtime").JSX.Element | null;
|
|
44
|
-
export
|
|
45
|
-
value?: number;
|
|
46
|
-
max?: number;
|
|
47
|
-
size?: "sm" | "md" | "lg";
|
|
48
|
-
variant?: SemanticTone;
|
|
49
|
-
showLabel?: boolean;
|
|
50
|
-
label?: ReactNode;
|
|
51
|
-
subLabel?: ReactNode;
|
|
52
|
-
shape?: "bar" | "circle";
|
|
53
|
-
}
|
|
54
|
-
export declare function KjunProgress({ value, max, size, variant, showLabel, label, subLabel, shape, }: KjunProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export { KjunProgress, type KjunProgressProps } from "./progress.cjs";
|
|
@@ -41,14 +41,4 @@ export interface KjunAlertProps {
|
|
|
41
41
|
onClose?: () => void;
|
|
42
42
|
}
|
|
43
43
|
export declare function KjunAlert({ type, variant, size, title, closable, live, children, actions, onClose, }: KjunAlertProps): import("react/jsx-runtime").JSX.Element | null;
|
|
44
|
-
export
|
|
45
|
-
value?: number;
|
|
46
|
-
max?: number;
|
|
47
|
-
size?: "sm" | "md" | "lg";
|
|
48
|
-
variant?: SemanticTone;
|
|
49
|
-
showLabel?: boolean;
|
|
50
|
-
label?: ReactNode;
|
|
51
|
-
subLabel?: ReactNode;
|
|
52
|
-
shape?: "bar" | "circle";
|
|
53
|
-
}
|
|
54
|
-
export declare function KjunProgress({ value, max, size, variant, showLabel, label, subLabel, shape, }: KjunProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export { KjunProgress, type KjunProgressProps } from "./progress.js";
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type ColorValue } from "react-native";
|
|
3
3
|
import { KpiValue } from "./kpi-hero.cjs";
|
|
4
|
-
export interface KpiRowItem extends KpiValue {
|
|
4
|
+
export interface KpiRowItem extends Omit<KpiValue, "value"> {
|
|
5
|
+
/** null/undefined and non-finite numbers are missing, never zero. Loading still takes precedence. */
|
|
6
|
+
value?: number | string | null;
|
|
7
|
+
/** Shown for a missing value; defaults to an em dash. */
|
|
8
|
+
missingText?: string;
|
|
5
9
|
loading?: boolean;
|
|
6
10
|
clickable?: boolean;
|
|
7
11
|
mobileFull?: boolean;
|
|
@@ -18,7 +22,7 @@ export interface KpiRowItem extends KpiValue {
|
|
|
18
22
|
badge?: {
|
|
19
23
|
text: string;
|
|
20
24
|
variant?: "warning" | "success" | "danger" | "price-up" | "price-down" | "info" | "neutral";
|
|
21
|
-
};
|
|
25
|
+
} | null;
|
|
22
26
|
badgePlacement?: "label" | "value";
|
|
23
27
|
}
|
|
24
28
|
export interface KjunKpiRowProps {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type ColorValue } from "react-native";
|
|
3
3
|
import { KpiValue } from "./kpi-hero.js";
|
|
4
|
-
export interface KpiRowItem extends KpiValue {
|
|
4
|
+
export interface KpiRowItem extends Omit<KpiValue, "value"> {
|
|
5
|
+
/** null/undefined and non-finite numbers are missing, never zero. Loading still takes precedence. */
|
|
6
|
+
value?: number | string | null;
|
|
7
|
+
/** Shown for a missing value; defaults to an em dash. */
|
|
8
|
+
missingText?: string;
|
|
5
9
|
loading?: boolean;
|
|
6
10
|
clickable?: boolean;
|
|
7
11
|
mobileFull?: boolean;
|
|
@@ -18,7 +22,7 @@ export interface KpiRowItem extends KpiValue {
|
|
|
18
22
|
badge?: {
|
|
19
23
|
text: string;
|
|
20
24
|
variant?: "warning" | "success" | "danger" | "price-up" | "price-down" | "info" | "neutral";
|
|
21
|
-
};
|
|
25
|
+
} | null;
|
|
22
26
|
badgePlacement?: "label" | "value";
|
|
23
27
|
}
|
|
24
28
|
export interface KjunKpiRowProps {
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { type StyleProp, type ViewStyle } from "react-native";
|
|
2
|
+
/**
|
|
3
|
+
* Where a modal backdrop sits: from the root's top to at least the screen's bottom. Android lays out a
|
|
4
|
+
* new modal root a navigation bar short for its first frames; an inset of 0 would leave that strip bright.
|
|
5
|
+
*/
|
|
6
|
+
export declare function screenCover(): ViewStyle;
|
|
2
7
|
/** The backdrop accepts pointer dismissal and never participates in focus traversal. */
|
|
3
8
|
export declare function LayerBackdrop({ onPress, style }: {
|
|
4
9
|
onPress: () => void;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { type StyleProp, type ViewStyle } from "react-native";
|
|
2
|
+
/**
|
|
3
|
+
* Where a modal backdrop sits: from the root's top to at least the screen's bottom. Android lays out a
|
|
4
|
+
* new modal root a navigation bar short for its first frames; an inset of 0 would leave that strip bright.
|
|
5
|
+
*/
|
|
6
|
+
export declare function screenCover(): ViewStyle;
|
|
2
7
|
/** The backdrop accepts pointer dismissal and never participates in focus traversal. */
|
|
3
8
|
export declare function LayerBackdrop({ onPress, style }: {
|
|
4
9
|
onPress: () => void;
|
|
@@ -4,6 +4,8 @@ import { type GestureResponderEvent } from "react-native";
|
|
|
4
4
|
export interface KjunListRowProps {
|
|
5
5
|
title: string;
|
|
6
6
|
description?: string;
|
|
7
|
+
/** Icon name drawn in the leading column at the list icon size; `leading` replaces it when both are given. */
|
|
8
|
+
icon?: string;
|
|
7
9
|
leading?: ReactNode;
|
|
8
10
|
trailing?: ReactNode;
|
|
9
11
|
actions?: ReactNode;
|
|
@@ -19,7 +21,7 @@ export interface KjunListRowProps {
|
|
|
19
21
|
/** Display-only content under the description (a budget bar); no buttons or links inside a pressable row. */
|
|
20
22
|
children?: ReactNode;
|
|
21
23
|
}
|
|
22
|
-
export declare function KjunListRow({ title, description, leading, trailing, actions, href, disabled, destructive, chevron, onPress, ariaLabel, children }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare function KjunListRow({ title, description, icon, leading, trailing, actions, href, disabled, destructive, chevron, onPress, ariaLabel, children }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
|
|
23
25
|
export interface KjunListSectionProps {
|
|
24
26
|
title?: string;
|
|
25
27
|
description?: string;
|
|
@@ -4,6 +4,8 @@ import { type GestureResponderEvent } from "react-native";
|
|
|
4
4
|
export interface KjunListRowProps {
|
|
5
5
|
title: string;
|
|
6
6
|
description?: string;
|
|
7
|
+
/** Icon name drawn in the leading column at the list icon size; `leading` replaces it when both are given. */
|
|
8
|
+
icon?: string;
|
|
7
9
|
leading?: ReactNode;
|
|
8
10
|
trailing?: ReactNode;
|
|
9
11
|
actions?: ReactNode;
|
|
@@ -19,7 +21,7 @@ export interface KjunListRowProps {
|
|
|
19
21
|
/** Display-only content under the description (a budget bar); no buttons or links inside a pressable row. */
|
|
20
22
|
children?: ReactNode;
|
|
21
23
|
}
|
|
22
|
-
export declare function KjunListRow({ title, description, leading, trailing, actions, href, disabled, destructive, chevron, onPress, ariaLabel, children }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare function KjunListRow({ title, description, icon, leading, trailing, actions, href, disabled, destructive, chevron, onPress, ariaLabel, children }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
|
|
23
25
|
export interface KjunListSectionProps {
|
|
24
26
|
title?: string;
|
|
25
27
|
description?: string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { SemanticTone } from "./display-primitives.cjs";
|
|
3
|
+
export interface KjunProgressProps {
|
|
4
|
+
/** null is missing data; omission keeps the zero default. */
|
|
5
|
+
value?: number | null;
|
|
6
|
+
/** Work is active but its completion percentage is unknown; takes precedence over null. */
|
|
7
|
+
indeterminate?: boolean;
|
|
8
|
+
max?: number;
|
|
9
|
+
size?: "sm" | "md" | "lg";
|
|
10
|
+
variant?: SemanticTone;
|
|
11
|
+
showLabel?: boolean;
|
|
12
|
+
label?: ReactNode;
|
|
13
|
+
subLabel?: ReactNode;
|
|
14
|
+
shape?: "bar" | "circle";
|
|
15
|
+
}
|
|
16
|
+
export declare function KjunProgress({ value, indeterminate, max, size, variant, showLabel, label, subLabel, shape, }: KjunProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { SemanticTone } from "./display-primitives.js";
|
|
3
|
+
export interface KjunProgressProps {
|
|
4
|
+
/** null is missing data; omission keeps the zero default. */
|
|
5
|
+
value?: number | null;
|
|
6
|
+
/** Work is active but its completion percentage is unknown; takes precedence over null. */
|
|
7
|
+
indeterminate?: boolean;
|
|
8
|
+
max?: number;
|
|
9
|
+
size?: "sm" | "md" | "lg";
|
|
10
|
+
variant?: SemanticTone;
|
|
11
|
+
showLabel?: boolean;
|
|
12
|
+
label?: ReactNode;
|
|
13
|
+
subLabel?: ReactNode;
|
|
14
|
+
shape?: "bar" | "circle";
|
|
15
|
+
}
|
|
16
|
+
export declare function KjunProgress({ value, indeterminate, max, size, variant, showLabel, label, subLabel, shape, }: KjunProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -6,6 +6,10 @@ export interface KjunSliderProps {
|
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
label?: string;
|
|
8
8
|
ariaLabel?: string;
|
|
9
|
+
/** Hides the visible value only; each thumb still reports its value to assistive technology. */
|
|
10
|
+
showValue?: boolean;
|
|
11
|
+
/** Formats the visible value and each thumb's accessible value text. Values stay numeric. */
|
|
12
|
+
formatValue?: (value: number) => string;
|
|
9
13
|
onValueChange?: (value: number) => void;
|
|
10
14
|
onChangeCommit?: (value: number) => void;
|
|
11
15
|
}
|
|
@@ -6,6 +6,10 @@ export interface KjunSliderProps {
|
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
label?: string;
|
|
8
8
|
ariaLabel?: string;
|
|
9
|
+
/** Hides the visible value only; each thumb still reports its value to assistive technology. */
|
|
10
|
+
showValue?: boolean;
|
|
11
|
+
/** Formats the visible value and each thumb's accessible value text. Values stay numeric. */
|
|
12
|
+
formatValue?: (value: number) => string;
|
|
9
13
|
onValueChange?: (value: number) => void;
|
|
10
14
|
onChangeCommit?: (value: number) => void;
|
|
11
15
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color roles a soft-fill Alert paints per tone. Info has no fill role: it uses a translucent text tint so it
|
|
3
|
+
* stays visible on any page background; the semantic tones carry the color, titles stay on the text role.
|
|
4
|
+
*/
|
|
5
|
+
export declare function alertToneRoles(tone: string): {
|
|
6
|
+
bg: string | null;
|
|
7
|
+
icon: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const alertIcons: Record<string, string>;
|
|
10
|
+
/** Native has no color-mix: tints a hex or rgb() color with alpha, or returns undefined for other formats. */
|
|
11
|
+
export declare function tintColor(color: string, alpha: number): string | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color roles a soft-fill Alert paints per tone. Info has no fill role: it uses a translucent text tint so it
|
|
3
|
+
* stays visible on any page background; the semantic tones carry the color, titles stay on the text role.
|
|
4
|
+
*/
|
|
5
|
+
export declare function alertToneRoles(tone: string): {
|
|
6
|
+
bg: string | null;
|
|
7
|
+
icon: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const alertIcons: Record<string, string>;
|
|
10
|
+
/** Native has no color-mix: tints a hex or rgb() color with alpha, or returns undefined for other formats. */
|
|
11
|
+
export declare function tintColor(color: string, alpha: number): string | undefined;
|
|
@@ -18,15 +18,21 @@ export interface DrawerFrame {
|
|
|
18
18
|
lift: number;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* Keyboard events a drawer listens to.
|
|
22
|
-
*
|
|
21
|
+
* Keyboard events a drawer listens to. Android reports only after the keyboard moved; edge-to-edge
|
|
22
|
+
* windows no longer resize for it (adjustResize), so the drawer lifts itself there too.
|
|
23
23
|
*/
|
|
24
24
|
export declare function keyboardEvents(os: string): {
|
|
25
25
|
readonly show: "keyboardWillShow";
|
|
26
26
|
readonly hide: "keyboardWillHide";
|
|
27
|
+
} | {
|
|
28
|
+
readonly show: "keyboardDidShow";
|
|
29
|
+
readonly hide: "keyboardDidHide";
|
|
27
30
|
} | null;
|
|
28
|
-
/**
|
|
29
|
-
|
|
31
|
+
/**
|
|
32
|
+
* The part of the modal root the keyboard covers. Measured against the root, a window the platform
|
|
33
|
+
* already resized ends at or above the keyboard and gives 0, so the drawer never lifts twice.
|
|
34
|
+
*/
|
|
35
|
+
export declare function keyboardOverlap(rootHeight: number, keyboardScreenY: number): number;
|
|
30
36
|
export declare function drawerFrame({ position, windowHeight, safeAreaTop, safeAreaBottom, gap, keyboard, maxHeight }: DrawerFrameInput): DrawerFrame;
|
|
31
37
|
/** Web overlay variables read by the drawer CSS (tokens controls.css). */
|
|
32
38
|
export declare function drawerOverlayVars({ safeAreaTop, safeAreaBottom, maxHeight }: {
|