@kjun-ui/native 0.15.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 +2009 -1925
- package/dist/index.js +1888 -1803
- package/dist/index.web.cjs +2031 -1947
- package/dist/index.web.js +1905 -1820
- package/dist/styles.css +99 -32
- 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 +7 -2
- package/dist/types/packages/native/src/list.d.ts +7 -2
- 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/popover.d.cts +6 -1
- package/dist/types/packages/native/src/popover.d.ts +6 -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
|
@@ -79,6 +79,8 @@
|
|
|
79
79
|
--_kjun-color-selected-bg: var(--kjun-selected-bg, var(--kjun-active));
|
|
80
80
|
--_kjun-color-on-brand: var(--kjun-on-brand, var(--kjun-inverse));
|
|
81
81
|
--_kjun-color-switch-thumb-on: var(--kjun-switch-thumb-on, var(--kjun-on-brand, var(--kjun-inverse)));
|
|
82
|
+
--_kjun-color-filter-selected-bg: var(--kjun-filter-selected-bg, var(--kjun-text));
|
|
83
|
+
--_kjun-color-filter-selected-text: var(--kjun-filter-selected-text, var(--kjun-inverse));
|
|
82
84
|
--_kjun-color-on-danger: var(--kjun-on-danger, var(--kjun-inverse));
|
|
83
85
|
--_kjun-color-on-success: var(--kjun-on-success, var(--kjun-inverse));
|
|
84
86
|
--_kjun-color-on-warning: var(--kjun-on-warning, var(--kjun-inverse));
|
|
@@ -182,6 +184,8 @@
|
|
|
182
184
|
--_kjun-selected-bg: var(--_kjun-color-selected-bg);
|
|
183
185
|
--_kjun-on-brand: var(--_kjun-color-on-brand);
|
|
184
186
|
--_kjun-switch-thumb-on: var(--_kjun-color-switch-thumb-on);
|
|
187
|
+
--_kjun-filter-selected-bg: var(--_kjun-color-filter-selected-bg);
|
|
188
|
+
--_kjun-filter-selected-text: var(--_kjun-color-filter-selected-text);
|
|
185
189
|
--_kjun-on-danger: var(--_kjun-color-on-danger);
|
|
186
190
|
--_kjun-on-success: var(--_kjun-color-on-success);
|
|
187
191
|
--_kjun-on-warning: var(--_kjun-color-on-warning);
|
|
@@ -269,6 +273,9 @@
|
|
|
269
273
|
--_kjun-extension-list-description-gap: 4px;
|
|
270
274
|
--_kjun-extension-list-actions-gap: 8px;
|
|
271
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;
|
|
272
279
|
--_kjun-extension-navigation-minimum-height: 56px;
|
|
273
280
|
--_kjun-extension-navigation-padding: 16px;
|
|
274
281
|
--_kjun-extension-navigation-gap: 12px;
|
|
@@ -323,12 +330,16 @@
|
|
|
323
330
|
--_kjun-extension-bottom-navigation-badge-offset: 4px;
|
|
324
331
|
--_kjun-extension-bottom-navigation-badge-overlap: 8px;
|
|
325
332
|
--_kjun-extension-bottom-navigation-badge-radius: 9999px;
|
|
333
|
+
--_kjun-extension-avatar-xs: 24px;
|
|
326
334
|
--_kjun-extension-avatar-sm: 32px;
|
|
327
335
|
--_kjun-extension-avatar-md: 40px;
|
|
328
336
|
--_kjun-extension-avatar-lg: 56px;
|
|
337
|
+
--_kjun-extension-avatar-xl: 72px;
|
|
338
|
+
--_kjun-extension-avatar-fallback-icon-sizes-xs: 12px;
|
|
329
339
|
--_kjun-extension-avatar-fallback-icon-sizes-sm: 14px;
|
|
330
340
|
--_kjun-extension-avatar-fallback-icon-sizes-md: 18px;
|
|
331
341
|
--_kjun-extension-avatar-fallback-icon-sizes-lg: 24px;
|
|
342
|
+
--_kjun-extension-avatar-fallback-icon-sizes-xl: 32px;
|
|
332
343
|
--_kjun-extension-avatar-fallback-icon-size: 18px;
|
|
333
344
|
--_kjun-extension-chip-sm: 28px;
|
|
334
345
|
--_kjun-extension-chip-md: 32px;
|
|
@@ -440,23 +451,25 @@
|
|
|
440
451
|
--_kjun-extension-toast-action-gap: 8px;
|
|
441
452
|
--_kjun-extension-toast-radius: 12px;
|
|
442
453
|
--_kjun-extension-toast-close-radius: 6px;
|
|
443
|
-
--_kjun-extension-alert-radius:
|
|
444
|
-
--_kjun-extension-alert-description-gap:
|
|
454
|
+
--_kjun-extension-alert-radius: 16px;
|
|
455
|
+
--_kjun-extension-alert-description-gap: 2px;
|
|
445
456
|
--_kjun-extension-alert-close-size: 28px;
|
|
446
457
|
--_kjun-extension-alert-close-radius: 8px;
|
|
447
458
|
--_kjun-extension-alert-actions-gap: 8px;
|
|
448
|
-
--_kjun-extension-alert-
|
|
449
|
-
--_kjun-extension-alert-sm-
|
|
450
|
-
--_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;
|
|
451
464
|
--_kjun-extension-alert-sm-close-size: 24px;
|
|
452
|
-
--_kjun-extension-alert-sm-action-gap:
|
|
453
|
-
--_kjun-extension-alert-md-padding-x:
|
|
454
|
-
--_kjun-extension-alert-md-padding-y:
|
|
455
|
-
--_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;
|
|
456
469
|
--_kjun-extension-alert-md-action-gap: 12px;
|
|
457
|
-
--_kjun-extension-alert-icon-sizes-sm:
|
|
458
|
-
--_kjun-extension-alert-icon-sizes-md:
|
|
459
|
-
--_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;
|
|
460
473
|
--_kjun-extension-table-card-padding: 12px;
|
|
461
474
|
--_kjun-extension-table-card-radius: 12px;
|
|
462
475
|
--_kjun-extension-table-card-gap: 8px;
|
|
@@ -532,6 +545,9 @@
|
|
|
532
545
|
--_kjun-extension-switch-label-gap: 8px;
|
|
533
546
|
--_kjun-extension-tooltip-padding-x: 8px;
|
|
534
547
|
--_kjun-extension-tooltip-padding-y: 4px;
|
|
548
|
+
--_kjun-extension-tooltip-max-widths-sm: 192px;
|
|
549
|
+
--_kjun-extension-tooltip-max-widths-md: 256px;
|
|
550
|
+
--_kjun-extension-tooltip-max-widths-lg: 320px;
|
|
535
551
|
--_kjun-extension-tooltip-max-width: 256px;
|
|
536
552
|
--_kjun-extension-tooltip-arrow-size: 8px;
|
|
537
553
|
--_kjun-extension-financial-affix-gap: 4px;
|
|
@@ -699,6 +715,11 @@
|
|
|
699
715
|
--_kjun-state-opacity-deviation-low: 0.08;
|
|
700
716
|
--_kjun-state-opacity-deviation-medium: 0.14;
|
|
701
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;
|
|
702
723
|
--_kjun-state-focus-width: 2px;
|
|
703
724
|
--_kjun-state-focus-offset: 2px;
|
|
704
725
|
--_kjun-state-focus-choice-offset: 3px;
|
|
@@ -833,6 +854,7 @@
|
|
|
833
854
|
--_kjun-geometry-card-radii-sm: 8px;
|
|
834
855
|
--_kjun-geometry-card-radii-md: 12px;
|
|
835
856
|
--_kjun-geometry-card-radii-lg: 16px;
|
|
857
|
+
--_kjun-geometry-card-radii-xl: 24px;
|
|
836
858
|
--_kjun-geometry-card-subtitle-gap: 4px;
|
|
837
859
|
--_kjun-geometry-card-title-gap: 8px;
|
|
838
860
|
--_kjun-geometry-card-glass-blur: 10px;
|
|
@@ -882,6 +904,7 @@
|
|
|
882
904
|
--_kjun-geometry-radius-radius9999: 9999px;
|
|
883
905
|
--_kjun-geometry-radius-radius14: 14px;
|
|
884
906
|
--_kjun-geometry-radius-radius20: 20px;
|
|
907
|
+
--_kjun-geometry-radius-radius24: 24px;
|
|
885
908
|
--_kjun-geometry-native-minimum-touch-target: 44px;
|
|
886
909
|
--_kjun-geometry-space-inline-xs: 4px;
|
|
887
910
|
--_kjun-geometry-space-inline-sm: 8px;
|
|
@@ -2115,18 +2138,26 @@
|
|
|
2115
2138
|
display: flex;
|
|
2116
2139
|
align-items: flex-start;
|
|
2117
2140
|
gap: var(--_kjun-extension-alert-md-gap);
|
|
2118
|
-
border: var(--_kjun-border-default-width) solid;
|
|
2119
2141
|
border-radius: var(--_kjun-extension-alert-radius);
|
|
2142
|
+
word-break: keep-all;
|
|
2120
2143
|
padding: var(--_kjun-extension-alert-md-padding-y) var(--_kjun-extension-alert-md-padding-x);
|
|
2121
2144
|
--_kjun-alert-line: var(--_kjun-type-control-line);
|
|
2122
2145
|
--_kjun-alert-close: var(--_kjun-extension-alert-close-size);
|
|
2123
2146
|
--_kjun-alert-action-gap: var(--_kjun-extension-alert-md-action-gap);
|
|
2124
|
-
|
|
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); }
|
|
2125
2155
|
.kjun-alert[data-size="sm"] {
|
|
2126
2156
|
--_kjun-alert-line: var(--_kjun-type-control-small-line);
|
|
2127
2157
|
--_kjun-alert-close: var(--_kjun-extension-alert-sm-close-size);
|
|
2128
2158
|
--_kjun-alert-action-gap: var(--_kjun-extension-alert-sm-action-gap);
|
|
2129
2159
|
gap: var(--_kjun-extension-alert-sm-gap);
|
|
2160
|
+
border-radius: var(--_kjun-extension-alert-sm-radius);
|
|
2130
2161
|
padding: var(--_kjun-extension-alert-sm-padding-y) var(--_kjun-extension-alert-sm-padding-x);
|
|
2131
2162
|
}
|
|
2132
2163
|
.kjun-alert-icon {
|
|
@@ -2135,6 +2166,8 @@
|
|
|
2135
2166
|
flex-shrink: 0;
|
|
2136
2167
|
height: var(--_kjun-alert-line);
|
|
2137
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))); }
|
|
2138
2171
|
.kjun-alert-content {
|
|
2139
2172
|
min-height: var(--_kjun-alert-line);
|
|
2140
2173
|
overflow-wrap: anywhere;
|
|
@@ -2143,15 +2176,16 @@
|
|
|
2143
2176
|
}
|
|
2144
2177
|
.kjun-alert-title {
|
|
2145
2178
|
margin: 0;
|
|
2146
|
-
font-size: var(--_kjun-type-control-size);
|
|
2147
2179
|
color: var(--_kjun-color-text);
|
|
2180
|
+
font-size: var(--_kjun-type-control-size);
|
|
2148
2181
|
line-height: var(--_kjun-type-control-line);
|
|
2149
2182
|
font-weight: var(--_kjun-type-control-weight);
|
|
2150
2183
|
letter-spacing: var(--_kjun-type-control-tracking);
|
|
2151
2184
|
}
|
|
2185
|
+
/* Body copy stays on the text role: secondary gray turns muddy on tinted fills. */
|
|
2152
2186
|
.kjun-alert-description {
|
|
2153
2187
|
font-size: var(--_kjun-type-body-size);
|
|
2154
|
-
color: var(--_kjun-color-text
|
|
2188
|
+
color: var(--_kjun-color-text);
|
|
2155
2189
|
line-height: var(--_kjun-type-body-line);
|
|
2156
2190
|
font-weight: var(--_kjun-type-body-weight);
|
|
2157
2191
|
letter-spacing: var(--_kjun-type-body-tracking);
|
|
@@ -2183,7 +2217,7 @@
|
|
|
2183
2217
|
background: transparent;
|
|
2184
2218
|
border: 0;
|
|
2185
2219
|
padding: 0;
|
|
2186
|
-
color: var(--_kjun-color-text-
|
|
2220
|
+
color: color-mix(in srgb, var(--_kjun-color-text) calc(var(--_kjun-state-opacity-muted) * 100%), transparent);
|
|
2187
2221
|
cursor: pointer;
|
|
2188
2222
|
}
|
|
2189
2223
|
.kjun-alert-actions {
|
|
@@ -2193,15 +2227,15 @@
|
|
|
2193
2227
|
gap: var(--_kjun-extension-alert-actions-gap);
|
|
2194
2228
|
margin-top: var(--_kjun-alert-action-gap);
|
|
2195
2229
|
}
|
|
2196
|
-
/* Secondary actions
|
|
2197
|
-
.kjun-alert-actions .kjun-button[data-variant="secondary"] { background: var(--_kjun-
|
|
2198
|
-
.kjun-alert-actions .kjun-button[data-variant="secondary"]:hover:not(:disabled) { background: var(--_kjun-
|
|
2199
|
-
.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); }
|
|
2200
2234
|
@media (hover: none), (pointer: coarse) {
|
|
2201
|
-
.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); }
|
|
2202
2236
|
}
|
|
2203
|
-
.kjun-alert-close:hover { background: var(--_kjun-
|
|
2204
|
-
.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); }
|
|
2205
2239
|
.kjun-alert-close:focus-visible {
|
|
2206
2240
|
outline: var(--_kjun-state-focus-width) solid var(--_kjun-color-focus-ring);
|
|
2207
2241
|
outline-offset: var(--_kjun-state-focus-offset);
|
|
@@ -2226,6 +2260,20 @@
|
|
|
2226
2260
|
border-radius: inherit;
|
|
2227
2261
|
transition: width var(--_kjun-motion-progress) var(--_kjun-ease-out);
|
|
2228
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
|
+
}
|
|
2229
2277
|
.kjun-progress-sub {
|
|
2230
2278
|
font-size: var(--_kjun-type-caption-size);
|
|
2231
2279
|
margin-top: var(--_kjun-geometry-dimension-value4);
|
|
@@ -2421,8 +2469,8 @@
|
|
|
2421
2469
|
white-space: nowrap;
|
|
2422
2470
|
}
|
|
2423
2471
|
.kjun-filter-chip[aria-pressed="true"] > span {
|
|
2424
|
-
background: var(--_kjun-color-
|
|
2425
|
-
color: var(--_kjun-color-
|
|
2472
|
+
background: var(--_kjun-color-filter-selected-bg);
|
|
2473
|
+
color: var(--_kjun-color-filter-selected-text);
|
|
2426
2474
|
font-weight: var(--_kjun-type-control-weight);
|
|
2427
2475
|
}
|
|
2428
2476
|
.kjun-filter-chip:disabled {
|
|
@@ -2520,6 +2568,17 @@
|
|
|
2520
2568
|
font-weight: var(--_kjun-type-caption-weight);
|
|
2521
2569
|
letter-spacing: var(--_kjun-type-caption-tracking);
|
|
2522
2570
|
}
|
|
2571
|
+
/* Title above the body: a bolder small role in the same tooltip text color. */
|
|
2572
|
+
.kjun-tooltip-title {
|
|
2573
|
+
display: block;
|
|
2574
|
+
font-size: var(--_kjun-type-control-small-size);
|
|
2575
|
+
line-height: var(--_kjun-type-control-small-line);
|
|
2576
|
+
font-weight: var(--_kjun-type-control-small-weight);
|
|
2577
|
+
letter-spacing: var(--_kjun-type-control-small-tracking);
|
|
2578
|
+
}
|
|
2579
|
+
.kjun-tooltip-body { display: block; }
|
|
2580
|
+
.kjun-tooltip[data-align="start"] { text-align: start; }
|
|
2581
|
+
.kjun-tooltip[data-align="center"] { text-align: center; }
|
|
2523
2582
|
.kjun-tooltip svg {
|
|
2524
2583
|
display: block;
|
|
2525
2584
|
color: var(--_kjun-color-chart-tooltip-bg);
|
|
@@ -4800,7 +4859,11 @@
|
|
|
4800
4859
|
|
|
4801
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)}
|
|
4802
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)}
|
|
4803
|
-
.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%}
|
|
4804
4867
|
/* A disabled row disables its actions too, so the row never reads as partly available. */
|
|
4805
4868
|
.kjun-list-actions[data-disabled]{opacity:var(--_kjun-state-opacity-disabled)}
|
|
4806
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}
|
|
@@ -4808,7 +4871,7 @@
|
|
|
4808
4871
|
/* Initials scale with the avatar (about 40% of its side) and show Latin initials in capitals. */
|
|
4809
4872
|
.kjun-avatar .kjun-image-fallback{text-transform:uppercase;font-size:var(--_kjun-type-input-size);line-height:var(--_kjun-type-input-line)}
|
|
4810
4873
|
.kjun-avatar[data-size=sm] .kjun-image-fallback{font-size:var(--_kjun-type-control-size);line-height:var(--_kjun-type-control-line)}
|
|
4811
|
-
.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)}
|
|
4812
4875
|
/* App colors (color/textColor) arrive as private custom properties; without them the image roles stay. */
|
|
4813
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))}
|
|
4814
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)}
|
|
@@ -5014,6 +5077,9 @@
|
|
|
5014
5077
|
.kjun-list-description { margin-top:var(--_kjun-extension-list-description-gap); }
|
|
5015
5078
|
|
|
5016
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); }
|
|
5017
5083
|
|
|
5018
5084
|
/* KjunFab: a round action pinned to the viewport's bottom end, above page content and clear of the safe area. */
|
|
5019
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}
|
|
@@ -5022,12 +5088,13 @@
|
|
|
5022
5088
|
.kjun-fab:disabled{opacity:var(--_kjun-state-opacity-disabled);cursor:not-allowed}
|
|
5023
5089
|
|
|
5024
5090
|
/* 0.14.0: plain sections, destructive rows, decorative chevrons and non-row list items share the row inset. */
|
|
5025
|
-
.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}
|
|
5092
|
+
/* A rounded section clips its rows to the corners; row focus rings move inside so the clip does not cut them. */
|
|
5093
|
+
.kjun-list-section[data-radius]{overflow:hidden;overflow:clip}
|
|
5094
|
+
.kjun-list-section[data-radius] .kjun-list-main:focus-visible{outline-offset:var(--_kjun-state-focus-inset-offset)}
|
|
5026
5095
|
.kjun-list-row[data-destructive] .kjun-list-title{color:var(--_kjun-color-danger)}
|
|
5027
5096
|
.kjun-list-chevron{flex-shrink:0;color:var(--_kjun-color-text-tertiary)}
|
|
5028
|
-
.kjun-list-item{padding:var(--_kjun-extension-list-padding);
|
|
5029
|
-
.kjun-list-item:last-child{border-bottom:0}
|
|
5030
|
-
.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}
|
|
5031
5098
|
.kjun-list[data-density=compact]>.kjun-list-item{padding-block:var(--_kjun-extension-list-compact-padding-y)}
|
|
5032
5099
|
|
|
5033
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;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { type CardRadius } from "@kjun-ui/tokens";
|
|
1
2
|
import { type ReactNode } from "react";
|
|
2
3
|
import { type GestureResponderEvent } from "react-native";
|
|
3
4
|
export interface KjunListRowProps {
|
|
4
5
|
title: string;
|
|
5
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;
|
|
6
9
|
leading?: ReactNode;
|
|
7
10
|
trailing?: ReactNode;
|
|
8
11
|
actions?: ReactNode;
|
|
@@ -18,7 +21,7 @@ export interface KjunListRowProps {
|
|
|
18
21
|
/** Display-only content under the description (a budget bar); no buttons or links inside a pressable row. */
|
|
19
22
|
children?: ReactNode;
|
|
20
23
|
}
|
|
21
|
-
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;
|
|
22
25
|
export interface KjunListSectionProps {
|
|
23
26
|
title?: string;
|
|
24
27
|
description?: string;
|
|
@@ -31,8 +34,10 @@ export interface KjunListSectionProps {
|
|
|
31
34
|
divider?: boolean;
|
|
32
35
|
/** "compact" rows keep the 16px inset but are 44 tall (the touch minimum) instead of 56. */
|
|
33
36
|
density?: "default" | "compact";
|
|
37
|
+
/** Rounds the section on the card radius steps and clips its rows to the corners (default "none"). */
|
|
38
|
+
radius?: CardRadius;
|
|
34
39
|
}
|
|
35
|
-
export declare function KjunListSection({ title, description, actions, children, ariaLabel, surface, divider, density }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare function KjunListSection({ title, description, actions, children, ariaLabel, surface, divider, density, radius }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
36
41
|
export interface KjunListItemProps {
|
|
37
42
|
children: ReactNode;
|
|
38
43
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { type CardRadius } from "@kjun-ui/tokens";
|
|
1
2
|
import { type ReactNode } from "react";
|
|
2
3
|
import { type GestureResponderEvent } from "react-native";
|
|
3
4
|
export interface KjunListRowProps {
|
|
4
5
|
title: string;
|
|
5
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;
|
|
6
9
|
leading?: ReactNode;
|
|
7
10
|
trailing?: ReactNode;
|
|
8
11
|
actions?: ReactNode;
|
|
@@ -18,7 +21,7 @@ export interface KjunListRowProps {
|
|
|
18
21
|
/** Display-only content under the description (a budget bar); no buttons or links inside a pressable row. */
|
|
19
22
|
children?: ReactNode;
|
|
20
23
|
}
|
|
21
|
-
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;
|
|
22
25
|
export interface KjunListSectionProps {
|
|
23
26
|
title?: string;
|
|
24
27
|
description?: string;
|
|
@@ -31,8 +34,10 @@ export interface KjunListSectionProps {
|
|
|
31
34
|
divider?: boolean;
|
|
32
35
|
/** "compact" rows keep the 16px inset but are 44 tall (the touch minimum) instead of 56. */
|
|
33
36
|
density?: "default" | "compact";
|
|
37
|
+
/** Rounds the section on the card radius steps and clips its rows to the corners (default "none"). */
|
|
38
|
+
radius?: CardRadius;
|
|
34
39
|
}
|
|
35
|
-
export declare function KjunListSection({ title, description, actions, children, ariaLabel, surface, divider, density }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare function KjunListSection({ title, description, actions, children, ariaLabel, surface, divider, density, radius }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
36
41
|
export interface KjunListItemProps {
|
|
37
42
|
children: ReactNode;
|
|
38
43
|
}
|
|
@@ -21,6 +21,11 @@ export interface KjunPopoverProps {
|
|
|
21
21
|
export declare function KjunPopover({ noPadding, open: controlled, onOpenChange, manualTrigger, matchTriggerWidth, maxHeight, flip, focusOnOpen, ariaLabel, placement, header, modal, trigger, children, }: KjunPopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
export interface KjunTooltipProps extends Pick<PressableProps, "onPress" | "disabled"> {
|
|
23
23
|
content?: string;
|
|
24
|
+
/** A bolder line above content (a file name above its path). Read together with content. */
|
|
25
|
+
title?: string;
|
|
26
|
+
align?: "start" | "center";
|
|
27
|
+
/** Maximum width step (tooltip.maxWidths); default is md, the earlier width. */
|
|
28
|
+
width?: "sm" | "md" | "lg";
|
|
24
29
|
placement?: "top" | "bottom" | "left" | "right";
|
|
25
30
|
delay?: number;
|
|
26
31
|
/** Controlled visibility; omit to let hover and focus drive it. */
|
|
@@ -28,4 +33,4 @@ export interface KjunTooltipProps extends Pick<PressableProps, "onPress" | "disa
|
|
|
28
33
|
onOpenChange?: (open: boolean) => void;
|
|
29
34
|
children: ReactNode;
|
|
30
35
|
}
|
|
31
|
-
export declare function KjunTooltip({ content:
|
|
36
|
+
export declare function KjunTooltip({ content: body, title, align, width, placement, delay, children, onPress, disabled, open: controlled, onOpenChange, }: KjunTooltipProps): import("react/jsx-runtime").JSX.Element;
|