@teamblind-chorus/ui 1.0.1 → 1.1.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/agents/AGENTS.md +4 -6
- package/agents/DESIGN.md +2 -0
- package/agents/LOVABLE.md +167 -373
- package/agents/anti-patterns.md +2 -2
- package/agents/catalog.md +7 -3
- package/agents/components/avatar-rail/avatar-rail.md +2 -0
- package/agents/components/badge/badge.md +2 -0
- package/agents/components/badge/role.md +2 -0
- package/agents/components/badge/update.md +2 -0
- package/agents/components/banner/banner.md +72 -9
- package/agents/components/banner/banner.spec.json +40 -2
- package/agents/components/bottom-sheet/bottom-sheet.md +2 -0
- package/agents/components/bubble/bubble.md +2 -0
- package/agents/components/button/button.family.json +8 -2
- package/agents/components/button/button.md +2 -0
- package/agents/components/button/check.md +2 -0
- package/agents/components/button/fab.md +2 -0
- package/agents/components/button/group.spec.json +65 -0
- package/agents/components/button/icon.md +2 -0
- package/agents/components/button/standard.md +45 -19
- package/agents/components/button/text.md +2 -0
- package/agents/components/button/toggle.md +2 -0
- package/agents/components/button/toolbar.md +2 -0
- package/agents/components/carousel/carousel.md +2 -0
- package/agents/components/carousel/post.md +5 -3
- package/agents/components/carousel/post.spec.json +4 -6
- package/agents/components/carousel/profile.md +4 -2
- package/agents/components/carousel/profile.spec.json +4 -6
- package/agents/components/chip/chip.md +2 -0
- package/agents/components/chip/filter.md +2 -0
- package/agents/components/chip/tag.md +2 -0
- package/agents/components/dialog/dialog.md +2 -0
- package/agents/components/directory-list/directory-list.md +2 -0
- package/agents/components/divider/divider.md +2 -0
- package/agents/components/feed/ad.md +2 -0
- package/agents/components/feed/feed.md +2 -0
- package/agents/components/feed/post.md +2 -0
- package/agents/components/form-field/form-field.md +3 -1
- package/agents/components/form-field/input.md +2 -0
- package/agents/components/form-field/input.spec.json +2 -1
- package/agents/components/form-field/search.md +2 -0
- package/agents/components/form-field/search.spec.json +2 -1
- package/agents/components/form-field/select.md +2 -0
- package/agents/components/form-field/textarea.md +2 -0
- package/agents/components/form-field/textarea.spec.json +2 -1
- package/agents/components/header/header.md +2 -0
- package/agents/components/header/main.md +2 -0
- package/agents/components/header/sub.md +2 -0
- package/agents/components/list/accordion.md +2 -0
- package/agents/components/list/entry.md +2 -0
- package/agents/components/list/entry.spec.json +2 -1
- package/agents/components/list/list.md +3 -1
- package/agents/components/list/radio.md +2 -0
- package/agents/components/list/standard.md +2 -0
- package/agents/components/list/standard.spec.json +2 -1
- package/agents/components/metadata/compact.md +13 -7
- package/agents/components/metadata/compact.spec.json +19 -6
- package/agents/components/metadata/metadata.family.json +3 -3
- package/agents/components/metadata/metadata.md +4 -2
- package/agents/components/metadata/standard.md +24 -0
- package/agents/components/nav-card/nav-card.md +2 -0
- package/agents/components/nav-list/nav-list.md +2 -0
- package/agents/components/navigation-bar/main.md +2 -0
- package/agents/components/navigation-bar/navigation-bar.md +2 -0
- package/agents/components/navigation-bar/search.md +2 -0
- package/agents/components/navigation-bar/sub.md +2 -0
- package/agents/components/page-shell/page-shell.md +2 -0
- package/agents/components/pagination/pagination.family.json +26 -0
- package/agents/components/pagination/pagination.md +40 -0
- package/agents/components/pagination/pagination.spec.json +54 -0
- package/agents/components/profile-header/profile-header.md +2 -0
- package/agents/components/progress/progress.md +2 -0
- package/agents/components/side-sheet/side-sheet.md +2 -0
- package/agents/components/skeleton/skeleton.md +2 -0
- package/agents/components/status-tag/status-tag.md +2 -0
- package/agents/components/suggestion-list/suggestion-list.md +2 -0
- package/agents/components/switch/switch.md +2 -0
- package/agents/components/tab-bar/tab-bar.md +2 -0
- package/agents/components/tabs/rounded.md +2 -0
- package/agents/components/tabs/segmented.md +2 -0
- package/agents/components/tabs/tabs.md +2 -0
- package/agents/components/tabs/underline.md +2 -0
- package/agents/components/thumbnail/thumbnail.md +2 -0
- package/agents/components/toast/toast.md +2 -0
- package/agents/components/tooltip/tooltip.md +2 -0
- package/agents/compose.md +3 -3
- package/agents/manifest.json +1 -0
- package/agents/patterns/README.md +2 -0
- package/agents/patterns/actions.md +2 -0
- package/agents/patterns/browsing.md +2 -0
- package/agents/patterns/communications.md +2 -0
- package/agents/patterns/layout.md +2 -0
- package/agents/patterns/modals.md +2 -0
- package/agents/patterns/visual.md +2 -0
- package/agents/usage.json +15 -3
- package/dist/index.cjs +95 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -1
- package/dist/index.d.ts +28 -1
- package/dist/index.js +94 -40
- package/dist/index.js.map +1 -1
- package/dist/styles.css +183 -41
- package/package.json +1 -2
- package/agents/reconstruct.md +0 -55
- package/agents/scoped-adoption.md +0 -111
|
@@ -4,6 +4,8 @@ image: ./layout.png
|
|
|
4
4
|
status: canonical
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
> 🇰🇷 한국어: [`i18n/ko/patterns/layout.md`](../i18n/ko/patterns/layout.md)
|
|
8
|
+
|
|
7
9
|
## Intent
|
|
8
10
|
|
|
9
11
|
Page-level scaffolding and navigation chrome across the five main tab destinations — **Home, Company, Explore, Jobs, Notifications** — plus a channel profile. This board is the reference for *frame*, not content: how a screen seats its top bar, in-page tabs, filter rail, scrolling body, and bottom tab bar so every destination reads as one geometry. When composing any full screen, match the scaffold here before filling slots.
|
|
@@ -4,6 +4,8 @@ image: ./modals.png
|
|
|
4
4
|
status: canonical
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
> 🇰🇷 한국어: [`i18n/ko/patterns/modals.md`](../i18n/ko/patterns/modals.md)
|
|
8
|
+
|
|
7
9
|
## Intent
|
|
8
10
|
|
|
9
11
|
Overlay surfaces that interrupt the flow for a commit or disclosure — confirmation Dialogs, info Dialogs, a full-screen disclosure panel, bottom-anchored confirmation CTAs, and BottomSheet purchase flows. These are the interaction-contract primitives: `dialog` and `bottom-sheet` are `visualReuse: "locked"` — chosen for behavior (scrim, focus trap, ARIA), never borrowed for shape. Reach here for "block the screen until the user decides".
|
|
@@ -4,6 +4,8 @@ image: ./visual.png
|
|
|
4
4
|
status: canonical
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
> 🇰🇷 한국어: [`i18n/ko/patterns/visual.md`](../i18n/ko/patterns/visual.md)
|
|
8
|
+
|
|
7
9
|
## Intent
|
|
8
10
|
|
|
9
11
|
Image-bearing and expressive surfaces — empty-state illustrations, photo grids, media-rich cover cards, colorful category tiles, illustration banners, and gated-channel covers. This board is the reference for the **image-area contract**: every `assetType: "image"` slot fills with the universal `/placeholder.png` and swaps to a context image by changing only the `src`, never the slot's footprint. Reach here for "this surface carries pictures, not just text".
|
package/agents/usage.json
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"button": {
|
|
51
51
|
"import": "Button",
|
|
52
52
|
"from": "@teamblind-chorus/ui",
|
|
53
|
-
"note": "All button
|
|
53
|
+
"note": "All button ROLES are the single `Button` export selected by the `variant` prop — there is NO `<Fab>`, `<IconButton>`, `<ToggleButton>`, or `<Toolbar>` export. An `import { Fab }` failure does NOT mean the family is missing; reach for `<Button variant=\"fab\">`. The one separate named export is `ButtonGroup` (the `group` sub) — a layout wrapper for two or more Buttons, NOT a Button variant.",
|
|
54
54
|
"subs": {
|
|
55
55
|
"standard": {
|
|
56
56
|
"access": "variant",
|
|
@@ -58,6 +58,12 @@
|
|
|
58
58
|
"variant": "standard",
|
|
59
59
|
"example": "<Button variant=\"standard\" … />"
|
|
60
60
|
},
|
|
61
|
+
"group": {
|
|
62
|
+
"access": "named",
|
|
63
|
+
"import": "ButtonGroup",
|
|
64
|
+
"example": "<ButtonGroup variant=\"docked\" label={<>선택한 직군: <strong>SW개발</strong></>}><Button appearance=\"outlined\" size=\"large\">연봉 정보</Button><Button appearance=\"primary\" size=\"large\">추천 채용공고</Button></ButtonGroup>",
|
|
65
|
+
"note": "Named export — NOT a Button variant (there is no `<Button variant=\"group\">`). Lays out adjacent Buttons; `variant=\"docked\"` is the bottom-pinned action bar (surface + 16px inset + 8px gap + upward `sys.elevation.sheet` shadow + optional `label`). Renders in flow — PageShell owns the pinning."
|
|
66
|
+
},
|
|
61
67
|
"fab": {
|
|
62
68
|
"access": "variant",
|
|
63
69
|
"on": "Button",
|
|
@@ -243,7 +249,7 @@
|
|
|
243
249
|
"metadata": {
|
|
244
250
|
"import": "Metadata",
|
|
245
251
|
"from": "@teamblind-chorus/ui",
|
|
246
|
-
"note": "Both shapes are the single `Metadata` export — the one-line
|
|
252
|
+
"note": "Both shapes are the single `Metadata` export — the one-line channel-detail shape is `variant=\"compact\"`, NOT a separate `<MetadataCompact>`. Leading thumbnail is the `avatar` prop (NOT `thumbnail`) on both shapes; the secondary line is either a `subtitle` string or a `meta` string array — not children.",
|
|
247
253
|
"subs": {
|
|
248
254
|
"standard": {
|
|
249
255
|
"access": "named",
|
|
@@ -254,7 +260,7 @@
|
|
|
254
260
|
"access": "variant",
|
|
255
261
|
"on": "Metadata",
|
|
256
262
|
"variant": "compact",
|
|
257
|
-
"example": "<Metadata variant=\"compact\" meta={[\"Maple Mill Bakery\", \"ryestarter\"]} timestamp=\"35m\" />"
|
|
263
|
+
"example": "<Metadata variant=\"compact\" avatar={{ src, alt }} meta={[\"Maple Mill Bakery\", \"ryestarter\"]} timestamp=\"35m\" />"
|
|
258
264
|
}
|
|
259
265
|
}
|
|
260
266
|
},
|
|
@@ -304,6 +310,12 @@
|
|
|
304
310
|
"note": "Compose the bars INTO the shell — do NOT hand-roll a flex column, and do NOT add position:sticky/fixed to the bars (that double-applies their safe-area insets). The dev-only usePinnedBarGuard warns when a bar is rendered inside a scrolling region instead.",
|
|
305
311
|
"example": "<PageShell nav={<NavigationBar variant=\"home\" … />} tabBar={<TabBar … />}>… scrolling screen content …</PageShell>"
|
|
306
312
|
},
|
|
313
|
+
"pagination": {
|
|
314
|
+
"import": "Pagination",
|
|
315
|
+
"from": "@teamblind-chorus/ui",
|
|
316
|
+
"note": "Decorative only — the root is `aria-hidden` and dots are not buttons. An inline element with intrinsic width: the host owns horizontal placement (e.g. centering under its pager) as well as the active index (e.g. via IntersectionObserver on its snap targets), and MUST keep later pages keyboard-reachable on its own. Renders nothing when `count` < 2.",
|
|
317
|
+
"example": "<Pagination count={5} activeIndex={2} />"
|
|
318
|
+
},
|
|
307
319
|
"profile-header": {
|
|
308
320
|
"import": "ProfileHeader",
|
|
309
321
|
"from": "@teamblind-chorus/ui",
|
package/dist/index.cjs
CHANGED
|
@@ -237,9 +237,12 @@ function useFullBleedGuard(ref, name) {
|
|
|
237
237
|
}
|
|
238
238
|
function Banner({
|
|
239
239
|
appearance = "default",
|
|
240
|
+
outlined = false,
|
|
241
|
+
title,
|
|
240
242
|
icon,
|
|
241
243
|
thumbnail,
|
|
242
244
|
action,
|
|
245
|
+
trailingIcon,
|
|
243
246
|
children,
|
|
244
247
|
className,
|
|
245
248
|
...rest
|
|
@@ -250,13 +253,19 @@ function Banner({
|
|
|
250
253
|
"div",
|
|
251
254
|
{
|
|
252
255
|
ref,
|
|
253
|
-
className: joinClasses(
|
|
256
|
+
className: joinClasses(
|
|
257
|
+
"chorus-banner",
|
|
258
|
+
`chorus-banner--${appearance}`,
|
|
259
|
+
outlined && "chorus-banner--outlined",
|
|
260
|
+
className
|
|
261
|
+
),
|
|
254
262
|
role: "note",
|
|
255
263
|
...rest,
|
|
256
264
|
children: [
|
|
257
265
|
thumbnail ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "chorus-banner__thumbnail", "aria-hidden": "true", children: thumbnail }) : null,
|
|
258
266
|
!thumbnail && icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "chorus-banner__icon", "aria-hidden": "true", children: icon }) : null,
|
|
259
267
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chorus-banner__content", children: [
|
|
268
|
+
title ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "chorus-banner__title", children: title }) : null,
|
|
260
269
|
children ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "chorus-banner__body", children }) : null,
|
|
261
270
|
action ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
262
271
|
"a",
|
|
@@ -267,7 +276,8 @@ function Banner({
|
|
|
267
276
|
children: action.label
|
|
268
277
|
}
|
|
269
278
|
) : null
|
|
270
|
-
] })
|
|
279
|
+
] }),
|
|
280
|
+
trailingIcon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "chorus-banner__trailing-icon", "aria-hidden": "true", children: trailingIcon }) : null
|
|
271
281
|
]
|
|
272
282
|
}
|
|
273
283
|
);
|
|
@@ -1847,7 +1857,7 @@ var FORCEABLE_STATES3 = /* @__PURE__ */ new Set(["hovered", "pressed", "focused"
|
|
|
1847
1857
|
var SPECS = {
|
|
1848
1858
|
filter: filter_spec_default,
|
|
1849
1859
|
tag: tag_spec_default,
|
|
1850
|
-
|
|
1860
|
+
toggle: toggle_spec_default
|
|
1851
1861
|
};
|
|
1852
1862
|
function pickAppearance(spec, appearance) {
|
|
1853
1863
|
const appearances = spec.appearances || {};
|
|
@@ -1989,11 +1999,11 @@ function ButtonToggle({ active = false, ...rest }) {
|
|
|
1989
1999
|
}
|
|
1990
2000
|
var VARIANTS = {
|
|
1991
2001
|
fab: ButtonFab,
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
2002
|
+
icon: ButtonIcon,
|
|
2003
|
+
text: ButtonText,
|
|
2004
|
+
check: ButtonCheck,
|
|
2005
|
+
toolbar: ButtonToolbar,
|
|
2006
|
+
toggle: ButtonToggle
|
|
1997
2007
|
};
|
|
1998
2008
|
var Button = react.forwardRef(function Button2({ variant, ...rest }, ref) {
|
|
1999
2009
|
const Impl = variant && VARIANTS[variant] || ButtonStandard;
|
|
@@ -2155,6 +2165,35 @@ function Bubble({
|
|
|
2155
2165
|
}
|
|
2156
2166
|
);
|
|
2157
2167
|
}
|
|
2168
|
+
function ButtonGroup({
|
|
2169
|
+
variant = "inline",
|
|
2170
|
+
orientation = "horizontal",
|
|
2171
|
+
label,
|
|
2172
|
+
children,
|
|
2173
|
+
className,
|
|
2174
|
+
"aria-label": ariaLabel,
|
|
2175
|
+
...rest
|
|
2176
|
+
}) {
|
|
2177
|
+
const docked = variant === "docked";
|
|
2178
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2179
|
+
"div",
|
|
2180
|
+
{
|
|
2181
|
+
className: joinClasses(
|
|
2182
|
+
"chorus-button-group",
|
|
2183
|
+
docked && "chorus-button-group--docked",
|
|
2184
|
+
orientation === "vertical" && "chorus-button-group--vertical",
|
|
2185
|
+
className
|
|
2186
|
+
),
|
|
2187
|
+
role: "group",
|
|
2188
|
+
"aria-label": ariaLabel,
|
|
2189
|
+
...rest,
|
|
2190
|
+
children: [
|
|
2191
|
+
label != null ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "chorus-button-group__label", children: label }) : null,
|
|
2192
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "chorus-button-group__row", children })
|
|
2193
|
+
]
|
|
2194
|
+
}
|
|
2195
|
+
);
|
|
2196
|
+
}
|
|
2158
2197
|
|
|
2159
2198
|
// ../../schema/components/header/main.spec.json
|
|
2160
2199
|
var main_spec_default = {
|
|
@@ -2315,6 +2354,7 @@ function EntryRow({
|
|
|
2315
2354
|
"span",
|
|
2316
2355
|
{
|
|
2317
2356
|
className: "chorus-entry-row__trailing",
|
|
2357
|
+
"data-nested-action": "",
|
|
2318
2358
|
onClick: (e) => e.stopPropagation(),
|
|
2319
2359
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2320
2360
|
children: trailing
|
|
@@ -2436,6 +2476,7 @@ function List({
|
|
|
2436
2476
|
"span",
|
|
2437
2477
|
{
|
|
2438
2478
|
className: "chorus-list__trailing",
|
|
2479
|
+
"data-nested-action": "",
|
|
2439
2480
|
onClick: (e) => e.stopPropagation(),
|
|
2440
2481
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2441
2482
|
children: item.trailingIcon
|
|
@@ -3189,13 +3230,13 @@ function Metadata({
|
|
|
3189
3230
|
const hasMeta = Array.isArray(meta) && meta.length > 0;
|
|
3190
3231
|
const hasSubtitle = !hasMeta && subtitle != null && subtitle !== "";
|
|
3191
3232
|
if (variant === "compact") {
|
|
3192
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "chorus-metadata__timestamp", children: timestamp })
|
|
3197
|
-
] })
|
|
3198
|
-
] })
|
|
3233
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: joinClasses("chorus-metadata", "chorus-metadata--compact", className), ...rest, children: [
|
|
3234
|
+
avatar ? /* @__PURE__ */ jsxRuntime.jsx(Thumbnail, { size: 32, ...avatar }) : null,
|
|
3235
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chorus-metadata__meta", children: [
|
|
3236
|
+
hasMeta ? metaParts(meta) : null,
|
|
3237
|
+
timestamp ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "chorus-metadata__timestamp", children: timestamp }) : null
|
|
3238
|
+
] })
|
|
3239
|
+
] });
|
|
3199
3240
|
}
|
|
3200
3241
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: joinClasses("chorus-metadata", className), ...rest, children: [
|
|
3201
3242
|
/* @__PURE__ */ jsxRuntime.jsx(Thumbnail, { size: 32, ...avatar ?? { alt: typeof name === "string" ? name : "" } }),
|
|
@@ -3486,6 +3527,33 @@ function FeedAd({
|
|
|
3486
3527
|
) : null
|
|
3487
3528
|
] });
|
|
3488
3529
|
}
|
|
3530
|
+
function Pagination({
|
|
3531
|
+
count = 0,
|
|
3532
|
+
activeIndex = 0,
|
|
3533
|
+
className,
|
|
3534
|
+
...rest
|
|
3535
|
+
}) {
|
|
3536
|
+
if (count < 2) return null;
|
|
3537
|
+
const active = Math.max(0, Math.min(count - 1, activeIndex));
|
|
3538
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3539
|
+
"span",
|
|
3540
|
+
{
|
|
3541
|
+
className: joinClasses("chorus-pagination", className),
|
|
3542
|
+
"aria-hidden": "true",
|
|
3543
|
+
...rest,
|
|
3544
|
+
children: Array.from({ length: count }, (_, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3545
|
+
"span",
|
|
3546
|
+
{
|
|
3547
|
+
className: joinClasses(
|
|
3548
|
+
"chorus-pagination__dot",
|
|
3549
|
+
idx === active && "chorus-pagination__dot--active"
|
|
3550
|
+
)
|
|
3551
|
+
},
|
|
3552
|
+
idx
|
|
3553
|
+
))
|
|
3554
|
+
}
|
|
3555
|
+
);
|
|
3556
|
+
}
|
|
3489
3557
|
var MAX_CARDS = 5;
|
|
3490
3558
|
function PostCarousel({
|
|
3491
3559
|
items = [],
|
|
@@ -3546,16 +3614,7 @@ function PostCarousel({
|
|
|
3546
3614
|
))
|
|
3547
3615
|
}
|
|
3548
3616
|
),
|
|
3549
|
-
|
|
3550
|
-
"span",
|
|
3551
|
-
{
|
|
3552
|
-
className: joinClasses(
|
|
3553
|
-
"chorus-post-carousel__dot",
|
|
3554
|
-
idx === activeIndex && "chorus-post-carousel__dot--active"
|
|
3555
|
-
)
|
|
3556
|
-
},
|
|
3557
|
-
idx
|
|
3558
|
-
)) }) : null
|
|
3617
|
+
/* @__PURE__ */ jsxRuntime.jsx(Pagination, { count: cards.length, activeIndex })
|
|
3559
3618
|
]
|
|
3560
3619
|
}
|
|
3561
3620
|
);
|
|
@@ -3706,16 +3765,7 @@ function ProfileCarousel({
|
|
|
3706
3765
|
))
|
|
3707
3766
|
}
|
|
3708
3767
|
),
|
|
3709
|
-
|
|
3710
|
-
"span",
|
|
3711
|
-
{
|
|
3712
|
-
className: joinClasses(
|
|
3713
|
-
"chorus-profile-carousel__dot",
|
|
3714
|
-
idx === activeIndex && "chorus-profile-carousel__dot--active"
|
|
3715
|
-
)
|
|
3716
|
-
},
|
|
3717
|
-
idx
|
|
3718
|
-
)) }) : null
|
|
3768
|
+
/* @__PURE__ */ jsxRuntime.jsx(Pagination, { count: cards.length, activeIndex })
|
|
3719
3769
|
]
|
|
3720
3770
|
}
|
|
3721
3771
|
);
|
|
@@ -4319,7 +4369,8 @@ var input_spec_default = {
|
|
|
4319
4369
|
overlay: {
|
|
4320
4370
|
color: "text",
|
|
4321
4371
|
opacity: "sys.state.pressed"
|
|
4322
|
-
}
|
|
4372
|
+
},
|
|
4373
|
+
nestedActionScope: "The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button \u2014 that '\xD7' is an independent nested action, so the small control owns the state and the large field does not also read as pressed. The visual-state boundary matches the action boundary."
|
|
4323
4374
|
},
|
|
4324
4375
|
active: {
|
|
4325
4376
|
overlay: null,
|
|
@@ -4505,7 +4556,8 @@ var textarea_spec_default = {
|
|
|
4505
4556
|
hovered: { overlay: null, border: "borderHover" },
|
|
4506
4557
|
pressed: {
|
|
4507
4558
|
border: "borderHover",
|
|
4508
|
-
overlay: { color: "text", opacity: "sys.state.pressed" }
|
|
4559
|
+
overlay: { color: "text", opacity: "sys.state.pressed" },
|
|
4560
|
+
nestedActionScope: "The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button \u2014 that '\xD7' is an independent nested action, so the small control owns the state and the large field does not also read as pressed. The visual-state boundary matches the action boundary."
|
|
4509
4561
|
},
|
|
4510
4562
|
active: {
|
|
4511
4563
|
overlay: null,
|
|
@@ -4642,7 +4694,8 @@ var search_spec_default = {
|
|
|
4642
4694
|
overlay: {
|
|
4643
4695
|
color: "text",
|
|
4644
4696
|
opacity: "sys.state.pressed"
|
|
4645
|
-
}
|
|
4697
|
+
},
|
|
4698
|
+
nestedActionScope: "The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button \u2014 that '\xD7' is an independent nested action, so the small control owns the state and the large field does not also read as pressed. The visual-state boundary matches the action boundary."
|
|
4646
4699
|
},
|
|
4647
4700
|
active: {
|
|
4648
4701
|
overlay: null,
|
|
@@ -5013,6 +5066,7 @@ function FormFieldBox({
|
|
|
5013
5066
|
{
|
|
5014
5067
|
type: "button",
|
|
5015
5068
|
className: "chorus-field__clear",
|
|
5069
|
+
"data-nested-action": "",
|
|
5016
5070
|
"aria-label": "Clear",
|
|
5017
5071
|
onClick: handleClear,
|
|
5018
5072
|
children: /* @__PURE__ */ jsxRuntime.jsx(XCircleFillIcon, {})
|
|
@@ -5107,7 +5161,7 @@ var FormFieldSelect = Select;
|
|
|
5107
5161
|
var VARIANTS3 = {
|
|
5108
5162
|
input: FormFieldInput,
|
|
5109
5163
|
textarea: FormFieldTextarea,
|
|
5110
|
-
|
|
5164
|
+
search: FormFieldSearchBar,
|
|
5111
5165
|
select: FormFieldSelect
|
|
5112
5166
|
};
|
|
5113
5167
|
function FormField({ variant = "input", ...rest }) {
|
|
@@ -5855,6 +5909,7 @@ exports.BottomNav = TabBar;
|
|
|
5855
5909
|
exports.BottomSheet = BottomSheet;
|
|
5856
5910
|
exports.Bubble = Bubble;
|
|
5857
5911
|
exports.Button = Button;
|
|
5912
|
+
exports.ButtonGroup = ButtonGroup;
|
|
5858
5913
|
exports.Carousel = Carousel;
|
|
5859
5914
|
exports.ChannelList = SuggestionList;
|
|
5860
5915
|
exports.ChannelRail = AvatarRail;
|
|
@@ -5877,6 +5932,7 @@ exports.NavCardGroup = NavCardGroup;
|
|
|
5877
5932
|
exports.NavList = NavList;
|
|
5878
5933
|
exports.NavigationBar = NavigationBar;
|
|
5879
5934
|
exports.PageShell = PageShell;
|
|
5935
|
+
exports.Pagination = Pagination;
|
|
5880
5936
|
exports.PostCarousel = PostCarousel;
|
|
5881
5937
|
exports.ProfileCarousel = ProfileCarousel;
|
|
5882
5938
|
exports.ProfileHeader = ProfileHeader;
|