@hjmds/react 1.46.1 → 1.47.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/actions.d.ts +2 -2
- package/dist/activity-chip.d.ts +1 -1
- package/dist/advanced-display.d.ts +6 -0
- package/dist/advanced-display.d.ts.map +1 -1
- package/dist/advanced-display.js +4 -2
- package/dist/advanced-display.js.map +1 -1
- package/dist/advanced-forms.d.ts +2 -2
- package/dist/auth-screen.d.ts +1 -1
- package/dist/bottom-navigation.d.ts.map +1 -1
- package/dist/bottom-navigation.js +1 -1
- package/dist/bottom-navigation.js.map +1 -1
- package/dist/calendar.d.ts.map +1 -1
- package/dist/calendar.js +31 -24
- package/dist/calendar.js.map +1 -1
- package/dist/carousel.d.ts +5 -1
- package/dist/carousel.d.ts.map +1 -1
- package/dist/carousel.js +2 -2
- package/dist/carousel.js.map +1 -1
- package/dist/clipboard.d.ts +2 -2
- package/dist/color-picker.d.ts +33 -3
- package/dist/color-picker.d.ts.map +1 -1
- package/dist/color-picker.js +73 -10
- package/dist/color-picker.js.map +1 -1
- package/dist/communication.d.ts +6 -1
- package/dist/communication.d.ts.map +1 -1
- package/dist/communication.js +2 -2
- package/dist/communication.js.map +1 -1
- package/dist/conversation-row.d.ts +7 -1
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +4 -2
- package/dist/conversation-row.js.map +1 -1
- package/dist/date-range.d.ts +24 -3
- package/dist/date-range.d.ts.map +1 -1
- package/dist/date-range.js +38 -17
- package/dist/date-range.js.map +1 -1
- package/dist/display.d.ts +28 -0
- package/dist/display.d.ts.map +1 -1
- package/dist/display.js +11 -9
- package/dist/display.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/feedback.d.ts +1 -1
- package/dist/floating-action-button.d.ts +1 -1
- package/dist/follow-list.d.ts +58 -0
- package/dist/follow-list.d.ts.map +1 -0
- package/dist/follow-list.js +25 -0
- package/dist/follow-list.js.map +1 -0
- package/dist/forms.d.ts +3 -3
- package/dist/image-viewer.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/calendar-paint.d.ts +12 -0
- package/dist/internal/calendar-paint.d.ts.map +1 -0
- package/dist/internal/calendar-paint.js +3 -0
- package/dist/internal/calendar-paint.js.map +1 -0
- package/dist/internal/identity-action.d.ts +12 -0
- package/dist/internal/identity-action.d.ts.map +1 -0
- package/dist/internal/identity-action.js +10 -0
- package/dist/internal/identity-action.js.map +1 -0
- package/dist/internal.d.ts +1 -1
- package/dist/layout.d.ts +1 -1
- package/dist/overlays.d.ts +4 -0
- package/dist/overlays.d.ts.map +1 -1
- package/dist/overlays.js +3 -3
- package/dist/overlays.js.map +1 -1
- package/dist/provider-button.d.ts +1 -1
- package/dist/public-exports.generated.d.ts +3 -0
- package/dist/public-exports.generated.d.ts.map +1 -1
- package/dist/public-exports.generated.js +9 -0
- package/dist/public-exports.generated.js.map +1 -1
- package/dist/screen-flows.d.ts +33 -4
- package/dist/screen-flows.d.ts.map +1 -1
- package/dist/screen-flows.js +25 -10
- package/dist/screen-flows.js.map +1 -1
- package/dist/screens.d.ts +38 -6
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js +26 -12
- package/dist/screens.js.map +1 -1
- package/dist/selection.d.ts +1 -1
- package/dist/social-compositions.d.ts +10 -0
- package/dist/social-compositions.d.ts.map +1 -1
- package/dist/social-compositions.js +3 -2
- package/dist/social-compositions.js.map +1 -1
- package/dist/styles.css +108 -46
- package/dist/styles.layered.css +108 -46
- package/dist/toast.d.ts +1 -1
- package/dist/top-bar.d.ts +1 -1
- package/package.json +8 -3
package/dist/styles.layered.css
CHANGED
|
@@ -1052,8 +1052,8 @@
|
|
|
1052
1052
|
.hjm-card__header-actions { position: relative; z-index: 1; display: flex; flex: 0 0 auto; align-items: center; gap: var(--hjm-space-xs); }
|
|
1053
1053
|
.hjm-card__leading { flex: 0 0 auto; display: inline-grid; place-items: center; line-height: 1; }
|
|
1054
1054
|
.hjm-card__copy { flex: 1 1 auto; min-inline-size: 0; display: grid; gap: var(--hjm-space-xs); }
|
|
1055
|
-
/* cardRecipe.title
|
|
1056
|
-
.hjm-card__title { margin: 0; color: var(--hjm-color-text); font-size: var(--hjm-type-
|
|
1055
|
+
/* Follow cardRecipe.title: native headings must not fall back to the UA bold weight. */
|
|
1056
|
+
.hjm-card__title { margin: 0; color: var(--hjm-color-text); font-size: var(--hjm-type-body-large-size); line-height: var(--hjm-type-body-large-line-height); font-weight: var(--hjm-text-emphasis-medium); overflow-wrap: anywhere; }
|
|
1057
1057
|
.hjm-card__description { margin: 0; overflow-wrap: anywhere; }
|
|
1058
1058
|
.hjm-card__actions { display: flex; flex-wrap: wrap; gap: var(--hjm-space-xs); padding: 0 var(--hjm-space-md) var(--hjm-space-md); }
|
|
1059
1059
|
/* Row rhythm reads the recipe density variables so the stylesheet does not
|
|
@@ -1119,7 +1119,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1119
1119
|
.hjm-section__copy { display: grid; flex: 1 1 auto; gap: var(--hjm-space-xxs); min-inline-size: 0; }
|
|
1120
1120
|
/* sectionRecipe.title is the `title` variant (18/26 bold) and description the `caption` variant (11/16), as Native draws them.
|
|
1121
1121
|
Until 2026-10-06 Web inherited body (14) for both, so the same Section header was smaller on Web. */
|
|
1122
|
-
.hjm-section__title { margin: 0; color: var(--hjm-color-text-body); font-size: var(--hjm-type-
|
|
1122
|
+
.hjm-section__title { margin: 0; color: var(--hjm-color-text-body); font-size: var(--hjm-type-body-large-size); line-height: var(--hjm-type-body-large-line-height); font-weight: var(--hjm-type-title-weight); overflow-wrap: anywhere; }
|
|
1123
1123
|
.hjm-section__description { color: var(--hjm-color-text-muted); font-size: var(--hjm-type-caption-size); line-height: var(--hjm-type-caption-line-height); overflow-wrap: anywhere; }
|
|
1124
1124
|
.hjm-section__action { flex: 0 0 auto; }
|
|
1125
1125
|
.hjm-section__content { min-inline-size: 0; }
|
|
@@ -1184,7 +1184,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1184
1184
|
.hjm-statistic__label { color: var(--hjm-color-text-muted); font-size: var(--hjm-type-label-size); line-height: var(--hjm-type-label-line-height); font-weight: var(--hjm-text-emphasis-medium); overflow-wrap: anywhere; }
|
|
1185
1185
|
.hjm-statistic[data-density="compact"] .hjm-statistic__label { font-size: var(--hjm-type-caption-size); line-height: var(--hjm-type-caption-line-height); }
|
|
1186
1186
|
.hjm-statistic__value-row { display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--hjm-space-xxs); min-inline-size: 0; }
|
|
1187
|
-
.hjm-statistic__value { color: var(--hjm-statistic-value-color, var(--hjm-color-text)); font-size: var(--hjm-type-
|
|
1187
|
+
.hjm-statistic__value { color: var(--hjm-statistic-value-color, var(--hjm-color-text)); font-size: var(--hjm-type-title-size); line-height: var(--hjm-type-title-line-height); font-weight: var(--hjm-font-weight-semibold); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
|
|
1188
1188
|
.hjm-statistic[data-density="compact"] .hjm-statistic__value { font-size: var(--hjm-type-body-large-size); line-height: var(--hjm-type-body-large-line-height); }
|
|
1189
1189
|
.hjm-statistic__affix { color: var(--hjm-color-text-body); font-size: var(--hjm-type-body-size); line-height: var(--hjm-type-body-line-height); font-weight: var(--hjm-text-emphasis-medium); }
|
|
1190
1190
|
.hjm-statistic__hint { color: var(--hjm-color-text-muted); font-size: var(--hjm-type-caption-size); line-height: var(--hjm-type-caption-line-height); }
|
|
@@ -1197,14 +1197,16 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1197
1197
|
.hjm-statistic-group { grid-template-columns: minmax(0, 1fr); }
|
|
1198
1198
|
}
|
|
1199
1199
|
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
.hjm-notice
|
|
1203
|
-
.hjm-notice[data-
|
|
1204
|
-
.hjm-notice[data-tone="
|
|
1205
|
-
.hjm-notice[data-tone="
|
|
1200
|
+
/* noticeRecipe 2026-10-25: no outline; tone lives in the tint, the leading accentBar and the icon. The bar is
|
|
1201
|
+
positioned in the padding so it spans the whole notice even when the action wraps to a second line. */
|
|
1202
|
+
.hjm-notice { --hjm-notice-accent: var(--hjm-accent-info); position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: var(--hjm-space-sm); padding: var(--hjm-space-md); padding-inline-start: calc(var(--hjm-space-md) + 4px + var(--hjm-space-sm)); border-radius: var(--hjm-radius-md); color: var(--hjm-color-text-body); background: var(--hjm-color-surface-alt); }
|
|
1203
|
+
.hjm-notice[data-appearance="panel"]::before { content: ""; position: absolute; inset-block: var(--hjm-space-md); inset-inline-start: var(--hjm-space-md); inline-size: 4px; border-radius: var(--hjm-radius-full); background: var(--hjm-notice-accent); }
|
|
1204
|
+
.hjm-notice[data-tone="success"] { --hjm-notice-accent: var(--hjm-accent-success); background: color-mix(in srgb, var(--hjm-accent-success) 10%, var(--hjm-color-bg)); }
|
|
1205
|
+
.hjm-notice[data-tone="warning"] { --hjm-notice-accent: var(--hjm-accent-warning); background: color-mix(in srgb, var(--hjm-accent-warning) 10%, var(--hjm-color-bg)); }
|
|
1206
|
+
.hjm-notice[data-tone="attention"] { --hjm-notice-accent: var(--hjm-accent-attention); background: color-mix(in srgb, var(--hjm-accent-attention) 10%, var(--hjm-color-bg)); }
|
|
1207
|
+
.hjm-notice[data-tone="danger"] { --hjm-notice-accent: var(--hjm-color-danger); background: color-mix(in srgb, var(--hjm-color-danger) 10%, var(--hjm-color-bg)); }
|
|
1206
1208
|
/* Status is placed inside the saved card/form; Badge carries tone without a second surface. */
|
|
1207
|
-
.hjm-notice[data-appearance="status"] { padding: 0;
|
|
1209
|
+
.hjm-notice[data-appearance="status"] { padding: 0; background: transparent; }
|
|
1208
1210
|
.hjm-notice[data-appearance="status"] .hjm-notice__content { justify-items: start; }
|
|
1209
1211
|
/* Reserve readable copy; wrap the action instead of crushing its label. */
|
|
1210
1212
|
.hjm-notice__content { flex: 1 1 60%; min-inline-size: 0; display: grid; gap: var(--hjm-space-xxs); }
|
|
@@ -1214,7 +1216,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1214
1216
|
.hjm-notice__action { flex: 0 0 auto; max-inline-size: 100%; }
|
|
1215
1217
|
.hjm-notice__title, .hjm-notice__description { overflow-wrap: anywhere; }
|
|
1216
1218
|
/* noticeRecipe/emptyStateRecipe title weight; the <strong> otherwise draws the UA bold (700). */
|
|
1217
|
-
.hjm-notice__title { font-weight: var(--hjm-type-title-weight); }
|
|
1219
|
+
.hjm-notice__title { font-weight: var(--hjm-type-title-weight); color: var(--hjm-color-text); }
|
|
1218
1220
|
|
|
1219
1221
|
/* emptyStateRecipe.density.regular paddingVertical xxxl 40 (2026-10-06; Web had xxl 32, Native read the recipe). */
|
|
1220
1222
|
/* Like Native, a regular empty state fills the rest of a flex host and centers in it; compact (cards, sheets) stays content-high. */
|
|
@@ -1732,18 +1734,29 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1732
1734
|
*/
|
|
1733
1735
|
/* Each hit/hover layer belongs to its own day. Without this containing block
|
|
1734
1736
|
the last absolute layer covered the whole preview and stole pointer clicks. */
|
|
1737
|
+
/* dateRangeRecipe 2026-10-25: one band between two filled edges (Material 3/Airbnb motif) instead of an underline and
|
|
1738
|
+
outlines; the band is as tall as the date circle and rounds off where a week row starts or ends. */
|
|
1739
|
+
.hjm-date-range { display: grid; gap: var(--hjm-space-md); }
|
|
1735
1740
|
.hjm-date-range .hjm-calendar__day { position: relative; isolation: isolate; }
|
|
1736
1741
|
.hjm-date-range .hjm-calendar__day-label { position: relative; z-index: 1; pointer-events: none; }
|
|
1737
|
-
.hjm-
|
|
1738
|
-
.hjm-
|
|
1739
|
-
.hjm-
|
|
1740
|
-
.hjm-
|
|
1741
|
-
.hjm-
|
|
1742
|
+
.hjm-calendar__band { position: absolute; inset-block-start: 0; inset-inline: 0; block-size: var(--hjm-calendar-indicator-size, var(--hjm-calendar-cell-size)); background: color-mix(in srgb, var(--hjm-color-primary) 15%, transparent); pointer-events: none; }
|
|
1743
|
+
.hjm-calendar__day[data-range-band="toEnd"] .hjm-calendar__band { inset-inline-start: 50%; }
|
|
1744
|
+
.hjm-calendar__day[data-range-band="toStart"] .hjm-calendar__band { inset-inline-end: 50%; }
|
|
1745
|
+
.hjm-calendar__day:first-child:not([data-range-band="toEnd"]) .hjm-calendar__band { border-start-start-radius: var(--hjm-radius-full); border-end-start-radius: var(--hjm-radius-full); }
|
|
1746
|
+
.hjm-calendar__day:last-child:not([data-range-band="toStart"]) .hjm-calendar__band { border-start-end-radius: var(--hjm-radius-full); border-end-end-radius: var(--hjm-radius-full); }
|
|
1747
|
+
.hjm-calendar__day[data-today][data-selected] .hjm-calendar__day-label { border-color: transparent; }
|
|
1748
|
+
.hjm-date-range__presets { display: flex; flex-wrap: wrap; gap: var(--hjm-space-xs); }
|
|
1749
|
+
.hjm-date-range__summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--hjm-space-xs); }
|
|
1750
|
+
.hjm-date-range__field { display: grid; gap: var(--hjm-space-xxs); min-inline-size: 0; padding: var(--hjm-space-xs) var(--hjm-space-sm); border: 2px solid transparent; border-radius: var(--hjm-radius-md); background: var(--hjm-color-surface-alt); }
|
|
1751
|
+
.hjm-date-range__field[data-active] { border-color: var(--hjm-color-primary); }
|
|
1752
|
+
.hjm-date-range__field-label { color: var(--hjm-color-text-muted); font-size: var(--hjm-type-label-size); line-height: var(--hjm-type-label-line-height); }
|
|
1753
|
+
.hjm-date-range__field-value { overflow: hidden; color: var(--hjm-color-text); font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
|
|
1754
|
+
.hjm-date-range__field[data-empty] .hjm-date-range__field-value { color: var(--hjm-color-text-sub); }
|
|
1742
1755
|
|
|
1743
1756
|
/* AvatarGroup: overlap comes from the recipe ratio, not a per-size pixel value. */
|
|
1744
1757
|
.hjm-avatar-group { display: inline-flex; align-items: center; }
|
|
1745
1758
|
.hjm-avatar-group > * + * { margin-inline-start: calc(var(--hjm-avatar-overlap) * -1); }
|
|
1746
|
-
.hjm-avatar-group > .hjm-avatar { border: 2px solid var(--hjm-color-bg); border-radius: var(--hjm-radius-full); }
|
|
1759
|
+
.hjm-avatar-group > .hjm-avatar, .hjm-avatar-group > .hjm-identity-action .hjm-avatar { border: 2px solid var(--hjm-color-bg); border-radius: var(--hjm-radius-full); }
|
|
1747
1760
|
.hjm-avatar-group__overflow {
|
|
1748
1761
|
display: grid;
|
|
1749
1762
|
place-items: center;
|
|
@@ -1776,7 +1789,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1776
1789
|
font-family: var(--hjm-font-family-code, ui-monospace, SFMono-Regular, Consolas, monospace);
|
|
1777
1790
|
}
|
|
1778
1791
|
.hjm-text-format[data-kind="kbd"] {
|
|
1779
|
-
border: 1px solid var(--hjm-color-border);
|
|
1792
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
1780
1793
|
color: var(--hjm-color-text-body);
|
|
1781
1794
|
font-size: var(--hjm-type-label-size);
|
|
1782
1795
|
}
|
|
@@ -2091,7 +2104,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2091
2104
|
max-block-size: 12rem;
|
|
2092
2105
|
margin: var(--hjm-space-xxs) 0 0;
|
|
2093
2106
|
padding: var(--hjm-space-xxs);
|
|
2094
|
-
border: 1px solid var(--hjm-color-border);
|
|
2107
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
2095
2108
|
border-radius: var(--hjm-radius-md);
|
|
2096
2109
|
background: var(--hjm-color-bg);
|
|
2097
2110
|
list-style: none;
|
|
@@ -2579,7 +2592,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2579
2592
|
block-size: 100dvh;
|
|
2580
2593
|
min-inline-size: 0;
|
|
2581
2594
|
overflow: hidden;
|
|
2582
|
-
border: 1px solid var(--hjm-color-border);
|
|
2595
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
2583
2596
|
border-radius: 0;
|
|
2584
2597
|
color: var(--hjm-color-text);
|
|
2585
2598
|
background: var(--hjm-color-bg);
|
|
@@ -2653,7 +2666,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2653
2666
|
overscroll-behavior: contain;
|
|
2654
2667
|
box-sizing: border-box;
|
|
2655
2668
|
padding: var(--hjm-space-md);
|
|
2656
|
-
border: 1px solid var(--hjm-color-border);
|
|
2669
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
2657
2670
|
border-radius: var(--hjm-radius-md);
|
|
2658
2671
|
color: var(--hjm-color-text);
|
|
2659
2672
|
background: var(--hjm-color-bg);
|
|
@@ -2696,7 +2709,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2696
2709
|
/* menuRecipe.surface (floatingSurfaceContract) padding spacing.xs 8. Until 2026-10-06 Web drew 4 here and in the
|
|
2697
2710
|
Select/Combobox/ContextMenu popups that share the same surface contract. */
|
|
2698
2711
|
padding: var(--hjm-menu-padding, var(--hjm-space-xs));
|
|
2699
|
-
border: 1px solid var(--hjm-color-border);
|
|
2712
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
2700
2713
|
border-radius: var(--hjm-radius-md);
|
|
2701
2714
|
background: var(--hjm-color-bg);
|
|
2702
2715
|
box-shadow: var(--hjm-shadow-floating);
|
|
@@ -2768,7 +2781,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2768
2781
|
.hjm-select__indicator { flex: 0 0 auto; color: var(--hjm-color-text-muted); pointer-events: none; }
|
|
2769
2782
|
.hjm-select__busy-indicator { flex: 0 0 auto; inline-size: 1em; block-size: 1em; border: 2px solid var(--hjm-color-content-brand); border-inline-end-color: transparent; border-radius: 50%; animation: hjm-spin 800ms linear infinite; }
|
|
2770
2783
|
.hjm-select__native + .hjm-select__indicator { margin-inline-start: calc(-1 * var(--hjm-space-lg)); }
|
|
2771
|
-
.hjm-select__listbox { position: fixed; z-index: var(--hjm-layer-dropdown); max-inline-size: min(26.25rem, calc(100vw - (2 * var(--hjm-space-md)))); max-block-size: 22.5rem; overflow: auto; padding: var(--hjm-select-popover-padding, var(--hjm-space-xs)); /* selectRecipe.popover.padding 8 (was 4 until 2026-10-06) */ border: 1px solid var(--hjm-color-border); border-radius: var(--hjm-radius-md); background: var(--hjm-color-bg); box-shadow: var(--hjm-shadow-floating); }
|
|
2784
|
+
.hjm-select__listbox { position: fixed; z-index: var(--hjm-layer-dropdown); max-inline-size: min(26.25rem, calc(100vw - (2 * var(--hjm-space-md)))); max-block-size: 22.5rem; overflow: auto; padding: var(--hjm-select-popover-padding, var(--hjm-space-xs)); /* selectRecipe.popover.padding 8 (was 4 until 2026-10-06) */ border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent); border-radius: var(--hjm-radius-md); background: var(--hjm-color-bg); box-shadow: var(--hjm-shadow-floating); }
|
|
2772
2785
|
.hjm-select__section-label { padding: var(--hjm-space-xs) var(--hjm-space-sm); color: var(--hjm-color-text-muted); font-size: var(--hjm-type-label-size); font-weight: var(--hjm-text-emphasis-medium); }
|
|
2773
2786
|
.hjm-select__option, .hjm-select__message { min-block-size: var(--hjm-control-min-touch-target); display: flex; align-items: center; gap: var(--hjm-space-sm); padding: var(--hjm-space-xs) var(--hjm-space-sm); border-radius: var(--hjm-radius-sm); overflow-wrap: anywhere; }
|
|
2774
2787
|
.hjm-select[data-density="comfortable"] .hjm-select__option,
|
|
@@ -2798,7 +2811,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2798
2811
|
max-block-size: 22.5rem;
|
|
2799
2812
|
overflow: auto;
|
|
2800
2813
|
padding: var(--hjm-combobox-popover-padding, var(--hjm-space-xs)); /* comboboxRecipe.popover = selectRecipe.popover, 8 (was 4 until 2026-10-06) */
|
|
2801
|
-
border: 1px solid var(--hjm-color-border);
|
|
2814
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
2802
2815
|
border-radius: var(--hjm-radius-md);
|
|
2803
2816
|
background: var(--hjm-color-bg);
|
|
2804
2817
|
box-shadow: var(--hjm-shadow-floating);
|
|
@@ -2884,7 +2897,7 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
2884
2897
|
place-items: center;
|
|
2885
2898
|
inline-size: var(--hjm-avatar-size, 2.5rem);
|
|
2886
2899
|
block-size: var(--hjm-avatar-size, 2.5rem);
|
|
2887
|
-
border: 1px solid var(--hjm-color-border);
|
|
2900
|
+
border: 1px solid color-mix(in srgb, var(--hjm-color-border-control) 50%, transparent);
|
|
2888
2901
|
border-radius: 50%;
|
|
2889
2902
|
color: var(--hjm-color-text-muted);
|
|
2890
2903
|
background: var(--hjm-color-bg);
|
|
@@ -3341,25 +3354,40 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
3341
3354
|
.hjm-menu-morph__item[data-tone="danger"] { color: var(--hjm-color-danger); }
|
|
3342
3355
|
.hjm-menu-morph__item:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
3343
3356
|
|
|
3344
|
-
/* Selected colors are user data; control surfaces keep the same canvas tokens as other inputs.
|
|
3345
|
-
|
|
3346
|
-
.hjm-color-picker
|
|
3347
|
-
.hjm-color-
|
|
3348
|
-
.hjm-color-
|
|
3349
|
-
.hjm-color-
|
|
3350
|
-
.hjm-color-
|
|
3351
|
-
.hjm-color-
|
|
3352
|
-
.hjm-color-
|
|
3353
|
-
.hjm-color-
|
|
3354
|
-
.hjm-color-
|
|
3355
|
-
.hjm-color-
|
|
3356
|
-
.hjm-color-
|
|
3357
|
-
.hjm-color-
|
|
3358
|
-
.hjm-color-
|
|
3359
|
-
.hjm-color-
|
|
3360
|
-
.hjm-color-
|
|
3361
|
-
.hjm-color-
|
|
3357
|
+
/* Selected colors are user data; control surfaces keep the same canvas tokens as other inputs. The 2026-10-25 redesign
|
|
3358
|
+
edits HSV: a saturation/brightness area over the hue colour, then hue and opacity bars (Figma/Procreate Classic). */
|
|
3359
|
+
.hjm-color-picker { --hjm-color-picker-checker: repeating-conic-gradient(#d6d6d6 0% 25%, #ffffff 0% 50%) 0 0 / 12px 12px; display: grid; gap: var(--hjm-space-md); border: 1px solid var(--hjm-color-border); border-radius: var(--hjm-radius-md); background: var(--hjm-color-bg); color: var(--hjm-color-text); padding: 1rem; margin: 0; min-inline-size: 0; overflow-wrap: anywhere; }
|
|
3360
|
+
.hjm-color-picker legend { max-inline-size: 100%; overflow-wrap: anywhere; padding-inline: 0.25rem; }
|
|
3361
|
+
.hjm-color-picker__area { position: relative; aspect-ratio: var(--hjm-color-picker-area-ratio); border-radius: var(--hjm-radius-md); background: linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, transparent), var(--hjm-color-picker-hue); touch-action: none; cursor: crosshair; user-select: none; }
|
|
3362
|
+
.hjm-color-picker__area[data-disabled] { cursor: not-allowed; }
|
|
3363
|
+
.hjm-color-picker__area:focus-within { outline: var(--hjm-focus-width, 2px) solid var(--hjm-color-focus); outline-offset: 2px; }
|
|
3364
|
+
.hjm-color-picker__area-thumb { position: absolute; inline-size: var(--hjm-color-picker-area-thumb); block-size: var(--hjm-color-picker-area-thumb); box-sizing: border-box; translate: -50% -50%; border: 3px solid #fff; border-radius: 50%; background: var(--hjm-color-picker-opaque); box-shadow: 0 0 0 1px rgb(0 0 0 / 0.3), 0 1px 4px rgb(0 0 0 / 0.35); pointer-events: none; }
|
|
3365
|
+
.hjm-color-picker__bar { appearance: none; -webkit-appearance: none; display: block; inline-size: 100%; block-size: var(--hjm-color-picker-target); margin: 0; background: transparent; cursor: pointer; }
|
|
3366
|
+
.hjm-color-picker__bar::-webkit-slider-runnable-track { block-size: var(--hjm-color-picker-bar); border-radius: 999px; background: var(--hjm-color-picker-bar-fill); box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); }
|
|
3367
|
+
.hjm-color-picker__bar::-moz-range-track { block-size: var(--hjm-color-picker-bar); border-radius: 999px; background: var(--hjm-color-picker-bar-fill); box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.12); }
|
|
3368
|
+
.hjm-color-picker__bar::-webkit-slider-thumb { -webkit-appearance: none; inline-size: var(--hjm-color-picker-bar-thumb); block-size: var(--hjm-color-picker-bar-thumb); margin-block-start: calc((var(--hjm-color-picker-bar) - var(--hjm-color-picker-bar-thumb)) / 2); box-sizing: border-box; border: 3px solid #fff; border-radius: 50%; background: var(--hjm-color-picker-bar-thumb-fill); box-shadow: 0 0 0 1px rgb(0 0 0 / 0.3), 0 1px 4px rgb(0 0 0 / 0.35); }
|
|
3369
|
+
.hjm-color-picker__bar::-moz-range-thumb { inline-size: var(--hjm-color-picker-bar-thumb); block-size: var(--hjm-color-picker-bar-thumb); box-sizing: border-box; border: 3px solid #fff; border-radius: 50%; background: var(--hjm-color-picker-bar-thumb-fill); box-shadow: 0 0 0 1px rgb(0 0 0 / 0.3), 0 1px 4px rgb(0 0 0 / 0.35); }
|
|
3370
|
+
.hjm-color-picker__bar--hue { --hjm-color-picker-bar-fill: var(--hjm-color-picker-hue-gradient); --hjm-color-picker-bar-thumb-fill: var(--hjm-color-picker-hue); }
|
|
3371
|
+
.hjm-color-picker__bar--alpha { --hjm-color-picker-bar-fill: linear-gradient(to right, transparent, var(--hjm-color-picker-opaque)), var(--hjm-color-picker-checker); --hjm-color-picker-bar-thumb-fill: linear-gradient(var(--hjm-color-picker-current), var(--hjm-color-picker-current)), var(--hjm-color-picker-checker); }
|
|
3372
|
+
.hjm-color-picker__bar:focus-visible { outline: var(--hjm-focus-width, 2px) solid var(--hjm-color-focus); outline-offset: 2px; border-radius: 999px; }
|
|
3373
|
+
.hjm-color-picker__row { display: flex; align-items: flex-end; gap: 0.75rem; }
|
|
3374
|
+
.hjm-color-picker__preview { flex-shrink: 0; inline-size: var(--hjm-color-picker-preview); block-size: var(--hjm-color-picker-preview); border-radius: 50%; background: linear-gradient(var(--hjm-color-picker-current), var(--hjm-color-picker-current)), var(--hjm-color-picker-checker); box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.15); }
|
|
3375
|
+
.hjm-color-picker__hex { display: flex; flex: 1 1 8rem; flex-direction: column; gap: 0.25rem; min-inline-size: 0; }
|
|
3376
|
+
.hjm-color-picker__hex input { box-sizing: border-box; inline-size: 100%; min-block-size: var(--hjm-color-picker-target); padding-inline: 0.5rem; border: 1px solid var(--hjm-color-border); border-radius: var(--hjm-radius-md); background: var(--hjm-color-bg); color: var(--hjm-color-text); font: inherit; font-variant-numeric: tabular-nums; }
|
|
3377
|
+
.hjm-color-picker__hex input:focus-visible { outline: var(--hjm-focus-width, 2px) solid var(--hjm-color-focus); outline-offset: 2px; }
|
|
3378
|
+
.hjm-color-picker__opacity { min-block-size: var(--hjm-color-picker-target); display: inline-flex; align-items: center; font-variant-numeric: tabular-nums; color: var(--hjm-color-text-muted, inherit); }
|
|
3379
|
+
.hjm-color-picker__error { color: var(--hjm-color-danger); margin: 0; }
|
|
3362
3380
|
.hjm-color-picker:disabled { opacity: 0.5; }
|
|
3381
|
+
.hjm-color-picker:disabled .hjm-color-picker__bar { cursor: not-allowed; }
|
|
3382
|
+
.hjm-color-swatches { border: 0; margin: 0; padding: 0; min-inline-size: 0; }
|
|
3383
|
+
.hjm-color-swatches legend { padding: 0; margin-block-end: 0.5rem; }
|
|
3384
|
+
.hjm-color-swatches__list { display: flex; flex-wrap: wrap; gap: 0.25rem; }
|
|
3385
|
+
.hjm-color-swatches[data-layout="scroll"] .hjm-color-swatches__list { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; overscroll-behavior-x: contain; }
|
|
3386
|
+
.hjm-color-swatches__item { position: relative; display: inline-grid; place-items: center; flex-shrink: 0; inline-size: var(--hjm-color-swatch-target); block-size: var(--hjm-color-swatch-target); cursor: pointer; }
|
|
3387
|
+
.hjm-color-swatches__swatch { inline-size: var(--hjm-color-swatch-size); block-size: var(--hjm-color-swatch-size); border-radius: 50%; background: linear-gradient(var(--hjm-color-swatch), var(--hjm-color-swatch)), repeating-conic-gradient(#d6d6d6 0% 25%, #ffffff 0% 50%) 0 0 / 10px 10px; box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.15); }
|
|
3388
|
+
.hjm-color-swatches__item input:checked + .hjm-color-swatches__swatch { box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.15), 0 0 0 var(--hjm-color-swatch-gap) var(--hjm-color-bg), 0 0 0 calc(var(--hjm-color-swatch-gap) + var(--hjm-color-swatch-ring)) var(--hjm-color-text); }
|
|
3389
|
+
.hjm-color-swatches__item input:focus-visible + .hjm-color-swatches__swatch { outline: var(--hjm-focus-width, 2px) solid var(--hjm-color-focus); outline-offset: calc(var(--hjm-color-swatch-gap) + var(--hjm-color-swatch-ring) + 2px); }
|
|
3390
|
+
.hjm-color-swatches:disabled .hjm-color-swatches__item { cursor: not-allowed; opacity: 0.5; }
|
|
3363
3391
|
/* SVG labels are decorative and print with the content; neither selection nor pointer input is intercepted. */
|
|
3364
3392
|
.hjm-watermark { position: relative; isolation: isolate; }
|
|
3365
3393
|
.hjm-watermark__content { position: relative; z-index: 0; overflow-wrap: anywhere; }
|
|
@@ -3664,8 +3692,8 @@ button.hjm-chat-message__media-item:focus-visible { outline: 2px solid var(--hjm
|
|
|
3664
3692
|
(--hjm-comment-anchor-line, set per row), so like/more glyphs share the author line's centre instead of sitting
|
|
3665
3693
|
12px below it. When HJM's own like/more is the last control (data-edge), the whole column takes the IconButton edge
|
|
3666
3694
|
overhang: the 44-wide like count under the heart shares the column, so a margin on the button alone was absorbed. */
|
|
3667
|
-
.hjm-comment-row__like { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-start; margin-block-start: calc((var(--hjm-comment-anchor-line) - var(--hjm-control-button-
|
|
3668
|
-
.hjm-comment-row__like[data-edge="end"] { margin-inline-end: calc(-1 * var(--hjm-icon-button-edge-
|
|
3695
|
+
.hjm-comment-row__like { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-start; margin-block-start: calc((var(--hjm-comment-anchor-line) - var(--hjm-control-button-small)) / 2); }
|
|
3696
|
+
.hjm-comment-row__like[data-edge="end"] { margin-inline-end: calc(-1 * var(--hjm-icon-button-edge-small)); }
|
|
3669
3697
|
.hjm-comment-row__like-count { text-align: center; }
|
|
3670
3698
|
.hjm-comment-row__action { align-self: flex-start; padding: 0; border: 0; background: none; color: var(--hjm-color-text-muted); font: inherit; font-size: var(--hjm-type-caption-size); line-height: var(--hjm-type-caption-line-height); font-weight: var(--hjm-text-emphasis-medium); cursor: pointer; }
|
|
3671
3699
|
.hjm-comment-row__action:disabled { opacity: 0.5; cursor: default; }
|
|
@@ -3790,6 +3818,7 @@ button.hjm-chat-message__media-item:focus-visible { outline: 2px solid var(--hjm
|
|
|
3790
3818
|
|
|
3791
3819
|
/* Full destination cards keep all names and widths stable; colors remain product semantic roles. */
|
|
3792
3820
|
.hjm-bottom-navigation[data-selection="tile"] .hjm-bottom-navigation__surface { background: var(--hjm-color-surface-accent); }
|
|
3821
|
+
.hjm-bottom-navigation[data-selection="tile"][data-tone="neutral"] .hjm-bottom-navigation__surface { background: var(--hjm-color-surface); }
|
|
3793
3822
|
.hjm-bottom-navigation[data-selection="tile"] .hjm-bottom-navigation__list { padding: var(--hjm-space-xxs); gap: var(--hjm-space-xxs); }
|
|
3794
3823
|
.hjm-bottom-navigation[data-selection="tile"] .hjm-bottom-navigation__item[data-state="selected"] { background: var(--hjm-color-primary); color: var(--hjm-color-on-primary); }
|
|
3795
3824
|
.hjm-bottom-navigation[data-selection="tile"] .hjm-bottom-navigation__item:not([data-state="selected"]):active { background: var(--hjm-bottom-navigation-pressed-background); }
|
|
@@ -3989,4 +4018,37 @@ button.hjm-chat-message__media-item:focus-visible { outline: 2px solid var(--hjm
|
|
|
3989
4018
|
.hjm-chat-room__selected-name { max-inline-size:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
3990
4019
|
:is(.hjm-chat-room__tool,.hjm-chat-room__photo,.hjm-chat-room__selected-item):focus-visible { outline:2px solid var(--hjm-color-content-brand); outline-offset:2px; }
|
|
3991
4020
|
|
|
4021
|
+
/* FollowListScreen already receives the screen body inset; external tab panels add no second gutter. */
|
|
4022
|
+
.hjm-follow-list__panel { padding-block: 0; }
|
|
4023
|
+
|
|
4024
|
+
/* Narrow pager placement without shrinking the vertical tap target or overlapping adjacent buttons. */
|
|
4025
|
+
.hjm-page-indicator[data-density="compact"][data-interactive="true"] { gap: 0; }
|
|
4026
|
+
.hjm-page-indicator[data-density="compact"] .hjm-page-indicator__dot { min-inline-size: var(--hjm-space-lg); inline-size: var(--hjm-space-lg); padding-inline: 0; }
|
|
4027
|
+
|
|
4028
|
+
/* Identity navigation preserves small avatar geometry while exposing a keyboard/touch target. */
|
|
4029
|
+
.hjm-identity-action { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; min-inline-size: var(--hjm-identity-target); min-block-size: var(--hjm-identity-target); margin: 0; padding: 0; border: 0; border-radius: var(--hjm-radius-full, 9999px); background: transparent; color: inherit; cursor: pointer; }
|
|
4030
|
+
.hjm-identity-action > span { display: inline-flex; }
|
|
4031
|
+
.hjm-identity-action:focus-visible { outline: 2px solid var(--hjm-color-content-brand); outline-offset: 2px; }
|
|
4032
|
+
.hjm-identity-action:active { opacity: var(--hjm-identity-pressed-opacity); }
|
|
4033
|
+
.hjm-identity-action:disabled { cursor: default; }
|
|
4034
|
+
|
|
4035
|
+
/* Independent identity navigation is a sibling of row commands, including links. */
|
|
4036
|
+
.hjm-list-row__profile { display: flex; flex: 0 0 auto; padding-inline-start: var(--hjm-list-row-inline); }
|
|
4037
|
+
.hjm-list-row-frame[data-leading-action] > .hjm-list-row { padding-inline-start: 0; }
|
|
4038
|
+
.hjm-list-row-frame[data-leading-action]:not([data-trailing-action]) > .hjm-list-row { padding-inline-end: var(--hjm-list-row-inline); }
|
|
4039
|
+
|
|
4040
|
+
.hjm-card[data-activation="overlay"] .hjm-card__leading[data-interactive] { position: relative; z-index: 1; }
|
|
4041
|
+
|
|
4042
|
+
/* Header dismissal keeps a single modal surface and leaves the action viewport scrollable. */
|
|
4043
|
+
.hjm-menu__content[data-presentation="bottom"][data-dismiss-placement="header"] { background: var(--hjm-color-bg); padding: var(--hjm-space-sm); }
|
|
4044
|
+
.hjm-menu__header { display: flex; align-items: center; gap: var(--hjm-space-sm); flex-shrink: 0; }
|
|
4045
|
+
.hjm-menu__heading { flex: 1; min-inline-size: 0; display: grid; gap: var(--hjm-space-xxs); }
|
|
4046
|
+
.hjm-menu__title { font-weight: var(--hjm-text-emphasis-strong); }
|
|
4047
|
+
.hjm-menu__subtitle { font-size: var(--hjm-type-label-size); color: var(--hjm-color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
4048
|
+
|
|
4049
|
+
/* Relationship lists use the large Avatar (48) and 64px rows so identity stays legible beside actions. */
|
|
4050
|
+
.hjm-follow-list__person { min-block-size: 64px; }
|
|
4051
|
+
.hjm-list-row__leading[data-size="large"] { inline-size: 48px; block-size: 48px; }
|
|
4052
|
+
.hjm-follow-list__relationship { min-inline-size: 108px; }
|
|
4053
|
+
|
|
3992
4054
|
}
|
package/dist/toast.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type ToastProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "titl
|
|
|
6
6
|
onDismissRequest: (reason: ToastDismissReason) => void;
|
|
7
7
|
}>;
|
|
8
8
|
/** Controlled single-toast renderer; ToastProvider supplies the full FIFO lifecycle. */
|
|
9
|
-
export declare const Toast: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "
|
|
9
|
+
export declare const Toast: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "children" | "title"> & Readonly<{
|
|
10
10
|
descriptor: ToastDescriptor;
|
|
11
11
|
onDismissRequest: (reason: ToastDismissReason) => void;
|
|
12
12
|
}> & import("react").RefAttributes<HTMLDivElement>>;
|
package/dist/top-bar.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export type TopBarProps = Omit<HTMLAttributes<HTMLDivElement>, "title" | "childr
|
|
|
24
24
|
layoutStyle?: HjmCompositionStyleProp;
|
|
25
25
|
}>;
|
|
26
26
|
/** Screen chrome stays composable inside pages and dialogs, without adding a second banner landmark. */
|
|
27
|
-
export declare const TopBar: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "
|
|
27
|
+
export declare const TopBar: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "children" | "title"> & Readonly<{
|
|
28
28
|
title?: string;
|
|
29
29
|
/** Product control in the shared title slot; exclusive with text title affordances. */
|
|
30
30
|
titleContent?: ReactNode;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hjmds/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.47.0",
|
|
4
4
|
"description": "Accessible React 19 renderers for HJM design contracts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -613,6 +613,11 @@
|
|
|
613
613
|
"types": "./dist/image-viewer.d.ts",
|
|
614
614
|
"import": "./dist/image-viewer.js",
|
|
615
615
|
"default": "./dist/image-viewer.js"
|
|
616
|
+
},
|
|
617
|
+
"./follow-list": {
|
|
618
|
+
"types": "./dist/follow-list.d.ts",
|
|
619
|
+
"import": "./dist/follow-list.js",
|
|
620
|
+
"default": "./dist/follow-list.js"
|
|
616
621
|
}
|
|
617
622
|
},
|
|
618
623
|
"files": [
|
|
@@ -623,7 +628,7 @@
|
|
|
623
628
|
"THIRD_PARTY_NOTICES.md"
|
|
624
629
|
],
|
|
625
630
|
"peerDependencies": {
|
|
626
|
-
"@hjmds/design-contracts": ">=1.
|
|
631
|
+
"@hjmds/design-contracts": ">=1.47.0 <1.48.0",
|
|
627
632
|
"react": ">=19.0.0",
|
|
628
633
|
"react-dom": ">=19.0.0",
|
|
629
634
|
"@number-flow/react": "0.6.2",
|
|
@@ -661,7 +666,7 @@
|
|
|
661
666
|
"@blobatar/react": "2.7.0",
|
|
662
667
|
"lucide-react": "1.59.0",
|
|
663
668
|
"vite": "8.3.4",
|
|
664
|
-
"@hjmds/design-contracts": "1.
|
|
669
|
+
"@hjmds/design-contracts": "1.47.0"
|
|
665
670
|
},
|
|
666
671
|
"peerDependenciesMeta": {
|
|
667
672
|
"@number-flow/react": {
|