@teamblind-chorus/ui 1.1.0 → 2.0.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/README.md +3 -3
- package/agents/AGENTS.md +6 -6
- package/agents/DESIGN.md +245 -244
- package/agents/LOVABLE.md +40 -11
- package/agents/catalog.md +10 -8
- package/agents/components/avatar-rail/avatar-rail.md +2 -4
- package/agents/components/avatar-rail/avatar-rail.spec.json +27 -12
- package/agents/components/badge/role.md +7 -9
- package/agents/components/badge/role.spec.json +6 -6
- package/agents/components/badge/update.md +6 -8
- package/agents/components/badge/update.spec.json +5 -5
- package/agents/components/banner/banner.family.json +3 -1
- package/agents/components/banner/banner.md +66 -15
- package/agents/components/banner/banner.spec.json +37 -14
- package/agents/components/bottom-sheet/bottom-sheet.md +4 -6
- package/agents/components/bottom-sheet/bottom-sheet.spec.json +5 -5
- package/agents/components/bubble/bubble.md +8 -10
- package/agents/components/bubble/bubble.spec.json +11 -11
- package/agents/components/button/button.md +1 -1
- package/agents/components/button/check.md +9 -11
- package/agents/components/button/check.spec.json +25 -8
- package/agents/components/button/fab.md +7 -9
- package/agents/components/button/fab.spec.json +27 -10
- package/agents/components/button/group.spec.json +4 -4
- package/agents/components/button/icon.md +21 -23
- package/agents/components/button/icon.spec.json +29 -12
- package/agents/components/button/standard.md +40 -42
- package/agents/components/button/standard.spec.json +37 -20
- package/agents/components/button/text.md +21 -23
- package/agents/components/button/text.spec.json +30 -13
- package/agents/components/button/toggle.md +7 -9
- package/agents/components/button/toggle.spec.json +27 -10
- package/agents/components/button/toolbar.md +24 -26
- package/agents/components/button/toolbar.spec.json +10 -12
- package/agents/components/carousel/carousel.md +1 -1
- package/agents/components/carousel/post.md +15 -21
- package/agents/components/carousel/post.spec.json +17 -17
- package/agents/components/carousel/profile.md +9 -45
- package/agents/components/carousel/profile.spec.json +17 -17
- package/agents/components/chip/chip.md +1 -1
- package/agents/components/chip/filter.md +22 -24
- package/agents/components/chip/filter.spec.json +34 -11
- package/agents/components/chip/tag.md +22 -24
- package/agents/components/chip/tag.spec.json +36 -13
- package/agents/components/dialog/dialog.md +1 -3
- package/agents/components/dialog/dialog.spec.json +3 -3
- package/agents/components/directory-list/directory-list.md +1 -3
- package/agents/components/directory-list/directory-list.spec.json +2 -2
- package/agents/components/divider/divider.family.json +1 -1
- package/agents/components/divider/divider.md +12 -14
- package/agents/components/divider/divider.spec.json +8 -8
- package/agents/components/empty-state/empty-state.family.json +28 -0
- package/agents/components/empty-state/empty-state.md +69 -0
- package/agents/components/empty-state/empty-state.spec.json +87 -0
- package/agents/components/feed/ad.md +2 -4
- package/agents/components/feed/ad.spec.json +10 -10
- package/agents/components/feed/post.md +41 -43
- package/agents/components/feed/post.spec.json +35 -39
- package/agents/components/form-field/form-field.md +1 -1
- package/agents/components/form-field/input.md +32 -34
- package/agents/components/form-field/input.spec.json +39 -31
- package/agents/components/form-field/search.md +2 -4
- package/agents/components/form-field/search.spec.json +24 -16
- package/agents/components/form-field/select.md +18 -20
- package/agents/components/form-field/select.spec.json +36 -27
- package/agents/components/form-field/textarea.md +3 -5
- package/agents/components/form-field/textarea.spec.json +37 -29
- package/agents/components/header/main.md +4 -6
- package/agents/components/header/main.spec.json +3 -3
- package/agents/components/header/sub.md +6 -8
- package/agents/components/header/sub.spec.json +3 -3
- package/agents/components/list/accordion.md +34 -45
- package/agents/components/list/accordion.spec.json +26 -17
- package/agents/components/list/entry.md +59 -81
- package/agents/components/list/entry.spec.json +37 -21
- package/agents/components/list/list.md +2 -2
- package/agents/components/list/radio.md +13 -20
- package/agents/components/list/radio.spec.json +33 -18
- package/agents/components/list/standard.md +88 -64
- package/agents/components/list/standard.spec.json +52 -20
- package/agents/components/metadata/compact.md +4 -6
- package/agents/components/metadata/compact.spec.json +6 -6
- package/agents/components/metadata/metadata.md +1 -1
- package/agents/components/metadata/standard.md +12 -14
- package/agents/components/metadata/standard.spec.json +10 -10
- package/agents/components/nav-card/nav-card.md +25 -27
- package/agents/components/nav-card/nav-card.spec.json +25 -16
- package/agents/components/nav-list/nav-list.md +2 -8
- package/agents/components/nav-list/nav-list.spec.json +3 -3
- package/agents/components/navigation-bar/main.md +9 -11
- package/agents/components/navigation-bar/main.spec.json +6 -6
- package/agents/components/navigation-bar/search.md +6 -8
- package/agents/components/navigation-bar/search.spec.json +9 -9
- package/agents/components/navigation-bar/sub.md +9 -11
- package/agents/components/navigation-bar/sub.spec.json +7 -7
- package/agents/components/page-shell/page-shell.family.json +1 -1
- package/agents/components/page-shell/page-shell.md +33 -0
- package/agents/components/page-shell/page-shell.spec.json +85 -0
- package/agents/components/pagination/pagination.family.json +1 -1
- package/agents/components/pagination/pagination.md +3 -3
- package/agents/components/pagination/pagination.spec.json +5 -5
- package/agents/components/profile-header/profile-header.md +9 -11
- package/agents/components/profile-header/profile-header.spec.json +9 -9
- package/agents/components/progress/progress.family.json +1 -1
- package/agents/components/progress/progress.md +5 -5
- package/agents/components/progress/progress.spec.json +8 -8
- package/agents/components/side-sheet/side-sheet.md +11 -13
- package/agents/components/side-sheet/side-sheet.spec.json +3 -3
- package/agents/components/skeleton/skeleton.md +7 -9
- package/agents/components/skeleton/skeleton.spec.json +5 -5
- package/agents/components/spinner/spinner.family.json +27 -0
- package/agents/components/spinner/spinner.md +96 -0
- package/agents/components/spinner/spinner.spec.json +82 -0
- package/agents/components/status-tag/status-tag.md +7 -9
- package/agents/components/status-tag/status-tag.spec.json +5 -5
- package/agents/components/suggestion-list/suggestion-list.md +3 -7
- package/agents/components/suggestion-list/suggestion-list.spec.json +8 -12
- package/agents/components/switch/switch.md +12 -14
- package/agents/components/switch/switch.spec.json +23 -15
- package/agents/components/tab-bar/tab-bar.md +9 -11
- package/agents/components/tab-bar/tab-bar.spec.json +37 -23
- package/agents/components/tabs/rounded.md +6 -8
- package/agents/components/tabs/rounded.spec.json +34 -13
- package/agents/components/tabs/segmented.md +4 -6
- package/agents/components/tabs/segmented.spec.json +4 -8
- package/agents/components/tabs/underline.md +9 -11
- package/agents/components/tabs/underline.spec.json +31 -14
- package/agents/components/thumbnail/thumbnail.md +5 -7
- package/agents/components/thumbnail/thumbnail.spec.json +8 -8
- package/agents/components/toast/toast.md +5 -7
- package/agents/components/toast/toast.spec.json +3 -3
- package/agents/components/tooltip/tooltip.md +6 -8
- package/agents/components/tooltip/tooltip.spec.json +4 -4
- package/agents/manifest.json +8 -6
- package/agents/tokens.usage.json +71 -226
- package/agents/usage.json +12 -0
- package/dist/index.cjs +531 -262
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +57 -13
- package/dist/index.d.ts +57 -13
- package/dist/index.js +530 -263
- package/dist/index.js.map +1 -1
- package/dist/styles.css +560 -379
- package/eslint/rules.js +7 -7
- package/package.json +2 -3
- package/agents/anti-patterns.md +0 -533
- package/agents/compose.md +0 -240
- package/agents/images.md +0 -66
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../schema/components/badge/update.spec.json","../../../schema/components/badge/role.spec.json","../src/spec-utils.js","../src/Badge.jsx","../src/internal/useFullBleedGuard.js","../src/Banner.jsx","../../../schema/components/button/standard.spec.json","../src/internal/ButtonStandard.jsx","../../../schema/components/button/fab.spec.json","../src/internal/ButtonFab.jsx","../src/internal/ButtonIcon.jsx","../src/internal/ButtonText.jsx","../src/icons/index.js","../src/internal/ButtonCheck.jsx","../../../schema/components/chip/filter.spec.json","../../../schema/components/chip/tag.spec.json","../../../schema/components/button/toggle.spec.json","../src/Chip.jsx","../src/internal/ButtonToolbar.jsx","../src/internal/ButtonToggle.jsx","../src/Button.jsx","../src/internal/scrimPortal.js","../src/BottomSheet.jsx","../src/Bubble.jsx","../src/ButtonGroup.jsx","../../../schema/components/header/main.spec.json","../src/Header.jsx","../src/Thumbnail.jsx","../src/EntryRow.jsx","../src/List.jsx","../src/SuggestionList.jsx","../src/DirectoryList.jsx","../src/NavList.jsx","../src/internal/useScrollOverflow.js","../src/AvatarRail.jsx","../src/Dialog.jsx","../src/Divider.jsx","../src/internal/TabsContext.js","../../../schema/components/tabs/underline.spec.json","../src/internal/TabsUnderline.jsx","../../../schema/components/tabs/rounded.spec.json","../src/internal/TabsRounded.jsx","../../../schema/components/tabs/segmented.spec.json","../src/internal/TabsSegmented.jsx","../src/Tabs.jsx","../src/Tab.jsx","../src/Metadata.jsx","../src/Feed.jsx","../src/FeedAd.jsx","../src/Pagination.jsx","../src/PostCarousel.jsx","../src/ProfileCarousel.jsx","../src/internal/usePinnedBarGuard.js","../src/NavigationBar.jsx","../src/ProfileHeader.jsx","../../../schema/components/form-field/input.spec.json","../../../schema/components/form-field/textarea.spec.json","../../../schema/components/form-field/search.spec.json","../../../schema/components/form-field/select.spec.json","../src/FormField.jsx","../src/PageShell.jsx","../src/NavCard.jsx","../src/Progress.jsx","../src/Carousel.jsx","../src/SideSheet.jsx","../src/Skeleton.jsx","../src/StatusTag.jsx","../../../schema/components/header/sub.spec.json","../src/SubHeader.jsx","../src/Switch.jsx","../src/Accordion.jsx","../src/TabBar.jsx","../src/Toast.jsx","../src/Tooltip.jsx"],"names":["jsx","useEffect","useRef","jsxs","appearanceStyle","FORCEABLE_STATES","sizingStyle","forwardRef","ButtonText","Fragment","ButtonCheck","Button","useState","createPortal","px","useId","useCallback","useMemo","createContext","useContext","useLayoutEffect","VARIANTS","isDev","Children","isValidElement","MAX_CARDS","Card","WARNED","checkOnce","PLACEHOLDER_IMAGE","_a","SearchBar","cloneElement"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Badge\",\n \"family\": \"badge\",\n \"subcomponent\": \"update\",\n \"description\": \"Brand-tone indicator attached to a host label (channel entry, list row, thumbnail corner) flagging unread / new activity. Two top-level **types** share the same brand fill and `radius.full` corner: **Numeric** (a labelled count pill, the canonical badge — `size: medium | small`) and **Dot** (a labelless update dot — `size: dot-md | dot-sm` — used by [Thumbnail](../thumbnail/thumbnail.md) as the corner activity flag, and reachable by any other host that wants the same affordance). The Dot rungs ignore `count` and `children` and never render text.\",\n \"element\": \"span\",\n \"types\": {\n \"numeric\": {\n \"description\": \"Labelled count pill — the canonical Badge form. A 1-character label collapses to a perfect circle; 2+ characters or `99+` stretch into a content-growing pill.\",\n \"sizes\": [\n \"medium\",\n \"small\"\n ]\n },\n \"dot\": {\n \"description\": \"Labelless update dot — the corner activity flag. Paints a 1px `surface`-color halo as `box-shadow` so it reads cleanly above any host imagery without enlarging its bounding box.\",\n \"sizes\": [\n \"dot-md\",\n \"dot-sm\"\n ]\n }\n },\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"update\"\n },\n \"size\": {\n \"type\": \"literal\",\n \"values\": [\n \"medium\",\n \"small\",\n \"dot-md\",\n \"dot-sm\"\n ],\n \"default\": \"medium\",\n \"description\": \"Four rungs split across the two types. **Numeric** — `medium` / `small` carry the count label. **Dot** — `dot-md` (8×8) / `dot-sm` (6×6) drop the label entirely and paint the labelless update dot. The dot rungs ignore `count` and `children`.\"\n },\n \"count\": {\n \"type\": \"number\",\n \"optional\": true,\n \"description\": \"Numeric type only. If provided, the badge formats the value: 1–99 render as the literal number, 100+ renders as `99+`. Pass children instead for non-numeric content (e.g. `NEW`). Ignored on the Dot rungs.\"\n },\n \"children\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Numeric type only — custom label, overrides count formatting. Ignored on the Dot rungs.\"\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": false,\n \"description\": \"Short single-line label — typically a 1–2 digit count or the literal `99+` overflow. Required on the Numeric rungs (`medium` / `small`); absent on the Dot rungs (`dot-md` / `dot-sm`).\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"appearance\": {\n \"background\": \"sys.color.brand\",\n \"label\": \"sys.color.onBrand\",\n \"radius\": \"sys.radius.full\",\n \"dotOutline\": {\n \"color\": \"sys.color.surface\",\n \"width\": \"sys.borderWidth.thin\",\n \"rendering\": \"box-shadow\",\n \"note\": \"Update Dot rungs paint a 2px `surface`-color outline as a `box-shadow` so the dot stays a discrete chip on any host (image, icon, row) without enlarging its bounding box. The outline carves the dot out of whatever sits beside it; without it the brand fill blends into surrounding fills with similar luminance.\"\n }\n },\n \"sizes\": {\n \"medium\": {\n \"minHeight\": \"ref.space.250\",\n \"minWidth\": \"ref.space.250\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"ref.space.75\",\n \"labelTypo\": \"sys.typo.label.sm\"\n },\n \"small\": {\n \"minHeight\": \"ref.space.200\",\n \"minWidth\": \"ref.space.200\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"sys.layout.container.2xs\",\n \"labelTypo\": \"sys.typo.caption\"\n },\n \"dot-md\": {\n \"minHeight\": \"ref.space.100\",\n \"minWidth\": \"ref.space.100\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"0\",\n \"labelTypo\": null,\n \"note\": \"Labelless 8 × 8 dot (`ref.space.100`) — Thumbnail's update flag at the 32 / 40 / 48 rungs. Paints the brand fill with a 1px `surface`-color halo so it carves out of the host image.\"\n },\n \"dot-sm\": {\n \"minHeight\": \"ref.space.75\",\n \"minWidth\": \"ref.space.75\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"0\",\n \"labelTypo\": null,\n \"note\": \"Labelless 6 × 6 dot (`ref.space.75`) — Thumbnail's update flag at the 16 / 20 / 24 rungs.\"\n }\n },\n \"accessibility\": {\n \"announcement\": \"A badge conveys meaning (unread count / new activity) that colour and position alone do not expose. The Numeric badge MUST carry an accessible name that states what the number means — e.g. aria-label='5 unread', not the bare '5' — supplied via aria-label on the badge or visually-hidden text in the host label. A lone number is meaningless to a screen reader.\",\n \"dot\": \"The labelless Dot has no text at all. It MUST be given an accessible name on the host (e.g. aria-label='New activity'), OR — when the host's own label already announces the unread / new state — the dot carries aria-hidden='true' to avoid a meaningless duplicate announcement.\",\n \"overflow\": \"When the count overflows to '99+', the accessible name should read the intent (e.g. 'over 99 unread'), not the literal glyph.\"\n },\n \"forbidden\": [\n \"badge painted with sys.color.brand outside the HOT / NEW / unread-count canon — brand on a badge is the marker, not a tint\",\n \"badge rendered as a raw <span> with Tailwind — badge chrome owns the radius / padding / typography\",\n \"more than one badge on the same anchor — the host slot is single-badge by anatomy\",\n \"badge label below 12px (label.sm is the floor)\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Badge\",\n \"family\": \"badge\",\n \"subcomponent\": \"role\",\n \"description\": \"Role badge — a tonal primary-container pill naming a user's role or title, riding the bare nickname (no @ prefix) at the end of the user-metadata meta row. Labels display in English; canonical: 'Channel owner' (채널장), 'Verified' (현직자, the verified professional). Two appearances: `default` (pale `sys.color.primaryContainer` fill with `sys.color.onPrimaryContainer` label) and `inverse` (`sys.color.inverseSurface` / `sys.color.inverseOnSurface` — reserved for the PRO mark on paid professional users). Shared geometry, 10px (`caption`) text, 16-rung min-height, `radius.full` corner. Identity, not state: it says who the person *is* — for workflow state (pending / rejected / draft) reach for StatusTag instead. Presentational; never interactive. Reaches the meta row through Metadata's meta-item `badge` field so the pill renders outside the nickname's <a>.\",\n \"element\": \"span\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"role\"\n },\n \"appearance\": {\n \"type\": \"literal\",\n \"values\": [\n \"default\",\n \"inverse\"\n ],\n \"default\": \"default\",\n \"description\": \"`default` — tonal primaryContainer pair for ordinary role marks (Channel owner, Verified). `inverse` — high-contrast inverseSurface pair, reserved for the paid-expert PRO mark.\"\n },\n \"children\": {\n \"type\": \"node\",\n \"description\": \"Required role / title label — short, single line, English display (Channel owner, Verified, Moderator).\"\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"The role / title text — English display, 1–2 words; the pill grows with content from the 16px square minimum.\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"sys.color.primaryContainer\",\n \"label\": \"sys.color.onPrimaryContainer\",\n \"radius\": \"sys.radius.full\",\n \"default\": true,\n \"note\": \"Tonal informational pair — pale primary container fill with the deep primary-container label. Theme-aware sys tokens, so no separate dark binding. Never the brand pair: brand is reserved for the Update sub's activity marker, and a brand-filled role mark would read as an alert, not an identity.\"\n },\n \"inverse\": {\n \"background\": \"sys.color.inverseSurface\",\n \"label\": \"sys.color.inverseOnSurface\",\n \"radius\": \"sys.radius.full\",\n \"note\": \"Inverse pair — the strongest mark in the row: near-black pill with light label (theme-aware; flips in dark mode). Reserved for the PRO mark on paid professional users. Same geometry as default; only the fill pair changes.\"\n }\n },\n \"sizes\": {\n \"medium\": {\n \"minHeight\": \"ref.space.200\",\n \"minWidth\": \"ref.space.200\",\n \"paddingBlock\": \"ref.space.25\",\n \"paddingInline\": \"ref.space.75\",\n \"labelTypo\": \"sys.typo.caption\",\n \"labelLineHeight\": \"1.2\",\n \"note\": \"Single 16-rung (`ref.space.200`) — sized to ride inline beside `caption`/`label` metadata text without stretching the row. 2 × 6 padding (`ref.space.25` × `ref.space.75`); the reference steps bind raw where `sys.*` exposes no step, in lockstep with the Update sub's rungs. Label line-height is the structural `1.2` (same device as StatusTag): 10px × 1.2 + 2 × 2px padding = exactly 16px — `caption`'s 15px running-text line would push the pill to 19.\"\n }\n },\n \"accessibility\": {\n \"announcement\": \"The label is real text and announces as-is (e.g. 'Verified'). No extra aria-label needed when the visible text already names the role; do not aria-hide it — the role mark carries meaning the surrounding metadata does not repeat.\"\n },\n \"forbidden\": [\n \"role badge used for workflow state (pending / approved / rejected / draft) — that is StatusTag's contract\",\n \"role badge used for unread / new-activity signalling — that is the Update sub (brand fill)\",\n \"brand or error fill on a role badge — the role mark is informational, only the primaryContainer pair\",\n \"interactive usage (onClick, href, hover affordance) — presentational, state belongs to the host row\",\n \"more than one badge on a nickname — exactly one role badge may ride the nickname; when a user qualifies for several, pick the contextually dominant one\",\n \"role badge detached from a user identity host — canonical seat is the bare nickname at the end of the Metadata meta row (via the meta item's `badge` field, outside the link); it annotates a person, never floats alone\",\n \"role badge placed inside the nickname <a> (link content) — pass it through the meta item's `badge` field so it stays outside the link\",\n \"inverse appearance on a non-PRO mark — the high-contrast pair is the paid-expert signal, not a styling option\"\n ]\n}\n","const RAW_RE = /^(\\d+px|0|transparent|currentColor|none|auto|inherit|\\d+%)$/i;\n\nexport function tokenToCss(value) {\n if (value == null) return null;\n if (typeof value !== 'string') return value;\n if (RAW_RE.test(value)) return value;\n if (value.startsWith('var(')) return value;\n return `var(--${value.replace(/\\./g, '-')})`;\n}\n\nexport function typoStyles(token) {\n if (!token) return {};\n const base = `--${token.replace(/\\./g, '-')}`;\n return {\n fontSize: `var(${base}-size)`,\n fontWeight: `var(${base}-weight)`,\n lineHeight: `var(${base}-line)`,\n letterSpacing: `var(${base}-tracking)`,\n };\n}\n\nexport function joinClasses(...parts) {\n return parts.filter(Boolean).join(' ');\n}\n","import updateSpec from '../../../schema/components/badge/update.spec.json';\nimport roleSpec from '../../../schema/components/badge/role.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\nfunction formatCount(value) {\n if (typeof value !== 'number' || Number.isNaN(value)) return null;\n if (value < 0) return '0';\n if (value > 99) return '99+';\n return String(Math.floor(value));\n}\n\nfunction sizingStyle(spec, size) {\n const s = spec.sizes[size] ?? spec.sizes.medium;\n return {\n '--badge-min-height': tokenToCss(s.minHeight),\n '--badge-min-width': tokenToCss(s.minWidth),\n '--badge-padding-block': tokenToCss(s.paddingBlock),\n '--badge-padding-inline': tokenToCss(s.paddingInline),\n ...(s.labelTypo ? typoStyles(s.labelTypo) : null),\n };\n}\n\nfunction appearanceStyle(spec) {\n return {\n '--badge-bg': tokenToCss(spec.appearance.background),\n '--badge-label': tokenToCss(spec.appearance.label),\n '--badge-radius': tokenToCss(spec.appearance.radius),\n };\n}\n\nconst DOT_SIZES = new Set(['dot-md', 'dot-sm']);\n\n/* Badge — two subs behind one export, selected by `variant`.\n\n `update` (default): numeric count pill (medium / small) plus the\n labelless **Dot** rungs (`dot-md` / `dot-sm`). The dot rungs render\n no label and paint a halo as a box-shadow so the dot reads cleanly\n above any host imagery. Thumbnail's corner update flag is the\n canonical host — `dot-md` at the 32 / 40 / 48 rungs, `dot-sm` at\n the 16 / 20 / 24 rungs.\n\n `role`: identity pill naming the user's role / title (Channel\n owner, Verified) riding the meta-row nickname. Single 16-rung;\n ignores `size`, `count`, and the dot rungs. Two appearances:\n `default` (tonal primaryContainer pair) and `inverse`\n (inverseSurface pair — reserved for the paid-expert PRO mark).\n Exactly one role badge may ride a nickname. */\nexport function Badge({\n variant = 'update',\n appearance = 'default',\n size = 'medium',\n count,\n className,\n children,\n style,\n 'aria-hidden': ariaHidden,\n ...rest\n}) {\n if (variant === 'role') {\n if (children == null || children === '') return null;\n const roleAppearance =\n roleSpec.appearances[appearance] ?? roleSpec.appearances.default;\n return (\n <span\n className={joinClasses('chorus-badge', 'chorus-badge--role', className)}\n style={{\n ...sizingStyle(roleSpec, 'medium'),\n '--badge-bg': tokenToCss(roleAppearance.background),\n '--badge-label': tokenToCss(roleAppearance.label),\n '--badge-radius': tokenToCss(roleAppearance.radius),\n /* Structural 1.2 (StatusTag's device): 10px × 1.2 + 2 × 2px\n padding lands the pill at exactly its 16px rung — caption's\n 15px running-text line-height would push it to 19. */\n lineHeight: roleSpec.sizes.medium.labelLineHeight,\n ...style,\n }}\n aria-hidden={ariaHidden}\n {...rest}\n >\n {children}\n </span>\n );\n }\n\n const isDot = DOT_SIZES.has(size);\n const composedStyle = {\n ...sizingStyle(updateSpec, size),\n ...appearanceStyle(updateSpec),\n ...style,\n };\n\n if (isDot) {\n return (\n <span\n className={joinClasses('chorus-badge', 'chorus-badge--dot', `chorus-badge--${size}`, className)}\n style={composedStyle}\n aria-hidden={ariaHidden ?? true}\n {...rest}\n />\n );\n }\n\n const label = children ?? formatCount(count);\n if (label == null || label === '') return null;\n return (\n <span\n className={joinClasses('chorus-badge', `chorus-badge--${size}`, className)}\n style={composedStyle}\n aria-hidden={ariaHidden}\n {...rest}\n >\n {label}\n </span>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\n// Dev-only sanity check for `layoutInset=\"full-bleed\"` family components.\n// On mount, measure the parent element's computed padding-inline and the\n// component's own margin-inline. If the effective rail inset is positive\n// (parent padding not negated by negative margin opt-out), the page rail\n// is being double-paid — warn once per element with a fix recipe.\n//\n// Silent in production builds (dead-code-eliminated by the bundler when\n// process.env.NODE_ENV is statically resolvable). Falls back to a runtime\n// check otherwise so we never warn end users.\n//\n// Why ResizeObserver / RO instead of a one-shot measurement: parent layout\n// can shift after mount (font load, suspense boundary resolve, hydration\n// commit on RSC routes). One useEffect tick can fire before the parent's\n// padding is in its steady state and produce a false \"all clear\". The RO\n// re-checks across the first few layout settlings; we still warn at most\n// once per element via the WARNED WeakSet so a normal viewport resize\n// doesn't spam the console.\n\nconst WARNED = new WeakSet();\n\nfunction isDev() {\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV) {\n return process.env.NODE_ENV !== 'production';\n }\n return true;\n}\n\nfunction px(value) {\n const n = parseFloat(value);\n return Number.isFinite(n) ? n : 0;\n}\n\nfunction checkOnce(el, name) {\n if (!el || WARNED.has(el)) return;\n const parent = el.parentElement;\n if (!parent) return;\n\n const cs = getComputedStyle(parent);\n const padStart = px(cs.paddingInlineStart);\n const padEnd = px(cs.paddingInlineEnd);\n if (padStart === 0 && padEnd === 0) return;\n\n const selfCs = getComputedStyle(el);\n // Self-padding is the other half of the rail inset. When the\n // component has zeroed it (embedded mode — opt-in prop or DOM-\n // ancestry safety net inside Section / Feed), the parent's gutter\n // is paid once and there's no double-pay to warn about.\n if (px(selfCs.paddingInlineStart) === 0 && px(selfCs.paddingInlineEnd) === 0) return;\n\n const marginStart = px(selfCs.marginInlineStart);\n const marginEnd = px(selfCs.marginInlineEnd);\n\n const effectiveStart = padStart + marginStart;\n const effectiveEnd = padEnd + marginEnd;\n if (effectiveStart <= 0 && effectiveEnd <= 0) return;\n\n WARNED.add(el);\n // eslint-disable-next-line no-console\n console.warn(\n `[Chorus] <${name}> is layoutInset=\"full-bleed\" — direct child of the page shell, owns its internal row/header padding via layout.container.*. ` +\n `Parent padding-inline (${padStart}px / ${padEnd}px) leaves an effective rail inset of ${effectiveStart}px / ${effectiveEnd}px on this instance, ` +\n `so the page gutter is double-paid and section headings, list-row leading content, chip rails, and feed-item author blocks land at different rails. ` +\n `Fix: either remove the parent's padding-inline (the page shell pays the gutter once at <main>), or — if the parent is a bounded surface ` +\n `(Card / Dialog / BottomSheet / Sheet) — apply the negative-margin opt-out idiom: ` +\n `style={{ marginInline: 'calc(-1 * var(--sys-layout-container-md))', width: 'calc(100% + 2 * var(--sys-layout-container-md))', maxWidth: 'none' }}. ` +\n `See LOVABLE.md §A.4 and AGENTS.md § Composition rules.`,\n el,\n );\n}\n\nexport function useFullBleedGuard(ref, name) {\n useEffect(() => {\n if (typeof window === 'undefined') return;\n if (!isDev()) return;\n const el = ref.current;\n if (!el) return;\n\n // First-tick check after layout commit.\n checkOnce(el, name);\n\n // Re-check on parent / self size changes (font load, hydration shifts,\n // suspense fallback → real content swap). Cheap; only runs in dev.\n const ro = new ResizeObserver(() => checkOnce(el, name));\n ro.observe(el);\n if (el.parentElement) ro.observe(el.parentElement);\n return () => ro.disconnect();\n }, [ref, name]);\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* Banner — a self-contained block that explains a feature, capability,\n or piece of content sitting *within* the body flow but visually\n separated from it. Two appearances: `default` (low-key surface\n variant — the canonical aside) and `accent` (primary-tinted, eye-\n catching). Optional title renders as a heading line above the body;\n optional action slot renders as an inline link below the body;\n optional trailingIcon centers vertically at the trailing edge. */\nexport function Banner({\n appearance = 'default',\n outlined = false,\n title,\n icon,\n thumbnail,\n action,\n trailingIcon,\n children,\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'Banner');\n return (\n <div\n ref={ref}\n className={joinClasses(\n 'chorus-banner',\n `chorus-banner--${appearance}`,\n outlined && 'chorus-banner--outlined',\n className,\n )}\n role=\"note\"\n {...rest}\n >\n {thumbnail ? (\n <span className=\"chorus-banner__thumbnail\" aria-hidden=\"true\">{thumbnail}</span>\n ) : null}\n {!thumbnail && icon ? (\n <span className=\"chorus-banner__icon\" aria-hidden=\"true\">{icon}</span>\n ) : null}\n <div className=\"chorus-banner__content\">\n {title ? <p className=\"chorus-banner__title\">{title}</p> : null}\n {children ? <p className=\"chorus-banner__body\">{children}</p> : null}\n {action ? (\n <a\n className=\"chorus-banner__action\"\n href={action.href}\n onClick={action.onClick}\n >\n {action.label}\n </a>\n ) : null}\n </div>\n {trailingIcon ? (\n <span className=\"chorus-banner__trailing-icon\" aria-hidden=\"true\">{trailingIcon}</span>\n ) : null}\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Button\",\n \"family\": \"button\",\n \"subcomponent\": \"standard\",\n \"description\": \"Standard inline action button. Two independent axes: size (chosen by surface), appearance (chosen by emphasis). Fixed-footprint. The default button form — reach for FAB / Toolbar Button / Toggle Button when the standard inline shape does not fit.\",\n \"element\": \"button\",\n \"props\": {\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"primary\",\n \"secondary\",\n \"outlined\",\n \"tertiary\"\n ],\n \"default\": \"primary\"\n },\n \"size\": {\n \"type\": \"enum\",\n \"values\": [\n \"large\",\n \"medium\",\n \"small\"\n ],\n \"default\": \"large\"\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"fullWidth\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"truncate\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Accessible name. Single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Optional context glyph before the label. Inherits currentColor.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizes\": {\n \"large\": {\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"gap\": \"sys.layout.inline.md\",\n \"minHeight\": \"ref.space.600\",\n \"minWidth\": \"160px\",\n \"radius\": \"sys.radius.md\",\n \"labelTypo\": \"sys.typo.label.lg\",\n \"iconSize\": \"sys.icon.lg\"\n },\n \"medium\": {\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"gap\": \"sys.layout.inline.md\",\n \"minHeight\": \"ref.space.500\",\n \"minWidth\": \"160px\",\n \"radius\": \"sys.radius.md\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"small\": {\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"gap\": \"sys.layout.inline.sm\",\n \"minHeight\": \"ref.space.400\",\n \"minWidth\": \"160px\",\n \"radius\": \"sys.radius.sm\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"iconSize\": \"sys.icon.md\"\n }\n },\n \"appearances\": {\n \"primary\": {\n \"background\": \"sys.color.primary\",\n \"border\": null,\n \"label\": \"sys.color.onPrimary\"\n },\n \"secondary\": {\n \"background\": \"sys.color.secondaryContainer\",\n \"border\": null,\n \"label\": \"sys.color.onSecondaryContainer\"\n },\n \"outlined\": {\n \"background\": \"transparent\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.primary\"\n },\n \"label\": \"sys.color.primary\"\n },\n \"tertiary\": {\n \"background\": \"transparent\",\n \"border\": null,\n \"label\": \"sys.color.onSurfaceVariant\"\n }\n },\n \"flavors\": {\n \"destructive\": {\n \"description\": \"Swaps the primary family → error family across every appearance. Reserved for irreversible commits (Delete, Remove, Discard).\",\n \"appearances\": {\n \"primary\": {\n \"background\": \"sys.color.error\",\n \"border\": null,\n \"label\": \"sys.color.onError\"\n },\n \"secondary\": {\n \"background\": \"sys.color.errorContainer\",\n \"border\": null,\n \"label\": \"sys.color.onErrorContainer\"\n },\n \"outlined\": {\n \"background\": \"transparent\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.error\"\n },\n \"label\": \"sys.color.error\"\n },\n \"tertiary\": {\n \"background\": \"transparent\",\n \"border\": null,\n \"label\": \"sys.color.error\"\n }\n }\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the button is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"behavior\": {\n \"labelLine\": \"single\",\n \"truncation\": {\n \"whiteSpace\": \"nowrap\",\n \"overflow\": \"hidden\",\n \"textOverflow\": \"ellipsis\"\n },\n \"fullWidth\": {\n \"width\": \"100%\"\n }\n },\n \"forbidden\": [\n \"raw <button> wrapper styled with Tailwind / inline-style instead of the chorus-button--standard chrome\",\n \"appearance=tertiary / outlined used as the screen's primary commit — the highest-emphasis commit uses appearance=primary; the lower-emphasis appearances are for secondary / supporting actions\",\n \"destructive flavor used outside Dialog / BottomSheet primary-action context\",\n \"raw `border:` declaration — the edge stroke is an inset box-shadow\",\n \"manual focus ring via `outline:` — the ring is the `::after` overlay layer\"\n ]\n}\n","import spec from '../../../../schema/components/button/standard.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from '../spec-utils.js';\n\nfunction sizeStyle(size) {\n const s = spec.sizes[size] ?? spec.sizes[spec.props.size.default];\n return {\n '--button-standard-padding-block': tokenToCss(s.paddingBlock),\n '--button-standard-padding-inline': tokenToCss(s.paddingInline),\n '--button-standard-gap': tokenToCss(s.gap),\n '--button-standard-min-height': tokenToCss(s.minHeight),\n '--button-standard-min-width': tokenToCss(s.minWidth),\n '--button-standard-radius': tokenToCss(s.radius),\n '--button-standard-icon-size': tokenToCss(s.iconSize),\n ...typoStyles(s.labelTypo),\n };\n}\n\nfunction appearanceStyle(appearance) {\n const a = spec.appearances[appearance] ?? spec.appearances[spec.props.appearance.default];\n return {\n '--button-standard-bg': tokenToCss(a.background),\n '--button-standard-label': tokenToCss(a.label),\n '--button-standard-border-width': a.border ? tokenToCss(a.border.width) : '0px',\n '--button-standard-border-color': a.border ? tokenToCss(a.border.color) : 'transparent',\n };\n}\n\nfunction stateStyle() {\n return {\n '--button-standard-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--button-standard-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--button-standard-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--button-standard-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--button-standard-focus-outer-width': tokenToCss(spec.focusIndicator.ring.outerWidth),\n '--button-standard-focus-outer-color': tokenToCss(spec.focusIndicator.ring.outerColor),\n '--button-standard-focus-inset-width': tokenToCss(spec.focusIndicator.ring.insetWidth),\n '--button-standard-focus-inset-color': tokenToCss(spec.focusIndicator.ring.insetColor),\n };\n}\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nexport function ButtonStandard({\n appearance = spec.props.appearance.default,\n size = spec.props.size.default,\n state,\n leadingIcon,\n fullWidth = false,\n truncate = false,\n disabled = false,\n className,\n children,\n style,\n ...rest\n}) {\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const className_ = joinClasses(\n 'chorus-button--standard',\n `chorus-button--standard--appearance-${appearance}`,\n `chorus-button--standard--size-${size}`,\n fullWidth && 'chorus-button--standard--full-width',\n truncate && 'chorus-button--standard--truncate',\n className,\n );\n const composedStyle = {\n ...sizeStyle(size),\n ...appearanceStyle(appearance),\n ...stateStyle(),\n ...style,\n };\n return (\n <button\n type=\"button\"\n className={className_}\n disabled={isDisabled}\n data-force-state={forcedState ?? undefined}\n style={composedStyle}\n {...rest}\n >\n {leadingIcon ? (\n <span className=\"chorus-button--standard__icon\" aria-hidden=\"true\">{leadingIcon}</span>\n ) : null}\n <span className=\"chorus-button--standard__label\">{children}</span>\n </button>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Fab\",\n \"family\": \"button\",\n \"subcomponent\": \"fab\",\n \"description\": \"Floating action button. Single fixed sizing rung, pill geometry, floating elevation. No disabled state.\",\n \"element\": \"button\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"fab\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"primary\",\n \"secondary\"\n ],\n \"default\": \"primary\"\n },\n \"icon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"note\": \"Provide as children. At least one of icon/label required.\"\n }\n },\n \"slots\": {\n \"icon\": {\n \"required\": false,\n \"description\": \"24px (sys.icon.lg) glyph naming the action. Optional but at least one of icon/label required.\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Short verb phrase. When present, padded internally so glyph never crowds the pill ends.\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.600\",\n \"padding\": \"sys.layout.container.sm\",\n \"iconSize\": \"sys.icon.lg\",\n \"slotGap\": \"0\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"radius\": \"sys.radius.full\",\n \"elevation\": \"sys.elevation.floating\",\n \"labelTypo\": \"sys.typo.label.lg\"\n },\n \"appearances\": {\n \"primary\": {\n \"background\": \"sys.color.brand\",\n \"label\": \"sys.color.onBrand\"\n },\n \"secondary\": {\n \"background\": \"sys.color.surfaceContainerHigh\",\n \"label\": \"sys.color.onSurface\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the FAB is in. The ring stacks above the FAB's floating elevation so the lift survives focus. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"more than one fab per screen — the FAB is the single canonical commit\",\n \"fab styled with sys.color.primary fill — the FAB carries sys.color.brand by anatomy contract\",\n \"destructive flavor on a FAB — destructive commits live inside Dialog / BottomSheet, never a floating commit\",\n \"fab placed inline in flow — it floats over content, anchored bottom-right by the page shell\"\n ]\n}\n","import spec from '../../../../schema/components/button/fab.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from '../spec-utils.js';\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nfunction appearanceStyle(appearance) {\n const a = spec.appearances[appearance] ?? spec.appearances[spec.props.appearance.default];\n return {\n '--button-fab-bg': tokenToCss(a.background),\n '--button-fab-label': tokenToCss(a.label),\n };\n}\n\nconst sizingStyle = () => ({\n '--button-fab-min-height': tokenToCss(spec.sizing.minHeight),\n '--button-fab-padding': tokenToCss(spec.sizing.padding),\n '--button-fab-icon-size': tokenToCss(spec.sizing.iconSize),\n '--button-fab-slot-gap': tokenToCss(spec.sizing.slotGap),\n '--button-fab-label-inset': tokenToCss(spec.sizing.labelInset),\n '--button-fab-radius': tokenToCss(spec.sizing.radius),\n '--button-fab-elevation': tokenToCss(spec.sizing.elevation),\n '--button-fab-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--button-fab-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--button-fab-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--button-fab-focus-outer-width': tokenToCss(spec.focusIndicator.ring.outerWidth),\n '--button-fab-focus-outer-color': tokenToCss(spec.focusIndicator.ring.outerColor),\n '--button-fab-focus-inset-width': tokenToCss(spec.focusIndicator.ring.insetWidth),\n '--button-fab-focus-inset-color': tokenToCss(spec.focusIndicator.ring.insetColor),\n ...typoStyles(spec.sizing.labelTypo),\n});\n\nexport function ButtonFab({\n appearance = spec.props.appearance.default,\n state,\n icon,\n className,\n children,\n style,\n ...rest\n}) {\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const className_ = joinClasses(\n 'chorus-button--fab',\n `chorus-button--button-fab--appearance-${appearance}`,\n !children && 'chorus-button--button-fab--icon-only',\n className,\n );\n const composedStyle = {\n ...sizingStyle(),\n ...appearanceStyle(appearance),\n ...style,\n };\n return (\n <button\n type=\"button\"\n className={className_}\n data-force-state={forcedState ?? undefined}\n style={composedStyle}\n {...rest}\n >\n {icon ? <span className=\"chorus-button--fab__icon\" aria-hidden=\"true\">{icon}</span> : null}\n {children ? <span className=\"chorus-button--fab__label\">{children}</span> : null}\n </button>\n );\n}\n","import { joinClasses } from '../spec-utils.js';\n\n/* Icon Button — the icon-only commit surface. Sized by padding\n (`sys.layout.container.xs` on every edge) around the glyph, so\n two rungs fall out of the icon scale: `large` (24-glyph → 40\n × 40, the default, page chrome) and `medium` (16-glyph → 32\n × 32, for dense affordances perched inside another control's\n chrome). Carries no visible label; consumers MUST supply\n `aria-label`. Hover / pressed paint `sys.state.*` overlays,\n focus composes the standard three-layer ring (see DESIGN.md\n → Focus ring composition). */\nexport function ButtonIcon({\n icon,\n size = 'large',\n appearance = 'default',\n state,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n /* Optical alignment is the **default** rendering rule — the base\n `.chorus-button--icon` style negates the capsule's 8px padding via\n negative margins on every side, so the visible glyph (not the\n transparent chrome) defines the button's layout edges. The hover\n capsule still paints on all four sides — the chrome becomes a\n hover-only affordance, not a layout participant. See\n `schema/components/button/icon.md → Behavior`. */\n return (\n <button\n type=\"button\"\n className={joinClasses(\n 'chorus-button--icon',\n `chorus-button--icon--${size}`,\n `chorus-button--icon--appearance-${appearance}`,\n className,\n )}\n aria-label={ariaLabel}\n data-force-state={state}\n {...rest}\n >\n <span className=\"chorus-button--icon__icon\" aria-hidden=\"true\">{icon}</span>\n </button>\n );\n}\n","import { forwardRef } from 'react';\nimport { joinClasses } from '../spec-utils.js';\n\n/* Text Button — the link-shaped commit surface. Reads as a `primary`-\n coloured 16/Semibold label at rest with no fill / no border, but\n paints a button-like state overlay on hover / pressed (the bare\n Text-link contract uses a 1px underline) and composes the standard\n three-layer focus ring. Sized by min-height: 40 + 8px padding so\n the control aligns with Icon Button next to it (Navigation Bar\n Page trailing slot is the canonical surface).\n\n Renders as <a> when `href` is given (browser open-in-new-tab,\n right-click affordances) and as <button> otherwise — keeps the\n semantic surface honest while letting consumers swap routing\n strategies without changing the rendered chrome. */\nexport const ButtonText = forwardRef(function ButtonText({\n children,\n href,\n state,\n size = 'medium',\n appearance = 'default',\n disabled = false,\n leadingIcon,\n trailingIcon,\n className,\n ...rest\n}, ref) {\n const isDisabled = disabled || state === 'disabled';\n /* Optical alignment is the **default** rendering rule — the base\n `.chorus-button--text` style negates the button's block / inline\n padding via negative margins on every side, so the visible label\n bounding box (not the chrome) defines the button's layout edges.\n The hover capsule still paints on all four sides — the chrome\n becomes a hover-only affordance, not a layout participant. See\n `schema/components/button/text.md → Behavior`. */\n const cls = joinClasses(\n 'chorus-button--text',\n `chorus-button--text--size-${size}`,\n `chorus-button--text--appearance-${appearance}`,\n className,\n );\n const props = {\n className: cls,\n 'data-force-state': state,\n ...rest,\n };\n if (href == null) {\n props.disabled = isDisabled;\n } else if (isDisabled) {\n props['aria-disabled'] = 'true';\n }\n /* Icon slots wrap in `<span aria-hidden>` so the glyph stays decorative\n and the button's accessible name is the label text. The 24px footprint\n and the 8px label-gap are paid by `.chorus-button--text__icon` /\n `.chorus-button--text { gap }` respectively — see styles.css. */\n const content = (\n <>\n {leadingIcon ? <span className=\"chorus-button--text__icon\" aria-hidden=\"true\">{leadingIcon}</span> : null}\n <span className=\"chorus-button--text__label\">{children}</span>\n {trailingIcon ? <span className=\"chorus-button--text__icon\" aria-hidden=\"true\">{trailingIcon}</span> : null}\n </>\n );\n if (href != null) {\n return <a ref={ref} href={href} {...props}>{content}</a>;\n }\n return <button ref={ref} type=\"button\" {...props}>{content}</button>;\n});\n","/* AUTO-GENERATED by packages/ui/src/icons/build-icons.mjs\n from the icon sources in schema/icons/ (svg/*.svg + icons.json). Do not\n edit by hand — re-run the script to regenerate. */\n\nfunction makeIcon(name, render, keywords = []) {\n function Icon({ size = 20, ...props }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n {render}\n </svg>\n );\n }\n Icon.displayName = name;\n Icon.keywords = keywords;\n return Icon;\n}\n\nexport const ArrowDownIcon = makeIcon(\n 'ArrowDownIcon',\n <><path d=\"M12.7954 17.7955C12.3561 18.2348 11.6438 18.2348 11.2044 17.7955L3.49991 9.99996C3.06057 9.56062 3.06058 8.84831 3.49991 8.40897C3.93925 7.96963 4.65157 7.96963 5.09091 8.40897L11.9999 15.409L18.9089 8.49996C19.3482 8.06062 20.0606 8.06062 20.4999 8.49996C20.9392 8.9393 20.9392 9.65161 20.4999 10.091L12.7954 17.7955Z\" fill=\"currentColor\"/></>,\n [\"downward\",\"down\",\"arrow-down\"],\n);\n\nexport const ArrowDownCircleIcon = makeIcon(\n 'ArrowDownCircleIcon',\n <><path d=\"M12.7071 15.2071C12.3166 15.5976 11.6834 15.5976 11.2929 15.2071L7.29289 11.2071C6.90237 10.8166 6.90237 10.1834 7.29289 9.7929C7.68342 9.4024 8.31658 9.4024 8.70711 9.7929L12 13.0858L15.2929 9.7929C15.6834 9.4024 16.3166 9.4024 16.7071 9.7929C17.0976 10.1834 17.0976 10.8166 16.7071 11.2071L12.7071 15.2071ZM12 2C17.5228 2 21.9999 6.4771 21.9999 12C21.9999 17.5228 17.5228 21.9999 12 21.9999C6.47714 21.9999 2 17.5228 2 12C2 6.4771 6.47714 2 12 2ZM12 4C7.58169 4 3.99995 7.5817 3.99995 12C3.99995 16.4182 7.58169 19.9999 12 19.9999C16.4182 19.9999 20 16.4182 20 11.9999C20 7.5817 16.4182 4 12 4Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"down\",\"circle\",\"icon\"],\n);\n\nexport const ArrowDownCircleFillIcon = makeIcon(\n 'ArrowDownCircleFillIcon',\n <><path d=\"M16.7071 11.207L12.7071 15.207C12.3166 15.5975 11.6834 15.5975 11.2929 15.207L7.29289 11.207C6.90237 10.8165 6.90237 10.1833 7.29289 9.79283C7.68342 9.40231 8.31658 9.40231 8.70711 9.79283L12 13.0857L15.2929 9.79283C15.6834 9.40231 16.3166 9.40231 16.7071 9.79283C17.0976 10.1833 17.0976 10.8165 16.7071 11.207ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"down\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const ArrowUpIcon = makeIcon(\n 'ArrowUpIcon',\n <><path d=\"M11.2044 6.2045C11.6438 5.76517 12.3561 5.76517 12.7954 6.2045L20.5 14C20.9393 14.4393 20.9393 15.1517 20.5 15.591C20.0607 16.0303 19.3483 16.0303 18.909 15.591L11.9999 8.59099L5.09091 15.591C4.65157 16.0303 3.93925 16.0303 3.49991 15.591C3.06058 15.1517 3.06058 14.4393 3.49991 14L11.2044 6.2045Z\" fill=\"currentColor\"/></>,\n [\"upward\",\"up\",\"arrow-up\"],\n);\n\nexport const ArrowUpCircleIcon = makeIcon(\n 'ArrowUpCircleIcon',\n <><path d=\"M12.7071 8.79283C12.3166 8.40231 11.6834 8.40231 11.2929 8.79283L7.29289 12.7928C6.90237 13.1833 6.90237 13.8165 7.29289 14.207C7.68342 14.5975 8.31658 14.5975 8.70711 14.207L12 10.9141L15.2929 14.207C15.6834 14.5975 16.3166 14.5975 16.7071 14.207C17.0976 13.8165 17.0976 13.1833 16.7071 12.7928L12.7071 8.79283ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999ZM12 19.9999C7.58169 19.9999 3.99995 16.4182 3.99995 11.9999C3.99995 7.58171 7.58169 4 12 4C16.4182 4 20 7.58173 20 12C20 16.4182 16.4182 19.9999 12 19.9999Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"up\",\"circle\",\"icon\"],\n);\n\nexport const ArrowUpCircleFillIcon = makeIcon(\n 'ArrowUpCircleFillIcon',\n <><path d=\"M21.9999 11.9999C21.9999 17.5228 17.5228 21.9999 12 21.9999C6.47714 21.9999 2 17.5228 2 11.9999C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 11.9999ZM16.7071 12.7928L12.7071 8.79283C12.3166 8.40231 11.6834 8.40231 11.2929 8.79283L7.29289 12.7928C6.90237 13.1833 6.90237 13.8165 7.29289 14.207C7.68342 14.5975 8.31658 14.5975 8.70711 14.207L12 10.9141L15.2929 14.207C15.6834 14.5975 16.3166 14.5975 16.7071 14.207C17.0976 13.8165 17.0976 13.1833 16.7071 12.7928Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"up\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const BarIcon = makeIcon(\n 'BarIcon',\n <><path d=\"M7.00015 7C6.72401 7 6.50015 7.22386 6.50015 7.5V8.5C6.50015 8.77614 6.72401 9 7.00015 9H11.5001C11.7763 9 12.0001 8.77614 12.0001 8.5V7.5C12.0001 7.22386 11.7763 7 11.5001 7H7.00015ZM7.00015 11C6.72401 11 6.50015 11.2239 6.50015 11.5V12.5C6.50015 12.7761 6.72401 13 7.00015 13H17.0002C17.2763 13 17.5002 12.7761 17.5002 12.5L17.5002 11.5C17.5002 11.2239 17.2763 11 17.0002 11H7.00015ZM7.00015 15C6.72401 15 6.50015 15.2239 6.50015 15.5V16.5C6.50015 16.7761 6.72401 17 7.00015 17H14.0001C14.2763 17 14.5001 16.7761 14.5001 16.5V15.5C14.5001 15.2239 14.2763 15 14.0001 15H7.00015ZM2.50015 5.49988C2.50015 3.84301 3.84331 2.49986 5.50018 2.49988L18.5002 2.49999C20.157 2.5 21.5002 3.84315 21.5002 5.49999V18.5002C21.5002 20.1571 20.157 21.5002 18.5001 21.5002L5.50009 21.4999C3.84326 21.4999 2.50015 20.1567 2.50015 18.4999V5.49988ZM5.50015 4.50024C4.94787 4.50024 4.50015 4.94796 4.50015 5.50024V18.5001C4.50015 19.0524 4.94786 19.5001 5.50014 19.5001L18.5001 19.5002C19.0524 19.5002 19.5001 19.0525 19.5001 18.5002V5.50033C19.5001 4.94804 19.0524 4.50033 18.5002 4.50033L5.50015 4.50024Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"icon\"],\n);\n\nexport const BarCircleIcon = makeIcon(\n 'BarCircleIcon',\n <><path d=\"M13.3328 1.31004C13.5446 1.12034 13.8271 1.02977 14.1098 1.06098C18.746 1.57291 22.4272 5.25404 22.9392 9.89031C22.9704 10.173 22.8798 10.4555 22.6901 10.6673C22.5004 10.8791 22.2295 11.0001 21.9452 11.0001H14C13.4477 11.0001 13 10.5524 13 10.0001V2.05494C13 1.77061 13.121 1.49973 13.3328 1.31004ZM15 3.25177V9.00008H20.7483C20.0251 6.18968 17.8104 3.97499 15 3.25177ZM10.662 4.31235C10.8769 4.50218 11 4.77513 11 5.06189V13L18.9382 13.0001C19.225 13.0001 19.4979 13.1232 19.6877 13.3381C19.8776 13.5531 19.966 13.8392 19.9305 14.1237C19.3774 18.5642 15.59 22.0001 11 22.0001C6.02944 22.0001 2 17.9707 2 13.0001C2 8.41014 5.436 4.62261 9.8764 4.06955C10.161 4.03411 10.447 4.12253 10.662 4.31235ZM9 6.28951C6.10919 7.14954 4 9.82953 4 13.0001C4 16.8661 7.134 20.0001 11 20.0001C14.1706 20.0001 16.8505 17.891 17.7106 15.0001L9.99999 15C9.44771 15 9 14.5523 9 14V6.28951Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"circle\",\"icon\"],\n);\n\nexport const BarCircleFillIcon = makeIcon(\n 'BarCircleFillIcon',\n <><path d=\"M19 13C19.5523 13 20.0058 13.4495 19.9452 13.9984C19.4485 18.4991 15.6331 22 11 22C6.02944 22 2 17.9706 2 13C2 8.36692 5.50088 4.55149 10.0016 4.05477C10.5506 3.99419 11 4.44773 11 5.00002V10C11 11.6569 12.3431 13 14 13H19ZM13 2.00002C13 1.44773 13.449 0.994767 13.9986 1.04925C18.7241 1.51777 22.4823 5.27588 22.9508 10.0014C23.0053 10.551 22.5523 11 22 11H14C13.4477 11 13 10.5523 13 10V2.00002Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const BarFillIcon = makeIcon(\n 'BarFillIcon',\n <><path d=\"M7.00003 7.00009C6.72389 7.00009 6.50003 7.22395 6.50003 7.50009V8.50009C6.50003 8.77624 6.72389 9.00009 7.00003 9.00009H11.5C11.7762 9.00009 12 8.77624 12 8.50009V7.50009C12 7.22395 11.7762 7.00009 11.5 7.00009H7.00003ZM7.00003 11.0001C6.72389 11.0001 6.50003 11.224 6.50003 11.5001V12.5001C6.50003 12.7762 6.72389 13.0001 7.00003 13.0001H17C17.2762 13.0001 17.5 12.7762 17.5 12.5001V11.5001C17.5 11.224 17.2762 11.0001 17 11.0001H7.00003ZM7.00002 15.0001C6.72388 15.0001 6.50003 15.2239 6.50003 15.5001V16.5001C6.50003 16.7762 6.72389 17.0001 7.00003 17.0001L14.0001 17C14.2762 17 14.5001 16.7762 14.5001 16.5L14.5 15.5C14.5 15.2239 14.2762 15 14 15L7.00002 15.0001ZM2.50004 5.50018C2.50004 3.84333 3.84317 2.50019 5.50002 2.50017L18.5 2.50006C20.1568 2.50005 21.5 3.84319 21.5 5.50005L21.5 18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.50004C3.84318 21.5 2.50004 20.1569 2.50004 18.5V5.50018Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"fill\",\"icon\"],\n);\n\nexport const BellIcon = makeIcon(\n 'BellIcon',\n <><path d=\"M4.00008 10C4.00008 5.58172 7.5818 2 12.0001 2C16.4184 2 20.0001 5.58172 20.0001 10V11.8944C20.0001 12.0919 20.0585 12.2849 20.168 12.4492L21.7957 14.8906C22.6817 16.2197 21.729 18 20.1316 18H16.9001C16.4368 20.2822 14.419 22 12.0001 22C9.58112 22 7.56337 20.2822 7.1001 18H3.8686C2.27121 18 1.31842 16.2197 2.2045 14.8906L3.83213 12.4491C3.94164 12.2849 4.00008 12.0919 4.00008 11.8944V10ZM9.17079 18C9.58262 19.1652 10.6939 20 12.0001 20C13.3063 20 14.4175 19.1652 14.8294 18H9.17079ZM12.0001 4C8.68637 4 6.00008 6.68629 6.00008 10V11.8944C6.00008 12.4867 5.82477 13.0657 5.49623 13.5585L3.8686 16H20.1316L18.5039 13.5585C18.1754 13.0657 18.0001 12.4867 18.0001 11.8944V10C18.0001 6.68629 15.3138 4 12.0001 4Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"alert\",\"alarm\"],\n);\n\nexport const BellFillIcon = makeIcon(\n 'BellFillIcon',\n <><path d=\"M19.9999 11.8496V10C19.9999 5.58172 16.4181 2 11.9999 2C7.58158 2 3.99985 5.58172 3.99985 10V11.8496C3.99985 12.2723 3.86594 12.6841 3.61733 13.026L2.30992 14.8237C1.34851 16.1456 2.29282 18 3.92739 18H7.09987C7.56314 20.2822 9.5809 22 11.9999 22C14.4188 22 16.4366 20.2822 16.8998 18H20.0723C21.7069 18 22.6512 16.1456 21.6898 14.8237L20.3824 13.026C20.1338 12.6841 19.9999 12.2723 19.9999 11.8496ZM11.9999 20C10.6936 20 9.5824 19.1652 9.17056 18H14.8291C14.4173 19.1652 13.3061 20 11.9999 20Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"alert\",\"alarm\",\"filled\"],\n);\n\nexport const BellOffIcon = makeIcon(\n 'BellOffIcon',\n <><path d=\"M5.94536 1.66793C6.40489 1.36158 7.02576 1.48576 7.33211 1.94528L19.6654 20.4453C19.9718 20.9048 19.8476 21.5257 19.3881 21.832C18.9286 22.1384 18.3077 22.0142 18.0013 21.5547L16.4658 19.2513C15.6421 20.8819 13.9517 22 12.0001 22C9.58112 22 7.56337 20.2822 7.1001 18H3.8686C2.27121 18 1.31842 16.2197 2.2045 14.8906L3.83213 12.4491C3.94164 12.2849 4.00008 12.0919 4.00008 11.8944V9.99998C4.00008 7.73487 4.94146 5.68963 6.45433 4.23416L5.66801 3.05468C5.36166 2.59516 5.48583 1.97429 5.94536 1.66793ZM9.1709 18C9.58274 19.1652 10.694 20 12.0002 20C13.3064 20 14.4177 19.1652 14.8295 18H9.1709ZM18.7019 16H20.1316L18.5039 13.5585C18.1754 13.0657 18.0001 12.4867 18.0001 11.8944V9.99998C18.0001 6.68628 15.3138 3.99998 12.0001 3.99998C11.5835 3.99998 11.1768 4.04244 10.7841 4.12327L9.61058 2.36294C10.3652 2.12709 11.1678 1.99998 12.0001 1.99998C16.4184 1.99998 20.0001 5.58171 20.0001 9.99998V11.8944C20.0001 12.0919 20.0585 12.2849 20.168 12.4491L21.7957 14.8906C22.6817 16.2197 21.729 18 20.1316 18H20.0353L18.7019 16ZM14.2983 15.9999L7.58772 5.93408C6.60214 7.00314 6.00014 8.43122 6.00014 9.99991V11.8943C6.00014 12.4866 5.82482 13.0656 5.49629 13.5584L3.86865 15.9999H14.2983Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"mute\",\"off\",\"silent\"],\n);\n\nexport const BellOffFillIcon = makeIcon(\n 'BellOffFillIcon',\n <><path d=\"M5.94536 1.66793C6.40489 1.36158 7.02576 1.48576 7.33211 1.94528L19.6654 20.4453C19.9718 20.9048 19.8476 21.5257 19.3881 21.832C18.9286 22.1384 18.3077 22.0142 18.0013 21.5547L16.4658 19.2513C15.6421 20.8819 13.9517 22 12.0001 22C9.58112 22 7.56337 20.2822 7.1001 18H3.8686C2.27121 18 1.31842 16.2197 2.2045 14.8906L3.83213 12.4491C3.94164 12.2849 4.00008 12.0919 4.00008 11.8944V9.99998C4.00008 7.73487 4.94146 5.68963 6.45433 4.23416L5.66801 3.05468C5.36166 2.59516 5.48583 1.97429 5.94536 1.66793ZM21.7957 14.8906C22.6817 16.2197 21.729 18 20.1316 18L9.61058 2.36294C10.3652 2.12709 11.1678 1.99998 12.0001 1.99998C16.4184 1.99998 20.0001 5.58171 20.0001 9.99998V11.8944C20.0001 12.0919 20.0585 12.2849 20.168 12.4491L21.7957 14.8906ZM9.1709 18C9.58273 19.1652 10.694 20 12.0002 20C13.3064 20 14.4176 19.1652 14.8295 18H9.1709Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"mute\",\"off\",\"silent\",\"filled\"],\n);\n\nexport const BookmarkIcon = makeIcon(\n 'BookmarkIcon',\n <><path d=\"M4 4C4 2.89543 4.89543 2 6 2H18C19.1046 2 20 2.89543 20 4V20C20 21.6267 18.1613 22.573 16.8375 21.6275L12 18.1721L7.16248 21.6275C5.83874 22.573 4 21.6267 4 20V4ZM18 4H6V20L10.8375 16.5446C11.5329 16.0479 12.4671 16.0479 13.1625 16.5446L18 20V4Z\" fill=\"currentColor\"/></>,\n [\"bookmark\",\"save\",\"pin\"],\n);\n\nexport const BookmarkFillIcon = makeIcon(\n 'BookmarkFillIcon',\n <><path d=\"M4.5 4.5C4.5 3.39543 5.39543 2.5 6.5 2.5H17.5C18.6046 2.5 19.5 3.39543 19.5 4.5V20.5C19.5 21.2549 18.6955 21.7376 18.0294 21.3824L12.4706 18.4176C12.1765 18.2608 11.8235 18.2608 11.5294 18.4176L5.97059 21.3824C5.30448 21.7376 4.5 21.2549 4.5 20.5V4.5Z\" fill=\"currentColor\"/></>,\n [\"bookmark\",\"save\",\"pin\",\"filled\"],\n);\n\nexport const BriefcaseIcon = makeIcon(\n 'BriefcaseIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10 4H14C14.5523 4 15 4.44772 15 5V6H9V5C9 4.44772 9.44772 4 10 4ZM7 6V5C7 3.34315 8.34315 2 10 2H14C15.6569 2 17 3.34315 17 5V6H19C20.6569 6 22 7.34315 22 9V13C22 14.1104 21.3967 15.0799 20.5 15.5987V18.5C20.5 20.1569 19.1569 21.5 17.5 21.5H6.5C4.84315 21.5 3.5 20.1569 3.5 18.5V15.5987C2.6033 15.0799 2 14.1104 2 13V9C2 7.34315 3.34315 6 5 6H7ZM5 8C4.44772 8 4 8.44772 4 9V13C4 13.5523 4.44772 14 5 14H12H19C19.5523 14 20 13.5523 20 13V9C20 8.44771 19.5523 8 19 8H5ZM13 16H18.5V18.5C18.5 19.0523 18.0523 19.5 17.5 19.5H6.5C5.94772 19.5 5.5 19.0523 5.5 18.5V16H11V17C11 17.5523 11.4477 18 12 18C12.5523 18 13 17.5523 13 17V16Z\" fill=\"currentColor\"/></>,\n [\"briefcase\",\"work\",\"job\",\"business\"],\n);\n\nexport const BriefcaseFillIcon = makeIcon(\n 'BriefcaseFillIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10 4H14C14.5523 4 15 4.44772 15 5V6H9V5C9 4.44772 9.44772 4 10 4ZM7 6V5C7 3.34315 8.34315 2 10 2H14C15.6569 2 17 3.34315 17 5V6H19C20.6569 6 22 7.34315 22 9V12.25C22 13.3546 21.1046 14.25 20 14.25H4C2.89543 14.25 2 13.3546 2 12.25V9C2 7.34315 3.34315 6 5 6H7ZM11 16H4.5C3.94772 16 3.5 16.4477 3.5 17V18.5C3.5 20.1569 4.84315 21.5 6.5 21.5H17.5C19.1569 21.5 20.5 20.1569 20.5 18.5V17C20.5 16.4477 20.0523 16 19.5 16H13V18C13 18.5523 12.5523 19 12 19C11.4477 19 11 18.5523 11 18V16Z\" fill=\"currentColor\"/></>,\n [\"briefcase\",\"work\",\"job\",\"business\",\"filled\"],\n);\n\nexport const BuildingIcon = makeIcon(\n 'BuildingIcon',\n <><path d=\"M3 21.5C2.44772 21.5 2 21.0523 2 20.5V5C2 3.34315 3.34315 2 5 2H12C13.6569 2 15 3.34315 15 5V10H19C20.6569 10 22 11.3431 22 13V20.5C22 21.0523 21.5523 21.5 21 21.5H3ZM6 11.5C6 12.0523 6.44772 12.5 7 12.5H10C10.5523 12.5 11 12.0523 11 11.5C11 10.9477 10.5523 10.5 10 10.5H7C6.44772 10.5 6 10.9477 6 11.5ZM6 8C6 8.55228 6.44772 9 7 9H10C10.5523 9 11 8.55228 11 8C11 7.44772 10.5523 7 10 7H7C6.44772 7 6 7.44772 6 8ZM4 19.5H7.5V17C7.5 16.4477 7.94772 16 8.5 16C9.05228 16 9.5 16.4477 9.5 17V19.5H13V5C13 4.44772 12.5523 4 12 4H5C4.44772 4 4 4.44772 4 5V19.5ZM15 19.5H20V13C20 12.4477 19.5523 12 19 12H15V19.5Z\" fill=\"currentColor\"/></>,\n [\"company\",\"building\",\"office\"],\n);\n\nexport const BuildingFillIcon = makeIcon(\n 'BuildingFillIcon',\n <><path d=\"M2 20.5C2 21.0523 2.44771 21.5 3 21.5H6.5C7.05228 21.5 7.5 21.0523 7.5 20.5V18C7.5 17.4477 7.94771 17 8.5 17C9.05228 17 9.5 17.4477 9.5 18V20.5C9.5 21.0523 9.94771 21.5 10.5 21.5H15V19.5V12V10V4C15 2.89543 14.1046 2 13 2L4.00002 2.00001C2.89546 2.00001 2.00003 2.89544 2.00003 4.00001L2 20.5ZM17 10V21.5H21C21.5523 21.5 22 21.0523 22 20.5V12C22 10.8954 21.1046 10 20 10H17ZM6.75 12.5C6.19771 12.5 5.75 12.0523 5.75 11.5C5.75 10.9477 6.19771 10.5 6.75 10.5H10.25C10.8023 10.5 11.25 10.9477 11.25 11.5C11.25 12.0523 10.8023 12.5 10.25 12.5H6.75ZM6.75 8.5C6.19771 8.5 5.75 8.05228 5.75 7.5C5.75 6.94771 6.19771 6.5 6.75 6.5H10.25C10.8023 6.5 11.25 6.94771 11.25 7.5C11.25 8.05228 10.8023 8.5 10.25 8.5H6.75Z\" fill=\"currentColor\"/></>,\n [\"company\",\"building\",\"office\",\"filled\"],\n);\n\nexport const CameraIcon = makeIcon(\n 'CameraIcon',\n <><path d=\"M10.2361 4.5C9.8573 4.5 9.51103 4.714 9.34164 5.05279L8.39443 6.94721C8.22504 7.286 7.87877 7.5 7.5 7.5H5C4.44772 7.5 4 7.94772 4 8.5V18C4 18.5523 4.44772 19 5 19H19C19.5523 19 20 18.5523 20 18V8.5C20 7.94772 19.5523 7.5 19 7.5H16.5C16.1212 7.5 15.775 7.286 15.6056 6.94721L14.6584 5.05279C14.489 4.714 14.1427 4.5 13.7639 4.5H10.2361ZM7.55279 4.15836C8.06096 3.14201 9.09975 2.5 10.2361 2.5H13.7639C14.9002 2.5 15.939 3.14201 16.4472 4.15836L17.118 5.5H19C20.6569 5.5 22 6.84315 22 8.5V18C22 19.6569 20.6569 21 19 21H5C3.34315 21 2 19.6569 2 18V8.5C2 6.84315 3.34315 5.5 5 5.5H6.88197L7.55279 4.15836ZM12 10.5C10.6193 10.5 9.5 11.6193 9.5 13C9.5 14.3807 10.6193 15.5 12 15.5C13.3807 15.5 14.5 14.3807 14.5 13C14.5 11.6193 13.3807 10.5 12 10.5ZM7.5 13C7.5 10.5147 9.51472 8.5 12 8.5C14.4853 8.5 16.5 10.5147 16.5 13C16.5 15.4853 14.4853 17.5 12 17.5C9.51472 17.5 7.5 15.4853 7.5 13Z\" fill=\"currentColor\"/></>,\n [\"photo\",\"camera\",\"image\"],\n);\n\nexport const CameraFillIcon = makeIcon(\n 'CameraFillIcon',\n <><path d=\"M7.55279 4.15836C8.06096 3.14201 9.09975 2.5 10.2361 2.5H13.7639C14.9002 2.5 15.939 3.14201 16.4472 4.15836L17.118 5.5H19C20.6569 5.5 22 6.84315 22 8.5V18C22 19.6569 20.6569 21 19 21H5C3.34315 21 2 19.6569 2 18V8.5C2 6.84315 3.34315 5.5 5 5.5H6.88197L7.55279 4.15836ZM9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16C10.3431 16 9 14.6569 9 13ZM12 8C9.23858 8 7 10.2386 7 13C7 15.7614 9.23858 18 12 18C14.7614 18 17 15.7614 17 13C17 10.2386 14.7614 8 12 8Z\" fill=\"currentColor\"/></>,\n [\"photo\",\"camera\",\"image\",\"filled\"],\n);\n\nexport const CampusIcon = makeIcon(\n 'CampusIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4885 2.88139C11.4225 2.33671 12.5779 2.33661 13.5119 2.88139L21.7795 7.70365C22.6852 8.23218 22.7611 9.47106 22.0129 10.1236C22.0514 11.5216 22.213 13.1887 22.8947 14.5523C23.1416 15.0462 22.9412 15.647 22.4474 15.8941C21.9535 16.1411 21.3526 15.9408 21.1056 15.4468C20.4387 14.1127 20.1744 12.6033 20.0695 11.2915L19.0353 11.8951L19.3879 16.1109C19.4869 17.3002 18.8712 18.4356 17.8205 19.0015L13.422 21.3697C12.5343 21.8475 11.466 21.8475 10.5783 21.3697L6.17986 19.0015C5.12898 18.4356 4.51343 17.3003 4.61248 16.1109L4.96404 11.8951L2.22088 10.2954C1.22899 9.71656 1.22895 8.2825 2.22088 7.70365L10.4885 2.88139ZM13.5119 15.1177L13.3342 15.2134C12.4342 15.6604 11.3642 15.6286 10.4885 15.1177L6.87713 13.0113L6.60564 16.2769C6.57264 16.6733 6.77784 17.0521 7.1281 17.2408L11.5265 19.6089C11.8222 19.7679 12.1781 19.7679 12.4738 19.6089L16.8722 17.2408C17.2223 17.0521 17.4277 16.6732 17.3947 16.2769L17.1222 13.0113L13.5119 15.1177ZM12.5041 4.60892C12.1928 4.4274 11.8076 4.4275 11.4963 4.60892L3.96795 8.99955L11.4963 13.3902C11.8076 13.5718 12.1927 13.5718 12.5041 13.3902L20.0002 9.01713C20.0002 9.0114 20.0002 9.00524 20.0002 8.99955H20.0314L12.5041 4.60892Z\" fill=\"currentColor\"/></>,\n [\"campus\",\"icon\"],\n);\n\nexport const CampusFillIcon = makeIcon(\n 'CampusFillIcon',\n <><path d=\"M18.3915 16.1943C18.4575 16.9872 18.047 17.7438 17.3466 18.1211L12.9482 20.4892C12.3562 20.808 11.6436 20.808 11.0517 20.4892L6.65323 18.1211C5.95287 17.7438 5.54326 16.9871 5.60929 16.1943L5.8212 13.6426L9.73722 15.7646C11.1486 16.5291 12.8513 16.5291 14.2626 15.7646L18.1786 13.6426L18.3915 16.1943Z\" fill=\"currentColor\"/><path d=\"M10.571 2.77361C11.4622 2.29088 12.5372 2.29103 13.4284 2.77361L21.9704 7.40056C22.8324 7.86744 22.842 9.09238 22.0017 9.5783C22.0158 11.0701 22.1212 13.0068 22.8943 14.5529C23.1412 15.0469 22.941 15.6477 22.447 15.8947C21.9531 16.1415 21.3521 15.9413 21.1052 15.4474C20.326 13.8891 20.0998 12.091 20.032 10.6486L13.4284 14.2258C12.5371 14.7085 11.4623 14.7086 10.571 14.2258L2.02902 9.5988C1.15637 9.12592 1.15623 7.87332 2.02902 7.40056L10.571 2.77361Z\" fill=\"currentColor\"/></>,\n [\"campus\",\"fill\",\"icon\"],\n);\n\nexport const CardIcon = makeIcon(\n 'CardIcon',\n <><path d=\"M8 2C6.89543 2 6 2.89543 6 4H18C18 2.89543 17.1046 2 16 2H8ZM4 8C4 6.89543 4.89543 6 6 6H18C19.1046 6 20 6.89543 20 8H4ZM2 12.5C2 11.1193 3.11929 10 4.5 10H19.5C20.8807 10 22 11.1193 22 12.5V19C22 20.3807 20.8807 21.5 19.5 21.5H4.5C3.11929 21.5 2 20.3807 2 19V12.5ZM4.5 12C4.22386 12 4 12.2239 4 12.5V19C4 19.2761 4.22386 19.5 4.5 19.5H19.5C19.7761 19.5 20 19.2761 20 19V12.5C20 12.2239 19.7761 12 19.5 12H4.5Z\" fill=\"currentColor\"/></>,\n [\"card\",\"icon\"],\n);\n\nexport const CardFillIcon = makeIcon(\n 'CardFillIcon',\n <><path d=\"M8 2C6.89543 2 6 2.89543 6 4H18C18 2.89543 17.1046 2 16 2H8ZM4 8C4 6.89543 4.89543 6 6 6H18C19.1046 6 20 6.89543 20 8H4ZM4.5 10C3.11929 10 2 11.1193 2 12.5V19C2 20.3807 3.11929 21.5 4.5 21.5H19.5C20.8807 21.5 22 20.3807 22 19V12.5C22 11.1193 20.8807 10 19.5 10H4.5Z\" fill=\"currentColor\"/></>,\n [\"card\",\"fill\",\"icon\"],\n);\n\nexport const ChartBarIcon = makeIcon(\n 'ChartBarIcon',\n <><path d=\"M6.87491 17C6.87491 17.2762 7.09877 17.5 7.37491 17.5H8.62491C8.90106 17.5 9.12491 17.2762 9.12491 17V13.125C9.12491 12.5037 8.62123 12 7.99991 12C7.37859 12 6.87491 12.5037 6.87491 13.125V17ZM10.8749 17C10.8749 17.2762 11.0988 17.5 11.3749 17.5H12.6249C12.9011 17.5 13.1249 17.2762 13.1249 17V8.12501C13.1249 7.50369 12.6212 7.00001 11.9999 7.00001C11.3786 7.00001 10.8749 7.50369 10.8749 8.12501V17ZM14.8749 17C14.8749 17.2762 15.0988 17.5 15.3749 17.5H16.6249C16.9011 17.5 17.1249 17.2762 17.1249 17V10.625C17.1249 10.0037 16.6212 9.50004 15.9999 9.50004C15.3786 9.50004 14.8749 10.0037 14.8749 10.625V17ZM5.49994 21.5C3.84307 21.5 2.49992 20.1569 2.49994 18.5L2.50005 5.5C2.50007 3.84316 3.84321 2.50003 5.50005 2.50003L18.5002 2.50003C20.1571 2.50003 21.5003 3.84321 21.5002 5.50009L21.5 18.5001C21.4999 20.1569 20.1568 21.5 18.5 21.5H5.49994ZM4.5003 18.5C4.5003 19.0523 4.94802 19.5 5.5003 19.5H18.5002C19.0525 19.5 19.5002 19.0523 19.5002 18.5L19.5003 5.50004C19.5003 4.94776 19.0526 4.50004 18.5003 4.50004H5.50039C4.94811 4.50004 4.50039 4.94775 4.50039 5.50003L4.5003 18.5Z\" fill=\"currentColor\"/></>,\n [\"insights\",\"chart\",\"analytics\",\"graph\",\"stats\"],\n);\n\nexport const ChartBarFillIcon = makeIcon(\n 'ChartBarFillIcon',\n <><path d=\"M7.00003 17C7.00003 17.2761 7.22389 17.5 7.50003 17.5H8.50003C8.77617 17.5 9.00003 17.2761 9.00003 17V13C9.00003 12.4477 8.55232 12 8.00003 12C7.44775 12 7.00003 12.4477 7.00003 13V17ZM11 17C11 17.2761 11.2239 17.5 11.5 17.5H12.5C12.7762 17.5 13 17.2761 13 17V8.00004C13 7.44775 12.5523 7.00004 12 7.00004C11.4477 7.00004 11 7.44775 11 8.00004V17ZM15 17C15 17.2761 15.2239 17.5 15.5 17.5H16.5C16.7762 17.5 17 17.2761 17 17L17 10.5C17 9.9477 16.5523 9.49999 16 9.49999C15.4477 9.49999 15 9.94771 15 10.5L15 17ZM5.50011 21.5C3.84327 21.5 2.50013 20.1568 2.50011 18.5L2.5 5.50006C2.49999 3.84319 3.84313 2.50003 5.49999 2.50003L18.5 2.5C20.1568 2.5 21.5 3.84314 21.5 5.5V18.5C21.5 20.1568 20.1568 21.5 18.5 21.5H5.50011Z\" fill=\"currentColor\"/></>,\n [\"insights\",\"chart\",\"analytics\",\"graph\",\"stats\",\"filled\"],\n);\n\nexport const ChatIcon = makeIcon(\n 'ChatIcon',\n <><path d=\"M16 12C15.3096 12 14.75 11.4404 14.75 10.75C14.75 10.0596 15.3096 9.5 16 9.5C16.6904 9.5 17.25 10.0596 17.25 10.75C17.25 11.4404 16.6904 12 16 12ZM12 12C11.3096 12 10.75 11.4404 10.75 10.75C10.75 10.0596 11.3096 9.5 12 9.5C12.6904 9.5 13.25 10.0596 13.25 10.75C13.25 11.4404 12.6904 12 12 12ZM9.25 10.75C9.25 11.4404 8.69036 12 8 12C7.30964 12 6.75 11.4404 6.75 10.75C6.75 10.0596 7.30964 9.5 8 9.5C8.69036 9.5 9.25 10.0596 9.25 10.75ZM10.5 20.1386C10.5 21.1666 11.3334 22 12.3614 22C12.7753 22 13.1774 21.862 13.5041 21.6079L18.9115 17.4021C20.8602 15.8865 22 13.5561 22 11.0873V10.5C22 6.08172 18.4183 2.5 14 2.5H10C5.58172 2.5 2 6.08172 2 10.5C2 14.9183 5.58172 18.5 10 18.5H10.5V20.1386ZM12.5 17.5C12.5 16.9477 12.0523 16.5 11.5 16.5H10C6.68629 16.5 4 13.8137 4 10.5C4 7.18629 6.68629 4.5 10 4.5H14C17.3137 4.5 20 7.18629 20 10.5V11.0783C20 12.9226 19.1518 14.6644 17.7 15.8017L12.5 19.875V17.5Z\" fill=\"currentColor\"/></>,\n [\"chat\",\"message\",\"talk\",\"conversation\",\"speech\"],\n);\n\nexport const ChatFillIcon = makeIcon(\n 'ChatFillIcon',\n <><path d=\"M7.995 12C8.68259 12 9.24 11.4376 9.24 10.75C9.24 10.0624 8.68259 9.49999 7.995 9.49999C7.30741 9.49999 6.75 10.0624 6.75 10.75C6.75 11.4376 7.30741 12 7.995 12ZM12 12C12.6904 12 13.25 11.4403 13.25 10.75C13.25 10.0596 12.6904 9.49999 12 9.49999C11.3096 9.49999 10.75 10.0596 10.75 10.75C10.75 11.4403 11.3096 12 12 12ZM16 12C16.6904 12 17.25 11.4403 17.25 10.75C17.25 10.0596 16.6904 9.49999 16 9.49999C15.3096 9.49999 14.75 10.0596 14.75 10.75C14.75 11.4403 15.3096 12 16 12ZM11 18H9.75C5.46979 18 2 14.5302 2 10.25C2 5.96979 5.4698 2.5 9.75 2.5L14 2.5C18.4183 2.50001 22 6.08173 22 10.5V10.9575C22 13.4995 20.792 15.8901 18.7456 17.398L12.7987 21.7799C12.6047 21.9229 12.37 22 12.129 22C11.5055 22 11 21.4945 11 20.871V18Z\" fill=\"currentColor\"/></>,\n [\"chat\",\"message\",\"talk\",\"conversation\",\"speech\",\"filled\"],\n);\n\nexport const CheckCircleIcon = makeIcon(\n 'CheckCircleIcon',\n <><path d=\"M9.89304 15.8928C10.2836 16.2833 10.9167 16.2833 11.3073 15.8928L16.9501 10.2499C17.3367 9.86333 17.3367 9.23653 16.9501 8.84993C16.5635 8.46333 15.9367 8.46333 15.5501 8.84993L10.6001 13.7999L8.45014 11.6499C8.06354 11.2633 7.43674 11.2633 7.05014 11.6499C6.66354 12.0365 6.66354 12.6633 7.05014 13.0499L9.89304 15.8928ZM12 21.9999C6.47721 21.9999 2.00001 17.5228 2 12C1.99999 6.47714 6.47721 1.99999 12 2C17.5228 2.00001 22 6.4771 22.0001 11.9999C22.0001 17.5227 17.5229 21.9999 12 21.9999ZM11.9997 20.0001C16.418 20.0001 19.9997 16.4183 19.9997 12.0001C19.9997 7.58179 16.418 4.00007 11.9997 4.00007C7.58144 4.00007 3.99971 7.58179 3.99971 12.0001C3.99971 16.4183 7.58144 20.0001 11.9997 20.0001Z\" fill=\"currentColor\"/></>,\n [\"check\",\"circle\",\"icon\"],\n);\n\nexport const CheckCircleFillIcon = makeIcon(\n 'CheckCircleFillIcon',\n <><path d=\"M9.89304 15.8928C10.2836 16.2833 10.9167 16.2833 11.3073 15.8928L16.9501 10.2499C17.3367 9.86333 17.3367 9.23653 16.9501 8.84993C16.5635 8.46333 15.9367 8.46333 15.5501 8.84993L10.6001 13.7999L8.45014 11.6499C8.06355 11.2633 7.43674 11.2633 7.05014 11.6499C6.66354 12.0365 6.66355 12.6633 7.05014 13.0499L9.89304 15.8928ZM12 21.9999C6.47721 21.9999 1.99999 17.5228 1.99999 12C1.99999 6.47714 6.47723 2.00001 12.0001 2.00003C17.5228 2.00005 22 6.47713 22.0001 11.9999C22.0001 17.5228 17.5229 21.9999 12 21.9999Z\" fill=\"currentColor\"/></>,\n [\"check\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const CheckboxIcon = makeIcon(\n 'CheckboxIcon',\n <><path d=\"M3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"checkbox\",\"check\",\"select\",\"unchecked\"],\n);\n\nexport const CheckboxFillIcon = makeIcon(\n 'CheckboxFillIcon',\n <><path d=\"M3 6C3 4.5 4.5 3 6 3H18C19.5 3 21 4.5 21 6V18C21 19.5 19.5 21 18 21H6C4.5 21 3 19.5 3 18V6ZM16.7071 10.2071C17.0976 9.81658 17.0976 9.18342 16.7071 8.79289C16.3166 8.40237 15.6834 8.40237 15.2929 8.79289L10.5 13.5858L8.70711 11.7929C8.31658 11.4024 7.68342 11.4024 7.29289 11.7929C6.90237 12.1834 6.90237 12.8166 7.29289 13.2071L9.79289 15.7071C10.1834 16.0976 10.8166 16.0976 11.2071 15.7071L16.7071 10.2071Z\" fill=\"currentColor\"/></>,\n [\"checkbox\",\"check\",\"select\",\"checked\",\"filled\"],\n);\n\nexport const CheckedIcon = makeIcon(\n 'CheckedIcon',\n <><path d=\"M18.1592 4.45898C18.4579 3.99469 19.0766 3.8606 19.541 4.15918C20.0053 4.45791 20.1394 5.07656 19.8408 5.54101L10.8408 19.541C10.6615 19.8197 10.3558 19.9919 10.0244 20C9.69293 20.0081 9.37925 19.8509 9.18652 19.5811L4.18652 12.5811C3.86551 12.1316 3.96953 11.5075 4.41894 11.1865C4.86836 10.8655 5.49247 10.9695 5.81347 11.4189L9.95605 17.2187L18.1592 4.45898Z\" fill=\"currentColor\"/></>,\n [\"check\",\"checked\",\"done\",\"confirm\"],\n);\n\nexport const ChevronDownIcon = makeIcon(\n 'ChevronDownIcon',\n <><path d=\"M5.29289 8.79289C5.68342 8.40237 6.31658 8.40237 6.70711 8.79289L12 14.0858L17.2929 8.79289C17.6834 8.40237 18.3166 8.40237 18.7071 8.79289C19.0976 9.18342 19.0976 9.81658 18.7071 10.2071L12.7071 16.2071C12.3166 16.5976 11.6834 16.5976 11.2929 16.2071L5.29289 10.2071C4.90237 9.81658 4.90237 9.18342 5.29289 8.79289Z\" fill=\"currentColor\"/></>,\n [\"expand\",\"chevron-down\",\"unfold\"],\n);\n\nexport const ChevronLeftIcon = makeIcon(\n 'ChevronLeftIcon',\n <><path d=\"M6.2045 12.7954C5.76517 12.356 5.76517 11.6437 6.2045 11.2044L13.909 3.49992C14.3483 3.06058 15.0607 3.06058 15.5 3.49992C15.9393 3.93926 15.9393 4.65155 15.5 5.09089L8.59099 11.9999L15.5 18.909C15.9393 19.3483 15.9393 20.0607 15.5 20.5C15.0607 20.9393 14.3483 20.9393 13.909 20.5L6.2045 12.7954Z\" fill=\"currentColor\"/></>,\n [\"back\",\"backward\",\"chevron-left\",\"previous\"],\n);\n\nexport const ChevronLeftCircleIcon = makeIcon(\n 'ChevronLeftCircleIcon',\n <><path d=\"M8.79289 11.2928C8.60536 11.4803 8.5 11.7347 8.5 11.9999C8.5 12.2651 8.60536 12.5195 8.79289 12.707L12.7929 16.707C13.1834 17.0975 13.8166 17.0975 14.2071 16.707C14.5976 16.3165 14.5976 15.6833 14.2071 15.2928L10.9142 11.9999L14.2071 8.70705C14.5976 8.31652 14.5976 7.68336 14.2071 7.29283C13.8166 6.90231 13.1834 6.90231 12.7929 7.29283L8.79289 11.2928ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999ZM12 19.9999C7.58169 19.9999 3.99995 16.4182 3.99995 11.9999C3.99995 7.58171 7.58169 4 12 4C16.4182 4 20 7.58173 20 12C20 16.4182 16.4182 19.9999 12 19.9999Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"left\",\"circle\",\"icon\"],\n);\n\nexport const ChevronLeftCircleFillIcon = makeIcon(\n 'ChevronLeftCircleFillIcon',\n <><path d=\"M21.9999 11.9999C21.9999 17.5228 17.5228 21.9999 12 21.9999C6.47714 21.9999 2 17.5228 2 11.9999C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 11.9999ZM8.79289 11.2928C8.60536 11.4803 8.5 11.7347 8.5 11.9999C8.5 12.2651 8.60536 12.5195 8.79289 12.707L12.7929 16.707C13.1834 17.0975 13.8166 17.0975 14.2071 16.707C14.5976 16.3165 14.5976 15.6833 14.2071 15.2928L10.9142 11.9999L14.2071 8.70705C14.5976 8.31652 14.5976 7.68336 14.2071 7.29283C13.8166 6.90231 13.1834 6.90231 12.7929 7.29283L8.79289 11.2928Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"left\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const ChevronRightIcon = makeIcon(\n 'ChevronRightIcon',\n <><path d=\"M17.7954 11.2045C18.2347 11.6439 18.2347 12.3562 17.7954 12.7955L10.0909 20.5C9.65156 20.9393 8.93926 20.9393 8.49992 20.5C8.06058 20.0607 8.06058 19.3483 8.49992 18.909L15.4089 12L8.49992 5.09103C8.06058 4.65169 8.06058 3.93938 8.49992 3.50004C8.93926 3.0607 9.65156 3.0607 10.0909 3.50004L17.7954 11.2045Z\" fill=\"currentColor\"/></>,\n [\"forward\",\"chevron-right\",\"next\"],\n);\n\nexport const ChevronRightCircleIcon = makeIcon(\n 'ChevronRightCircleIcon',\n <><path d=\"M15.2071 11.2928C15.3946 11.4803 15.5 11.7347 15.5 11.9999C15.5 12.2651 15.3946 12.5195 15.2071 12.707L11.2071 16.707C10.8166 17.0975 10.1834 17.0975 9.79289 16.707C9.40239 16.3165 9.40239 15.6833 9.79289 15.2928L13.0858 11.9999L9.79289 8.70705C9.40239 8.31652 9.40239 7.68336 9.79289 7.29283C10.1834 6.90231 10.8166 6.90231 11.2071 7.29283L15.2071 11.2928ZM12 21.9999C6.47719 21.9999 2.00009 17.5228 2.00009 11.9999C2.00009 6.47715 6.47719 2 12 2C17.5229 2 22 6.47715 22 11.9999C22 17.5228 17.5229 21.9999 12 21.9999ZM12 19.9999C16.4183 19.9999 20 16.4182 20 11.9999C20 7.58171 16.4183 4 12 4C7.58179 4 3.99999 7.58173 3.99999 12C3.99999 16.4182 7.58179 19.9999 12 19.9999Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"right\",\"circle\",\"icon\"],\n);\n\nexport const ChevronRightCircleFillIcon = makeIcon(\n 'ChevronRightCircleFillIcon',\n <><path d=\"M15.2071 11.2928C15.3946 11.4803 15.5 11.7347 15.5 11.9999C15.5 12.2651 15.3946 12.5195 15.2071 12.707L11.2071 16.707C10.8166 17.0975 10.1834 17.0975 9.79289 16.707C9.40237 16.3165 9.40237 15.6833 9.79289 15.2928L13.0858 11.9999L9.79289 8.70705C9.40237 8.31652 9.40237 7.68336 9.79289 7.29283C10.1834 6.90231 10.8166 6.90231 11.2071 7.29283L15.2071 11.2928ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"right\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const ChevronUpIcon = makeIcon(\n 'ChevronUpIcon',\n <><path d=\"M11.2929 7.79289C11.6834 7.40237 12.3166 7.40237 12.7071 7.79289L18.7071 13.7929C19.0976 14.1834 19.0976 14.8166 18.7071 15.2071C18.3166 15.5976 17.6834 15.5976 17.2929 15.2071L12 9.91421L6.70711 15.2071C6.31658 15.5976 5.68342 15.5976 5.29289 15.2071C4.90237 14.8166 4.90237 14.1834 5.29289 13.7929L11.2929 7.79289Z\" fill=\"currentColor\"/></>,\n [\"collapse\",\"chevron-up\",\"fold\"],\n);\n\nexport const CompensationIcon = makeIcon(\n 'CompensationIcon',\n <><path d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H18.5C20.1569 2.5 21.5 3.84315 21.5 5.5V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V5.5ZM5.5 4.5C4.94772 4.5 4.5 4.94772 4.5 5.5V18.5C4.5 19.0523 4.94772 19.5 5.5 19.5H18.5C19.0523 19.5 19.5 19.0523 19.5 18.5V5.5C19.5 4.94772 19.0523 4.5 18.5 4.5H5.5ZM9.5325 7.0895C9.9753 6.81275 10.4832 6.65479 11 6.57336V5.5H13V6.57336C13.5168 6.65479 14.0247 6.81275 14.4675 7.0895C15.2686 7.59016 15.75 8.41557 15.75 9.5C15.75 10.0523 15.3023 10.5 14.75 10.5C14.1977 10.5 13.75 10.0523 13.75 9.5C13.75 9.08443 13.6064 8.90984 13.4075 8.7855C13.1371 8.61647 12.6684 8.5 12 8.5C11.3316 8.5 10.8629 8.61647 10.5925 8.7855C10.3936 8.90984 10.25 9.08443 10.25 9.5C10.25 9.88856 10.3876 10.1122 10.6796 10.3296C11.0386 10.5969 11.5746 10.8041 12.3162 11.0513C13.0448 11.2942 13.8877 11.5877 14.5375 12.075C15.2609 12.6176 15.75 13.4014 15.75 14.5C15.75 15.5844 15.2686 16.4098 14.4675 16.9105C14.0247 17.1872 13.5168 17.3452 13 17.4266V18.5H11V17.4266C10.4832 17.3452 9.9753 17.1872 9.5325 16.9105C8.73144 16.4098 8.25 15.5844 8.25 14.5C8.25 13.9477 8.69772 13.5 9.25 13.5C9.80228 13.5 10.25 13.9477 10.25 14.5C10.25 14.9156 10.3936 15.0902 10.5925 15.2145C10.8629 15.3835 11.3316 15.5 12 15.5C12.6684 15.5 13.1371 15.3835 13.4075 15.2145C13.6064 15.0902 13.75 14.9156 13.75 14.5C13.75 14.0986 13.6141 13.8824 13.3375 13.675C12.9873 13.4124 12.4552 13.2058 11.6838 12.9487C10.9786 12.7137 10.1396 12.4209 9.48525 11.9338C8.76397 11.3967 8.25 10.6114 8.25 9.5C8.25 8.41557 8.73144 7.59016 9.5325 7.0895Z\" fill=\"currentColor\"/></>,\n [\"compensation\",\"money\",\"pay\",\"salary\"],\n);\n\nexport const CompensationFillIcon = makeIcon(\n 'CompensationFillIcon',\n <><path d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H18.5C20.1569 2.5 21.5 3.84315 21.5 5.5V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V5.5ZM11.125 6.6813C10.5842 6.75544 10.0539 6.91103 9.59875 7.1955C8.83533 7.67264 8.375 8.45737 8.375 9.5C8.375 10.5663 8.86545 11.3164 9.5599 11.8335C10.1958 12.3069 11.0159 12.5943 11.7233 12.8301C12.492 13.0864 13.0436 13.2983 13.4125 13.575C13.717 13.8034 13.875 14.055 13.875 14.5C13.875 14.9574 13.7103 15.1726 13.4738 15.3205C13.1746 15.5075 12.6786 15.625 12 15.625C11.3214 15.625 10.8254 15.5075 10.5262 15.3205C10.2897 15.1726 10.125 14.9574 10.125 14.5C10.125 14.0168 9.73325 13.625 9.25 13.625C8.76675 13.625 8.375 14.0168 8.375 14.5C8.375 15.5426 8.83533 16.3274 9.59875 16.8045C10.0539 17.089 10.5842 17.2446 11.125 17.3187V18.625C11.125 19.1082 11.5168 19.5 12 19.5C12.4832 19.5 12.875 19.1082 12.875 18.625V17.3187C13.4158 17.2446 13.9461 17.089 14.4012 16.8045C15.1647 16.3274 15.625 15.5426 15.625 14.5C15.625 13.445 15.158 12.6966 14.4625 12.175C13.8314 11.7017 13.008 11.4137 12.2767 11.1699C11.5373 10.9235 10.9824 10.7109 10.605 10.4298C10.2862 10.1924 10.125 9.93374 10.125 9.5C10.125 9.04263 10.2897 8.82736 10.5262 8.6795C10.8254 8.49254 11.3214 8.375 12 8.375C12.6786 8.375 13.1746 8.49254 13.4738 8.6795C13.7103 8.82736 13.875 9.04263 13.875 9.5C13.875 9.98325 14.2668 10.375 14.75 10.375C15.2332 10.375 15.625 9.98325 15.625 9.5C15.625 8.45737 15.1647 7.67264 14.4012 7.1955C13.9461 6.91103 13.4158 6.75544 12.875 6.6813V5.375C12.875 4.89175 12.4832 4.5 12 4.5C11.5168 4.5 11.125 4.89175 11.125 5.375V6.6813Z\" fill=\"currentColor\"/></>,\n [\"compensation\",\"money\",\"pay\",\"salary\",\"filled\"],\n);\n\nexport const ComposeIcon = makeIcon(\n 'ComposeIcon',\n <><path d=\"M16.5858 2.99997C17.3668 2.21892 18.6332 2.21892 19.4142 2.99997L21 4.58576C21.781 5.36681 21.781 6.63314 21 7.41419L9.82842 18.5858C8.28263 20.1316 6.18608 21 4 21C3.44772 21 3 20.5523 3 20C3 17.8139 3.86842 15.7173 5.41421 14.1715L16.5858 2.99997ZM16.5858 8.99997L15 7.41418L6.82843 15.5858C5.91963 16.4946 5.31997 17.6547 5.09714 18.9028C6.34525 18.68 7.50541 18.0803 8.41421 17.1715L16.5858 8.99997ZM17.9999 7.58576L19.5857 5.99997L17.9999 4.41418L16.4141 5.99997L17.9999 7.58576Z\" fill=\"currentColor\"/></>,\n [\"compose\",\"edit\",\"write\",\"pencil\"],\n);\n\nexport const ComposeFillIcon = makeIcon(\n 'ComposeFillIcon',\n <><path d=\"M16.5858 2.99997C17.3668 2.21892 18.6332 2.21892 19.4142 2.99997L21 4.58576C21.781 5.3668 21.7811 6.63314 21 7.41419L19.4142 8.99999L15 4.58577L16.5858 2.99997ZM13.5858 5.99999L5.41421 14.1715C3.86842 15.7173 3 17.8139 3 20C3 20.5523 3.44772 21 4 21C6.18608 21 8.28263 20.1316 9.82842 18.5858L18 10.4142L13.5858 5.99999Z\" fill=\"currentColor\"/></>,\n [\"compose\",\"edit\",\"write\",\"pencil\",\"filled\"],\n);\n\nexport const DiscoverIcon = makeIcon(\n 'DiscoverIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15 9C18.3137 9 21 11.6863 21 15C21 16.2957 20.587 17.4938 19.8887 18.4746L21.1211 19.707C21.5116 20.0976 21.5116 20.7306 21.1211 21.1211C20.7306 21.5116 20.0976 21.5116 19.707 21.1211L18.4746 19.8887C17.4938 20.587 16.2957 21 15 21C11.6863 21 9 18.3137 9 15C9 11.6863 11.6863 9 15 9ZM15 11C12.7909 11 11 12.7909 11 15C11 17.2091 12.7909 19 15 19C15.0886 19 15.1765 18.9959 15.2637 18.9902C15.2738 18.9896 15.2839 18.989 15.2939 18.9883C15.3678 18.9829 15.441 18.9751 15.5137 18.9658C15.5306 18.9636 15.5476 18.9614 15.5645 18.959C15.7335 18.9351 15.899 18.9008 16.0605 18.8564C16.0681 18.8544 16.0755 18.8517 16.083 18.8496C16.1576 18.8287 16.231 18.8053 16.3037 18.7803C16.3134 18.7769 16.3233 18.7739 16.333 18.7705C16.4925 18.7141 16.6474 18.6486 16.7969 18.5732C16.8018 18.5708 16.8066 18.5679 16.8115 18.5654C17.7199 18.103 18.427 17.3046 18.7705 16.333C18.7739 16.3233 18.7769 16.3134 18.7803 16.3037C18.8621 16.0664 18.9229 15.8196 18.959 15.5645C18.9614 15.5476 18.9636 15.5306 18.9658 15.5137C18.9874 15.3454 19 15.1741 19 15C19 12.7909 17.2091 11 15 11Z\" fill=\"currentColor\"/><path d=\"M7.32324 12.75C7.13671 13.3875 7.0281 14.0574 7.00684 14.75H5V19H8.07324C8.49765 19.7334 9.03343 20.3938 9.66016 20.9561C9.59257 20.9701 9.52401 20.9822 9.4541 20.9893L9.25 21H5L4.7959 20.9893C3.85435 20.8938 3.1062 20.1457 3.01074 19.2041L3 19V14.75C3 13.7143 3.78722 12.863 4.7959 12.7607L5 12.75H7.32324Z\" fill=\"currentColor\"/><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9.4541 3.01074C10.4628 3.113 11.25 3.96435 11.25 5V7.93262C9.84059 8.68201 8.68307 9.84064 7.93359 11.25H5L4.7959 11.2393C3.85435 11.1438 3.1062 10.3957 3.01074 9.4541L3 9.25V5C3 3.96435 3.78722 3.113 4.7959 3.01074L5 3H9.25L9.4541 3.01074ZM5 9.25H9.25V5H5V9.25Z\" fill=\"currentColor\"/><path d=\"M19.2041 3.01074C20.2128 3.113 21 3.96435 21 5V9.25L20.9893 9.4541C20.9822 9.52401 20.9701 9.59257 20.9561 9.66016C20.3937 9.03331 19.7335 8.49671 19 8.07227V5H14.75V7.00586C14.0575 7.02712 13.3874 7.13577 12.75 7.32227V5C12.75 3.96435 13.5372 3.113 14.5459 3.01074L14.75 3H19L19.2041 3.01074Z\" fill=\"currentColor\"/></>,\n [\"discover\",\"icon\"],\n);\n\nexport const DiscoverFillIcon = makeIcon(\n 'DiscoverFillIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15 9C18.3137 9 21 11.6863 21 15C21 16.2957 20.587 17.4938 19.8887 18.4746L21.1211 19.707C21.5116 20.0976 21.5116 20.7306 21.1211 21.1211C20.7306 21.5116 20.0976 21.5116 19.707 21.1211L18.4746 19.8887C17.4938 20.587 16.2957 21 15 21C11.6863 21 9 18.3137 9 15C9 11.6863 11.6863 9 15 9ZM15 11C12.7909 11 11 12.7909 11 15C11 17.2091 12.7909 19 15 19C15.0886 19 15.1765 18.9959 15.2637 18.9902C15.2738 18.9896 15.2839 18.989 15.2939 18.9883C15.3678 18.9829 15.441 18.9751 15.5137 18.9658C15.5306 18.9636 15.5476 18.9614 15.5645 18.959C15.7335 18.9351 15.899 18.9008 16.0605 18.8564C16.0681 18.8544 16.0755 18.8517 16.083 18.8496C16.1576 18.8287 16.231 18.8053 16.3037 18.7803C16.3134 18.7769 16.3233 18.7739 16.333 18.7705C16.4925 18.7141 16.6474 18.6486 16.7969 18.5732C16.8018 18.5708 16.8066 18.5679 16.8115 18.5654C17.7199 18.103 18.427 17.3046 18.7705 16.333C18.7739 16.3233 18.7769 16.3134 18.7803 16.3037C18.8621 16.0664 18.9229 15.8196 18.959 15.5645C18.9614 15.5476 18.9636 15.5306 18.9658 15.5137C18.9874 15.3454 19 15.1741 19 15C19 12.7909 17.2091 11 15 11Z\" fill=\"currentColor\"/><path d=\"M7.32324 12.75C7.11434 13.4639 7 14.2185 7 15C7 17.3662 8.02824 19.4914 9.66113 20.9561C9.52834 20.9838 9.39104 21 9.25 21H5C3.89543 21 3 20.1046 3 19V14.75C3 13.6454 3.89543 12.75 5 12.75H7.32324Z\" fill=\"currentColor\"/><path d=\"M9.25 3C10.3546 3 11.25 3.89543 11.25 5V7.93262C9.8406 8.68201 8.68307 9.84064 7.93359 11.25H5C3.89543 11.25 3 10.3546 3 9.25V5C3 3.89543 3.89543 3 5 3H9.25Z\" fill=\"currentColor\"/><path d=\"M19 3C20.1046 3 21 3.89543 21 5V9.25C21 9.39104 20.9838 9.52834 20.9561 9.66113C19.4914 8.02824 17.3662 7 15 7C14.2186 7 13.4639 7.11341 12.75 7.32227V5C12.75 3.89543 13.6454 3 14.75 3H19Z\" fill=\"currentColor\"/></>,\n [\"discover\",\"fill\",\"icon\"],\n);\n\nexport const DocsIcon = makeIcon(\n 'DocsIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M5.50003 2.49988L15.5 2.49996V2.50152C16.1091 2.52316 16.6888 2.77461 17.1213 3.20711L20.7929 6.87868C21.2254 7.31117 21.4768 7.89086 21.4985 8.5H21.5V18.5002C21.5 20.1571 20.1568 21.5002 18.4999 21.5002L5.49994 21.4999C3.84311 21.4999 2.5 20.1567 2.5 18.4999V5.49988C2.5 3.84301 3.84316 2.49986 5.50003 2.49988ZM19.0858 9H16C15.4477 9 15 8.55228 15 8V4.91421C15 4.55065 15.4551 4.36928 15.7071 4.62132L19.3787 8.29289C19.6295 8.5437 19.4494 9 19.0858 9ZM13 4.50024C13 4.50024 13 6.88113 13 8C13 9.65685 14.3431 11 16 11C17.1189 11 19.5 11 19.5 11V18.5002C19.5 19.0525 19.0523 19.5002 18.5 19.5002L5.49999 19.5001C4.94771 19.5001 4.49999 19.0524 4.49999 18.5001V5.50024C4.49999 4.94796 4.94771 4.50024 5.5 4.50024H13Z\" fill=\"currentColor\"/></>,\n [\"docs\",\"icon\"],\n);\n\nexport const DocsFillIcon = makeIcon(\n 'DocsFillIcon',\n <><path d=\"M5.5 2.5C3.84315 2.5 2.5 3.84315 2.5 5.5V18.5C2.5 20.1569 3.84315 21.5 5.5 21.5H18.5C20.1569 21.5 21.5 20.1569 21.5 18.5V11H16C14.3431 11 13 9.65685 13 8V2.5H5.5Z\" fill=\"currentColor\"/><path d=\"M15 2.5V8C15 8.55228 15.4477 9 16 9H21.5V8.32843C21.5 7.79799 21.2893 7.28929 20.9142 6.91421L17.0858 3.08579C16.7107 2.71071 16.202 2.5 15.6716 2.5H15Z\" fill=\"currentColor\"/></>,\n [\"docs\",\"fill\",\"icon\"],\n);\n\nexport const DownloadIcon = makeIcon(\n 'DownloadIcon',\n <><path d=\"M7.29289 10.7071L11.2929 14.7071C11.6834 15.0976 12.3166 15.0976 12.7071 14.7071L16.7071 10.7071C17.0976 10.3166 17.0976 9.68342 16.7071 9.29289C16.3166 8.90237 15.6834 8.90237 15.2929 9.29289L13 11.5858V3.5C13 2.9477 12.5523 2.5 12 2.5C11.4477 2.5 11 2.9477 11 3.5V11.5858L8.70711 9.29289C8.31658 8.90237 7.68342 8.90237 7.29289 9.29289C6.90237 9.68342 6.90237 10.3166 7.29289 10.7071ZM5 12C5 11.4477 4.55228 11 4 11C3.44772 11 3 11.4477 3 12V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V12C21 11.4477 20.5523 11 20 11C19.4477 11 19 11.4477 19 12V19H5V12Z\" fill=\"currentColor\"/></>,\n [\"download\",\"save\",\"export\"],\n);\n\nexport const DownvoteIcon = makeIcon(\n 'DownvoteIcon',\n <><path d=\"M12.3377 20.1492C11.9669 21.2616 10.9165 22 9.75894 22C8.25535 22 7 20.7832 7 19.2566C7 18.5331 7.01693 17.8157 7.13627 17.0996L7.31954 16H5C3.34315 16 2 14.6569 2 13C2 10.2146 2.53472 7.47063 3.56864 4.88583C4.02423 3.74685 5.12735 3 6.35407 3H19C20.6569 3 22 4.34315 22 6V13C22 14.6569 20.6569 16 19 16H14.9684C13.8991 17.2831 12.8761 18.5338 12.3377 20.1492ZM15.5 14H19C19.5523 14 20 13.5523 20 13V6C20 5.44772 19.5523 5 19 5H15.5V14ZM13.5 5H6.35407C5.94516 5 5.57745 5.24895 5.42559 5.62861C4.48592 7.97784 4 10.4683 4 13C4 13.5523 4.44772 14 5 14H8.5C9.10858 14 9.58644 14.5641 9.48639 15.1644L9.10906 17.4284C9.00788 18.0355 9 18.6434 9 19.2566C9 19.6557 9.3368 20 9.75894 20C10.0706 20 10.3465 19.7983 10.4403 19.5168C11.0711 17.6246 12.2464 16.1423 13.5 14.6379V5Z\" fill=\"currentColor\"/></>,\n [\"downvote\",\"icon\"],\n);\n\nexport const DownvoteFillIcon = makeIcon(\n 'DownvoteFillIcon',\n <><path d=\"M19.9998 3H16.9999V16H19.9999C21.1045 16 21.9999 15.1045 21.9999 14L21.9998 4.99998C21.9998 3.89542 21.1043 3 19.9998 3ZM10.1623 22C11.3568 22 12.0103 21.1315 12.3512 20.1088C12.8929 18.4838 13.8747 17.2449 14.9999 16V3H6.35406C5.12735 3 4.02422 3.74685 3.56863 4.88583C2.53471 7.47062 2 10.2146 2 13C2 14.6569 3.34314 16 5 16H8.49987C8.49987 16 8 18.5361 8 19.8377C8 21.0319 8.96808 22 10.1623 22Z\" fill=\"currentColor\"/></>,\n [\"downvote\",\"fill\",\"icon\"],\n);\n\nexport const DuplicateIcon = makeIcon(\n 'DuplicateIcon',\n <><path d=\"M1.99951 15C1.9995 16.6568 3.34265 18 4.99951 18H14.9997C16.6565 18 17.9996 16.6569 17.9997 15.0001L17.9998 5.00006C17.9999 3.34318 16.6567 2 14.9998 2H4.99951C3.34267 2 1.99953 3.34313 1.99951 4.99997V15ZM4.99988 16C4.44759 16 3.99987 15.5523 3.99988 15L3.99985 5C3.99985 4.44772 4.44757 4 4.99985 4H14.9999C15.5522 4 15.9999 4.44772 15.9999 5.00001V15C15.9999 15.5523 15.5522 16 14.9999 16H4.99988ZM21.9999 8C21.9999 6.89543 21.1045 6 19.9999 6V15C19.9999 17.7614 17.7613 20 14.9999 20H5.99989C5.99989 21.1046 6.89532 22 7.99985 22H14.9999C18.8659 22 22 18.8659 21.9999 14.9999L21.9999 8Z\" fill=\"currentColor\"/></>,\n [\"duplicate\",\"copy\",\"clipboard\"],\n);\n\nexport const DuplicateFillIcon = makeIcon(\n 'DuplicateFillIcon',\n <><path d=\"M1.99951 15C1.9995 16.6568 3.34266 18 4.99953 18H14.9997C16.6566 18 17.9997 16.6569 17.9997 15.0001L17.9999 5.00006C17.9999 3.34318 16.6568 2 14.9999 2H4.99953C3.34268 2 1.99953 3.34313 1.99951 4.99997V15ZM22 8C22 6.89543 21.1046 6 20 6V15C20 17.7614 17.7614 20 15 20H5.99993C5.99993 21.1046 6.89537 22 7.99995 22H15C18.866 22 22 18.866 22 15V8Z\" fill=\"currentColor\"/></>,\n [\"duplicate\",\"copy\",\"clipboard\",\"filled\"],\n);\n\nexport const EllipsisHorizontalIcon = makeIcon(\n 'EllipsisHorizontalIcon',\n <><path d=\"M4 11C3.44772 11 3 11.4477 3 12C3 12.5523 3.44772 13 4 13C4.55228 13 5 12.5523 5 12C5 11.4477 4.55228 11 4 11ZM1 12C1 10.3431 2.34315 9 4 9C5.65685 9 7 10.3431 7 12C7 13.6569 5.65685 15 4 15C2.34315 15 1 13.6569 1 12ZM12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11ZM9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12ZM20 11C19.4477 11 19 11.4477 19 12C19 12.5523 19.4477 13 20 13C20.5523 13 21 12.5523 21 12C21 11.4477 20.5523 11 20 11ZM17 12C17 10.3431 18.3431 9 20 9C21.6569 9 23 10.3431 23 12C23 13.6569 21.6569 15 20 15C18.3431 15 17 13.6569 17 12Z\" fill=\"currentColor\"/></>,\n [\"more\",\"overflow\",\"ellipsis\",\"dots\"],\n);\n\nexport const EllipsisHorizontalFillIcon = makeIcon(\n 'EllipsisHorizontalFillIcon',\n <><path d=\"M1 12C1 10.3431 2.34315 9 4 9C5.65685 9 7 10.3431 7 12C7 13.6569 5.65685 15 4 15C2.34315 15 1 13.6569 1 12ZM9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12ZM17 12C17 10.3431 18.3431 9 20 9C21.6569 9 23 10.3431 23 12C23 13.6569 21.6569 15 20 15C18.3431 15 17 13.6569 17 12Z\" fill=\"currentColor\"/></>,\n [\"more\",\"overflow\",\"ellipsis\",\"dots\",\"filled\"],\n);\n\nexport const EmbedIcon = makeIcon(\n 'EmbedIcon',\n <><path d=\"M14.2747 4.03849C13.7437 3.88677 13.1902 4.19426 13.0385 4.72529L9.03848 18.7253C8.88675 19.2563 9.19424 19.8098 9.72528 19.9615C10.2563 20.1133 10.8098 19.8058 10.9615 19.2747L14.9615 5.27473C15.1132 4.7437 14.8058 4.19021 14.2747 4.03849ZM17.7929 7.79291C17.4024 8.18343 17.4024 8.8166 17.7929 9.20712L20.5858 12L17.7929 14.7929C17.4024 15.1834 17.4024 15.8166 17.7929 16.2071C18.1834 16.5976 18.8166 16.5976 19.2071 16.2071L22.7071 12.7071C23.0976 12.3166 23.0976 11.6834 22.7071 11.2929L19.2071 7.79291C18.8166 7.40238 18.1834 7.40238 17.7929 7.79291ZM6.20711 7.79291C5.81658 7.40238 5.18342 7.40238 4.79289 7.79291L1.29289 11.2929C0.90237 11.6834 0.90237 12.3166 1.29289 12.7071L4.79289 16.2071C5.18342 16.5976 5.81658 16.5976 6.20711 16.2071C6.59763 15.8166 6.59763 15.1834 6.20711 14.7929L3.41421 12L6.20711 9.20712C6.59763 8.8166 6.59763 8.18343 6.20711 7.79291Z\" fill=\"currentColor\"/></>,\n [\"embed\",\"code\",\"snippet\"],\n);\n\nexport const ExclamationCircleIcon = makeIcon(\n 'ExclamationCircleIcon',\n <><path d=\"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 6.5C12.5523 6.5 13 6.94772 13 7.5V12.75C13 13.3023 12.5523 13.75 12 13.75C11.4477 13.75 11 13.3023 11 12.75V7.5C11 6.94772 11.4477 6.5 12 6.5ZM13.25 16.25C13.25 16.9404 12.6904 17.5 12 17.5C11.3096 17.5 10.75 16.9404 10.75 16.25C10.75 15.5596 11.3096 15 12 15C12.6904 15 13.25 15.5596 13.25 16.25Z\" fill=\"currentColor\"/></>,\n [\"warning\",\"alert\",\"caution\",\"error\"],\n);\n\nexport const ExclamationCircleFillIcon = makeIcon(\n 'ExclamationCircleFillIcon',\n <><path d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM13.25 7.75C13.25 7.05964 12.6904 6.5 12 6.5C11.3096 6.5 10.75 7.05964 10.75 7.75V12.25C10.75 12.9404 11.3096 13.5 12 13.5C12.6904 13.5 13.25 12.9404 13.25 12.25V7.75ZM12 17.75C12.6904 17.75 13.25 17.1904 13.25 16.5C13.25 15.8096 12.6904 15.25 12 15.25C11.3096 15.25 10.75 15.8096 10.75 16.5C10.75 17.1904 11.3096 17.75 12 17.75Z\" fill=\"currentColor\"/></>,\n [\"warning\",\"alert\",\"caution\",\"error\",\"filled\"],\n);\n\nexport const ExtractIcon = makeIcon(\n 'ExtractIcon',\n <><path d=\"M7.62507 12C7.62507 11.4477 8.07279 11 8.62507 11H15.3751C15.9274 11 16.3751 11.4477 16.3751 12C16.3751 12.5523 15.9274 13 15.3751 13H8.62507C8.07279 13 7.62507 12.5523 7.62507 12ZM2.00014 12C2.00012 6.47719 6.47726 2 12.0001 2C17.5229 2 22.0001 6.47717 22.0001 12C22.0001 17.5228 17.5229 22 12.0001 22C6.47729 22 2.00016 17.5229 2.00014 12ZM12.0001 4C7.5818 4 4.00007 7.58172 4.00007 12C4.00007 16.4183 7.5818 20 12.0001 20C16.4184 20 20.0001 16.4183 20.0001 12C20.0001 7.58172 16.4184 4 12.0001 4Z\" fill=\"currentColor\"/></>,\n [\"extract\",\"icon\"],\n);\n\nexport const ExtractFillIcon = makeIcon(\n 'ExtractFillIcon',\n <><path d=\"M1.9999 11.9999C1.99994 6.47711 6.47719 2 12 2C17.5229 2 22.0001 6.47715 22.0001 12C22.0001 17.5228 17.5229 22 12 22C6.47713 22 1.99986 17.5228 1.9999 11.9999ZM8.5001 11C7.94782 11 7.5001 11.4477 7.5001 12C7.5001 12.5523 7.94782 13 8.5001 13H15.5001C16.0524 13 16.5001 12.5523 16.5001 12C16.5001 11.4477 16.0524 11 15.5001 11H8.5001Z\" fill=\"currentColor\"/></>,\n [\"extract\",\"fill\",\"icon\"],\n);\n\nexport const EyeIcon = makeIcon(\n 'EyeIcon',\n <><path d=\"M3.81697 10.4538C4.95209 8.58258 7.33427 6 11.9999 6C16.6655 6 19.0477 8.58258 20.1828 10.4538C20.7643 11.4123 20.7643 12.5877 20.1828 13.5462C19.0477 15.4174 16.6655 18 11.9999 18C7.33427 18 4.9521 15.4174 3.81697 13.5462C3.23549 12.5877 3.23549 11.4123 3.81697 10.4538ZM11.9999 4C6.41971 4 3.47685 7.15835 2.10701 9.41645C1.13881 11.0125 1.13881 12.9875 2.10701 14.5836C3.47685 16.8417 6.41971 20 11.9999 20C17.5801 20 20.523 16.8417 21.8928 14.5835C22.861 12.9875 22.861 11.0125 21.8928 9.41645C20.523 7.15835 17.5801 4 11.9999 4ZM9.9999 12C9.9999 10.8954 10.8953 10 11.9999 10C13.1045 10 13.9999 10.8954 13.9999 12C13.9999 13.1046 13.1045 14 11.9999 14C10.8953 14 9.9999 13.1046 9.9999 12ZM11.9999 8C9.79076 8 7.9999 9.79086 7.9999 12C7.9999 14.2091 9.79076 16 11.9999 16C14.209 16 15.9999 14.2091 15.9999 12C15.9999 9.79086 14.209 8 11.9999 8Z\" fill=\"currentColor\"/></>,\n [\"view\",\"eye\",\"see\",\"views\"],\n);\n\nexport const EyeFillIcon = makeIcon(\n 'EyeFillIcon',\n <><path d=\"M2.10701 9.41645C3.47685 7.15835 6.41971 4 11.9999 4C17.5801 4 20.523 7.15835 21.8928 9.41645C22.861 11.0125 22.861 12.9875 21.8928 14.5835C20.523 16.8417 17.5801 20 11.9999 20C6.41971 20 3.47685 16.8417 2.10701 14.5836C1.13881 12.9875 1.13881 11.0125 2.10701 9.41645ZM9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12ZM12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7Z\" fill=\"currentColor\"/></>,\n [\"view\",\"eye\",\"see\",\"views\",\"filled\"],\n);\n\nexport const EyeOffIcon = makeIcon(\n 'EyeOffIcon',\n <><path d=\"M3.29289 3.29289C3.68342 2.90237 4.31658 2.90237 4.70711 3.29289C8.24597 6.8313 11.7845 10.37 15.3231 13.9087C17.1177 15.7035 18.9124 17.4982 20.7071 19.2929C21.0976 19.6834 21.0976 20.3166 20.7071 20.7071C20.3166 21.0976 19.6834 21.0976 19.2929 20.7071L17.3864 18.8006C15.9496 19.5201 14.1751 20 11.9999 20C6.41971 20 3.47685 16.8417 2.10701 14.5836C1.13881 12.9875 1.13881 11.0125 2.10701 9.41645C2.70317 8.43371 3.59727 7.28046 4.87704 6.29125L3.29289 4.70711C2.90237 4.31658 2.90237 3.68342 3.29289 3.29289ZM12.2506 8.00773L15.9922 11.7493C15.8679 9.73986 14.26 8.13199 12.2506 8.00773ZM19.1723 14.9294C19.5857 14.4575 19.9182 13.9825 20.1828 13.5462C20.7643 12.5877 20.7643 11.4123 20.1828 10.4538C19.0477 8.58258 16.6655 6 11.9999 6C11.4174 6 10.8705 6.04025 10.3572 6.11435L8.66466 4.42179C9.65442 4.15536 10.7623 4 11.9999 4C17.5801 4 20.523 7.15835 21.8928 9.41645C22.861 11.0125 22.861 12.9875 21.8928 14.5835C21.5573 15.1365 21.1275 15.7435 20.5878 16.3449L19.1723 14.9294ZM6.30512 7.71936C5.13843 8.56472 4.34353 9.5858 3.81697 10.4538C3.23549 11.4123 3.23549 12.5877 3.81697 13.5462C4.9521 15.4174 7.33427 18 11.9999 18C13.5228 18 14.8025 17.7248 15.8749 17.2891L14.0319 15.4461C13.4364 15.7981 12.7417 16 11.9999 16C9.79076 16 7.9999 14.2091 7.9999 12C7.9999 11.2582 8.20185 10.5635 8.55376 9.968L6.30512 7.71936ZM10.0677 11.4819C10.0235 11.6471 9.9999 11.8208 9.9999 12C9.9999 13.1046 10.8953 14 11.9999 14C12.1791 14 12.3528 13.9764 12.518 13.9322L10.0677 11.4819Z\" fill=\"currentColor\"/></>,\n [\"invisible\",\"hide\",\"eye-off\"],\n);\n\nexport const EyeOffFillIcon = makeIcon(\n 'EyeOffFillIcon',\n <><path d=\"M3.29289 3.29289C3.68342 2.90237 4.31658 2.90237 4.70711 3.29289L20.7071 19.2929C21.0976 19.6834 21.0976 20.3166 20.7071 20.7071C20.3166 21.0976 19.6834 21.0976 19.2929 20.7071L17.3864 18.8006C15.9496 19.5201 14.1751 20 11.9999 20C6.41971 20 3.47685 16.8417 2.10701 14.5836C1.13881 12.9875 1.13881 11.0125 2.10701 9.41645C2.70317 8.43371 3.59727 7.28046 4.87704 6.29125L3.29289 4.70711C2.90237 4.31658 2.90237 3.68342 3.29289 3.29289ZM16.9503 12.7075C16.9831 12.4764 17 12.2402 17 12C17 9.23858 14.7614 7 12 7C11.7598 7 11.5236 7.01693 11.2925 7.04966L8.66466 4.42179C9.65442 4.15536 10.7623 4 11.9999 4C17.5801 4 20.523 7.15835 21.8928 9.41645C22.861 11.0125 22.861 12.9875 21.8928 14.5835C21.5573 15.1365 21.1275 15.7435 20.5878 16.3449L16.9503 12.7075ZM7.8284 9.24255C7.30488 10.0329 7 10.9808 7 11.9999C7 14.7613 9.23858 16.9999 12 16.9999C13.0191 16.9999 13.967 16.695 14.7574 16.1715L13.2934 14.7075C12.9018 14.8949 12.4631 14.9999 12 14.9999C10.3431 14.9999 9 13.6568 9 11.9999C9 11.5368 9.10495 11.0981 9.29237 10.7065L7.8284 9.24255Z\" fill=\"currentColor\"/></>,\n [\"invisible\",\"hide\",\"eye-off\",\"filled\"],\n);\n\nexport const FilterIcon = makeIcon(\n 'FilterIcon',\n <><path d=\"M16 4.875C15.3787 4.875 14.875 5.37868 14.875 6C14.875 6.62132 15.3787 7.125 16 7.125C16.6213 7.125 17.125 6.62132 17.125 6C17.125 5.37868 16.6213 4.875 16 4.875ZM13.2606 5.125C13.6308 3.96504 14.7173 3.125 16 3.125C17.2827 3.125 18.3692 3.96504 18.7394 5.125H20C20.4832 5.125 20.875 5.51675 20.875 6C20.875 6.48325 20.4832 6.875 20 6.875H18.7394C18.3692 8.03496 17.2827 8.875 16 8.875C14.7173 8.875 13.6308 8.03496 13.2606 6.875H4C3.51675 6.875 3.125 6.48325 3.125 6C3.125 5.51675 3.51675 5.125 4 5.125H13.2606ZM8 10.875C7.37868 10.875 6.875 11.3787 6.875 12C6.875 12.6213 7.37868 13.125 8 13.125C8.62132 13.125 9.125 12.6213 9.125 12C9.125 11.3787 8.62132 10.875 8 10.875ZM5.26058 11.125C5.63076 9.96504 6.71728 9.125 8 9.125C9.28272 9.125 10.3692 9.96504 10.7394 11.125H20C20.4832 11.125 20.875 11.5168 20.875 12C20.875 12.4832 20.4832 12.875 20 12.875H10.7394C10.3692 14.035 9.28272 14.875 8 14.875C6.71728 14.875 5.63076 14.035 5.26058 12.875H4C3.51675 12.875 3.125 12.4832 3.125 12C3.125 11.5168 3.51675 11.125 4 11.125H5.26058ZM16 16.875C15.3787 16.875 14.875 17.3787 14.875 18C14.875 18.6213 15.3787 19.125 16 19.125C16.6213 19.125 17.125 18.6213 17.125 18C17.125 17.3787 16.6213 16.875 16 16.875ZM13.2606 17.125C13.6308 15.965 14.7173 15.125 16 15.125C17.2827 15.125 18.3692 15.965 18.7394 17.125H20C20.4832 17.125 20.875 17.5168 20.875 18C20.875 18.4832 20.4832 18.875 20 18.875H18.7394C18.3692 20.035 17.2827 20.875 16 20.875C14.7173 20.875 13.6308 20.035 13.2606 18.875H4C3.51675 18.875 3.125 18.4832 3.125 18C3.125 17.5168 3.51675 17.125 4 17.125H13.2606Z\" fill=\"currentColor\"/></>,\n [\"filter\",\"icon\"],\n);\n\nexport const FilterFillIcon = makeIcon(\n 'FilterFillIcon',\n <><path d=\"M13.2606 5.125C13.6308 3.96504 14.7173 3.125 16 3.125C17.2827 3.125 18.3692 3.96504 18.7394 5.125H20C20.4832 5.125 20.875 5.51675 20.875 6C20.875 6.48325 20.4832 6.875 20 6.875H18.7394C18.3692 8.03496 17.2827 8.875 16 8.875C14.7173 8.875 13.6308 8.03496 13.2606 6.875H4C3.51675 6.875 3.125 6.48325 3.125 6C3.125 5.51675 3.51675 5.125 4 5.125H13.2606ZM5.26058 11.125C5.63076 9.96504 6.71728 9.125 8 9.125C9.28272 9.125 10.3692 9.96504 10.7394 11.125H20C20.4832 11.125 20.875 11.5168 20.875 12C20.875 12.4832 20.4832 12.875 20 12.875H10.7394C10.3692 14.035 9.28272 14.875 8 14.875C6.71728 14.875 5.63076 14.035 5.26058 12.875H4C3.51675 12.875 3.125 12.4832 3.125 12C3.125 11.5168 3.51675 11.125 4 11.125H5.26058ZM13.2606 17.125C13.6308 15.965 14.7173 15.125 16 15.125C17.2827 15.125 18.3692 15.965 18.7394 17.125H20C20.4832 17.125 20.875 17.5168 20.875 18C20.875 18.4832 20.4832 18.875 20 18.875H18.7394C18.3692 20.035 17.2827 20.875 16 20.875C14.7173 20.875 13.6308 20.035 13.2606 18.875H4C3.51675 18.875 3.125 18.4832 3.125 18C3.125 17.5168 3.51675 17.125 4 17.125H13.2606Z\" fill=\"currentColor\"/></>,\n [\"filter\",\"fill\",\"icon\"],\n);\n\nexport const FlagIcon = makeIcon(\n 'FlagIcon',\n <><path d=\"M4 1C4.55228 1 5 1.44772 5 2V3.5H11.5C12.8062 3.5 13.9175 4.33481 14.3293 5.5H19.5C20.6046 5.5 21.5 6.39543 21.5 7.5V15.5C21.5 16.6046 20.6046 17.5 19.5 17.5H15.5C14.1938 17.5 13.0825 16.6652 12.6707 15.5H5V22C5 22.5523 4.55228 23 4 23C3.44772 23 3 22.5523 3 22V2C3 1.44772 3.44772 1 4 1ZM14.5 7.5V14.5C14.5 15.0523 14.9477 15.5 15.5 15.5H19.5V7.5H14.5ZM5 5.5V13.5H12.5V6.5C12.5 5.94772 12.0523 5.5 11.5 5.5H5Z\" fill=\"currentColor\"/></>,\n [\"flag\",\"icon\"],\n);\n\nexport const FlagFillIcon = makeIcon(\n 'FlagFillIcon',\n <><path d=\"M5 2C5 1.44772 4.55228 1 4 1C3.44772 1 3 1.44772 3 2V22C3 22.5523 3.44772 23 4 23C4.55228 23 5 22.5523 5 22V15.5H11.6707C12.0825 16.6652 13.1938 17.5 14.5 17.5H19.5C20.6046 17.5 21.5 16.6046 21.5 15.5V7.5C21.5 6.39543 20.6046 5.5 19.5 5.5H14.3293C13.9175 4.33481 12.8062 3.5 11.5 3.5H5V2Z\" fill=\"currentColor\"/></>,\n [\"flag\",\"fill\",\"icon\"],\n);\n\nexport const GiftIcon = makeIcon(\n 'GiftIcon',\n <><path d=\"M7 22C5.34315 22 4 20.6569 4 19V13C2.89543 13 2 12.1046 2 11V8C2 6.89543 2.89543 6 4 6H7.2C7.03333 5.7 7 5.36667 7 5C7 3.35098 8.35098 2 10 2C10.7667 2 11.4333 2.3 12 2.8C12.5667 2.26667 13.2333 2 14 2C15.649 2 17 3.35098 17 5C17 5.36667 16.9333 5.66667 16.8 6H20C21.1046 6 22 6.89543 22 8V11C22 12.1046 21.1046 13 20 13V19C20 20.6569 18.6569 22 17 22H7ZM14 4C13.4425 4 13 4.44255 13 5C13 5.55745 13.4425 6 14 6C14.5575 6 15 5.55745 15 5C15 4.44255 14.5575 4 14 4ZM9 5C9 5.55745 9.44255 6 10 6C10.5575 6 11 5.55745 11 5C11 4.44255 10.5575 4 10 4C9.44255 4 9 4.44255 9 5ZM4 8V11H11V8H4ZM11 20V13H6V19C6 19.5523 6.44772 20 7 20H11ZM13 20H17C17.5523 20 18 19.5523 18 19V13H13V20ZM20 11V8H13V11H20Z\" fill=\"currentColor\"/></>,\n [\"gift\",\"icon\"],\n);\n\nexport const GiftFillIcon = makeIcon(\n 'GiftFillIcon',\n <><path d=\"M4 19C4 20.6569 5.34315 22 7 22H17C18.6569 22 20 20.6569 20 19V15H13V19C13 19.5523 12.5523 20 12 20C11.4477 20 11 19.5523 11 19V15H4V19ZM4 13H11V8H13V13H20C21.1046 13 22 12.1046 22 11V8C22 6.89543 21.1046 6 20 6H16.8C16.9333 5.66667 17 5.36667 17 5C17 3.35098 15.649 2 14 2C13.2333 2 12.5667 2.26667 12 2.8C11.4333 2.3 10.7667 2 10 2C8.35098 2 7 3.35098 7 5C7 5.36667 7.03333 5.7 7.2 6H4C2.89543 6 2 6.89543 2 8V11C2 12.1046 2.89543 13 4 13ZM13 5C13 4.44255 13.4425 4 14 4C14.5575 4 15 4.44255 15 5C15 5.55745 14.5575 6 14 6C13.4425 6 13 5.55745 13 5ZM10 6C9.44255 6 9 5.55745 9 5C9 4.44255 9.44255 4 10 4C10.5575 4 11 4.44255 11 5C11 5.55745 10.5575 6 10 6Z\" fill=\"currentColor\"/></>,\n [\"gift\",\"fill\",\"icon\"],\n);\n\nexport const GlobeIcon = makeIcon(\n 'GlobeIcon',\n <><path d=\"M12.0179 21.9999C17.5325 21.9902 21.9999 17.5169 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5169 6.46745 21.9902 11.9821 21.9999L12 22L12.0179 21.9999ZM11.6177 19.6738C10.8287 18.6725 10.5403 17.2251 10.3262 16H13.6738C13.4597 17.2251 13.1713 18.6725 12.3823 19.6738C12.0972 20.0354 11.9101 20.0447 11.6177 19.6738ZM9.24519 19.513C7.47692 18.8644 6.00128 17.6095 5.07024 16H8.29887C8.48753 17.1963 8.76505 18.3969 9.24519 19.513ZM12.3823 4.32624C13.1714 5.32751 13.4597 6.77493 13.6738 8H10.3262C10.5403 6.77493 10.8286 5.32751 11.6177 4.32624C11.8977 3.97092 12.0907 3.95618 12.3823 4.32624ZM8.29892 8H5.07025C6.00129 6.39052 7.47696 5.13549 9.24527 4.48694C8.76516 5.6031 8.48758 6.80366 8.29892 8ZM8.07165 14H4.25205C3.91609 12.6947 3.91604 11.3053 4.25203 10H8.07165C7.97751 11.2944 7.97751 12.7056 8.07165 14ZM15.9284 10H19.748C20.0839 11.3054 20.0839 12.6946 19.748 14H15.9284C16.0226 12.7056 16.0226 11.2944 15.9284 10ZM13.9228 14H10.0774C9.97265 12.6701 9.97265 11.3299 10.0774 10H13.9228C14.0275 11.3298 14.0275 12.6702 13.9228 14ZM14.7549 4.48694C16.5231 5.13551 17.9988 6.39051 18.9298 7.99998H15.7012C15.5126 6.80374 15.235 5.60299 14.7549 4.48694ZM15.7012 16H18.9298C17.9988 17.6094 16.5231 18.8644 14.7549 19.513C15.235 18.3969 15.5126 17.1963 15.7012 16Z\" fill=\"currentColor\"/></>,\n [\"globe\",\"icon\"],\n);\n\nexport const GlobeFillIcon = makeIcon(\n 'GlobeFillIcon',\n <><path d=\"M14.186 14.25H9.814C9.72736 12.7521 9.72736 11.2479 9.814 9.75H14.186C14.2726 11.2479 14.2726 12.7521 14.186 14.25ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM8.91956 4.99143C8.97634 4.73009 9.15692 4.51518 9.40997 4.42864C9.98673 4.2314 10.4967 4.78872 10.3696 5.38488C10.1878 6.23771 10.0384 7.20516 9.93263 8.25005H14.0675C13.9618 7.20514 13.8123 6.23767 13.6306 5.38483C13.5035 4.78871 14.0134 4.23141 14.5901 4.42864C14.8432 4.51517 15.0238 4.73008 15.0806 4.99141C15.2925 5.96665 15.4603 7.06542 15.5748 8.25005H18.5648C18.8748 8.25005 19.1615 8.41697 19.2895 8.69929C19.5205 9.20853 19.1197 9.75005 18.5606 9.75005H15.6885C15.7695 11.2071 15.7695 12.7929 15.6885 14.25H18.5606C19.1197 14.25 19.5205 14.7915 19.2895 15.3008C19.1615 15.5831 18.8748 15.75 18.5648 15.75H15.5748C15.4603 16.9346 15.2925 18.0334 15.0806 19.0086C15.0238 19.2699 14.8432 19.4848 14.5902 19.5714C14.0135 19.7686 13.5035 19.2113 13.6306 18.6152C13.8123 17.7623 13.9618 16.7949 14.0675 15.75H9.93263C10.0384 16.7949 10.1878 17.7623 10.3696 18.6151C10.4967 19.2113 9.98667 19.7687 9.40992 19.5714C9.1569 19.4848 8.97636 19.2699 8.91957 19.0086C8.70765 18.0334 8.5399 16.9346 8.42531 15.75H5.43534C5.12535 15.75 4.83862 15.5831 4.71058 15.3008C4.47963 14.7915 4.88031 14.25 5.43946 14.25H8.31168C8.2307 12.7929 8.2307 11.2071 8.31168 9.75005H5.43946C4.88031 9.75005 4.47963 9.20851 4.71058 8.69929C4.83862 8.41697 5.12534 8.25005 5.43534 8.25005H8.42531C8.53989 7.06543 8.70765 5.96667 8.91956 4.99143Z\" fill=\"currentColor\"/></>,\n [\"globe\",\"fill\",\"icon\"],\n);\n\nexport const HashTagIcon = makeIcon(\n 'HashTagIcon',\n <><path d=\"M10.7707 3.03736C11.3024 3.18689 11.6122 3.7391 11.4627 4.27076L10.4138 8.00001H15.7445L16.9104 3.73626C17.0561 3.20353 17.606 2.88975 18.1388 3.03542C18.6715 3.18109 18.9853 3.73104 18.8396 4.26377L17.818 8.00001H20.5C21.0523 8.00001 21.5 8.44773 21.5 9.00001C21.5 9.5523 21.0523 10 20.5 10H17.2711L16.1773 14H19C19.5523 14 20 14.4477 20 15C20 15.5523 19.5523 16 19 16H15.6305L14.4646 20.2638C14.3189 20.7965 13.769 21.1103 13.2362 20.9646C12.7035 20.8189 12.3897 20.269 12.5354 19.7363L13.557 16H8.1638L6.96265 20.2708C6.81312 20.8024 6.26091 21.1122 5.72925 20.9627C5.1976 20.8131 4.88782 20.2609 5.03735 19.7293L6.0862 16H3.5C2.94772 16 2.5 15.5523 2.5 15C2.5 14.4477 2.94772 14 3.5 14H6.6487L7.7737 10H5C4.44772 10 4 9.5523 4 9.00001C4 8.44773 4.44772 8.00001 5 8.00001H8.3362L9.53735 3.72927C9.68688 3.19761 10.2391 2.88783 10.7707 3.03736ZM9.8513 10L8.7263 14H14.1039L15.1977 10H9.8513Z\" fill=\"currentColor\"/></>,\n [\"hashtag\",\"tag\",\"channel\",\"topic\"],\n);\n\nexport const HeadphonesIcon = makeIcon(\n 'HeadphonesIcon',\n <><path d=\"M5 10.5C5 6.63401 8.13401 3.5 12 3.5C15.866 3.5 19 6.63401 19 10.5V11H16C14.3431 11 13 12.3431 13 14V16.5C13 18.1569 14.3431 19.5 16 19.5H19C19 20.0523 18.5523 21 18 21H13C12.4477 21 12 21.4477 12 22C12 22.5523 12.4477 23 13 23H18C19.6569 23 21 21.6569 21 20V10.5C21 5.52944 16.9706 1.5 12 1.5C7.02944 1.5 3 5.52944 3 10.5V16.5C3 18.1569 4.34315 19.5 6 19.5H8C9.65685 19.5 11 18.1569 11 16.5V14C11 12.3431 9.65685 11 8 11H5V10.5ZM16 13H19V17.5H16C15.4477 17.5 15 17.0523 15 16.5V14C15 13.4477 15.4477 13 16 13ZM5 16.5V13H8C8.55228 13 9 13.4477 9 14V16.5C9 17.0523 8.55228 17.5 8 17.5H6C5.44772 17.5 5 17.0523 5 16.5Z\" fill=\"currentColor\"/></>,\n [\"headphones\",\"icon\"],\n);\n\nexport const HeadphonesFillIcon = makeIcon(\n 'HeadphonesFillIcon',\n <><path d=\"M12 3.5C8.13401 3.5 5 6.63401 5 10.5V11H8C9.10457 11 10 11.8954 10 13V17C10 18.1046 9.10457 19 8 19H5C3.89543 19 3 18.1046 3 17V10.5C3 5.52944 7.02944 1.5 12 1.5C16.9706 1.5 21 5.52944 21 10.5V20C21 21.6569 19.6569 23 18 23H13C12.4477 23 12 22.5523 12 22C12 21.4477 12.4477 21 13 21H18C18.5523 21 19 20.5523 19 20V19H16C14.8954 19 14 18.1046 14 17V13C14 11.8954 14.8954 11 16 11H19V10.5C19 6.63401 15.866 3.5 12 3.5Z\" fill=\"currentColor\"/></>,\n [\"headphones\",\"fill\",\"icon\"],\n);\n\nexport const HeartIcon = makeIcon(\n 'HeartIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M17 2.5C20.3137 2.5 22.5 5.18629 22.5 8.5C22.5 13.8138 16.4975 17.0035 12.8301 21.0195C12.4178 21.4709 11.7056 21.4995 11.2559 21.1045L11.1699 21.0195C7.50249 17.0035 1.5 13.8138 1.5 8.5C1.5 5.18629 3.68629 2.5 7 2.5C9.5 2.5 11 3.5 12 5.5C13 3.5 14.5 2.5 17 2.5ZM17 4.5C16.0188 4.5 15.4062 4.69412 14.9854 4.95312C14.5668 5.21071 14.1677 5.63732 13.7891 6.39453C13.4503 7.0721 12.7575 7.5 12 7.5C11.2425 7.5 10.5497 7.0721 10.2109 6.39453C9.83233 5.63732 9.43315 5.21071 9.01465 4.95312C8.59376 4.69412 7.98122 4.5 7 4.5C5.01376 4.5 3.5 6.05394 3.5 8.5C3.5 10.3367 4.51688 11.9713 6.375 13.834C7.29556 14.7568 8.32645 15.6438 9.43066 16.6133C10.2812 17.3601 11.1709 18.1527 12 18.9922C12.8291 18.1527 13.7188 17.3601 14.5693 16.6133C15.6735 15.6438 16.7044 14.7568 17.625 13.834C19.4831 11.9713 20.5 10.3367 20.5 8.5C20.5 6.05394 18.9862 4.5 17 4.5Z\" fill=\"currentColor\"/></>,\n [\"heart\",\"like\",\"favorite\"],\n);\n\nexport const HeartFillIcon = makeIcon(\n 'HeartFillIcon',\n <><path d=\"M17 2.5C20.3137 2.5 22.5 5.18629 22.5 8.5C22.5 13.8138 16.4978 17.0037 12.8303 21.0197C12.3906 21.5013 11.6094 21.5013 11.1697 21.0197C7.50222 17.0037 1.5 13.8138 1.5 8.5C1.5 5.18629 3.68629 2.5 7 2.5C9.5 2.5 11 3.5 12 5.5C13 3.5 14.5 2.5 17 2.5Z\" fill=\"currentColor\"/></>,\n [\"heart\",\"like\",\"favorite\",\"filled\"],\n);\n\nexport const HomeIcon = makeIcon(\n 'HomeIcon',\n <><path d=\"M5 19.5H8.5V15.5C8.5 14.3954 9.39543 13.5 10.5 13.5H13.5C14.6046 13.5 15.5 14.3954 15.5 15.5V19.5H19V10.393C19 10.1011 18.8724 9.82372 18.6508 9.63374L12 3.93306L5.34921 9.63373C5.12756 9.82372 5 10.1011 5 10.393V19.5ZM5 21.5C3.89543 21.5 3 20.6046 3 19.5V10.3382C3 9.44784 3.39547 8.6035 4.07945 8.03352L10.7196 2.50003C11.4613 1.88196 12.5387 1.88195 13.2804 2.50003L19.9206 8.03352C20.6045 8.6035 21 9.44784 21 10.3382V19.5C21 20.6046 20.1046 21.5 19 21.5H15.5C14.3954 21.5 13.5 20.6046 13.5 19.5V15.5H10.5V19.5C10.5 20.6046 9.60457 21.5 8.5 21.5H5Z\" fill=\"currentColor\"/></>,\n [\"home\",\"house\"],\n);\n\nexport const HomeFillIcon = makeIcon(\n 'HomeFillIcon',\n <><path d=\"M4.5 21.5C3.67157 21.5 2.99999 20.8284 2.99999 20L2.99994 10.3381C2.99994 9.44778 3.39541 8.60344 4.07939 8.03346L10.7196 2.49997C11.4613 1.88189 12.5386 1.88189 13.2803 2.49997L19.9205 8.03346C20.6045 8.60344 20.9999 9.44778 20.9999 10.3381L21 20C21 20.8284 20.3284 21.5 19.5 21.5H15.5C14.6716 21.5 14 20.8284 14 20V16C14 15.4477 13.5523 15 13 15H11C10.4477 15 10 15.4477 10 16V20C10 20.8284 9.32843 21.5 8.5 21.5L4.5 21.5Z\" fill=\"currentColor\"/></>,\n [\"home\",\"house\",\"filled\"],\n);\n\nexport const ImageIcon = makeIcon(\n 'ImageIcon',\n <><path d=\"M2 6.5C2 4.84315 3.34315 3.5 5 3.5H19C20.6569 3.5 22 4.84315 22 6.5V17.5C22 19.1569 20.6569 20.5 19 20.5H5C3.34315 20.5 2 19.1569 2 17.5V6.5ZM19 5.5H5C4.44772 5.5 4 5.94772 4 6.5V11.5858L6.79289 8.79289C7.18342 8.40237 7.81658 8.40237 8.20711 8.79289L13.5 14.0858L15.2929 12.2929C15.6834 11.9024 16.3166 11.9024 16.7071 12.2929L20 15.5858V6.5C20 5.94771 19.5523 5.5 19 5.5ZM19.7487 18.1629L16 14.4142L14.2071 16.2071C13.8166 16.5976 13.1834 16.5976 12.7929 16.2071L7.5 10.9142L4 14.4142V17.5C4 18.0523 4.44772 18.5 5 18.5H19C19.298 18.5 19.5655 18.3697 19.7487 18.1629Z\" fill=\"currentColor\"/></>,\n [\"picture\",\"image\",\"gallery\"],\n);\n\nexport const ImageFillIcon = makeIcon(\n 'ImageFillIcon',\n <><path d=\"M2 6.5C2 4.84315 3.34315 3.5 5 3.5H19C20.6569 3.5 22 4.84315 22 6.5V17.0858L16.7071 11.7929C16.3166 11.4024 15.6834 11.4024 15.2929 11.7929L13.5 13.5858L8.20711 8.29289C7.81658 7.90237 7.18342 7.90237 6.79289 8.29289L2 13.0858V6.5ZM2 15.9142V17.5C2 19.1569 3.34315 20.5 5 20.5H19C19.9778 20.5 20.8463 20.0322 21.394 19.3082L16 13.9142L14.2071 15.7071C13.8166 16.0976 13.1834 16.0976 12.7929 15.7071L7.5 10.4142L2 15.9142Z\" fill=\"currentColor\"/></>,\n [\"picture\",\"image\",\"gallery\",\"filled\"],\n);\n\nexport const InfoIcon = makeIcon(\n 'InfoIcon',\n <><path d=\"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 11.25C12.5523 11.25 13 11.6977 13 12.25V16.5C13 17.0523 12.5523 17.5 12 17.5C11.4477 17.5 11 17.0523 11 16.5V12.25C11 11.6977 11.4477 11.25 12 11.25ZM13.5 8.5C13.5 9.32843 12.8284 10 12 10C11.1716 10 10.5 9.32843 10.5 8.5C10.5 7.67157 11.1716 7 12 7C12.8284 7 13.5 7.67157 13.5 8.5Z\" fill=\"currentColor\"/></>,\n [\"info\",\"information\",\"help\",\"about\"],\n);\n\nexport const InfoFillIcon = makeIcon(\n 'InfoFillIcon',\n <><path d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 9.5C12.8284 9.5 13.5 8.82843 13.5 8C13.5 7.17157 12.8284 6.5 12 6.5C11.1716 6.5 10.5 7.17157 10.5 8C10.5 8.82843 11.1716 9.5 12 9.5ZM13 12.25C13 11.6977 12.5523 11.25 12 11.25C11.4477 11.25 11 11.6977 11 12.25V16.5C11 17.0523 11.4477 17.5 12 17.5C12.5523 17.5 13 17.0523 13 16.5V12.25Z\" fill=\"currentColor\"/></>,\n [\"info\",\"information\",\"help\",\"about\",\"filled\"],\n);\n\nexport const InvitationIcon = makeIcon(\n 'InvitationIcon',\n <><path d=\"M13.2184 2.44716C12.4427 2.10241 11.5573 2.10241 10.7816 2.44716L3.78158 5.55827C2.6982 6.03978 2 7.11414 2 8.29971V18C2 19.6568 3.34315 21 5 21H19C20.6569 21 22 19.6568 22 18V8.29971C22 7.11414 21.3018 6.03978 20.2184 5.55827L13.2184 2.44716ZM11.5939 4.27479C11.8524 4.15987 12.1476 4.15987 12.4061 4.27479L19.4061 7.3859C19.7673 7.5464 20 7.90452 20 8.29971V9.35009L18 10.239V8.49996C18 7.94768 17.5523 7.49996 17 7.49996H7C6.44772 7.49996 6 7.94768 6 8.49996V10.239L4 9.35009V8.29971C4 7.90452 4.23273 7.5464 4.59386 7.3859L11.5939 4.27479ZM16 9.49996V11.1279L12.4061 12.7251C12.1476 12.8401 11.8524 12.8401 11.5939 12.7251L8 11.1279V9.49996H16ZM4 18V11.5387L10.7816 14.5528C11.5573 14.8975 12.4427 14.8975 13.2184 14.5528L20 11.5387V18C20 18.5522 19.5523 19 19 19H5C4.44772 19 4 18.5522 4 18Z\" fill=\"currentColor\"/></>,\n [\"invitation\",\"icon\"],\n);\n\nexport const InvitationFillIcon = makeIcon(\n 'InvitationFillIcon',\n <><path d=\"M10.7816 2.44716C11.5573 2.10241 12.4427 2.10241 13.2184 2.44716L20.2184 5.55827C21.3018 6.03978 22 7.11414 22 8.29971V8.35619L18.0002 10.1743V7.5C18.0002 6.94772 17.5525 6.5 17.0002 6.5H7.00023C6.44794 6.5 6.00023 6.94772 6.00023 7.5V10.1743L2 8.35598V8.29971C2 7.11414 2.6982 6.03978 3.78158 5.55827L10.7816 2.44716ZM2 10.5529V18C2 19.6568 3.34315 21 5 21H19C20.6569 21 22 19.6568 22 18V10.5531L13.2416 14.5342C12.4529 14.8927 11.5476 14.8927 10.7588 14.5342L2 10.5529Z\" fill=\"currentColor\"/></>,\n [\"invitation\",\"fill\",\"icon\"],\n);\n\nexport const LinkIcon = makeIcon(\n 'LinkIcon',\n <><path d=\"M16.3431 2C14.8429 2 13.404 2.59599 12.3431 3.65685L9.41421 6.58579C9.02369 6.97631 9.02369 7.60948 9.41421 8C9.80474 8.39052 10.4379 8.39052 10.8284 8L13.7574 5.07107C14.4432 4.38527 15.3733 4 16.3431 4C18.3628 4 20 5.63723 20 7.65685C20 8.62671 19.6147 9.55685 18.9289 10.2426L16 13.1716C15.6095 13.5621 15.6095 14.1953 16 14.5858C16.3905 14.9763 17.0237 14.9763 17.4142 14.5858L20.3431 11.6569C21.404 10.596 22 9.15715 22 7.65685C22 4.53266 19.4673 2 16.3431 2ZM14.5858 17.4142C14.9763 17.0237 14.9763 16.3905 14.5858 16C14.1953 15.6095 13.5621 15.6095 13.1716 16L10.2426 18.9289C9.55685 19.6147 8.62671 20 7.65685 20C5.63723 20 4 18.3628 4 16.3431C4 15.3733 4.38527 14.4432 5.07107 13.7574L8 10.8284C8.39052 10.4379 8.39052 9.80474 8 9.41421C7.60948 9.02369 6.97631 9.02369 6.58579 9.41421L3.65685 12.3431C2.59599 13.404 2 14.8429 2 16.3431C2 19.4673 4.53266 22 7.65685 22C9.15715 22 10.596 21.404 11.6569 20.3431L14.5858 17.4142ZM15.7071 8.29289C16.0976 8.68342 16.0976 9.31658 15.7071 9.70711L9.70711 15.7071C9.31658 16.0976 8.68342 16.0976 8.29289 15.7071C7.90237 15.3166 7.90237 14.6834 8.29289 14.2929L14.2929 8.29289C14.6834 7.90237 15.3166 7.90237 15.7071 8.29289Z\" fill=\"currentColor\"/></>,\n [\"link\",\"url\",\"attach\",\"external\"],\n);\n\nexport const LocationIcon = makeIcon(\n 'LocationIcon',\n <><path d=\"M12 13.5C13.3807 13.5 14.5 12.3807 14.5 11C14.5 9.61929 13.3807 8.5 12 8.5C10.6193 8.5 9.5 9.61929 9.5 11C9.5 12.3807 10.6193 13.5 12 13.5ZM12 2C7.07886 2 2.99995 5.9894 3 10.9105C3.00003 13.48 4.10921 15.9243 6.04289 17.6163L11.3415 22.2526C11.7186 22.5825 12.2815 22.5825 12.6585 22.2526L17.9571 17.6163C19.8909 15.9243 21.0001 13.4799 21 10.9104C21 5.98929 16.9211 2 12 2ZM5 10.9105C4.99996 7.09396 8.18344 4 12 4C15.8165 4 19 7.09387 19 10.9104C19.0001 12.9032 18.1398 14.7989 16.6401 16.1112L12 20.1712L7.3599 16.1111C5.86024 14.7989 5.00002 12.9032 5 10.9105Z\" fill=\"currentColor\"/></>,\n [\"location\",\"icon\"],\n);\n\nexport const LocationFillIcon = makeIcon(\n 'LocationFillIcon',\n <><path d=\"M12 2C7.07886 2 2.99995 5.9894 3 10.9105C3.00003 13.48 4.10921 15.9243 6.04289 17.6163L11.3415 22.2526C11.7186 22.5825 12.2815 22.5825 12.6585 22.2526L17.9571 17.6163C19.8909 15.9243 21.0001 13.4799 21 10.9104C21 5.98929 16.9211 2 12 2ZM14.5 11C14.5 12.3807 13.3807 13.5 12 13.5C10.6193 13.5 9.5 12.3807 9.5 11C9.5 9.61929 10.6193 8.5 12 8.5C13.3807 8.5 14.5 9.61929 14.5 11Z\" fill=\"currentColor\"/></>,\n [\"location\",\"fill\",\"icon\"],\n);\n\nexport const LockIcon = makeIcon(\n 'LockIcon',\n <><path d=\"M6.00022 22C4.34339 22 3.00025 20.6569 3.00022 19L3.00012 11C3.0001 9.34317 4.34325 8 6.00012 8L6.99984 8V6C6.99984 3.23858 9.23842 1 11.9998 1C14.7613 0.999999 16.9998 3.23858 16.9998 6V8L18.0003 8C19.6571 8 21.0003 9.34315 21.0003 11V19C21.0003 20.6569 19.6571 22 18.0003 22H6.00022ZM4.99984 19C4.99984 19.5523 5.44756 20 5.99984 20H17.9998C18.5521 20 18.9998 19.5523 18.9998 19V11C18.9998 10.4477 18.5521 10 17.9998 10H5.99984C5.44756 10 4.99984 10.4477 4.99984 11V19ZM8.99984 8H14.9998V6C14.9998 4.34315 13.6567 3 11.9998 3C10.343 3 8.99984 4.34315 8.99984 6V8ZM9.99984 15C9.99984 16.1046 10.8953 17 11.9998 17C13.1044 17 13.9998 16.1046 13.9998 15C13.9998 13.8954 13.1044 13 11.9998 13C10.8953 13 9.99984 13.8954 9.99984 15Z\" fill=\"currentColor\"/></>,\n [\"locked\",\"lock\",\"private\",\"secure\"],\n);\n\nexport const LockFillIcon = makeIcon(\n 'LockFillIcon',\n <><path d=\"M6 22C4.34315 22 3 20.6568 3 19V11C3 9.34314 4.34315 7.99999 6 7.99999H7V6.00003C7 3.2386 9.23858 1.00003 12 1.00003C14.7614 1.00003 17 3.23861 17 6.00003V7.99999H18C19.6569 7.99999 21 9.34314 21 11V19C21 20.6568 19.6569 22 18 22H6ZM10 15C10 16.1046 10.8954 17 12 17C13.1046 17 14 16.1046 14 15C14 13.8955 13.1046 13 12 13C10.8954 13 10 13.8955 10 15ZM9.5 7.99999H14.5V5.99999C14.5 4.61928 13.3807 3.49999 12 3.49999C10.6193 3.49999 9.5 4.61928 9.5 5.99999V7.99999Z\" fill=\"currentColor\"/></>,\n [\"locked\",\"lock\",\"private\",\"secure\",\"filled\"],\n);\n\nexport const LoginIcon = makeIcon(\n 'LoginIcon',\n <><path d=\"M10.5 20C10.5 19.4477 10.9477 19 11.5 19H18.5V5H11.5C10.9477 5 10.5 4.5523 10.5 4C10.5 3.4477 10.9477 3 11.5 3H18.5C19.6046 3 20.5 3.8954 20.5 5V19C20.5 20.1046 19.6046 21 18.5 21H11.5C10.9477 21 10.5 20.5523 10.5 20Z\" fill=\"currentColor\"/><path d=\"M13.7071 12.7071C13.8946 12.5196 14 12.2652 14 12C14 11.7348 13.8946 11.4804 13.7071 11.2929L9.7071 7.29289C9.3166 6.90237 8.6834 6.90237 8.2929 7.29289C7.9024 7.68342 7.9024 8.31658 8.2929 8.70711L10.5858 11H4C3.4477 11 3 11.4477 3 12C3 12.5523 3.4477 13 4 13H10.5858L8.2929 15.2929C7.9024 15.6834 7.9024 16.3166 8.2929 16.7071C8.6834 17.0976 9.3166 17.0976 9.7071 16.7071L13.7071 12.7071Z\" fill=\"currentColor\"/></>,\n [\"login\",\"signin\",\"enter\"],\n);\n\nexport const LogoutIcon = makeIcon(\n 'LogoutIcon',\n <><path d=\"M21.5 12C21.5 12.2652 21.3946 12.5196 21.2071 12.7071L17.2071 16.7071C16.8166 17.0976 16.1834 17.0976 15.7929 16.7071C15.4024 16.3166 15.4024 15.6834 15.7929 15.2929L18.0858 13H11.5C10.9477 13 10.5 12.5523 10.5 12C10.5 11.4477 10.9477 11 11.5 11H18.0858L15.7929 8.70711C15.4024 8.31658 15.4024 7.68342 15.7929 7.29289C16.1834 6.90237 16.8166 6.90237 17.2071 7.29289L21.2071 11.2929C21.3946 11.4804 21.5 11.7348 21.5 12ZM13.5 4C13.5 4.55228 13.0523 5 12.5 5H5.5V19H12.5C13.0523 19 13.5 19.4477 13.5 20C13.5 20.5523 13.0523 21 12.5 21H5.5C4.39543 21 3.5 20.1046 3.5 19V5C3.5 3.89543 4.39543 3 5.5 3H12.5C13.0523 3 13.5 3.44771 13.5 4Z\" fill=\"currentColor\"/></>,\n [\"logout\",\"signout\",\"exit\"],\n);\n\nexport const MaleFillIcon = makeIcon(\n 'MaleFillIcon',\n <><path d=\"M14 2C13.4477 2 13 2.44772 13 3C13 3.55228 13.4477 4 14 4H18.5858L14.9056 7.68014C13.551 6.62708 11.8487 6 10 6C5.58172 6 2 9.58172 2 14C2 18.4183 5.58172 22 10 22C14.4183 22 18 18.4183 18 14C18 12.1513 17.3729 10.449 16.3199 9.09436L20 5.41421V10C20 10.5523 20.4477 11 21 11C21.5523 11 22 10.5523 22 10V3C22 2.44772 21.5523 2 21 2H14ZM16 14C16 17.3137 13.3137 20 10 20C6.68629 20 4 17.3137 4 14C4 10.6863 6.68629 8 10 8C13.3137 8 16 10.6863 16 14Z\" fill=\"currentColor\"/></>,\n [\"male\",\"fill\",\"icon\"],\n);\n\nexport const MegaphoneIcon = makeIcon(\n 'MegaphoneIcon',\n <><path d=\"M20.7072 2.29289C21.0978 2.68342 21.0978 3.31658 20.7072 3.70711L18.4572 5.95711C18.0667 6.34763 17.4335 6.34763 17.043 5.95711C16.6525 5.56658 16.6525 4.93342 17.043 4.54289L19.293 2.29289C19.6835 1.90237 20.3167 1.90237 20.7072 2.29289ZM15.5821 5.23525C15.0968 3.46738 13.0503 2.66035 11.4889 3.62117L1.67495 9.66054C0.596239 10.3244 0.0506543 11.5941 0.311597 12.8336L0.68729 14.618C0.953534 15.8827 1.99358 16.8199 3.24913 16.9768L3.97915 19.4102C4.44029 20.9473 5.8551 22 7.45992 22C9.89421 22 11.6402 19.6534 10.9407 17.3217L10.8442 17H15.205C17.0202 17 18.3374 15.2724 17.8569 13.522L15.5821 5.23525ZM12.5371 5.32448C12.9629 5.06244 13.5211 5.28254 13.6534 5.76469L15.9283 14.0515C16.0593 14.5288 15.7001 15 15.205 15H3.62293C3.15005 15 2.74181 14.6688 2.64439 14.206L2.26869 12.4215C2.18171 12.0084 2.36357 11.5851 2.72314 11.3639L12.5371 5.32448ZM18.53 11.7575C18.6639 11.2217 19.2069 10.8959 19.7427 11.0299L22.7427 11.7799C23.2785 11.9138 23.6042 12.4567 23.4703 12.9925C23.3363 13.5283 22.7934 13.8541 22.2576 13.7201L19.2576 12.9701C18.7218 12.8362 18.396 12.2933 18.53 11.7575ZM22.8061 8.45203C23.3319 8.28302 23.6212 7.71978 23.4522 7.19399C23.2831 6.6682 22.7199 6.37897 22.1941 6.54797L18.6941 7.67297C18.1683 7.84198 17.8791 8.40522 18.0481 8.93101C18.2171 9.4568 18.7803 9.74603 19.3061 9.57703L22.8061 8.45203ZM5.34424 17H8.75618L9.02512 17.8964C9.33964 18.9449 8.55458 20 7.46001 20C6.73841 20 6.10225 19.5267 5.8949 18.8355L5.34424 17Z\" fill=\"currentColor\"/></>,\n [\"megaphone\",\"icon\"],\n);\n\nexport const MegaphoneFillIcon = makeIcon(\n 'MegaphoneFillIcon',\n <><path d=\"M20.7071 3.70711C21.0976 3.31658 21.0976 2.68342 20.7071 2.29289C20.3166 1.90237 19.6834 1.90237 19.2929 2.29289L17.0429 4.54289C16.6524 4.93342 16.6524 5.56658 17.0429 5.95711C17.4334 6.34763 18.0666 6.34763 18.4571 5.95711L20.7071 3.70711ZM15.4054 4.59242C15.0083 3.14598 13.3339 2.48569 12.0564 3.27181L1.37496 9.84501C0.476032 10.3982 0.0213793 11.4563 0.23883 12.4892L0.770609 15.0151C1.01417 16.1719 2.03477 17 3.21698 17H3.25597L3.97903 19.4102C4.44017 20.9473 5.85498 22 7.45979 22C9.89409 22 11.64 19.6534 10.9406 17.3217L10.844 17H15.8605C17.3457 17 18.4234 15.5866 18.0303 14.1544L15.4054 4.59242ZM5.89468 18.8355L5.34404 17H8.75597L9.0249 17.8964C9.33943 18.9449 8.55436 20 7.45979 20C6.7382 20 6.10203 19.5267 5.89468 18.8355ZM19.7425 11.0299C19.2067 10.8959 18.6638 11.2217 18.5299 11.7575C18.3959 12.2933 18.7217 12.8362 19.2575 12.9701L22.2575 13.7201C22.7933 13.8541 23.3362 13.5283 23.4701 12.9925C23.6041 12.4567 23.2783 11.9138 22.7425 11.7799L19.7425 11.0299ZM23.452 7.19399C23.621 7.71978 23.3318 8.28302 22.806 8.45203L19.306 9.57703C18.7802 9.74603 18.217 9.4568 18.048 8.93101C17.879 8.40522 18.1682 7.84198 18.694 7.67297L22.194 6.54797C22.7198 6.37897 23.283 6.6682 23.452 7.19399Z\" fill=\"currentColor\"/></>,\n [\"megaphone\",\"fill\",\"icon\"],\n);\n\nexport const MentionIcon = makeIcon(\n 'MentionIcon',\n <><path d=\"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C12.9368 20 13.834 19.8394 14.6668 19.545C15.1875 19.361 15.7588 19.6339 15.9428 20.1546C16.1269 20.6754 15.854 21.2467 15.3332 21.4307C14.2894 21.7997 13.167 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 12.8359 21.8972 13.6491 21.7031 14.4273C21.2745 16.1457 19.6348 17 18.1268 17C16.6968 17 15.4366 16.2727 14.6962 15.1677C13.8807 15.9904 12.7499 16.5 11.5 16.5C9.01472 16.5 7 14.4853 7 12C7 9.51472 9.01472 7.5 11.5 7.5C12.4251 7.5 13.285 7.77914 14 8.25777V8C14 7.44772 14.4477 7 15 7C15.5523 7 16 7.44772 16 8V12.8732C16 14.0478 16.9522 15 18.1268 15C18.9928 15 19.6166 14.5284 19.7626 13.9432C19.9175 13.3222 20 12.6714 20 12C20 7.58172 16.4183 4 12 4ZM14 12C14 10.6193 12.8807 9.5 11.5 9.5C10.1193 9.5 9 10.6193 9 12C9 13.3807 10.1193 14.5 11.5 14.5C12.8807 14.5 14 13.3807 14 12Z\" fill=\"currentColor\"/></>,\n [\"mention\",\"icon\"],\n);\n\nexport const MenuIcon = makeIcon(\n 'MenuIcon',\n <><path d=\"M4 6C4 5.44772 4.44772 5 5 5H19C19.5523 5 20 5.44772 20 6C20 6.55228 19.5523 7 19 7H5C4.44772 7 4 6.55228 4 6Z\" fill=\"currentColor\"/><path d=\"M4 12C4 11.4477 4.44772 11 5 11H19C19.5523 11 20 11.4477 20 12C20 12.5523 19.5523 13 19 13H5C4.44772 13 4 12.5523 4 12Z\" fill=\"currentColor\"/><path d=\"M4 18C4 17.4477 4.44772 17 5 17H19C19.5523 17 20 17.4477 20 18C20 18.5523 19.5523 19 19 19H5C4.44772 19 4 18.5523 4 18Z\" fill=\"currentColor\"/></>,\n [\"menu\",\"hamburger\",\"navigation\"],\n);\n\nexport const MicrophoneIcon = makeIcon(\n 'MicrophoneIcon',\n <><path d=\"M12 2C9.23858 2 7 4.23858 7 7V11C7 13.7614 9.23858 16 12 16C14.7614 16 17 13.7614 17 11V7C17 4.23858 14.7614 2 12 2ZM9 7C9 5.34315 10.3431 4 12 4C13.6569 4 15 5.34315 15 7V11C15 12.6569 13.6569 14 12 14C10.3431 14 9 12.6569 9 11V7ZM5 10.5C5 9.94772 4.55228 9.5 4 9.5C3.44772 9.5 3 9.94772 3 10.5V11C3 15.6326 6.50005 19.4476 11 19.9451V22C11 22.5523 11.4477 23 12 23C12.5523 23 13 22.5523 13 22V19.9451C17.5 19.4476 21 15.6326 21 11V10.5C21 9.94772 20.5523 9.5 20 9.5C19.4477 9.5 19 9.94772 19 10.5V11C19 14.866 15.866 18 12 18C8.13401 18 5 14.866 5 11V10.5Z\" fill=\"currentColor\"/></>,\n [\"microphone\",\"icon\"],\n);\n\nexport const MicrophoneFillIcon = makeIcon(\n 'MicrophoneFillIcon',\n <><path d=\"M7 7C7 4.23858 9.23858 2 12 2C14.7614 2 17 4.23858 17 7V11C17 13.7614 14.7614 16 12 16C9.23858 16 7 13.7614 7 11V7ZM5 10.5C5 9.94772 4.55228 9.5 4 9.5C3.44772 9.5 3 9.94772 3 10.5V11C3 15.6326 6.50005 19.4476 11 19.9451V22C11 22.5523 11.4477 23 12 23C12.5523 23 13 22.5523 13 22V19.9451C17.5 19.4476 21 15.6326 21 11V10.5C21 9.94772 20.5523 9.5 20 9.5C19.4477 9.5 19 9.94772 19 10.5V11C19 14.866 15.866 18 12 18C8.13401 18 5 14.866 5 11V10.5Z\" fill=\"currentColor\"/></>,\n [\"microphone\",\"fill\",\"icon\"],\n);\n\nexport const MixedboxIcon = makeIcon(\n 'MixedboxIcon',\n <><path d=\"M7.625 12C7.625 11.4477 8.07272 11 8.625 11H15.375C15.9273 11 16.375 11.4477 16.375 12C16.375 12.5523 15.9273 13 15.375 13H8.625C8.07272 13 7.625 12.5523 7.625 12ZM3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"mixedbox\",\"icon\"],\n);\n\nexport const MixedboxFillIcon = makeIcon(\n 'MixedboxFillIcon',\n <><path d=\"M3 6C3 4.5 4.5 3 6 3H18C19.5 3 21 4.5 21 6V18C21 19.5 19.5 21 18 21H6C4.5 21 3 19.5 3 18V6ZM8.5 11C7.94772 11 7.5 11.4477 7.5 12C7.5 12.5523 7.94772 13 8.5 13H15.5C16.0523 13 16.5 12.5523 16.5 12C16.5 11.4477 16.0523 11 15.5 11H8.5Z\" fill=\"currentColor\"/></>,\n [\"mixedbox\",\"fill\",\"icon\"],\n);\n\nexport const MoonIcon = makeIcon(\n 'MoonIcon',\n <><path d=\"M12.8519 2.03584C17.9765 2.46873 22.0001 6.76397 22.0001 12.0001C22.0001 17.5229 17.5229 22.0001 12.0001 22.0001C6.76397 22.0001 2.46873 17.9765 2.03584 12.8519C1.96617 12.0272 2.91832 11.4747 3.59979 11.9444C4.56592 12.6103 5.73594 13.0001 7.00001 13.0001C10.3138 13.0001 13.0001 10.3138 13.0001 7.00001C13.0001 5.73594 12.6103 4.56592 11.9444 3.59979C11.4747 2.91832 12.0272 1.96617 12.8519 2.03584ZM14.5758 4.42351C14.8509 5.23239 15.0001 6.09921 15.0001 7.00001C15.0001 11.4183 11.4183 15.0001 7.00001 15.0001C6.09921 15.0001 5.23239 14.8509 4.42351 14.5758C5.49552 17.7301 8.48305 20.0001 12.0001 20.0001C16.4183 20.0001 20.0001 16.4183 20.0001 12.0001C20.0001 8.48305 17.7301 5.49552 14.5758 4.42351Z\" fill=\"currentColor\"/></>,\n [\"night\",\"moon\",\"dark\",\"theme\"],\n);\n\nexport const MoonFillIcon = makeIcon(\n 'MoonFillIcon',\n <><path d=\"M12.8519 2.03584C12.0272 1.96617 11.4747 2.91832 11.9444 3.59979C12.6103 4.56592 13.0001 5.73594 13.0001 7.00001C13.0001 10.3138 10.3138 13.0001 7.00001 13.0001C5.73594 13.0001 4.56592 12.6103 3.59979 11.9444C2.91832 11.4747 1.96617 12.0272 2.03584 12.8519C2.46873 17.9765 6.76397 22.0001 12.0001 22.0001C17.5229 22.0001 22.0001 17.5229 22.0001 12.0001C22.0001 6.76397 17.9765 2.46873 12.8519 2.03584Z\" fill=\"currentColor\"/></>,\n [\"night\",\"moon\",\"dark\",\"theme\",\"filled\"],\n);\n\nexport const PlusIcon = makeIcon(\n 'PlusIcon',\n <><path d=\"M12 3C12.5523 3 13 3.44772 13 4V11H20C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13H13V20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20V13H4C3.44772 13 3 12.5523 3 12C3 11.4477 3.44772 11 4 11H11V4C11 3.44772 11.4477 3 12 3Z\" fill=\"currentColor\"/></>,\n [\"add\",\"plus\",\"new\",\"create\"],\n);\n\nexport const PlusCircleIcon = makeIcon(\n 'PlusCircleIcon',\n <><path d=\"M11 16.5C11 17.0523 11.4477 17.5 12 17.5C12.5523 17.5 13 17.0523 13 16.5V13H16.5C17.0523 13 17.5 12.5523 17.5 12C17.5 11.4477 17.0523 11 16.5 11H13V7.5C13 6.94771 12.5523 6.5 12 6.5C11.4477 6.5 11 6.94771 11 7.5V11H7.50001C6.94773 11 6.50001 11.4477 6.50001 12C6.50001 12.5523 6.94773 13 7.50001 13H11V16.5ZM22 12C22 17.5228 17.5229 22 12 22C6.4772 22 2.00006 17.5228 2.00006 12C2.00006 6.47718 6.4772 2.00003 12 2.00003C17.5229 2.00003 22 6.47718 22 12ZM4.00001 12C4.00001 16.4183 7.58176 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58176 16.4183 4.00003 12 4.00003C7.58175 4.00003 4.00001 7.58174 4.00001 12Z\" fill=\"currentColor\"/></>,\n [\"add\",\"plus\",\"create\",\"circle\"],\n);\n\nexport const PlusCircleFillIcon = makeIcon(\n 'PlusCircleFillIcon',\n <><path d=\"M11.0004 16.5C11.0004 17.0522 11.4481 17.5 12.0004 17.5C12.5527 17.5 13.0004 17.0522 13.0004 16.5V13H16.5C17.0523 13 17.5 12.5523 17.5 12C17.5 11.4477 17.0523 11 16.5 11H13.0004V7.49995C13.0004 6.94767 12.5527 6.49995 12.0004 6.49995C11.4481 6.49995 11.0004 6.94767 11.0004 7.49995V11H7.50004C6.94776 11 6.50004 11.4477 6.50004 12C6.50004 12.5523 6.94776 13 7.50004 13H11.0004V16.5ZM12.0003 22C6.47737 22 2.0001 17.5228 2.00018 11.9999C2.00026 6.47709 6.47745 2.00003 12.0002 2C17.5231 1.99997 22.0004 6.47718 22.0004 12.0001C22.0003 17.5229 17.5231 22 12.0003 22Z\" fill=\"currentColor\"/></>,\n [\"add\",\"plus\",\"create\",\"circle\",\"filled\"],\n);\n\nexport const PlusSquareIcon = makeIcon(\n 'PlusSquareIcon',\n <><path d=\"M12 7.5C12.5523 7.5 13 7.94772 13 8.5V11H15.5C16.0523 11 16.5 11.4477 16.5 12C16.5 12.5523 16.0523 13 15.5 13H13V15.5C13 16.0523 12.5523 16.5 12 16.5C11.4477 16.5 11 16.0523 11 15.5V13H8.5C7.94772 13 7.5 12.5523 7.5 12C7.5 11.4477 7.94772 11 8.5 11H11V8.5C11 7.94772 11.4477 7.5 12 7.5Z\" fill=\"currentColor\"/><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M18 3C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34315 4.34315 3 6 3H18ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"plus\",\"square\",\"icon\"],\n);\n\nexport const PlusSquareFillIcon = makeIcon(\n 'PlusSquareFillIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M18 3C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34315 4.34315 3 6 3H18ZM12 7C11.4477 7 11 7.44772 11 8V11H8C7.44772 11 7 11.4477 7 12C7 12.5523 7.44772 13 8 13H11V16C11 16.5523 11.4477 17 12 17C12.5523 17 13 16.5523 13 16V13H16C16.5523 13 17 12.5523 17 12C17 11.4477 16.5523 11 16 11H13V8C13 7.44772 12.5523 7 12 7Z\" fill=\"currentColor\"/></>,\n [\"plus\",\"square\",\"fill\",\"icon\"],\n);\n\nexport const PollIcon = makeIcon(\n 'PollIcon',\n <><path d=\"M6.63961 4.5C6.16293 4.5 5.75251 4.83646 5.65903 5.30388L4.7198 10H19.2802L18.341 5.30388C18.2475 4.83646 17.8371 4.5 17.3604 4.5H6.63961ZM19.5 12H4.5V18.5C4.5 19.0523 4.94772 19.5 5.5 19.5H18.5C19.0523 19.5 19.5 19.0523 19.5 18.5V12ZM3.69787 4.91165C3.97832 3.50938 5.20956 2.5 6.63961 2.5H17.3604C18.7904 2.5 20.0217 3.50938 20.3021 4.91165L21.4806 10.8039C21.4935 10.8685 21.5 10.9341 21.5 11V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V11C2.5 10.9341 2.5065 10.8685 2.51942 10.8039L3.69787 4.91165ZM8 7C8 6.44772 8.44772 6 9 6H15C15.5523 6 16 6.44772 16 7C16 7.55228 15.5523 8 15 8H9C8.44772 8 8 7.55228 8 7ZM15.2071 13.2929C15.5976 13.6834 15.5976 14.3166 15.2071 14.7071L11.7071 18.2071C11.3166 18.5976 10.6834 18.5976 10.2929 18.2071L8.79289 16.7071C8.40237 16.3166 8.40237 15.6834 8.79289 15.2929C9.18342 14.9024 9.81658 14.9024 10.2071 15.2929L11 16.0858L13.7929 13.2929C14.1834 12.9024 14.8166 12.9024 15.2071 13.2929Z\" fill=\"currentColor\"/></>,\n [\"poll\",\"vote\",\"ballot\"],\n);\n\nexport const PollFillIcon = makeIcon(\n 'PollFillIcon',\n <><path d=\"M3.69787 4.91165C3.97832 3.50938 5.20956 2.5 6.63961 2.5H17.3604C18.7904 2.5 20.0217 3.50938 20.3021 4.91165L21.1198 9H2.8802L3.69787 4.91165ZM2.5 11H21.5V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V11ZM9 5C8.44772 5 8 5.44772 8 6C8 6.55228 8.44772 7 9 7H15C15.5523 7 16 6.55228 16 6C16 5.44772 15.5523 5 15 5H9ZM15.2071 14.7071C15.5976 14.3166 15.5976 13.6834 15.2071 13.2929C14.8166 12.9024 14.1834 12.9024 13.7929 13.2929L11 16.0858L10.2071 15.2929C9.81658 14.9024 9.18342 14.9024 8.79289 15.2929C8.40237 15.6834 8.40237 16.3166 8.79289 16.7071L10.2929 18.2071C10.6834 18.5976 11.3166 18.5976 11.7071 18.2071L15.2071 14.7071Z\" fill=\"currentColor\"/></>,\n [\"poll\",\"vote\",\"ballot\",\"filled\"],\n);\n\nexport const ProfileIcon = makeIcon(\n 'ProfileIcon',\n <><path d=\"M12 4C9.51475 4 7.50003 6.01472 7.50003 8.5C7.50003 10.9853 9.51475 13 12 13C14.4853 13 16.5 10.9853 16.5 8.5C16.5 6.01472 14.4853 4 12 4ZM5.50003 8.5C5.50003 4.91015 8.41018 2 12 2C15.5899 2 18.5 4.91015 18.5 8.5C18.5 10.9892 17.1008 13.1516 15.0459 14.2436C16.7129 14.5365 18.0696 15.0912 19.1115 15.8962C20.7682 17.1764 21.5 18.9898 21.5 21C21.5 21.5523 21.0523 22 20.5 22C19.9477 22 19.5 21.5523 19.5 21C19.5 19.5102 18.9818 18.3236 17.8886 17.4788C16.756 16.6036 14.8823 16 12 16C9.11774 16 7.24405 16.6036 6.11145 17.4788C5.01817 18.3236 4.5 19.5102 4.5 21C4.5 21.5523 4.05228 22 3.5 22C2.94772 22 2.5 21.5523 2.5 21C2.5 18.9898 3.23183 17.1764 4.88856 15.8962C5.93041 15.0911 7.28716 14.5365 8.95412 14.2436C6.89927 13.1516 5.50003 10.9892 5.50003 8.5Z\" fill=\"currentColor\"/></>,\n [\"profile\",\"person\",\"user\",\"account\",\"mypage\"],\n);\n\nexport const ProfileFillIcon = makeIcon(\n 'ProfileFillIcon',\n <><path d=\"M12.0001 15C15.5899 15 18.5001 12.0899 18.5001 8.5C18.5001 4.91015 15.5899 2 12.0001 2C8.41023 2 5.50008 4.91015 5.50008 8.5C5.50008 12.0899 8.41023 15 12.0001 15ZM5.88573 15.2133C4.04376 16.2204 3.17576 17.8774 3.02438 20.2194C2.99478 20.6773 3.31085 21.0759 3.76038 21.168C5.15044 21.4529 8.3017 22 12.0001 22C15.6985 22 18.8497 21.4529 20.2398 21.168C20.6893 21.0759 21.0054 20.6773 20.9758 20.2194C20.8244 17.8774 19.9564 16.2204 18.1144 15.2133C17.7778 15.0292 17.3684 15.1017 17.0603 15.3303C15.6465 16.3794 13.8958 17 12.0001 17C10.1044 17 8.35364 16.3794 6.9399 15.3303C6.63177 15.1017 6.22239 15.0292 5.88573 15.2133Z\" fill=\"currentColor\"/></>,\n [\"profile\",\"person\",\"user\",\"account\",\"mypage\",\"filled\"],\n);\n\nexport const PulseIcon = makeIcon(\n 'PulseIcon',\n <><path d=\"M11.4363 7.64888C11.29 7.25857 10.9168 7 10.5 7C10.0832 7 9.71003 7.25857 9.56367 7.64888L8.307 11H6C5.44772 11 5 11.4477 5 12C5 12.5523 5.44772 13 6 13H9C9.41684 13 9.78997 12.7414 9.93633 12.3511L10.5 10.848L12.5637 16.3511C12.71 16.7414 13.0832 17 13.5 17C13.9168 17 14.29 16.7414 14.4363 16.3511L15.693 13H18C18.5523 13 19 12.5523 19 12C19 11.4477 18.5523 11 18 11H15C14.5832 11 14.21 11.2586 14.0637 11.6489L13.5 13.152L11.4363 7.64888ZM12 22C17.5228 22 21.9999 17.5228 21.9999 12C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 12C2 17.5228 6.47714 22 12 22ZM12 20C7.58169 20 3.99995 16.4182 3.99995 12C3.99995 7.58171 7.58169 4 12 4C16.4182 4 20 7.58173 20 12C20 16.4183 16.4182 20 12 20Z\" fill=\"currentColor\"/></>,\n [\"pulse\",\"icon\"],\n);\n\nexport const PulseFillIcon = makeIcon(\n 'PulseFillIcon',\n <><path d=\"M12 22C17.5228 22 21.9999 17.5228 21.9999 12C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 12C2 17.5228 6.47714 22 12 22ZM10.5 7C10.9168 7 11.29 7.25857 11.4363 7.64888L13.5 13.152L14.0637 11.6489C14.21 11.2586 14.5832 11 15 11H18C18.5523 11 19 11.4477 19 12C19 12.5523 18.5523 13 18 13H15.693L14.4363 16.3511C14.29 16.7414 13.9168 17 13.5 17C13.0832 17 12.71 16.7414 12.5637 16.3511L10.5 10.848L9.93633 12.3511C9.78997 12.7414 9.41684 13 9 13H6C5.44772 13 5 12.5523 5 12C5 11.4477 5.44772 11 6 11H8.307L9.56367 7.64888C9.71003 7.25857 10.0832 7 10.5 7Z\" fill=\"currentColor\"/></>,\n [\"pulse\",\"fill\",\"icon\"],\n);\n\nexport const RadioIcon = makeIcon(\n 'RadioIcon',\n <><path d=\"M21.9999 12C21.9999 17.5228 17.5228 22 12 22C6.47714 22 2 17.5228 2 12C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 12ZM3.99995 12C3.99995 16.4182 7.58169 20 12 20C16.4182 20 20 16.4183 20 12C20 7.58173 16.4182 4 12 4C7.58169 4 3.99995 7.58171 3.99995 12Z\" fill=\"currentColor\"/></>,\n [\"radio\",\"unselected\",\"circle\"],\n);\n\nexport const RadioFillIcon = makeIcon(\n 'RadioFillIcon',\n <><path d=\"M12 17C14.7614 17 16.9999 14.7614 16.9999 12C16.9999 9.23863 14.7614 7.00001 12 7.00001C9.2387 7.00001 7.00019 9.23852 7.00009 11.9998C6.99999 14.7613 9.23856 17 12 17ZM12.0001 22C6.47728 22 2.00001 17.5228 2.00005 11.9999C2.00009 6.47713 6.47732 2.00003 12.0001 2.00003C17.523 2.00003 22.0002 6.47721 22.0002 12.0001C22.0002 17.5229 17.523 22 12.0001 22ZM11.9998 20C16.4181 20 19.9998 16.4183 19.9998 12C19.9998 7.58177 16.4181 4.00006 11.9998 4.00006C7.58159 4.00006 3.99985 7.58177 3.99985 12C3.99985 16.4183 7.58159 20 11.9998 20Z\" fill=\"currentColor\"/></>,\n [\"radio\",\"selected\",\"circle\",\"filled\"],\n);\n\nexport const ReactIcon = makeIcon(\n 'ReactIcon',\n <><path d=\"M20 1.5C20 0.947715 19.5523 0.5 19 0.5C18.4477 0.5 18 0.947715 18 1.5V4H15.5C14.9477 4 14.5 4.44772 14.5 5C14.5 5.55228 14.9477 6 15.5 6H18V8.5C18 9.05228 18.4477 9.5 19 9.5C19.5523 9.5 20 9.05228 20 8.5V6H22.5C23.0523 6 23.5 5.55228 23.5 5C23.5 4.44772 23.0523 4 22.5 4H20V1.5ZM4 12C4 7.58172 7.58172 4 12 4C12.5523 4 13 3.55228 13 3C13 2.44772 12.5523 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 11.4477 21.5523 11 21 11C20.4477 11 20 11.4477 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM9 11.5C9.82843 11.5 10.5 10.8284 10.5 10C10.5 9.17157 9.82843 8.5 9 8.5C8.17157 8.5 7.5 9.17157 7.5 10C7.5 10.8284 8.17157 11.5 9 11.5ZM15 11.5C15.8284 11.5 16.5 10.8284 16.5 10C16.5 9.17157 15.8284 8.5 15 8.5C14.1716 8.5 13.5 9.17157 13.5 10C13.5 10.8284 14.1716 11.5 15 11.5ZM7.9453 13.6679C7.49131 13.9706 7.36572 14.602 7.66859 15.0557C7.94927 15.4674 8.34642 15.8078 8.7578 16.0821C9.47053 16.5572 10.5364 17 12 17C13.4636 17 14.5295 16.5572 15.2422 16.0821C15.6577 15.805 16.0527 15.4731 16.3321 15.0547C16.6384 14.5952 16.5142 13.9743 16.0547 13.6679C15.2074 13.1031 14.7365 14.0155 14.1328 14.4179C13.7205 14.6928 13.0364 15 12 15C10.9636 15 10.2795 14.6928 9.8672 14.4179C9.26353 14.0155 8.79261 13.1031 7.9453 13.6679Z\" fill=\"currentColor\"/></>,\n [\"react\",\"icon\"],\n);\n\nexport const ReactFillIcon = makeIcon(\n 'ReactFillIcon',\n <><path d=\"M19.5 0.5C20.0523 0.5 20.5 0.947715 20.5 1.5V3.5H22.5C23.0523 3.5 23.5 3.94772 23.5 4.5C23.5 5.05228 23.0523 5.5 22.5 5.5H20.5V7.5C20.5 8.05228 20.0523 8.5 19.5 8.5C18.9477 8.5 18.5 8.05228 18.5 7.5V5.5H16.5C15.9477 5.5 15.5 5.05228 15.5 4.5C15.5 3.94772 15.9477 3.5 16.5 3.5H18.5V1.5C18.5 0.947715 18.9477 0.5 19.5 0.5ZM14.4562 2.30388C13.6704 2.10543 12.8475 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 11.1525 21.8946 10.3296 21.6961 9.5438C21.1484 10.1321 20.3672 10.5 19.5 10.5C17.8431 10.5 16.5 9.15685 16.5 7.5C14.8431 7.5 13.5 6.15685 13.5 4.5C13.5 3.63283 13.8679 2.85159 14.4562 2.30388ZM10.5 11C10.5 11.8284 9.82843 12.5 9 12.5C8.17157 12.5 7.5 11.8284 7.5 11C7.5 10.1716 8.17157 9.5 9 9.5C9.82843 9.5 10.5 10.1716 10.5 11ZM16.5 11C16.5 11.8284 15.8284 12.5 15 12.5C14.1716 12.5 13.5 11.8284 13.5 11C13.5 10.1716 14.1716 9.5 15 9.5C15.8284 9.5 16.5 10.1716 16.5 11ZM12.0001 18C10.5365 18 9.47064 17.5572 8.75791 17.0821C8.34653 16.8078 7.94938 16.4674 7.6687 16.0557C7.36583 15.602 7.49143 14.9706 7.94541 14.668C8.57461 14.2485 8.99626 14.6437 9.41883 15.0397C9.56532 15.177 9.71192 15.3144 9.86731 15.418C10.2796 15.6928 10.9638 16 12.0001 16C13.0365 16 13.7206 15.6928 14.1329 15.418C14.2883 15.3144 14.4349 15.177 14.5814 15.0397C15.004 14.6437 15.4256 14.2485 16.0548 14.668C16.5143 14.9743 16.6385 15.5952 16.3322 16.0547C16.0528 16.4731 15.6578 16.8051 15.2423 17.0821C14.5296 17.5572 13.4638 18 12.0001 18Z\" fill=\"currentColor\"/></>,\n [\"react\",\"fill\",\"icon\"],\n);\n\nexport const RectangleIcon = makeIcon(\n 'RectangleIcon',\n <><path d=\"M3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"rectangle\",\"frame\",\"outline\"],\n);\n\nexport const RectangleFillIcon = makeIcon(\n 'RectangleFillIcon',\n <><path d=\"M3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6Z\" fill=\"currentColor\"/></>,\n [\"rectangle\",\"frame\",\"filled\"],\n);\n\nexport const RefreshIcon = makeIcon(\n 'RefreshIcon',\n <><path d=\"M6 12C6 8.68629 8.68629 6 12 6C14.2199 6 16.1599 7.20612 17.1976 9H14C13.4477 9 13 9.44772 13 10C13 10.5523 13.4477 11 14 11H19C19.5523 11 20 10.5523 20 10V5C20 4.44772 19.5523 4 19 4C18.4477 4 18 4.44772 18 5V6.70863C16.5345 5.04786 14.3902 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C15.6255 20 18.6853 17.5891 19.6686 14.2853C19.8261 13.7559 19.5247 13.1991 18.9954 13.0415C18.466 12.884 17.9092 13.1854 17.7517 13.7148C17.0138 16.1939 14.7165 18 12 18C8.68629 18 6 15.3137 6 12Z\" fill=\"currentColor\"/></>,\n [\"refresh\",\"reload\",\"sync\"],\n);\n\nexport const ReplyIcon = makeIcon(\n 'ReplyIcon',\n <><path d=\"M10.5 18.5H10C5.58172 18.5 2 14.9183 2 10.5C2 6.08172 5.58172 2.5 10 2.5H13.6056C18.2417 2.5 22 6.25831 22 10.8944C22 13.4849 20.804 15.9302 18.7593 17.5206L13.5041 21.6079C13.1774 21.862 12.7753 22 12.3614 22C11.3334 22 10.5 21.1666 10.5 20.1386V18.5ZM10.5 16.5C11.6046 16.5 12.5 17.3954 12.5 18.5V19.8552L17.5314 15.9419C19.089 14.7304 20 12.8677 20 10.8944C20 7.36288 17.1371 4.5 13.6056 4.5H10C6.68629 4.5 4 7.18629 4 10.5C4 13.8137 6.68629 16.5 10 16.5H10.5Z\" fill=\"currentColor\"/></>,\n [\"reply\",\"comment\",\"speech\"],\n);\n\nexport const ReplyFillIcon = makeIcon(\n 'ReplyFillIcon',\n <><path d=\"M9.75 2.5C5.46979 2.5 2 5.96979 2 10.25C2 14.5302 5.46979 18 9.75 18H11V20.871C11 21.4945 11.5055 22 12.129 22C12.37 22 12.6047 21.9229 12.7987 21.7799C12.9927 21.6369 18.6219 17.4891 18.6219 17.4891C20.7461 15.9239 22 13.4425 22 10.804C22 6.21781 18.2822 2.5 13.6961 2.5H9.75Z\" fill=\"currentColor\"/></>,\n [\"reply\",\"comment\",\"speech\",\"filled\"],\n);\n\nexport const ScrollTopIcon = makeIcon(\n 'ScrollTopIcon',\n <><path d=\"M4 3C4 2.44772 4.44772 2 5 2H19C19.5523 2 20 2.44772 20 3C20 3.55228 19.5523 4 19 4H5C4.44772 4 4 3.55228 4 3ZM11.293 5.29289C11.6835 4.90237 12.3167 4.90237 12.7072 5.29289L19.7072 12.2929C20.0977 12.6834 20.0977 13.3166 19.7072 13.7071C19.3167 14.0976 18.6835 14.0976 18.293 13.7071L13.0001 8.41421V22C13.0001 22.5523 12.5524 23 12.0001 23C11.4478 23 11.0001 22.5523 11.0001 22V8.41421L5.70718 13.7071C5.31666 14.0976 4.68349 14.0976 4.29297 13.7071C3.90244 13.3166 3.90244 12.6834 4.29297 12.2929L11.293 5.29289Z\" fill=\"currentColor\"/></>,\n [\"scroll-top\",\"back-to-top\",\"top\",\"upward-bar\"],\n);\n\nexport const SearchIcon = makeIcon(\n 'SearchIcon',\n <><path d=\"M10.5 2.59961C14.863 2.59961 18.4004 6.13695 18.4004 10.5C18.4004 12.3251 17.7803 14.0065 16.7412 15.3438L16.6865 15.4141L16.749 15.4766L21.1367 19.8633C21.4882 20.2148 21.4882 20.7852 21.1367 21.1367C20.7852 21.4882 20.2148 21.4882 19.8633 21.1367L15.4766 16.749L15.4141 16.6865L15.3438 16.7412C14.0065 17.7803 12.3251 18.4004 10.5 18.4004C6.13695 18.4004 2.59961 14.863 2.59961 10.5C2.59961 6.13695 6.13695 2.59961 10.5 2.59961ZM10.5 4.40039C7.13106 4.40039 4.40039 7.13106 4.40039 10.5C4.40039 13.8689 7.13106 16.5996 10.5 16.5996C12.1847 16.5996 13.7086 15.9184 14.8135 14.8135C15.9184 13.7086 16.5996 12.1847 16.5996 10.5C16.5996 7.13106 13.8689 4.40039 10.5 4.40039Z\" fill=\"currentColor\" stroke=\"currentColor\" strokeWidth=\"0.2\" strokeLinecap=\"round\"/></>,\n [\"search\",\"find\",\"magnifier\",\"lookup\"],\n);\n\nexport const SearchFillIcon = makeIcon(\n 'SearchFillIcon',\n <><path d=\"M10.5 2.59961C14.863 2.59961 18.4004 6.13695 18.4004 10.5C18.4004 12.2356 17.8392 13.8412 16.8906 15.1445L16.8408 15.2139L16.9004 15.2744L21.0635 19.4365C21.5126 19.8856 21.5126 20.6144 21.0635 21.0635C20.6144 21.5126 19.8856 21.5126 19.4365 21.0635L15.2744 16.9004L15.2139 16.8408L15.1445 16.8906C13.8412 17.8392 12.2356 18.4004 10.5 18.4004C6.13695 18.4004 2.59961 14.863 2.59961 10.5C2.59961 6.13695 6.13695 2.59961 10.5 2.59961ZM10.5 4.90039C7.40721 4.90039 4.90039 7.40721 4.90039 10.5C4.90039 13.5928 7.40721 16.0996 10.5 16.0996C12.0467 16.0996 13.4453 15.4746 14.46 14.46C15.4746 13.4453 16.0996 12.0467 16.0996 10.5C16.0996 7.40721 13.5928 4.90039 10.5 4.90039Z\" fill=\"currentColor\" stroke=\"currentColor\" strokeWidth=\"0.2\" strokeLinecap=\"round\"/></>,\n [\"search\",\"fill\",\"icon\"],\n);\n\nexport const SettingsIcon = makeIcon(\n 'SettingsIcon',\n <><path d=\"M11.0002 1C9.89566 1 9.00023 1.89543 9.00023 3V4.04484C8.12614 4.37461 7.32124 4.84397 6.61257 5.42528L5.7061 4.90193C4.74951 4.34964 3.52633 4.67739 2.97405 5.63398L1.97405 7.36603C1.42176 8.32262 1.74951 9.5458 2.7061 10.0981L3.61169 10.6209C3.53831 11.0703 3.50023 11.531 3.50023 12C3.50023 12.469 3.5383 12.9297 3.61167 13.379L2.7059 13.9019C1.74931 14.4542 1.42156 15.6774 1.97385 16.634L2.97385 18.366C3.52613 19.3226 4.74931 19.6504 5.7059 19.0981L6.61249 18.5746C7.32118 19.156 8.1261 19.6254 9.00023 19.9552V21C9.00023 22.1046 9.89566 23 11.0002 23H13.0002C14.1048 23 15.0002 22.1046 15.0002 21V19.9552C15.8743 19.6254 16.6793 19.156 17.388 18.5747L18.2946 19.0981C19.2511 19.6504 20.4743 19.3226 21.0266 18.366L22.0266 16.634C22.5789 15.6774 22.2511 14.4542 21.2946 13.9019L20.3888 13.379C20.4621 12.9297 20.5002 12.469 20.5002 12C20.5002 11.531 20.4621 11.0703 20.3888 10.6209L21.2944 10.0981C22.2509 9.54579 22.5787 8.32261 22.0264 7.36602L21.0264 5.63397C20.4741 4.67738 19.2509 4.34963 18.2944 4.90192L17.3879 5.42528C16.6792 4.84397 15.8743 4.37461 15.0002 4.04484V3C15.0002 1.89543 14.1048 1 13.0002 1H11.0002ZM11.0002 3H13.0002V4.76962C13.0002 5.21944 13.3006 5.6139 13.7342 5.73357C14.8132 6.0314 15.7812 6.60134 16.5588 7.36651C16.8793 7.68184 17.3708 7.74453 17.7602 7.51973L19.2944 6.63397L20.2944 8.36602L18.7618 9.25082C18.3727 9.4755 18.1812 9.93215 18.2937 10.3672C18.4283 10.8879 18.5002 11.4348 18.5002 12C18.5002 12.5652 18.4283 13.1121 18.2937 13.6327C18.1812 14.0678 18.3727 14.5244 18.7619 14.7491L20.2946 15.634L19.2946 17.366L17.7603 16.4802C17.3709 16.2554 16.8794 16.3181 16.5589 16.6334C15.7812 17.3986 14.8133 17.9686 13.7342 18.2664C13.3006 18.3861 13.0002 18.7806 13.0002 19.2304V21H11.0002V19.2304C11.0002 18.7806 10.6999 18.3861 10.2663 18.2664C9.18718 17.9686 8.21923 17.3986 7.44157 16.6334C7.12109 16.3181 6.62956 16.2554 6.24019 16.4802L4.7059 17.366L3.7059 15.634L5.23859 14.7491C5.62773 14.5244 5.81923 14.0677 5.70674 13.6327C5.57212 13.1121 5.50023 12.5652 5.50023 12C5.50023 11.4348 5.57213 10.8879 5.70677 10.3672C5.81926 9.93216 5.62776 9.47551 5.23861 9.25083L3.7061 8.36603L4.7061 6.63398L6.24027 7.51973C6.62963 7.74453 7.12115 7.68184 7.44163 7.36651C8.21928 6.60134 9.18721 6.0314 10.2663 5.73357C10.6999 5.6139 11.0002 5.21944 11.0002 4.76962V3ZM10 12C10 10.8954 10.8955 10 12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8955 14 10 13.1046 10 12ZM12 8C9.79089 8 8.00003 9.79086 8.00003 12C8.00003 14.2091 9.79089 16 12 16C14.2092 16 16 14.2091 16 12C16 9.79086 14.2092 8 12 8Z\" fill=\"currentColor\"/></>,\n [\"settings\",\"gear\",\"preferences\",\"configuration\"],\n);\n\nexport const SettingsFillIcon = makeIcon(\n 'SettingsFillIcon',\n <><path d=\"M9.00025 3C9.00025 1.89543 9.89569 1 11.0003 1H13.0003C14.1048 1 15.0003 1.89543 15.0003 3V4.58185C15.6955 4.86326 16.3417 5.2393 16.9231 5.6937L18.2945 4.90192C19.2511 4.34964 20.4742 4.67739 21.0265 5.63398L22.0265 7.36603C22.5788 8.32261 22.2511 9.54579 21.2945 10.0981L19.922 10.8905C20.0213 11.6214 20.0213 12.3787 19.922 13.1096L21.2944 13.9019C22.2509 14.4542 22.5787 15.6774 22.0264 16.634L21.0264 18.366C20.4741 19.3226 19.2509 19.6504 18.2944 19.0981L16.923 18.3063C16.3417 18.7607 15.6954 19.1367 15.0003 19.4181V21C15.0003 22.1046 14.1048 23 13.0003 23H11.0003C9.89568 23 9.00025 22.1046 9.00025 21V19.4183C8.30498 19.1369 7.65869 18.7608 7.07727 18.3064L5.70603 19.0981C4.74944 19.6504 3.52626 19.3226 2.97397 18.366L1.97397 16.634C1.42169 15.6774 1.74944 14.4542 2.70602 13.9019L4.07822 13.1097C3.97892 12.3787 3.97892 11.6214 4.07821 10.8904L2.7059 10.0981C1.74932 9.54579 1.42156 8.32261 1.97385 7.36602L2.97385 5.63397C3.52613 4.67738 4.74931 4.34963 5.7059 4.90192L7.07722 5.69365C7.65865 5.23921 8.30496 4.86315 9.00025 4.58174V3ZM12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\" fill=\"currentColor\"/></>,\n [\"settings\",\"gear\",\"preferences\",\"configuration\",\"filled\"],\n);\n\nexport const ShareIcon = makeIcon(\n 'ShareIcon',\n <><path d=\"M11.2929 2.79289C11.6834 2.40237 12.3166 2.40237 12.7071 2.79289L16.7071 6.79289C17.0976 7.18342 17.0976 7.81658 16.7071 8.20711C16.3166 8.59763 15.6834 8.59763 15.2929 8.20711L13 5.91421V13C13 13.5523 12.5523 14 12 14C11.4477 14 11 13.5523 11 13V5.91421L8.70711 8.20711C8.31658 8.59763 7.68342 8.59763 7.29289 8.20711C6.90237 7.81658 6.90237 7.18342 7.29289 6.79289L11.2929 2.79289ZM4 11C4.55228 11 5 11.4477 5 12V19H19V12C19 11.4477 19.4477 11 20 11C20.5523 11 21 11.4477 21 12V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V12C3 11.4477 3.44772 11 4 11Z\" fill=\"currentColor\"/></>,\n [\"share\",\"upload\",\"export\"],\n);\n\nexport const ShieldIcon = makeIcon(\n 'ShieldIcon',\n <><path d=\"M21.0002 8.09953V11.0001C21.0001 15.2383 19.2261 19.0331 13.1715 21.9665C12.4326 22.3245 11.5679 22.3245 10.829 21.9666C4.77428 19.0331 3 15.2383 3 11.0001L3.00006 8.09951C3.00009 6.51877 3.93104 5.08632 5.37554 4.44434L10.3758 2.22206C11.41 1.7624 12.5906 1.76241 13.6249 2.22208L18.6248 4.44429C20.0693 5.0863 21.0002 6.51878 21.0002 8.09953ZM5 11.0001C5.00001 12.8275 5.37783 14.4331 6.32043 15.8819C7.27168 17.3441 8.90641 18.8127 11.701 20.1667C11.8892 20.2578 12.1113 20.2578 12.2994 20.1667C15.094 18.8127 16.7286 17.3441 17.6798 15.882C18.6224 14.4331 19.0002 12.8275 19.0002 11.0001V8.09953C19.0002 7.30916 18.5348 6.59292 17.8125 6.27191L12.8126 4.0497C12.2955 3.81986 11.7052 3.81986 11.188 4.04969L6.1878 6.27197C5.46555 6.59296 5.00008 7.30918 5.00006 8.09955L5 11.0001ZM16.2071 9.29289C16.5976 9.68342 16.5976 10.3166 16.2071 10.7071L11.7071 15.2071C11.3166 15.5976 10.6834 15.5976 10.2929 15.2071L7.79289 12.7071C7.40237 12.3166 7.40237 11.6834 7.79289 11.2929C8.18342 10.9024 8.81658 10.9024 9.20711 11.2929L11 13.0858L14.7929 9.29289C15.1834 8.90237 15.8166 8.90237 16.2071 9.29289Z\" fill=\"currentColor\"/></>,\n [\"secure\",\"shield\",\"protected\",\"safety\"],\n);\n\nexport const ShieldFillIcon = makeIcon(\n 'ShieldFillIcon',\n <><path d=\"M3 11.0001L3.00006 8.09951C3.00009 6.51877 3.93104 5.08632 5.37554 4.44434L10.3758 2.22206C11.41 1.7624 12.5906 1.76241 13.6249 2.22208L18.6248 4.44429C20.0693 5.0863 21.0002 6.51878 21.0002 8.09953V11.0001C21.0001 15.2383 19.2261 19.0331 13.1715 21.9665C12.4326 22.3245 11.5679 22.3245 10.829 21.9666C4.77428 19.0331 3 15.2383 3 11.0001ZM16.2071 10.7071C16.5976 10.3166 16.5976 9.68342 16.2071 9.29289C15.8166 8.90237 15.1834 8.90237 14.7929 9.29289L11 13.0858L9.20711 11.2929C8.81658 10.9024 8.18342 10.9024 7.79289 11.2929C7.40237 11.6834 7.40237 12.3166 7.79289 12.7071L10.2929 15.2071C10.6834 15.5976 11.3166 15.5976 11.7071 15.2071L16.2071 10.7071Z\" fill=\"currentColor\"/></>,\n [\"secure\",\"shield\",\"protected\",\"safety\",\"filled\"],\n);\n\nexport const SquareStackIcon = makeIcon(\n 'SquareStackIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9 3C7.34315 3 6 4.34315 6 6H8C8 5.44772 8.44772 5 9 5H18C18.5523 5 19 5.44772 19 6V15C19 15.5523 18.5523 16 18 16V18C19.6569 18 21 16.6569 21 15V6C21 4.34315 19.6569 3 18 3H9ZM3 9C3 7.34315 4.34315 6 6 6H15C16.6569 6 18 7.34315 18 9V18C18 19.6569 16.6569 21 15 21H6C4.34315 21 3 19.6569 3 18V9ZM6 8C5.44772 8 5 8.44772 5 9V18C5 18.5523 5.44772 19 6 19H15C15.5523 19 16 18.5523 16 18V9C16 8.44772 15.5523 8 15 8H6Z\" fill=\"currentColor\"/></>,\n [\"multiple\",\"stacked\",\"layers\",\"gallery\"],\n);\n\nexport const StarIcon = makeIcon(\n 'StarIcon',\n <><path d=\"M10.638 2.56546C11.1741 1.40315 12.826 1.40315 13.3621 2.56546L15.6361 7.49539L21.0274 8.13461C22.2985 8.28532 22.809 9.8564 21.8692 10.7255L17.8833 14.4116L18.9414 19.7365C19.1908 20.992 17.8544 21.963 16.7375 21.3378L12 18.686L7.26264 21.3378C6.14573 21.963 4.80928 20.992 5.05874 19.7365L6.11681 14.4115L2.13086 10.7255C1.19111 9.85641 1.70158 8.28532 2.97267 8.13462L8.36401 7.49539L10.638 2.56546ZM12 4.38748L10.0629 8.58722C9.84439 9.06093 9.39547 9.3871 8.87742 9.44852L4.28461 9.99307L7.68019 13.1332C8.0632 13.4874 8.23467 14.0151 8.13301 14.5268L7.23165 19.0631L11.2674 16.8041C11.7226 16.5493 12.2775 16.5493 12.7327 16.8041L16.7685 19.0631L15.8671 14.5268C15.7654 14.0151 15.9369 13.4874 16.3199 13.1332L19.7155 9.99307L15.1227 9.44852C14.6046 9.3871 14.1557 9.06093 13.9372 8.58722L12 4.38748Z\" fill=\"currentColor\"/></>,\n [\"star\",\"favorite\",\"rate\"],\n);\n\nexport const StarFillIcon = makeIcon(\n 'StarFillIcon',\n <><path d=\"M13.3621 2.56546C12.826 1.40315 11.1741 1.40315 10.638 2.56546L8.36401 7.49539L2.97267 8.13462C1.70158 8.28532 1.19111 9.85641 2.13086 10.7255L6.11681 14.4115L5.05874 19.7365C4.80928 20.992 6.14573 21.963 7.26264 21.3378L12 18.686L16.7375 21.3378C17.8544 21.963 19.1908 20.992 18.9414 19.7365L17.8833 14.4116L21.8692 10.7255C22.809 9.8564 22.2985 8.28532 21.0274 8.13461L15.6361 7.49539L13.3621 2.56546Z\" fill=\"currentColor\"/></>,\n [\"star\",\"favorite\",\"rate\",\"filled\"],\n);\n\nexport const StopIcon = makeIcon(\n 'StopIcon',\n <><path d=\"M21.9999 12C21.9999 17.5228 17.5228 22 12 22C6.47714 22 2 17.5228 2 12C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 12ZM3.99995 12C3.99995 16.4182 7.58169 20 12 20C13.8487 20 15.5509 19.3729 16.9056 18.3198L5.68012 7.09433C4.62704 8.44901 3.99995 10.1513 3.99995 12ZM18.3197 16.9056C19.3728 15.5509 19.9999 13.8487 19.9999 12C19.9999 7.58173 16.4181 4 11.9999 4C10.1512 4 8.44892 4.62707 7.09424 5.68012L18.3197 16.9056Z\" fill=\"currentColor\"/></>,\n [\"stop\",\"icon\"],\n);\n\nexport const StoryIcon = makeIcon(\n 'StoryIcon',\n <><path d=\"M18.5 10.5C20.9853 10.5 23 8.48528 23 6C23 3.51472 20.9853 1.5 18.5 1.5C16.0147 1.5 14 3.51472 14 6C14 8.48528 16.0147 10.5 18.5 10.5ZM20 12.3261V18.5C20 19.0523 19.5523 19.5 19 19.5H5C4.44772 19.5 4 19.0523 4 18.5V9C4 8.44772 4.44772 8 5 8H7.5C7.87877 8 8.22504 7.786 8.39443 7.44721L9.34164 5.55279C9.51103 5.214 9.8573 5 10.2361 5H12.0764C12.1863 4.28869 12.4114 3.61546 12.7322 3H10.2361C9.09975 3 8.06096 3.64201 7.55279 4.65836L6.88197 6H5C3.34315 6 2 7.34315 2 9V18.5C2 20.1569 3.34315 21.5 5 21.5H19C20.6569 21.5 22 20.1569 22 18.5V11.4782C21.3945 11.8659 20.7204 12.1559 20 12.3261ZM9.5 13.5C9.5 12.1193 10.6193 11 12 11C13.3807 11 14.5 12.1193 14.5 13.5C14.5 14.8807 13.3807 16 12 16C10.6193 16 9.5 14.8807 9.5 13.5ZM12 9C9.51472 9 7.5 11.0147 7.5 13.5C7.5 15.9853 9.51472 18 12 18C14.4853 18 16.5 15.9853 16.5 13.5C16.5 11.0147 14.4853 9 12 9ZM18.5 3.25C18.9142 3.25 19.25 3.58579 19.25 4V5.25H20.5C20.9142 5.25 21.25 5.58579 21.25 6C21.25 6.41421 20.9142 6.75 20.5 6.75H19.25V8C19.25 8.41421 18.9142 8.75 18.5 8.75C18.0858 8.75 17.75 8.41421 17.75 8V6.75H16.5C16.0858 6.75 15.75 6.41421 15.75 6C15.75 5.58579 16.0858 5.25 16.5 5.25H17.75V4C17.75 3.58579 18.0858 3.25 18.5 3.25Z\" fill=\"currentColor\"/></>,\n [\"story\",\"reel\",\"feed\"],\n);\n\nexport const StoryFillIcon = makeIcon(\n 'StoryFillIcon',\n <><path d=\"M18.5 10.5C20.9853 10.5 23 8.48528 23 6C23 3.51472 20.9853 1.5 18.5 1.5C16.0147 1.5 14 3.51472 14 6C14 8.48528 16.0147 10.5 18.5 10.5ZM22 11.4782V18.5C22 20.1569 20.6569 21.5 19 21.5H5C3.34315 21.5 2 20.1569 2 18.5V9C2 7.34315 3.34315 6 5 6H6.88197L7.55279 4.65836C8.06096 3.64201 9.09975 3 10.2361 3H12.7322C12.2644 3.89751 12 4.91787 12 6C12 6.89573 12.1812 7.74914 12.5089 8.52558C12.3416 8.50867 12.1718 8.5 12 8.5C9.23858 8.5 7 10.7386 7 13.5C7 16.2614 9.23858 18.5 12 18.5C14.7614 18.5 17 16.2614 17 13.5C17 13.0825 16.9488 12.677 16.8524 12.2894C17.3786 12.4268 17.9308 12.5 18.5 12.5C19.7886 12.5 20.9897 12.125 22 11.4782ZM12 10.5C10.3431 10.5 9 11.8431 9 13.5C9 15.1569 10.3431 16.5 12 16.5C13.6569 16.5 15 15.1569 15 13.5C15 11.8431 13.6569 10.5 12 10.5ZM18.5 3.25C18.9142 3.25 19.25 3.58579 19.25 4V5.25H20.5C20.9142 5.25 21.25 5.58579 21.25 6C21.25 6.41421 20.9142 6.75 20.5 6.75H19.25V8C19.25 8.41421 18.9142 8.75 18.5 8.75C18.0858 8.75 17.75 8.41421 17.75 8V6.75H16.5C16.0858 6.75 15.75 6.41421 15.75 6C15.75 5.58579 16.0858 5.25 16.5 5.25H17.75V4C17.75 3.58579 18.0858 3.25 18.5 3.25Z\" fill=\"currentColor\"/></>,\n [\"story\",\"reel\",\"feed\",\"filled\"],\n);\n\nexport const SunIcon = makeIcon(\n 'SunIcon',\n <><path d=\"M13.25 2C13.25 1.30964 12.6904 0.75 12 0.75C11.3096 0.75 10.75 1.30964 10.75 2V4C10.75 4.69036 11.3096 5.25 12 5.25C12.6904 5.25 13.25 4.69036 13.25 4V2ZM5.81259 4.04507C5.32444 3.55692 4.53298 3.55692 4.04483 4.04507C3.55667 4.53323 3.55667 5.32468 4.04483 5.81284L5.45904 7.22705C5.9472 7.71521 6.73865 7.71521 7.22681 7.22705C7.71496 6.7389 7.71496 5.94744 7.22681 5.45929L5.81259 4.04507ZM19.9552 5.81284C20.4433 5.32468 20.4433 4.53323 19.9552 4.04507C19.467 3.55692 18.6756 3.55692 18.1874 4.04507L16.7732 5.45929C16.285 5.94744 16.285 6.7389 16.7732 7.22705C17.2613 7.71521 18.0528 7.71521 18.541 7.22705L19.9552 5.81284ZM2 10.75C1.30964 10.75 0.75 11.3096 0.75 12C0.75 12.6904 1.30964 13.25 2 13.25H4C4.69036 13.25 5.25 12.6904 5.25 12C5.25 11.3096 4.69036 10.75 4 10.75H2ZM20 10.75C19.3096 10.75 18.75 11.3096 18.75 12C18.75 12.6904 19.3096 13.25 20 13.25H22C22.6904 13.25 23.25 12.6904 23.25 12C23.25 11.3096 22.6904 10.75 22 10.75H20ZM7.22725 18.5408C7.71541 18.0526 7.71541 17.2611 7.22725 16.773C6.7391 16.2848 5.94764 16.2848 5.45948 16.773L4.04527 18.1872C3.55711 18.6754 3.55711 19.4668 4.04527 19.955C4.53343 20.4431 5.32488 20.4431 5.81304 19.955L7.22725 18.5408ZM18.5405 16.773C18.0524 16.2848 17.2609 16.2848 16.7728 16.773C16.2846 17.2611 16.2846 18.0526 16.7728 18.5408L18.187 19.955C18.6751 20.4431 19.4666 20.4431 19.9547 19.955C20.4429 19.4668 20.4429 18.6754 19.9547 18.1872L18.5405 16.773ZM13.25 20C13.25 19.3096 12.6904 18.75 12 18.75C11.3096 18.75 10.75 19.3096 10.75 20V22C10.75 22.6904 11.3096 23.25 12 23.25C12.6904 23.25 13.25 22.6904 13.25 22V20ZM12 7C14.7614 7 17 9.23858 17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7ZM15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12Z\" fill=\"currentColor\"/></>,\n [\"day\",\"sun\",\"light\",\"theme\"],\n);\n\nexport const SunFillIcon = makeIcon(\n 'SunFillIcon',\n <><path d=\"M13.25 2C13.25 1.30964 12.6904 0.75 12 0.75C11.3096 0.75 10.75 1.30964 10.75 2V4C10.75 4.69036 11.3096 5.25 12 5.25C12.6904 5.25 13.25 4.69036 13.25 4V2ZM5.81259 4.04507C5.32444 3.55692 4.53298 3.55692 4.04483 4.04507C3.55667 4.53323 3.55667 5.32468 4.04483 5.81284L5.45904 7.22705C5.9472 7.71521 6.73865 7.71521 7.22681 7.22705C7.71496 6.7389 7.71496 5.94744 7.22681 5.45929L5.81259 4.04507ZM19.9552 5.81284C20.4433 5.32468 20.4433 4.53323 19.9552 4.04507C19.467 3.55692 18.6756 3.55692 18.1874 4.04507L16.7732 5.45929C16.285 5.94744 16.285 6.7389 16.7732 7.22705C17.2613 7.71521 18.0528 7.71521 18.541 7.22705L19.9552 5.81284ZM2 10.75C1.30964 10.75 0.75 11.3096 0.75 12C0.75 12.6904 1.30964 13.25 2 13.25H4C4.69036 13.25 5.25 12.6904 5.25 12C5.25 11.3096 4.69036 10.75 4 10.75H2ZM20 10.75C19.3096 10.75 18.75 11.3096 18.75 12C18.75 12.6904 19.3096 13.25 20 13.25H22C22.6904 13.25 23.25 12.6904 23.25 12C23.25 11.3096 22.6904 10.75 22 10.75H20ZM7.22725 18.5408C7.71541 18.0526 7.71541 17.2611 7.22725 16.773C6.7391 16.2848 5.94764 16.2848 5.45948 16.773L4.04527 18.1872C3.55711 18.6754 3.55711 19.4668 4.04527 19.955C4.53343 20.4431 5.32488 20.4431 5.81304 19.955L7.22725 18.5408ZM18.5405 16.773C18.0524 16.2848 17.2609 16.2848 16.7728 16.773C16.2846 17.2611 16.2846 18.0526 16.7728 18.5408L18.187 19.955C18.6751 20.4431 19.4666 20.4431 19.9547 19.955C20.4429 19.4668 20.4429 18.6754 19.9547 18.1872L18.5405 16.773ZM13.25 20C13.25 19.3096 12.6904 18.75 12 18.75C11.3096 18.75 10.75 19.3096 10.75 20V22C10.75 22.6904 11.3096 23.25 12 23.25C12.6904 23.25 13.25 22.6904 13.25 22V20ZM17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7C14.7614 7 17 9.23858 17 12Z\" fill=\"currentColor\"/></>,\n [\"day\",\"sun\",\"light\",\"theme\",\"filled\"],\n);\n\nexport const TagIcon = makeIcon(\n 'TagIcon',\n <><path d=\"M15 7C13.8954 7 13 7.89543 13 9C13 10.1046 13.8954 11 15 11C16.1046 11 17 10.1046 17 9C17 7.89543 16.1046 7 15 7ZM12.4141 3C11.8836 3 11.3749 3.21071 10.9998 3.58579L2.49985 12.0858C1.7188 12.8668 1.7188 14.1332 2.49985 14.9142L9.08564 21.5C9.86669 22.281 11.133 22.281 11.9141 21.5L20.4141 13C20.7891 12.6249 20.9998 12.1162 20.9998 11.5858V5C20.9998 3.89543 20.1044 3 18.9998 3H12.4141ZM12.4141 5H18.9998V11.5858L10.4998 20.0858L3.91406 13.5L12.4141 5Z\" fill=\"currentColor\"/></>,\n [\"tag\",\"icon\"],\n);\n\nexport const TagFillIcon = makeIcon(\n 'TagFillIcon',\n <><path d=\"M10.9998 3.58579C11.3749 3.21071 11.8836 3 12.4141 3H18.9998C20.1044 3 20.9998 3.89543 20.9998 5V11.5858C20.9998 12.1162 20.7891 12.6249 20.4141 13L11.9141 21.5C11.133 22.281 9.86669 22.281 9.08564 21.5L2.49985 14.9142C1.7188 14.1332 1.7188 12.8668 2.49985 12.0858L10.9998 3.58579ZM15 11C16.1046 11 17 10.1046 17 9C17 7.89543 16.1046 7 15 7C13.8954 7 13 7.89543 13 9C13 10.1046 13.8954 11 15 11Z\" fill=\"currentColor\"/></>,\n [\"tag\",\"fill\",\"icon\"],\n);\n\nexport const ThumbUpIcon = makeIcon(\n 'ThumbUpIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.50102 2.35995C8.95773 1.54682 9.81968 1 10.794 1C12.4393 1 13.6632 2.52007 13.313 4.12693L12.5272 7.82927H18.4064C19.7819 7.82927 21.013 8.68286 21.4953 9.97101C22.0138 11.3557 21.4648 12.547 20.6455 13.6394C21.2926 15.1642 21.2294 16.7689 20.1768 18.1175C20.7607 19.2853 20.7811 20.6252 19.9708 21.7056C19.3597 22.5204 18.4005 23 17.382 23H10.745C5.91528 23 2 19.0847 2 14.255C2 11.6056 3.24422 9.2106 4.91391 7.35624C6.34958 5.7618 7.57751 4.00416 8.50102 2.35995ZM10.2448 3.33937C9.25303 5.10509 7.94008 6.98432 6.40019 8.69452C4.95087 10.3041 4 12.2431 4 14.255C4 17.9802 7.01985 21 10.745 21H17.382C18.2823 21 18.892 20.0201 18.4875 19.2111C18.0525 18.341 18.0567 17.5832 18.6861 16.7769C19.1332 16.2041 19.2344 15.4339 18.9505 14.765C18.4676 13.627 18.7576 12.8233 19.4451 11.9066C19.7108 11.5523 19.7776 11.087 19.6223 10.6723C19.4324 10.1653 18.9478 9.82927 18.4064 9.82927H12.4971C11.2409 9.82927 10.3037 8.67229 10.5645 7.44348L11.3586 3.70203C11.5116 3.00522 10.5617 2.77519 10.2448 3.33937Z\" fill=\"currentColor\"/></>,\n [\"thumb-up\",\"like\",\"upvote\",\"approve\"],\n);\n\nexport const ThumbUpFillIcon = makeIcon(\n 'ThumbUpFillIcon',\n <><path d=\"M10.794 1.5C10.0107 1.5 9.31032 1.94007 8.93696 2.6048C7.99639 4.27939 6.7472 6.06743 5.28548 7.69081C3.67088 9.48398 2.5 11.765 2.5 14.255C2.5 18.8086 6.19142 22.5 10.745 22.5H17.382C18.2432 22.5 19.0541 22.0945 19.5708 21.4056C20.1926 20.5765 20.2926 19.4673 19.8292 18.5403C19.6409 18.1638 19.595 18.0503 19.8686 17.6998C20.6509 16.6974 20.8281 15.3495 20.3313 14.179C20.0759 13.5771 20.2555 13.326 20.6451 12.8066C21.2177 12.043 21.3617 11.0402 21.0271 10.1463C20.6178 9.05346 19.5734 8.32927 18.4064 8.32927H12.4971C12.1947 8.32927 11.9691 8.05074 12.0318 7.75491L12.8238 4.02365L12.8242 4.02185C13.1074 2.72613 12.1207 1.5 10.794 1.5Z\" fill=\"currentColor\"/></>,\n [\"thumb-up\",\"like\",\"upvote\",\"approve\",\"filled\"],\n);\n\nexport const TopicIcon = makeIcon(\n 'TopicIcon',\n <><path d=\"M2.5 4.5C2.5 3.39543 3.39543 2.5 4.5 2.5H9C10.1046 2.5 11 3.39543 11 4.5V9C11 10.1046 10.1046 11 9 11H4.5C3.39543 11 2.5 10.1046 2.5 9V4.5ZM9 4.5H4.5V9H9V4.5ZM13 4.5C13 3.39543 13.8954 2.5 15 2.5H19.5C20.6046 2.5 21.5 3.39543 21.5 4.5V9C21.5 10.1046 20.6046 11 19.5 11H15C13.8954 11 13 10.1046 13 9V4.5ZM19.5 4.5H15V9H19.5V4.5ZM2.5 15C2.5 13.8954 3.39543 13 4.5 13H9C10.1046 13 11 13.8954 11 15V19.5C11 20.6046 10.1046 21.5 9 21.5H4.5C3.39543 21.5 2.5 20.6046 2.5 19.5V15ZM9 15H4.5V19.5H9V15ZM13 15C13 13.8954 13.8954 13 15 13H19.5C20.6046 13 21.5 13.8954 21.5 15V19.5C21.5 20.6046 20.6046 21.5 19.5 21.5H15C13.8954 21.5 13 20.6046 13 19.5V15ZM19.5 15H15V19.5H19.5V15Z\" fill=\"currentColor\"/></>,\n [\"topic\",\"grid\",\"category\"],\n);\n\nexport const TopicFillIcon = makeIcon(\n 'TopicFillIcon',\n <><path d=\"M11 4.5C11 3.39543 10.1046 2.5 9 2.5H4.5C3.39543 2.5 2.5 3.39543 2.5 4.5V9C2.5 10.1046 3.39543 11 4.5 11H9C10.1046 11 11 10.1046 11 9V4.5ZM21.5 4.5C21.5 3.39543 20.6046 2.5 19.5 2.5H15C13.8954 2.5 13 3.39543 13 4.5V9C13 10.1046 13.8954 11 15 11H19.5C20.6046 11 21.5 10.1046 21.5 9V4.5ZM11 15C11 13.8954 10.1046 13 9 13H4.5C3.39543 13 2.5 13.8954 2.5 15V19.5C2.5 20.6046 3.39543 21.5 4.5 21.5H9C10.1046 21.5 11 20.6046 11 19.5V15ZM21.5 15C21.5 13.8954 20.6046 13 19.5 13H15C13.8954 13 13 13.8954 13 15V19.5C13 20.6046 13.8954 21.5 15 21.5H19.5C20.6046 21.5 21.5 20.6046 21.5 19.5V15Z\" fill=\"currentColor\"/></>,\n [\"topic\",\"grid\",\"category\",\"filled\"],\n);\n\nexport const TrashIcon = makeIcon(\n 'TrashIcon',\n <><path d=\"M11 10C11 9.44772 10.5523 9 10 9C9.44772 9 9 9.44772 9 10V16C9 16.5523 9.44772 17 10 17C10.5523 17 11 16.5523 11 16V10ZM14 9C14.5523 9 15 9.44772 15 10V16C15 16.5523 14.5523 17 14 17C13.4477 17 13 16.5523 13 16V10C13 9.44772 13.4477 9 14 9ZM9 2C7.34315 2 6 3.34315 6 5H4C3.44772 5 3 5.44772 3 6C3 6.55228 3.44772 7 4 7H4.06445L4.93998 20.133C5.01002 21.1836 5.88263 22 6.93555 22H17.0644C18.1174 22 18.99 21.1836 19.06 20.133L19.9356 7H20C20.5523 7 21 6.55229 21 6C21 5.44772 20.5523 5 20 5H18C18 3.34315 16.6569 2 15 2H9ZM6.93555 20L6.06889 7H17.9311L17.0644 20H6.93555ZM8 5C8 4.44772 8.44772 4 9 4H15C15.5523 4 16 4.44772 16 5H8Z\" fill=\"currentColor\"/></>,\n [\"trash\",\"icon\"],\n);\n\nexport const TrashFillIcon = makeIcon(\n 'TrashFillIcon',\n <><path d=\"M6 5C6 3.34315 7.34315 2 9 2H15C16.6569 2 18 3.34315 18 5H20C20.5523 5 21 5.44772 21 6C21 6.55229 20.5523 7 20 7H19.9356L19.06 20.133C18.99 21.1836 18.1174 22 17.0644 22H6.93555C5.88263 22 5.01002 21.1836 4.93998 20.133L4.06445 7H4C3.44772 7 3 6.55228 3 6C3 5.44772 3.44772 5 4 5H6ZM15 10C15 9.44772 14.5523 9 14 9C13.4477 9 13 9.44772 13 10V17C13 17.5523 13.4477 18 14 18C14.5523 18 15 17.5523 15 17V10ZM9 4C8.44772 4 8 4.44772 8 5H16C16 4.44772 15.5523 4 15 4H9ZM11 10C11 9.44772 10.5523 9 10 9C9.44772 9 9 9.44772 9 10V17C9 17.5523 9.44772 18 10 18C10.5523 18 11 17.5523 11 17V10Z\" fill=\"currentColor\"/></>,\n [\"trash\",\"fill\",\"icon\"],\n);\n\nexport const UpvoteIcon = makeIcon(\n 'UpvoteIcon',\n <><path d=\"M11.6623 3.85076C12.0331 2.73844 13.0835 2 14.2411 2C15.7446 2 17 3.21678 17 4.74342C17 5.85021 16.8617 6.91251 16.6805 8H19C20.6569 8 22 9.34315 22 11C22 13.7854 21.4653 16.5294 20.4314 19.1142C19.9758 20.2531 18.8726 21 17.6459 21H5C3.34315 21 2 19.6569 2 18V11C2 9.34315 3.34315 8 5 8H9.03162C10.1009 6.71688 11.1239 5.46616 11.6623 3.85076ZM8.5 10H5C4.44772 10 4 10.4477 4 11V18C4 18.5523 4.44772 19 5 19H8.5V10ZM10.5 19H17.6459C18.0548 19 18.4225 18.751 18.5744 18.3714C19.5141 16.0222 20 13.5317 20 11C20 10.4477 19.5523 10 19 10H15.5C14.8914 10 14.4136 9.4359 14.5136 8.8356C14.7413 7.46941 15 6.13253 15 4.74342C15 4.34433 14.6632 4 14.2411 4C13.9294 4 13.6535 4.20171 13.5597 4.48321C12.9289 6.37544 11.7536 7.85772 10.5 9.36205V19Z\" fill=\"currentColor\"/></>,\n [\"upvote\",\"icon\"],\n);\n\nexport const UpvoteFillIcon = makeIcon(\n 'UpvoteFillIcon',\n <><path d=\"M11.7863 3.47851C12.0806 2.59556 12.9069 2 13.8376 2C15.0318 2 15.9999 2.96808 15.9999 4.16228C16 5.5 15.5 8.00001 15.5 8.00001L18.9999 8C20.6567 8 21.9999 9.34315 21.9999 11C21.9999 13.7854 21.4652 16.5294 20.4312 19.1142C19.9756 20.2531 18.8725 21 17.6458 21H9V8C10.1252 6.75513 11.2446 5.1035 11.7863 3.47851ZM7 21H4.00011C2.89555 21 2.00012 20.1046 2.00011 19L2 10C1.99999 8.89545 2.89542 8.00001 3.99999 8.00001L7 8V21Z\" fill=\"currentColor\"/></>,\n [\"upvote\",\"fill\",\"icon\"],\n);\n\nexport const VerifiedIcon = makeIcon(\n 'VerifiedIcon',\n <><path d=\"M13.2973 1.79161C12.5498 1.15459 11.4504 1.15459 10.7029 1.79161L8.5364 3.63786L5.69898 3.86429C4.71996 3.94242 3.94254 4.71984 3.86441 5.69886L3.63799 8.53628L1.79174 10.7027C1.15471 11.4503 1.15471 12.5497 1.79174 13.2972L3.63799 15.4637L3.86441 18.3011C3.94254 19.2801 4.71996 20.0575 5.69898 20.1357L8.5364 20.3621L10.7029 22.2083C11.4504 22.8454 12.5498 22.8454 13.2973 22.2083L15.4638 20.3621L18.3012 20.1357C19.2802 20.0575 20.0577 19.2801 20.1358 18.3011L20.3622 15.4637L22.2085 13.2972C22.8455 12.5497 22.8455 11.4503 22.2085 10.7027L20.3622 8.53628L20.1358 5.69886C20.0577 4.71984 19.2802 3.94242 18.3012 3.86429L15.4638 3.63786L13.2973 1.79161ZM9.83364 5.16009L12.0001 3.31384L14.1666 5.16009C14.4869 5.43307 14.8852 5.59805 15.3047 5.63153L18.1421 5.85795L18.3686 8.69537C18.402 9.11491 18.567 9.51319 18.84 9.83351L20.6862 12L18.84 14.1664C18.567 14.4868 18.402 14.8851 18.3686 15.3046L18.1421 18.142L15.3047 18.3684C14.8852 18.4019 14.4869 18.5669 14.1666 18.8399L12.0001 20.6861L9.83364 18.8399C9.51331 18.5669 9.11503 18.4019 8.6955 18.3684L5.85808 18.142L5.63165 15.3046C5.59817 14.8851 5.4332 14.4868 5.16021 14.1664L3.31396 12L5.16021 9.83351C5.4332 9.51319 5.59817 9.11491 5.63165 8.69537L5.85808 5.85795L8.6955 5.63153C9.11503 5.59805 9.51331 5.43307 9.83364 5.16009ZM16.2072 10.7071C16.5977 10.3166 16.5977 9.6834 16.2072 9.29287C15.8167 8.90235 15.1835 8.90235 14.793 9.29287L11.0001 13.0858L9.20721 11.2929C8.81669 10.9023 8.18352 10.9023 7.793 11.2929C7.40247 11.6834 7.40247 12.3166 7.793 12.7071L10.293 15.2071C10.6835 15.5976 11.3167 15.5976 11.7072 15.2071L16.2072 10.7071Z\" fill=\"currentColor\"/></>,\n [\"verified\",\"badge\",\"approved\",\"trusted\"],\n);\n\nexport const VerifiedFillIcon = makeIcon(\n 'VerifiedFillIcon',\n <><path d=\"M10.7029 1.79161C11.4504 1.15459 12.5498 1.15459 13.2973 1.79161L15.4638 3.63786L18.3012 3.86429C19.2802 3.94242 20.0577 4.71984 20.1358 5.69886L20.3622 8.53628L22.2085 10.7027C22.8455 11.4503 22.8455 12.5497 22.2085 13.2972L20.3622 15.4637L20.1358 18.3011C20.0577 19.2801 19.2802 20.0575 18.3012 20.1357L15.4638 20.3621L13.2973 22.2083C12.5498 22.8454 11.4504 22.8454 10.7029 22.2083L8.5364 20.3621L5.69898 20.1357C4.71996 20.0575 3.94254 19.2801 3.86441 18.3011L3.63799 15.4637L1.79174 13.2972C1.15471 12.5497 1.15471 11.4503 1.79174 10.7027L3.63799 8.53628L3.86441 5.69886C3.94254 4.71984 4.71996 3.94242 5.69898 3.86429L8.5364 3.63786L10.7029 1.79161ZM16.2071 10.7071C16.5976 10.3166 16.5976 9.68342 16.2071 9.29289C15.8166 8.90237 15.1834 8.90237 14.7929 9.29289L11 13.0858L9.20711 11.2929C8.81658 10.9024 8.18342 10.9024 7.79289 11.2929C7.40237 11.6834 7.40237 12.3166 7.79289 12.7071L10.2929 15.2071C10.6834 15.5976 11.3166 15.5976 11.7071 15.2071L16.2071 10.7071Z\" fill=\"currentColor\"/></>,\n [\"verified\",\"badge\",\"approved\",\"trusted\",\"filled\"],\n);\n\nexport const XIcon = makeIcon(\n 'XIcon',\n <><path d=\"M4.29289 4.29289C4.68342 3.90237 5.31658 3.90237 5.70711 4.29289L12 10.5858L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.4142 12L19.7071 18.2929C20.0976 18.6834 20.0976 19.3166 19.7071 19.7071C19.3166 20.0976 18.6834 20.0976 18.2929 19.7071L12 13.4142L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.5858 12L4.29289 5.70711C3.90237 5.31658 3.90237 4.68342 4.29289 4.29289Z\" fill=\"currentColor\"/></>,\n [\"close\",\"dismiss\",\"x\",\"cancel\"],\n);\n\nexport const XCircleIcon = makeIcon(\n 'XCircleIcon',\n <><path d=\"M7.70029 16.2999C8.08689 16.6865 8.71369 16.6865 9.10029 16.2999L12.0003 13.3999L14.9003 16.2999C15.2869 16.6865 15.9137 16.6865 16.3003 16.2999C16.6869 15.9133 16.6869 15.2865 16.3003 14.8999L13.4003 11.9999L16.3003 9.09991C16.6869 8.71331 16.6869 8.08651 16.3003 7.69991C15.9137 7.31331 15.2869 7.31331 14.9003 7.69991L12.0003 10.5999L9.10029 7.69991C8.71369 7.31331 8.08689 7.31331 7.70029 7.69991C7.31369 8.08651 7.31369 8.71331 7.70029 9.09991L10.6003 11.9999L7.70029 14.8999C7.31369 15.2865 7.31369 15.9133 7.70029 16.2999ZM12.0002 22C6.47731 22 2.00002 17.5228 2.00006 11.9999C2.0001 6.47708 6.47732 1.99997 12.0001 1.99997C17.523 1.99997 22.0003 6.47717 22.0002 12C22.0002 17.5228 17.523 21.9999 12.0002 22ZM12.0003 19.9999C16.4186 19.9999 20.0003 16.4182 20.0003 11.9999C20.0003 7.58163 16.4186 3.99991 12.0003 3.99991C7.58201 3.99991 4.00029 7.58163 4.00029 11.9999C4.00029 16.4182 7.58201 19.9999 12.0003 19.9999Z\" fill=\"currentColor\"/></>,\n [\"close\",\"dismiss\",\"clear\",\"circle\",\"x\",\"cancel\"],\n);\n\nexport const XCircleFillIcon = makeIcon(\n 'XCircleFillIcon',\n <><path d=\"M7.70015 16.3C8.08675 16.6866 8.71355 16.6866 9.10015 16.3L12.0001 13.4L14.9002 16.3C15.2867 16.6866 15.9136 16.6866 16.3001 16.3C16.6867 15.9134 16.6867 15.2866 16.3001 14.9L13.4002 12L16.3001 9.1C16.6867 8.7134 16.6867 8.0866 16.3001 7.7C15.9136 7.3134 15.2867 7.3134 14.9001 7.7L12.0001 10.6L9.10015 7.7C8.71355 7.3134 8.08675 7.3134 7.70015 7.7C7.31355 8.0866 7.31355 8.7134 7.70015 9.1L10.6002 12L7.70015 14.9C7.31355 15.2866 7.31355 15.9134 7.70015 16.3ZM12 22C6.47714 22 2 17.5229 2 12C2 6.47721 6.47712 2.00006 11.9999 2.00003C17.5229 2 22.0001 6.47725 22 12.0002C21.9999 17.523 17.5228 22 12 22Z\" fill=\"currentColor\"/></>,\n [\"close\",\"dismiss\",\"clear\",\"circle\",\"x\",\"cancel\",\"filled\"],\n);\n\n/* Semantic aliases — call sites importing these names continue to\n resolve; the underlying glyph is the canonical icon. */\nexport const CopyIcon = DuplicateIcon;\nexport const MicIcon = MicrophoneIcon;\nexport const ViewIcon = EyeIcon;\nexport const ViewFillIcon = EyeFillIcon;\nexport const VisibleIcon = EyeIcon;\nexport const VisibleFillIcon = EyeFillIcon;\nexport const InvisibleIcon = EyeOffIcon;\nexport const InvisibleFillIcon = EyeOffFillIcon;\nexport const AddIcon = PlusIcon;\nexport const AddCircleIcon = PlusCircleIcon;\nexport const AddCircleFillIcon = PlusCircleFillIcon;\nexport const AddSquareIcon = PlusSquareIcon;\nexport const AddSquareFillIcon = PlusSquareFillIcon;\nexport const CloseIcon = XIcon;\nexport const CloseCircleIcon = XCircleIcon;\nexport const CloseCircleFillIcon = XCircleFillIcon;\nexport const CollapseIcon = ChevronUpIcon;\nexport const ExpandIcon = ChevronDownIcon;\nexport const BackwardIcon = ChevronLeftIcon;\nexport const BackwardCircleIcon = ChevronLeftCircleIcon;\nexport const BackwardCircleFillIcon = ChevronLeftCircleFillIcon;\nexport const ForwardIcon = ChevronRightIcon;\nexport const ForwardCircleIcon = ChevronRightCircleIcon;\nexport const ForwardCircleFillIcon = ChevronRightCircleFillIcon;\nexport const DownwardIcon = ArrowDownIcon;\nexport const DownwardCircleIcon = ArrowDownCircleIcon;\nexport const DownwardCircleFillIcon = ArrowDownCircleFillIcon;\nexport const UpwardIcon = ArrowUpIcon;\nexport const UpwardCircleIcon = ArrowUpCircleIcon;\nexport const UpwardCircleFillIcon = ArrowUpCircleFillIcon;\nexport const NotificationIcon = BellIcon;\nexport const NotificationFillIcon = BellFillIcon;\nexport const NotificationOffIcon = BellOffIcon;\nexport const NotificationOffFillIcon = BellOffFillIcon;\nexport const MoreIcon = EllipsisHorizontalIcon;\nexport const MoreFillIcon = EllipsisHorizontalFillIcon;\nexport const DayIcon = SunIcon;\nexport const DayFillIcon = SunFillIcon;\nexport const NightIcon = MoonIcon;\nexport const NightFillIcon = MoonFillIcon;\nexport const CompanyIcon = BuildingIcon;\nexport const CompanyFillIcon = BuildingFillIcon;\nexport const LockedIcon = LockIcon;\nexport const LockedFillIcon = LockFillIcon;\nexport const SecureIcon = ShieldIcon;\nexport const SecureFillIcon = ShieldFillIcon;\nexport const WarningIcon = ExclamationCircleIcon;\nexport const WarningFillIcon = ExclamationCircleFillIcon;\nexport const VoiceIcon = MicrophoneIcon;\nexport const VoiceFillIcon = MicrophoneFillIcon;\nexport const WebIcon = GlobeIcon;\nexport const WebFillIcon = GlobeFillIcon;\nexport const PhotoIcon = CameraIcon;\nexport const PhotoFillIcon = CameraFillIcon;\nexport const PictureIcon = ImageIcon;\nexport const PictureFillIcon = ImageFillIcon;\nexport const InsightsIcon = ChartBarIcon;\nexport const InsightsFillIcon = ChartBarFillIcon;\nexport const MultipleIcon = SquareStackIcon;\n\nexport const icons = {\n ArrowDownIcon,\n ArrowDownCircleIcon,\n ArrowDownCircleFillIcon,\n ArrowUpIcon,\n ArrowUpCircleIcon,\n ArrowUpCircleFillIcon,\n BarIcon,\n BarCircleIcon,\n BarCircleFillIcon,\n BarFillIcon,\n BellIcon,\n BellFillIcon,\n BellOffIcon,\n BellOffFillIcon,\n BookmarkIcon,\n BookmarkFillIcon,\n BriefcaseIcon,\n BriefcaseFillIcon,\n BuildingIcon,\n BuildingFillIcon,\n CameraIcon,\n CameraFillIcon,\n CampusIcon,\n CampusFillIcon,\n CardIcon,\n CardFillIcon,\n ChartBarIcon,\n ChartBarFillIcon,\n ChatIcon,\n ChatFillIcon,\n CheckCircleIcon,\n CheckCircleFillIcon,\n CheckboxIcon,\n CheckboxFillIcon,\n CheckedIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronLeftCircleIcon,\n ChevronLeftCircleFillIcon,\n ChevronRightIcon,\n ChevronRightCircleIcon,\n ChevronRightCircleFillIcon,\n ChevronUpIcon,\n CompensationIcon,\n CompensationFillIcon,\n ComposeIcon,\n ComposeFillIcon,\n DiscoverIcon,\n DiscoverFillIcon,\n DocsIcon,\n DocsFillIcon,\n DownloadIcon,\n DownvoteIcon,\n DownvoteFillIcon,\n DuplicateIcon,\n DuplicateFillIcon,\n EllipsisHorizontalIcon,\n EllipsisHorizontalFillIcon,\n EmbedIcon,\n ExclamationCircleIcon,\n ExclamationCircleFillIcon,\n ExtractIcon,\n ExtractFillIcon,\n EyeIcon,\n EyeFillIcon,\n EyeOffIcon,\n EyeOffFillIcon,\n FilterIcon,\n FilterFillIcon,\n FlagIcon,\n FlagFillIcon,\n GiftIcon,\n GiftFillIcon,\n GlobeIcon,\n GlobeFillIcon,\n HashTagIcon,\n HeadphonesIcon,\n HeadphonesFillIcon,\n HeartIcon,\n HeartFillIcon,\n HomeIcon,\n HomeFillIcon,\n ImageIcon,\n ImageFillIcon,\n InfoIcon,\n InfoFillIcon,\n InvitationIcon,\n InvitationFillIcon,\n LinkIcon,\n LocationIcon,\n LocationFillIcon,\n LockIcon,\n LockFillIcon,\n LoginIcon,\n LogoutIcon,\n MaleFillIcon,\n MegaphoneIcon,\n MegaphoneFillIcon,\n MentionIcon,\n MenuIcon,\n MicrophoneIcon,\n MicrophoneFillIcon,\n MixedboxIcon,\n MixedboxFillIcon,\n MoonIcon,\n MoonFillIcon,\n PlusIcon,\n PlusCircleIcon,\n PlusCircleFillIcon,\n PlusSquareIcon,\n PlusSquareFillIcon,\n PollIcon,\n PollFillIcon,\n ProfileIcon,\n ProfileFillIcon,\n PulseIcon,\n PulseFillIcon,\n RadioIcon,\n RadioFillIcon,\n ReactIcon,\n ReactFillIcon,\n RectangleIcon,\n RectangleFillIcon,\n RefreshIcon,\n ReplyIcon,\n ReplyFillIcon,\n ScrollTopIcon,\n SearchIcon,\n SearchFillIcon,\n SettingsIcon,\n SettingsFillIcon,\n ShareIcon,\n ShieldIcon,\n ShieldFillIcon,\n SquareStackIcon,\n StarIcon,\n StarFillIcon,\n StopIcon,\n StoryIcon,\n StoryFillIcon,\n SunIcon,\n SunFillIcon,\n TagIcon,\n TagFillIcon,\n ThumbUpIcon,\n ThumbUpFillIcon,\n TopicIcon,\n TopicFillIcon,\n TrashIcon,\n TrashFillIcon,\n UpvoteIcon,\n UpvoteFillIcon,\n VerifiedIcon,\n VerifiedFillIcon,\n XIcon,\n XCircleIcon,\n XCircleFillIcon,\n CopyIcon,\n MicIcon,\n ViewIcon,\n ViewFillIcon,\n VisibleIcon,\n VisibleFillIcon,\n InvisibleIcon,\n InvisibleFillIcon,\n AddIcon,\n AddCircleIcon,\n AddCircleFillIcon,\n AddSquareIcon,\n AddSquareFillIcon,\n CloseIcon,\n CloseCircleIcon,\n CloseCircleFillIcon,\n CollapseIcon,\n ExpandIcon,\n BackwardIcon,\n BackwardCircleIcon,\n BackwardCircleFillIcon,\n ForwardIcon,\n ForwardCircleIcon,\n ForwardCircleFillIcon,\n DownwardIcon,\n DownwardCircleIcon,\n DownwardCircleFillIcon,\n UpwardIcon,\n UpwardCircleIcon,\n UpwardCircleFillIcon,\n NotificationIcon,\n NotificationFillIcon,\n NotificationOffIcon,\n NotificationOffFillIcon,\n MoreIcon,\n MoreFillIcon,\n DayIcon,\n DayFillIcon,\n NightIcon,\n NightFillIcon,\n CompanyIcon,\n CompanyFillIcon,\n LockedIcon,\n LockedFillIcon,\n SecureIcon,\n SecureFillIcon,\n WarningIcon,\n WarningFillIcon,\n VoiceIcon,\n VoiceFillIcon,\n WebIcon,\n WebFillIcon,\n PhotoIcon,\n PhotoFillIcon,\n PictureIcon,\n PictureFillIcon,\n InsightsIcon,\n InsightsFillIcon,\n MultipleIcon,\n};\n","import { forwardRef } from 'react';\nimport { joinClasses } from '../spec-utils.js';\nimport { CheckboxIcon, CheckboxFillIcon } from '../icons/index.js';\n\n/* Check Button — Text Button shape with a required leading 24px checkbox\n glyph that flips outline → fill with the `checked` state, plus an\n optional 16px middle icon between the checkbox and the label. Sizes,\n appearances, and state recipe mirror `button/text` rung-for-rung; the\n structural delta is the always-present checkbox slot and the per-element\n 4px gap (`sys.layout.inline.xs`).\n\n Renders as `<button>` with toggle semantics — `aria-pressed` exposes the\n checked state. Consumers wire `onClick` to flip state; this is NOT a\n form checkbox input. */\nexport const ButtonCheck = forwardRef(function ButtonCheck({\n children,\n state,\n size = 'medium',\n appearance = 'default',\n checked = false,\n disabled = false,\n icon,\n className,\n ...rest\n}, ref) {\n const isDisabled = disabled || state === 'disabled';\n const cls = joinClasses(\n 'chorus-button--check',\n `chorus-button--check--size-${size}`,\n `chorus-button--check--appearance-${appearance}`,\n className,\n );\n const CheckGlyph = checked ? CheckboxFillIcon : CheckboxIcon;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cls}\n data-force-state={state}\n disabled={isDisabled}\n aria-pressed={checked}\n {...rest}\n >\n <span className=\"chorus-button--check__checkbox\" aria-hidden=\"true\">\n <CheckGlyph />\n </span>\n {icon ? (\n <span className=\"chorus-button--check__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"chorus-button--check__label\">{children}</span>\n </button>\n );\n});\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Chip\",\n \"family\": \"chip\",\n \"subcomponent\": \"filter\",\n \"description\": \"Selectable chip. Capsule-shaped toggle. Unselected = transparent fill + hairline outline so the chip adopts whatever surface it sits on; selected = inverse fill.\",\n \"element\": \"button\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"filter\"\n },\n \"selected\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Required, single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Facet glyph before label.\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"trailingIcon\": {\n \"required\": false,\n \"description\": \"Directional / dismiss glyph after label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.400\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"radius\": \"sys.radius.full\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"background\": \"transparent\",\n \"label\": \"sys.color.onSurface\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.outlineVariant\"\n },\n \"note\": \"Transparent fill so the chip adopts whatever surface sits behind it (page, raised card, sheet) without pinning to a fixed neutral step.\"\n },\n \"selected\": {\n \"background\": \"sys.color.inverseSurface\",\n \"label\": \"sys.color.inverseOnSurface\",\n \"border\": null\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the chip is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"radius below sys.radius.full — filter chip is always a fully-rounded pill\",\n \"filled gray rest state with no `selected` semantics — rest carries hairline outline + onSurface label; selected carries inverseSurface fill + inverseOnSurface label\",\n \"border declared via `border:` instead of inset box-shadow stroke\",\n \"trailing chevron / icon as a separate hit area — the entire chip is the click target\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Chip\",\n \"family\": \"chip\",\n \"subcomponent\": \"tag\",\n \"description\": \"Informational chip. Square-cornered metadata label. Passive (or dismissable via trailing ×). No leading icon. Two appearances: `default` paints the translucent `sys.color.scrimSubtle` scrim (~8% inverse-tone overlay — black in light, white in dark) so the tag adopts whatever surface sits behind it; `accent` paints a tonal pale-primary container (`sys.color.primaryContainer`) with primary label for tags that need to pop against the surface.\",\n \"element\": \"span\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"tag\"\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Dismiss glyph (×); when present, chip becomes interactive.\"\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Required, single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"trailingIcon\": {\n \"required\": false,\n \"description\": \"Dismiss / opt-out glyph after the label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.300\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.xs\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"radius\": \"sys.radius.sm\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"sys.color.scrimSubtle\",\n \"label\": \"sys.color.onSurface\",\n \"border\": null,\n \"default\": true,\n \"note\": \"Background is the translucent inverse-tone scrim (`sys.color.scrimSubtle` — black 8% in light mode, white 8% in dark) so the tag harmonises with whatever surface sits behind it — body, raised card, BottomSheet — instead of pinning to a fixed neutral step. Same Banner-style fill used by Progress track, StatusTag neutral, and Skeleton; sys-color is theme-aware so a single token resolves correctly in both modes.\"\n },\n \"accent\": {\n \"background\": \"sys.color.primaryContainer\",\n \"label\": \"sys.color.primary\",\n \"border\": null,\n \"note\": \"Tonal accent: pale primary container background with primary label. Sys-color tokens are theme-aware, so no separate dark binding is needed — the resolved tokens pick the right values per theme. Use for tags that should pop against the surface (e.g. Popular Tags in compose, highlighted hashtags) where the default overlay is too quiet.\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the chip is in. Applies only when the chip is interactive (a dismiss trailingIcon is present). The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"radius set to sys.radius.full (pill) — tag is a sys.radius.sm square-cornered metadata pill, not a capsule chip\",\n \"tag rendered as a clickable commit — tag is a metadata pill, not an action; the click target lives on the surrounding card / row\",\n \"raw color override on a tag — tone is the surrounding container's secondary text color\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Button\",\n \"family\": \"button\",\n \"subcomponent\": \"toggle\",\n \"description\": \"Toolbar-footprint toggle button. Inactive (urging) = primary fill that invites the commit; active (committed) = transparent fill with hairline outline that records the commit without re-soliciting it. Transparent fill lets the button sit on any host surface tier (page surface, surfaceContainer, surfaceContainerHigh) without re-painting a background that would clash with the host. Follow ↔ Following, Subscribe ↔ Subscribed, Join ↔ Joined.\",\n \"element\": \"button\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"toggle\"\n },\n \"active\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Whether the action has been committed. Maps to aria-pressed.\"\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Required, single line. Swap between the urging verb (\\\"Follow\\\") and the committed participle (\\\"Following\\\") at the consumer.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Context glyph before the label — most often a check appearing on commit.\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"trailingIcon\": {\n \"required\": false,\n \"description\": \"Directional / destination glyph after the label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.400\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"radius\": \"sys.radius.full\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"background\": \"sys.color.primary\",\n \"label\": \"sys.color.onPrimary\",\n \"border\": null\n },\n \"selected\": {\n \"background\": \"transparent\",\n \"label\": \"sys.color.onSurface\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.outlineVariant\"\n }\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the button is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"active state painted with sys.color.primary fill — active is transparent + hairline outline (the active state recedes, not asserts)\",\n \"active state painted with any opaque surface fill (surface, surfaceContainer, surfaceContainerHigh) — the committed form is transparent so the host surface shows through; do not re-bind to a tier'd fill\",\n \"rest state without an explicit `active={false}` — toggle is a binary contract, never tristate\",\n \"manual width override that breaks the full-card stretch when used inside ProfileCarousel.followAction\"\n ]\n}\n","import filterSpec from '../../../schema/components/chip/filter.spec.json';\nimport tagSpec from '../../../schema/components/chip/tag.spec.json';\nimport toggleButtonSpec from '../../../schema/components/button/toggle.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nconst SPECS = {\n filter: filterSpec,\n tag: tagSpec,\n toggle: toggleButtonSpec,\n};\n\nfunction pickAppearance(spec, appearance) {\n const appearances = spec.appearances || {};\n if (appearance && appearances[appearance]) return appearances[appearance];\n const defaultKey = Object.keys(appearances).find((k) => appearances[k]?.default);\n if (defaultKey) return appearances[defaultKey];\n return appearances.default ?? Object.values(appearances)[0];\n}\n\nfunction visualStyle(spec, selected, appearance) {\n const v = spec.selectionStates\n ? spec.selectionStates[selected ? 'selected' : 'unselected']\n : pickAppearance(spec, appearance);\n const style = {\n '--chip-label': tokenToCss(v.label),\n '--chip-border-width': v.border ? tokenToCss(v.border.width) : '0px',\n '--chip-border-color': v.border ? tokenToCss(v.border.color) : 'transparent',\n };\n // Skip inline `--chip-bg` when the appearance carries a separate dark binding\n // (`backgroundDark`). Inline custom properties always beat CSS class rules,\n // which would otherwise defeat the `[data-theme=\"dark\"]` override. The CSS\n // class is the source of truth for those appearances. For sys-color-driven\n // appearances (single theme-aware token) inline emission is safe.\n if (!v.backgroundDark) {\n style['--chip-bg'] = tokenToCss(v.background);\n }\n return style;\n}\n\nfunction sizingStyle(spec) {\n return {\n '--chip-min-height': tokenToCss(spec.sizing.minHeight),\n '--chip-padding-block': tokenToCss(spec.sizing.paddingBlock),\n '--chip-padding-inline': tokenToCss(spec.sizing.paddingInline),\n '--chip-label-inset': tokenToCss(spec.sizing.labelInset),\n '--chip-slot-gap': tokenToCss(spec.sizing.slotGap),\n '--chip-radius': tokenToCss(spec.sizing.radius),\n '--chip-icon-size': tokenToCss(spec.sizing.iconSize),\n '--chip-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--chip-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--chip-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--chip-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--chip-focus-outer-width': tokenToCss(spec.focusIndicator.ring.outerWidth),\n '--chip-focus-outer-color': tokenToCss(spec.focusIndicator.ring.outerColor),\n '--chip-focus-inset-width': tokenToCss(spec.focusIndicator.ring.insetWidth),\n '--chip-focus-inset-color': tokenToCss(spec.focusIndicator.ring.insetColor),\n ...typoStyles(spec.sizing.labelTypo),\n };\n}\n\nexport function Chip({\n variant = 'filter',\n appearance,\n selected = false,\n state,\n leadingIcon,\n trailingIcon,\n disabled = false,\n className,\n children,\n style,\n ...rest\n}) {\n const spec = SPECS[variant] ?? filterSpec;\n const isToggle = Boolean(spec.selectionStates);\n const isSelected = isToggle && selected;\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const appearanceClass =\n !isToggle && appearance ? `chorus-chip--${spec.subcomponent}--${appearance}` : null;\n const className_ = joinClasses(\n 'chorus-chip',\n `chorus-chip--${spec.subcomponent}`,\n appearanceClass,\n isSelected && 'is-selected',\n className,\n );\n const composedStyle = { ...sizingStyle(spec), ...visualStyle(spec, isSelected, appearance), ...style };\n\n if (isToggle) {\n const ariaPressed = variant === 'toggle' ? Boolean(selected) : undefined;\n return (\n <button\n type=\"button\"\n className={className_}\n disabled={isDisabled}\n data-force-state={forcedState ?? undefined}\n aria-pressed={ariaPressed}\n style={composedStyle}\n {...rest}\n >\n {leadingIcon ? <span className=\"chorus-chip__icon\" aria-hidden=\"true\">{leadingIcon}</span> : null}\n {children ? <span className=\"chorus-chip__label\">{children}</span> : null}\n {trailingIcon ? <span className=\"chorus-chip__icon\" aria-hidden=\"true\">{trailingIcon}</span> : null}\n </button>\n );\n }\n\n // Tag — interactive only when trailingIcon is present (dismiss).\n const interactive = Boolean(trailingIcon);\n const Tag = interactive ? 'button' : 'span';\n return (\n <Tag\n {...(interactive ? { type: 'button', disabled: isDisabled } : {})}\n className={className_}\n data-force-state={forcedState ?? undefined}\n style={composedStyle}\n {...rest}\n >\n <span className=\"chorus-chip__label\">{children}</span>\n {trailingIcon ? <span className=\"chorus-chip__icon\" aria-hidden=\"true\">{trailingIcon}</span> : null}\n </Tag>\n );\n}\n","import { Chip } from '../Chip.jsx';\nimport { joinClasses } from '../spec-utils.js';\n\n/* Toolbar Button is a one-shot inline action whose `default` appearance\n delegates verbatim to Filter chip's unselected state — same min-height,\n padding, radius, label rung, icon size, hover/pressed/focus overlays,\n and focus ring. The semantic divergence (Toolbar Button fires an\n action; Filter toggles a selection) lives in the consumer's handler,\n not in the rendered DOM, so we let the chip render the chrome.\n\n `appearance=\"accent\"` adds a class modifier that overrides the\n `--chip-bg` / `--chip-label` plumbing vars to a primary fill — for the\n one Toolbar Button on a surface that IS the commit affordance (Page\n bar's \"Save\", sheet's \"Confirm\"). `appearance=\"inverse\"` swaps in the\n inverse-cluster pair (`inverseSurface` / `inverseOnSurface`) so the\n button reads as part of an inverse host (snackbars, coach-marks). The\n size, padding, radius, focus ring, and state overlays still come from\n Filter chip — only the colour pair flips. */\nexport function ButtonToolbar({ appearance = 'default', className, style, ...rest }) {\n const cls = joinClasses(\n appearance !== 'default' && `chorus-button--toolbar--${appearance}`,\n className,\n );\n /* The override goes through `style` (not a CSS class) because Chip\n emits the chip plumbing vars (`--chip-bg`, `--chip-label`,\n `--chip-border-color`) inline at render time, and CSS class rules\n can't beat inline-style specificity. Chip merges this `style` last\n in its `composedStyle`, so our overrides win cleanly. The\n `chorus-button--toolbar--<appearance>` class is kept as a static-\n markup parity hook — see styles.css. */\n let pairStyle = null;\n if (appearance === 'accent') {\n pairStyle = {\n '--chip-bg': 'var(--sys-color-primary)',\n '--chip-label': 'var(--sys-color-onPrimary)',\n '--chip-border-color': 'transparent',\n };\n } else if (appearance === 'inverse') {\n pairStyle = {\n '--chip-bg': 'var(--sys-color-inverseSurface)',\n '--chip-label': 'var(--sys-color-inverseOnSurface)',\n '--chip-border-color': 'transparent',\n };\n }\n return (\n <Chip\n variant=\"filter\"\n className={cls}\n style={pairStyle ? { ...pairStyle, ...style } : style}\n {...rest}\n />\n );\n}\n","import { Chip } from '../Chip.jsx';\n\n/* Toggle Button is a reversible-commit button whose visual chrome is the\n Toolbar Button / Filter capsule with a different container/label pair\n on each side of the toggle (primary fill when urging, surface+hairline\n when committed). The DOM and CSS-var machinery are identical to Chip's\n selectionStates branch, so we delegate verbatim and just rename the\n public boolean from `selected` (chip selection) to `active` (action\n committed). aria-pressed is set inside Chip when variant === 'toggle'. */\nexport function ButtonToggle({ active = false, ...rest }) {\n return <Chip variant=\"toggle\" selected={active} {...rest} />;\n}\n","import { forwardRef } from 'react';\nimport { ButtonStandard } from './internal/ButtonStandard.jsx';\nimport { ButtonFab } from './internal/ButtonFab.jsx';\nimport { ButtonIcon } from './internal/ButtonIcon.jsx';\nimport { ButtonText } from './internal/ButtonText.jsx';\nimport { ButtonCheck } from './internal/ButtonCheck.jsx';\nimport { ButtonToolbar } from './internal/ButtonToolbar.jsx';\nimport { ButtonToggle } from './internal/ButtonToggle.jsx';\n\nconst VARIANTS = {\n fab: ButtonFab,\n icon: ButtonIcon,\n text: ButtonText,\n check: ButtonCheck,\n toolbar: ButtonToolbar,\n toggle: ButtonToggle,\n};\n\nexport const Button = forwardRef(function Button({ variant, ...rest }, ref) {\n const Impl = (variant && VARIANTS[variant]) || ButtonStandard;\n return <Impl ref={ref} {...rest} />;\n});\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\n/* Shared scrim-anchored-interruption hooks. Both Dialog and BottomSheet\n render into a portal at document.body, lock body scroll while open,\n and resolve their portal target on mount (so SSR doesn't reach for\n `document`). The behavior is identical, so it lives here instead of\n being copy-pasted in each component. */\n\nexport function useBodyScrollLock(locked) {\n useEffect(() => {\n if (!locked) return undefined;\n const previous = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => { document.body.style.overflow = previous; };\n }, [locked]);\n}\n\nexport function usePortalTarget() {\n const [target, setTarget] = useState(null);\n useEffect(() => {\n setTarget(typeof document !== 'undefined' ? document.body : null);\n }, []);\n return target;\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from './Button.jsx';\nimport { ChevronLeftIcon } from './icons/index.js';\nimport { useBodyScrollLock, usePortalTarget } from './internal/scrimPortal.js';\nimport { joinClasses } from './spec-utils.js';\n\nexport function BottomSheet({\n open,\n onClose,\n title,\n body,\n children,\n primaryAction,\n secondaryAction,\n onBack,\n backLabel = 'Back',\n inline = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const target = usePortalTarget();\n const scrimRef = useRef(null);\n const cardRef = useRef(null);\n const contentRef = useRef(null);\n const lastFocusedRef = useRef(null);\n const [overflowing, setOverflowing] = useState(false);\n useBodyScrollLock(open && !inline);\n\n /* Mirror the virtual-keyboard height to the scrim as a bottom padding\n via --bottom-sheet-keyboard-inset. visualViewport shrinks when the\n keyboard opens; the inset translates the card up because the scrim\n uses align-items: flex-end. */\n useEffect(() => {\n if (!open || inline) return undefined;\n const vv = typeof window !== 'undefined' ? window.visualViewport : null;\n if (!vv) return undefined;\n const apply = () => {\n const inset = Math.max(0, window.innerHeight - vv.height - vv.offsetTop);\n scrimRef.current?.style.setProperty('--bottom-sheet-keyboard-inset', `${inset}px`);\n };\n apply();\n vv.addEventListener('resize', apply);\n vv.addEventListener('scroll', apply);\n return () => {\n vv.removeEventListener('resize', apply);\n vv.removeEventListener('scroll', apply);\n };\n }, [open, inline]);\n\n useEffect(() => {\n if (!open) return undefined;\n const el = contentRef.current;\n if (!el) return undefined;\n const measure = () => setOverflowing(el.scrollHeight > el.clientHeight + 1);\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n for (const child of el.children) ro.observe(child);\n return () => ro.disconnect();\n }, [open, children]);\n\n useEffect(() => {\n if (!open) return undefined;\n lastFocusedRef.current = document.activeElement;\n const primary = cardRef.current?.querySelector('.chorus-bottom-sheet__actions button');\n // preventScroll: focusing must not scroll the page to the button — body is\n // scroll-locked when modal, and inline (docs) renders would jump on mount.\n primary?.focus({ preventScroll: true });\n return () => {\n const last = lastFocusedRef.current;\n // preventScroll here too: restoring focus on close (and on dev\n // StrictMode's mount→cleanup→remount) must not scroll the page to the\n // trigger — stacked inline sheets would otherwise jump on mount.\n if (last && typeof last.focus === 'function') last.focus({ preventScroll: true });\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) return undefined;\n const onKey = (e) => { if (e.key === 'Escape') onClose?.(); };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, onClose]);\n\n if (!open) return null;\n if (!inline && !target) return null;\n\n const tree = (\n <div\n ref={scrimRef}\n className={joinClasses('chorus-bottom-sheet__scrim', inline && 'chorus-bottom-sheet__scrim--inline', className)}\n role=\"presentation\"\n onClick={() => onClose?.()}\n >\n <div\n ref={cardRef}\n className=\"chorus-bottom-sheet__card\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel ?? title}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n <div className=\"chorus-bottom-sheet__handle\" aria-hidden=\"true\" />\n <div ref={contentRef} className=\"chorus-bottom-sheet__content\">\n {title ? (\n onBack ? (\n <div className=\"chorus-bottom-sheet__title-row\">\n <Button\n variant=\"icon\"\n icon={<ChevronLeftIcon />}\n aria-label={backLabel}\n onClick={onBack}\n />\n <h2 className=\"chorus-bottom-sheet__title\">{title}</h2>\n </div>\n ) : (\n <h2 className=\"chorus-bottom-sheet__title\">{title}</h2>\n )\n ) : null}\n {body ? <p className=\"chorus-bottom-sheet__body\">{body}</p> : null}\n {children}\n </div>\n {primaryAction || secondaryAction ? (\n <div className={joinClasses('chorus-bottom-sheet__actions', overflowing && 'is-elevated')}>\n {primaryAction ? (\n <Button appearance=\"primary\" size=\"large\" fullWidth onClick={primaryAction.onClick}>\n {primaryAction.label}\n </Button>\n ) : null}\n {secondaryAction ? (\n <Button appearance=\"secondary\" size=\"large\" fullWidth onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n\n return inline ? tree : createPortal(tree, target);\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Bubble — always-on annotation bubble. A small pill-shaped label with\n a caret/tail pointing at an anchor UI element. Distinct from Tooltip\n on three axes: persistent (Tooltip is transient), lower visual\n priority (no elevation, smaller padding, single line), and never\n occludes neighbours (host positions it inline). Ships with a default\n `sys.color.primary` / `sys.color.onPrimary` fill — both theme-stable\n so the bubble reads identically in light and dark mode. Operations\n re-tint per campaign by setting `--bubble-fill` and `--bubble-ink`\n on the bubble's inline style; the tail inherits the fill via\n `background: inherit`, so one declaration covers both surfaces.\n See schema/components/bubble/bubble.md. */\n\nexport function Bubble({\n children,\n tailSide = 'top',\n tailAlign = 'center',\n className,\n ...rest\n}) {\n return (\n <div\n className={joinClasses('chorus-bubble', className)}\n data-tail-side={tailSide}\n data-tail-align={tailAlign}\n role=\"note\"\n {...rest}\n >\n <span className=\"chorus-bubble__body\">{children}</span>\n <span className=\"chorus-bubble__tail\" aria-hidden=\"true\" />\n </div>\n );\n}\n","import { joinClasses } from './spec-utils.js';\n\n/* ButtonGroup — lays out two or more Buttons as one composition so consumers\n never hand-roll the wrapper div. Three forms, all sharing the family's 8px\n (`sys.layout.inline.md`) gap:\n\n • inline horizontal (default) — content-sized Buttons in a row\n (outlined left, primary right).\n • inline vertical (`orientation=\"vertical\"`) — full-width Buttons stacked\n (primary top, secondary below).\n • docked (`variant=\"docked\"`) — a footer bar pinned to the bottom of the\n app: full-bleed `sys.color.surface` fill, 16px (`sys.layout.container.md`)\n inset, the two Buttons split the row equally, and an upward\n `sys.elevation.sheet` shadow marks it as a layer above the scrolling\n body (the same elevation BottomSheet / SideSheet use). An optional\n `label` sits above the row in `sys.typo.body.md` (16px).\n\n Like the other bars, the docked form renders in flow and must NOT self-pin\n (no position: sticky/fixed) — PageShell owns the pinning. See\n schema/components/button/standard.md → Group / Docked action bar. */\nexport function ButtonGroup({\n variant = 'inline',\n orientation = 'horizontal',\n label,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const docked = variant === 'docked';\n return (\n <div\n className={joinClasses(\n 'chorus-button-group',\n docked && 'chorus-button-group--docked',\n orientation === 'vertical' && 'chorus-button-group--vertical',\n className,\n )}\n role=\"group\"\n aria-label={ariaLabel}\n {...rest}\n >\n {label != null ? (\n <div className=\"chorus-button-group__label\">{label}</div>\n ) : null}\n <div className=\"chorus-button-group__row\">{children}</div>\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Header\",\n \"family\": \"header\",\n \"subcomponent\": \"main\",\n \"description\": \"The loud member of the Header family — a labelled `onSurface` heading + optional trailing 'See all' Text Button. The leading label is rendered as a semantic `<h3>` by default; consumers may override the wrapping element via the `as` prop (e.g. `as=\\\"div\\\"` when the host already owns the heading semantics). Two sizes diverge only on the label typography — anatomy (slot grammar, trailing-button binding, alignment) is identical. Reached as `<Header>` (the family's primary export); its quieter sibling is [Sub](./sub.md) (`<SubHeader>`), a muted 14 group label. Full-bleed (mirrors Sub): a transparent background and its own inline padding — `container.md` (16), the same rail the List rows / Feed items it heads pay — so a bare `<Header>` and the content beneath it land on one shared rail with no host help. Asymmetric block padding (`stack.lg` 24 above, `stack.md` 16 below) carries the heading's own vertical rhythm. Hosts that bundle Header above their content (Carousel, DirectoryList, NavList, SideSheet column) stay full-bleed (they add no inline padding of their own) and absorb only the block padding into their stack rhythm — the 'one gutter, paid once' rule.\",\n \"element\": \"header\",\n \"props\": {\n \"size\": {\n \"type\": \"literal\",\n \"values\": [\"large\", \"medium\"],\n \"default\": \"large\",\n \"description\": \"Label typography rung. `large` (default) — `sys.typo.heading.md` (20 / Semibold) — the canonical section heading used by Section and other top-level page regions. `medium` — `sys.typo.heading.sm` (16 / Semibold) — denser host surfaces (in-sheet sub-section, bounded card, drawer column heading, secondary regions inside an already-headed page).\"\n },\n \"label\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Leading heading text. Single line; the consumer truncates upstream if the host width is too narrow.\"\n },\n \"headerAction\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"Trailing Text Button binding. Object: `{ label, href, onClick }`. Rendered as a Text Button at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`. The link-affordance rule keeps the navigational intent in the accent tone across hosts. Mutually exclusive with `trailingIcon`.\"\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Drill-in [Icon Button](../button/icon.md) mode. Pass `true` to render the canonical chevron-right glyph inside a Button `variant=\\\"icon\\\"` `size=\\\"medium\\\"` (32 × 32 capsule, 16-glyph), or pass any 16px icon node to override the glyph. The trailing Icon Button owns its own tap target via `onClick` / `href`; the surrounding `<header>` element stays non-interactive. Supply an `aria-label` for the icon-only button (defaults to `\\\"Open <label>\\\"` when `label` is a string). Mutually exclusive with `headerAction` and `headerDropdown`.\"\n },\n \"headerDropdown\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"Trailing [Text Button dropdown](../button/text.md#dropdown) binding. Object: `{ label, onClick, open, 'aria-haspopup'?, 'aria-controls'? }`. Rendered as a Text Button at `size=\\\"xsmall\\\"` with the default appearance — label IS the current selected value ('Top', 'Last 7 days', 'All time'), and the trailing chevron flips between `ChevronDownIcon` (when `open` is falsy) and `ChevronUpIcon` (when `open` is true) as a state signal. Consumer owns the menu surface and the `open` state. Mutually exclusive with `headerAction` and `trailingIcon` — priority `trailingIcon` > `headerAction` > `headerDropdown` when more than one is set.\"\n },\n \"onClick\": {\n \"type\": \"function\",\n \"optional\": true,\n \"description\": \"Click handler. Honored when `trailingIcon` is set — wired to the trailing Icon Button's `onClick`.\"\n },\n \"href\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Link href. Honored when `trailingIcon` is set — wired to the trailing Icon Button.\"\n },\n \"as\": {\n \"type\": \"literal\",\n \"values\": [\"header\", \"div\"],\n \"default\": \"header\",\n \"description\": \"Wrapping element. Defaults to `<header>` for top-level / labelled-region hosts; use `as=\\\"div\\\"` when the surrounding host already carries the section semantics. The wrapper itself is never interactive — in `trailingIcon` mode the click target sits on the trailing Icon Button, not the wrapper.\"\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"Outer row. Flex with `space-between` so the label and the trailing action sit on opposite edges, separated by an 8px (`layout.inline.md`) gap. Full-bleed — transparent background and its own padding: `container.md` (16) inline (the shared content rail), `stack.lg` (24) block-start, `stack.md` (16) block-end — so the label lands on the same rail as the rows beneath it with no host help; bundling hosts add no inline padding of their own and absorb only the block padding.\"\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Heading text. `<h3>` by default. Size `large` → `sys.typo.heading.md`; size `medium` → `sys.typo.heading.sm`. Color `sys.color.onSurface`.\"\n },\n \"action\": {\n \"required\": false,\n \"description\": \"Trailing Text Button. Fixed at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`. The label string comes from `headerAction.label`. Mutually exclusive with the icon slot below.\"\n },\n \"icon\": {\n \"required\": false,\n \"description\": \"Trailing [Icon Button](../button/icon.md) (Button `variant=\\\"icon\\\"` `size=\\\"medium\\\"`) hosting a 16px glyph (canonical: chevron-right). Its own tap target — clicks land on the Icon Button, not the surrounding header. Mutually exclusive with the action and dropdown slots.\",\n \"accepts\": [\"button\"],\n \"rendersAs\": \"button:icon\"\n },\n \"dropdown\": {\n \"required\": false,\n \"description\": \"Trailing [Text Button dropdown](../button/text.md#dropdown) (`size=\\\"xsmall\\\"`, default appearance) when `headerDropdown` is set. Label is `headerDropdown.label`; trailing chevron flips between `ChevronDownIcon` (closed) and `ChevronUpIcon` (open) tied to `headerDropdown.open`. Owns its own tap target — clicks land on the dropdown trigger, not the surrounding header. Mutually exclusive with the action and icon slots.\",\n \"accepts\": [\"button\"],\n \"rendersAs\": \"button:text (dropdown)\"\n }\n },\n \"sizing\": {\n \"containerGap\": \"sys.layout.inline.md\",\n \"containerAlign\": \"center\",\n \"containerJustify\": \"space-between\",\n \"large\": {\n \"labelTypo\": \"sys.typo.heading.md (20 / Semibold)\"\n },\n \"medium\": {\n \"labelTypo\": \"sys.typo.heading.sm (16 / Semibold)\"\n },\n \"labelColor\": \"sys.color.onSurface\",\n \"actionSize\": \"Text Button xsmall, appearance accent\",\n \"iconButtonSize\": \"Button variant=\\\"icon\\\" size=\\\"medium\\\" (32 × 32 capsule, 16-glyph)\",\n \"iconColor\": \"sys.color.onSurfaceVariant (glyph inherits via `currentColor` from the Icon Button)\"\n },\n \"appearance\": {\n \"background\": \"transparent\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"paddingBlockStart\": \"sys.layout.stack.lg\",\n \"paddingBlockEnd\": \"sys.layout.stack.md\",\n \"note\": \"Full-bleed: transparent background (Header paints on whatever surface tier hosts it) + its own block & inline padding. Inline `container.md` (16) IS the shared content rail — the same inset the List rows / Feed items beneath the Header pay — so a bare `<Header>` and its content align with no host help. Block is asymmetric — `stack.lg` (24) above to break from the previous region, `stack.md` (16) below to bind the heading to the block it labels. Bundling hosts (Carousel, DirectoryList, NavList, SideSheet column) stay full-bleed — they add no inline padding of their own — and absorb only the block padding into their stack rhythm (Header's 24-above replaces the host's leading inset, its 16-below is the header↔body gap) — the 'one gutter, paid once' rule. NEVER give Header an opaque fill or wrap it in a `padding-inline` div.\"\n },\n \"states\": {\n \"description\": \"Header itself has no lifecycle states. The trailing action carries Text Button's hover / pressed / focus.\"\n },\n \"behavior\": {\n \"rendering\": \"When `label`, `headerAction`, `trailingIcon`, and `headerDropdown` are all omitted, the component renders nothing (no empty container). When only `label` is set the row collapses to a heading-only Header — the canonical 'labelled region without affordance' case.\",\n \"alignment\": \"Label and trailing affordance share the row's centre line; the label never wraps, the affordance keeps intrinsic width and never grows.\",\n \"linkAffordance\": \"In `headerAction` mode, the trailing action is always a Text Button — never a Standard Button, never a raw `<a>`, never an icon. In `trailingIcon` mode, the chevron is rendered as a Button `variant=\\\"icon\\\"` `size=\\\"medium\\\"` that owns its own tap target — the surrounding `<header>` element is decorative and never interactive. In `headerDropdown` mode, the trigger is rendered as a Text Button `size=\\\"xsmall\\\"` with a state-signalling chevron, and the consumer owns the menu surface and the `open` state.\",\n \"modeExclusivity\": \"`headerAction`, `trailingIcon`, and `headerDropdown` are mutually exclusive — priority when more than one is set: `trailingIcon` > `headerAction` > `headerDropdown`. Pick one mode per host.\"\n },\n \"forbidden\": [\n \"non-Text-Button trailing action in `headerAction` mode (Standard Button, Icon Button, raw <a>)\",\n \"label larger than heading-md or smaller than heading-sm — pick the size dial, do not custom-tune the typo\",\n \"headerAction without an href or onClick — the link affordance must commit somewhere\",\n \"trailingIcon without an onClick or href — an icon-only header that is non-interactive is decorative noise; reach for a labelled Section header instead\",\n \"headerDropdown without `label` (the trigger's label IS the current value — empty label is meaningless) or without `onClick` (the trigger must commit somewhere)\",\n \"multiple trailing modes together (headerAction + trailingIcon, headerAction + headerDropdown, trailingIcon + headerDropdown) — pick one\"\n ]\n}\n","'use client';\n\nimport headerSpec from '../../../schema/components/header/main.spec.json';\nimport { Button } from './Button.jsx';\nimport { ChevronDownIcon, ChevronUpIcon } from './icons/index.js';\nimport { tokenToCss, joinClasses } from './spec-utils.js';\n\n/* Header — labelled section heading + an optional trailing affordance.\n Two sizes (label typography axis):\n - large (default): heading-md (20 Semibold) — section heading used\n by Section and other top-level page regions\n - medium: heading-sm (16 Semibold) — denser host surfaces\n (in-sheet sub-section, bounded card, drawer\n column heading)\n\n Three trailing modes (mutually exclusive):\n 1. `headerAction` → Text Button at `size=\"xsmall\"`, `appearance=\"accent\"`\n (\"See all\" / \"+ Create channel\" / etc).\n The label-affordance rule keeps navigational\n intent in the accent tone.\n 2. `trailingIcon` → trailing Icon Button (Button `variant=\"icon\"`,\n `size=\"medium\"` — 32 × 32 around a 16px glyph),\n canonical drill-in chevron. The Icon Button is\n its own tap target — the surrounding `<header>`\n stays non-interactive. Pass `trailingIcon` as\n a boolean to get the default chevron-right\n glyph, or as a node to override.\n Supply `aria-label` (e.g. `\"Open all\"`) so\n the icon-only button has a screen-reader name.\n 3. `headerDropdown` → trailing Text Button dropdown (size=\"xsmall\",\n default appearance) whose label IS the current\n selected value and whose trailing chevron flips\n with `open` as a state signal — the canonical\n \"Sort by\", \"Filter\", \"Range\" disclosure pattern\n described in schema/components/button/text.md\n §Dropdown. Consumer owns the menu surface and\n the `open` state; Header only renders the\n trigger.\n\n When none of label / headerAction / trailingIcon / headerDropdown is\n set the component renders nothing (no empty container). When only\n `label` is set the row collapses to a single heading with no trailing\n slot — the canonical \"labelled region without affordance\" case. */\n/* Self-inset — Header is full-bleed (mirrors SubHeader): a transparent\n background plus its own padding from the spec. The inline inset is\n `container.md` (16) — the same rail the rows beneath it pay — so a bare\n `<Header>` and its content align with no host help; block padding (24\n above / 16 below) carries the heading's own rhythm. Bundling hosts add\n no inline padding of their own and absorb only the block padding via\n CSS (see styles.css). */\nfunction headerPaddingStyle(spec) {\n const a = spec.appearance;\n return {\n '--header-padding-inline': tokenToCss(a.paddingInline),\n '--header-padding-block-start': tokenToCss(a.paddingBlockStart),\n '--header-padding-block-end': tokenToCss(a.paddingBlockEnd),\n };\n}\n\nexport function Header({\n size = 'large',\n label,\n headerAction,\n trailingIcon,\n headerDropdown,\n onClick,\n href,\n as: Tag = 'header',\n className,\n style,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n if (!label && !headerAction && !trailingIcon && !headerDropdown) return null;\n\n const useIconMode = !!trailingIcon;\n const useDropdownMode = !useIconMode && !headerAction && !!headerDropdown;\n const iconNode =\n trailingIcon === true || trailingIcon === undefined ? (\n <ChevronDownIcon size={16} />\n ) : (\n trailingIcon\n );\n const dropdownOpen = !!headerDropdown?.open;\n\n return (\n <Tag\n className={joinClasses('chorus-header', className)}\n data-size={size}\n style={{ ...headerPaddingStyle(headerSpec), ...style }}\n {...rest}\n >\n {label ? <h3 className=\"chorus-header__label\">{label}</h3> : <span />}\n {useIconMode ? (\n <Button\n variant=\"icon\"\n size=\"medium\"\n className=\"chorus-header__icon chorus-header__icon--chevron\"\n icon={iconNode}\n aria-label={ariaLabel ?? (typeof label === 'string' ? `Open ${label}` : 'Open')}\n onClick={onClick}\n {...(href ? { as: 'a', href } : null)}\n />\n ) : headerAction ? (\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"accent\"\n className=\"chorus-header__action\"\n href={headerAction.href ?? '#'}\n onClick={headerAction.onClick}\n leadingIcon={headerAction.leadingIcon}\n trailingIcon={headerAction.trailingIcon}\n >\n {headerAction.label}\n </Button>\n ) : useDropdownMode ? (\n <Button\n variant=\"text\"\n size=\"xsmall\"\n className=\"chorus-header__dropdown\"\n trailingIcon={dropdownOpen ? <ChevronUpIcon /> : <ChevronDownIcon />}\n aria-haspopup={headerDropdown['aria-haspopup'] ?? 'listbox'}\n aria-expanded={dropdownOpen}\n aria-controls={headerDropdown['aria-controls']}\n onClick={headerDropdown.onClick}\n >\n {headerDropdown.label}\n </Button>\n ) : null}\n </Tag>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { joinClasses } from './spec-utils.js';\nimport { Badge } from './Badge.jsx';\n\n/* Thumbnail — small-rung circular image. Pure visual primitive with two\n optional corner badges (updateDot top-right, logoBadge bottom-right).\n The schema spec (schema/components/thumbnail/thumbnail.md) is the\n source of truth for the size ladder and the dot-size break at the 32\n rung. The ladder is exposed as a numeric `size` prop so consumers can\n pass the raw pixel rung directly — there is no t-shirt naming because\n the design language already refers to \"the 48 thumbnail\", \"the 24\n thumbnail\" in product specs.\n\n The component never falls back to text — `image` is the only content\n slot. Consumers pass `src` (and `alt`); when the asset hasn't loaded\n the surface tone alone holds the row's rhythm.\n\n Load-failure handling: a CSS `background-image` placeholder is always\n painted on `.chorus-thumbnail__image`. When `<img>` is present, it\n overlays the placeholder. If the asset 404s or fails to decode, we\n drop the <img> from the tree so the background placeholder becomes\n visible — otherwise the browser paints its broken-image glyph on top\n and the slot looks worse than \"no image at all\". The failed-src\n bookkeeping is keyed by URL so a later prop change to a fresh src\n re-tries the load. */\n\nconst SIZES = [16, 20, 24, 32, 40, 48, 56];\n\nfunction normalizeSize(size) {\n return SIZES.includes(size) ? size : 48;\n}\n\nexport function Thumbnail({\n size = 48,\n src,\n alt = '',\n updateDot = false,\n logoBadge,\n outlined = false,\n className,\n style,\n ...rest\n}) {\n const px = normalizeSize(size);\n /* Update dot picks the matching Badge `dot-*` rung — `dot-md` (8×8)\n at the 32 / 40 / 48 / 56 rungs, `dot-sm` (6×6) below — so the corner\n flag, the rung name, and the Badge family stay in lockstep. */\n const dotSize = px >= 32 ? 'dot-md' : 'dot-sm';\n const [failedSrc, setFailedSrc] = useState(null);\n const [failedBadgeSrc, setFailedBadgeSrc] = useState(null);\n const imgSrc = src && src !== failedSrc ? src : null;\n const badgeSrc = logoBadge?.src && logoBadge.src !== failedBadgeSrc ? logoBadge.src : null;\n return (\n <span\n className={joinClasses(\n 'chorus-thumbnail',\n `chorus-thumbnail--${px}`,\n outlined && 'chorus-thumbnail--outlined',\n className,\n )}\n style={{\n '--thumb-size': `${px}px`,\n ...style,\n }}\n {...rest}\n >\n <span className=\"chorus-thumbnail__image\">\n {imgSrc ? <img src={imgSrc} alt={alt} onError={() => setFailedSrc(src)} /> : null}\n </span>\n {updateDot ? (\n <Badge size={dotSize} className=\"chorus-thumbnail__dot\" />\n ) : null}\n {logoBadge ? (\n <span className=\"chorus-thumbnail__badge\" aria-hidden=\"true\">\n {badgeSrc ? <img src={badgeSrc} alt=\"\" onError={() => setFailedBadgeSrc(logoBadge.src)} /> : null}\n </span>\n ) : null}\n </span>\n );\n}\n","'use client';\n\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { VerifiedFillIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\n\n/* EntryRow — the shared image + label + trailing-action cluster.\n One presentational atom rendered by BOTH:\n - List (variant=\"entry\"): one EntryRow per row, wrapped in the\n list's `chorus-list__row` (which owns padding / divider / state /\n keyboard), and\n - PostCarousel: the card's attribution header.\n It is the single source of truth for the directory-entry combo —\n leading Thumbnail + identity column (optional verified mark + label +\n optional inline count + optional stacked secondary) + optional\n single-line description + optional trailing action. The host owns the\n surrounding chrome; EntryRow owns only the inner cluster geometry. */\n\nexport function EntryRow({\n thumbnail,\n thumbnailSize = 40,\n verified = false,\n label,\n count,\n secondary,\n description,\n trailing,\n className,\n ...rest\n}) {\n return (\n <div className={joinClasses('chorus-entry-row', className)} {...rest}>\n {thumbnail ? (\n <span className=\"chorus-entry-row__leading\">\n <Thumbnail size={thumbnailSize} {...thumbnail} />\n </span>\n ) : null}\n <span className=\"chorus-entry-row__label-col\">\n <span className=\"chorus-entry-row__identity\">\n <span className=\"chorus-entry-row__primary-row\">\n {verified ? (\n <span className=\"chorus-entry-row__verified\" aria-label=\"Verified\">\n <VerifiedFillIcon />\n </span>\n ) : null}\n <span className=\"chorus-entry-row__label\">{label}</span>\n {count != null ? (\n <span className=\"chorus-entry-row__count\">{count}</span>\n ) : null}\n </span>\n {secondary ? (\n <span className=\"chorus-entry-row__secondary\">{secondary}</span>\n ) : null}\n </span>\n {description ? (\n <span className=\"chorus-entry-row__description\">{description}</span>\n ) : null}\n </span>\n {trailing ? (\n <span\n className=\"chorus-entry-row__trailing\"\n data-nested-action=\"\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {trailing}\n </span>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useId, useRef, useState } from 'react';\nimport { ChevronDownIcon, RadioIcon, RadioFillIcon } from './icons/index.js';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { EntryRow } from './EntryRow.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* List — vertical sequence of rows for menus, settings panels, picker\n sheets. One anatomy (row: leading + label column + trailing) drives\n the interaction model via `variant`:\n - standard (default): rows fire `onClick` per item; no selection\n state. A row opts into a leading 40-rung\n Thumbnail (the image type) by passing\n `item.thumbnail` — no separate variant.\n - radio: single-select picker — controlled via `value` +\n `onChange(value)` on the List itself\n\n Any row may opt into a trailing drill-in chevron with `item.nav: true`\n (the former `nav` variant, now a per-item case) — it routes the row to\n another surface. On a radio row it marks a major category that opens a\n second screen. A per-item `trailingIcon` overrides the auto chevron.\n\n The whole row is the interactive target in every variant. The leading\n radio indicator is decorative — keyboard focus, hover overlay, and\n click target all sit on the row. */\n\nfunction RadioIndicator({ selected }) {\n const Glyph = selected ? RadioFillIcon : RadioIcon;\n return (\n <span className={joinClasses('chorus-list__radio', selected && 'is-selected')} aria-hidden=\"true\">\n <Glyph size={24} />\n </span>\n );\n}\n\nconst ENTRY_SIZE_TO_PX = { small: 32, medium: 40, large: 48, xlarge: 56 };\n\nexport function List({\n variant = 'standard',\n value,\n onChange,\n items = [],\n embedded = false,\n size = 'medium',\n divider = true,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const isRadio = variant === 'radio';\n const isEntry = variant === 'entry';\n const entryThumbSize = ENTRY_SIZE_TO_PX[size] ?? 40;\n const role = isRadio ? 'radiogroup' : 'list';\n const groupName = useId();\n const rowsRef = useRef([]);\n const containerRef = useRef(null);\n const [focusIndex, setFocusIndex] = useState(0);\n useFullBleedGuard(containerRef, 'List');\n\n const onRowKey = useCallback(\n (e, idx, item) => {\n const last = items.length - 1;\n let next = idx;\n if (e.key === 'ArrowDown') next = idx === last ? 0 : idx + 1;\n else if (e.key === 'ArrowUp') next = idx === 0 ? last : idx - 1;\n else if (e.key === 'Home') next = 0;\n else if (e.key === 'End') next = last;\n else if ((e.key === ' ' || e.key === 'Enter') && isRadio) {\n e.preventDefault();\n if (!item.disabled) onChange?.(item.value);\n return;\n } else {\n return;\n }\n e.preventDefault();\n setFocusIndex(next);\n rowsRef.current[next]?.focus();\n },\n [items, isRadio, onChange],\n );\n\n return (\n <div\n ref={containerRef}\n className={joinClasses('chorus-list', `chorus-list--${variant}`, className)}\n role={role}\n aria-label={ariaLabel}\n data-embedded={embedded ? 'true' : undefined}\n data-size={isEntry ? size : undefined}\n {...rest}\n >\n {items.map((item, idx) => {\n const selected = isRadio && item.value === value;\n const isFocusable = idx === focusIndex;\n const onClick = () => {\n if (item.disabled) return;\n if (isRadio) onChange?.(item.value);\n item.onClick?.();\n };\n return (\n <div\n key={item.value ?? idx}\n ref={(el) => { rowsRef.current[idx] = el; }}\n role={isRadio ? 'radio' : 'listitem'}\n aria-checked={isRadio ? selected : undefined}\n aria-disabled={item.disabled || undefined}\n tabIndex={item.disabled ? -1 : (isFocusable ? 0 : -1)}\n data-selected={selected || undefined}\n data-strong={item.strong ? 'true' : undefined}\n data-divider={(divider === false || item.divider === false) ? 'false' : undefined}\n data-force-state={item.forcedState ?? undefined}\n className={joinClasses(\n 'chorus-list__row',\n selected && 'is-selected',\n item.disabled && 'is-disabled',\n )}\n onClick={onClick}\n onKeyDown={(e) => onRowKey(e, idx, item)}\n onFocus={() => setFocusIndex(idx)}\n data-group={isRadio ? groupName : undefined}\n >\n {isEntry ? (\n <EntryRow\n thumbnail={item.thumbnail}\n thumbnailSize={entryThumbSize}\n label={item.label}\n count={item.count}\n secondary={item.secondary}\n description={item.description}\n trailing={item.trailingIcon}\n />\n ) : (\n <>\n {isRadio ? (\n <span className=\"chorus-list__leading\">\n <RadioIndicator selected={selected} />\n </span>\n ) : item.thumbnail ? (\n <span className=\"chorus-list__leading chorus-list__leading--image\">\n <Thumbnail size={40} {...item.thumbnail} />\n </span>\n ) : item.icon ? (\n <span className=\"chorus-list__leading chorus-list__leading--icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span className=\"chorus-list__label-col\">\n <span className=\"chorus-list__primary-row\">\n <span className=\"chorus-list__label\">{item.label}</span>\n {item.count != null ? (\n <span className=\"chorus-list__count\">{item.count}</span>\n ) : null}\n </span>\n {item.supportingText ? (\n <span className=\"chorus-list__supporting\">{item.supportingText}</span>\n ) : null}\n </span>\n {item.nav && !item.trailingIcon ? (\n <span className=\"chorus-list__trailing chorus-list__nav-chevron\" aria-hidden=\"true\">\n <ChevronDownIcon size={16} />\n </span>\n ) : item.trailingIcon ? (\n <span\n className=\"chorus-list__trailing\"\n data-nested-action=\"\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {item.trailingIcon}\n </span>\n ) : null}\n </>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Header } from './Header.jsx';\nimport { List } from './List.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* SuggestionList — a vertically-stacked block of follow suggestions\n rendered as a swipeable pager. Each page shows exactly three rows\n that follow the [list/entry](../../schema/components/list/entry.md)\n visual contract at the `xlarge` rung (56 Thumbnail + identity group\n of label + secondary follower count flush with line-height-only\n spacing + description with `ref.space.25` (2) separator + trailing\n Toggle Button). The next page peeks at the trailing side of the\n viewport to invite the horizontal swipe. Anatomy is entity-agnostic\n — suggested channels, people, companies, topics all share the same\n shape.\n\n The component is presentation-only for the row body — tapping the\n avatar / text column does not route. The only commit affordance per\n row is the trailing Toggle Button (own hit target, stops click\n propagation); `active` state is owned by the consumer (forwarded\n through each item's `active` + `onToggle`).\n Pages of three are a hard contract: when `items.length` is not a\n multiple of three, the last page is padded with empty placeholders\n so the swipe rhythm holds. */\n\nconst ROWS_PER_PAGE = 3;\n\nfunction chunk(items, size) {\n const out = [];\n for (let i = 0; i < items.length; i += size) {\n out.push(items.slice(i, i + size));\n }\n if (out.length === 0) return out;\n const last = out[out.length - 1];\n while (last.length < size) last.push(null);\n return out;\n}\n\nexport function SuggestionList({\n label,\n headerAction,\n items = [],\n followLabel = 'Follow',\n followingLabel = 'Following',\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const pages = chunk(items, ROWS_PER_PAGE);\n const ref = useRef(null);\n useFullBleedGuard(ref, 'SuggestionList');\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-suggestion-list', className)}\n aria-label={ariaLabel ?? label}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <Header label={label} headerAction={headerAction} />\n <div className=\"chorus-suggestion-list__pager\" role=\"group\" aria-label=\"Suggestion pages\">\n {pages.map((page, pageIdx) => {\n const realItems = page.filter(Boolean);\n const padCount = page.length - realItems.length;\n return (\n <div key={pageIdx} className=\"chorus-suggestion-list__page\">\n <List\n variant=\"entry\"\n size=\"xlarge\"\n embedded\n items={realItems.map((item, rowIdx) => ({\n value: item.value ?? `row-${pageIdx}-${rowIdx}`,\n label: item.name,\n secondary: item.followers,\n description: item.description,\n thumbnail: item.thumbnail ?? { alt: item.name },\n trailingIcon: (\n <Button variant=\"toggle\" active={!!item.active} onClick={item.onToggle}>\n {item.active ? followingLabel : followLabel}\n </Button>\n ),\n }))}\n />\n {padCount > 0\n ? Array.from({ length: padCount }).map((_, padIdx) => (\n <div\n key={`pad-${padIdx}`}\n className=\"chorus-suggestion-list__row--pad\"\n aria-hidden=\"true\"\n />\n ))\n : null}\n </div>\n );\n })}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Header } from './Header.jsx';\nimport { List } from './List.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* DirectoryList — labelled block of follow-able entries rendered as a\n single vertical scroll (no pager). Sits next to SuggestionList in\n the design: SuggestionList is a swipeable peek (3 rows / page at the\n xlarge 56 rung); DirectoryList is the full directory at the\n list/entry `large` (48) rung with no horizontal motion. Reach for\n DirectoryList on browse / \"new channels\" / \"people you may know\"\n surfaces where the full set is meant to be scanned vertically and\n each entry's trailing Toggle Button commits a follow in place. */\nexport function DirectoryList({\n label,\n headerAction,\n items = [],\n followLabel = 'Follow',\n followingLabel = 'Following',\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'DirectoryList');\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-directory-list', className)}\n aria-label={ariaLabel ?? label}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <Header label={label} headerAction={headerAction} />\n <List\n variant=\"entry\"\n size=\"large\"\n embedded\n divider={false}\n items={items.map((item, idx) => ({\n value: item.value ?? `row-${idx}`,\n label: item.name,\n secondary: item.followers,\n description: item.description,\n thumbnail: item.thumbnail ?? { alt: item.name },\n trailingIcon: (\n <Button variant=\"toggle\" active={!!item.active} onClick={item.onToggle}>\n {item.active ? followingLabel : followLabel}\n </Button>\n ),\n }))}\n />\n </section>\n );\n}\n","'use client';\n\nimport { useMemo, useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Header } from './Header.jsx';\nimport { List } from './List.jsx';\nimport { ChevronRightIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* NavList — labelled block of label-only nav rows (each row routes\n via an `href` / `onClick`; trailing slot carries a default chevron\n Icon Button). Reach for it on category indexes, settings menus,\n and any \"pick a sub-page\" surface where each row is purely a route\n target and no leading thumbnail belongs.\n\n Bundles a `<Header>` over `<List variant=\"entry\">` rendered label-\n only — every row drops `thumbnail` so the entry sub's leading\n column collapses and the label sits flush at the 16 inline rail.\n `supportingText` is forwarded to the entry sub's `description`\n slot. The trailing slot is filled with a default Icon Button\n (`variant=\"icon\"`, `size=\"medium\"`, `icon={<ChevronRightIcon />}`)\n that mirrors the row's route; per-item `trailingIcon` overrides. */\nexport function NavList({\n label,\n headerAction,\n items = [],\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'NavList');\n const entryItems = useMemo(\n () =>\n items.map(({ supportingText, trailingIcon, ...item }) => ({\n ...item,\n description: supportingText,\n trailingIcon:\n trailingIcon ?? (\n <Button\n variant=\"icon\"\n size=\"medium\"\n aria-label={item.label}\n icon={<ChevronRightIcon />}\n onClick={item.onClick}\n />\n ),\n })),\n [items],\n );\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-nav-list', className)}\n aria-label={ariaLabel ?? label}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <Header label={label} headerAction={headerAction} />\n <List variant=\"entry\" embedded items={entryItems} />\n </section>\n );\n}\n","import { useEffect } from 'react';\n\n/* useScrollOverflow — toggles `data-overflow-start` / `data-overflow-end`\n on a horizontally-scrolling element so CSS can paint the Edge fade\n affordance only when there's hidden content past the visible edge.\n\n Both attributes resolve to `\"true\"` / `\"false\"` strings so the CSS\n selector reads naturally: `[data-overflow-end=\"true\"]`. The end flag\n means \"more content lies past the right edge\" — paint the trailing\n fade. The start flag means \"the visitor has scrolled past the\n leading edge\" — used by future leading-edge fades, currently unused\n by any variant.\n\n Re-measures on user scroll (passive listener) and on container\n resize (ResizeObserver, covers font load, viewport change, and\n surrounding layout reflow). Shared across the three Tabs variants\n and AvatarRail-style horizontal rows. */\nexport function useScrollOverflow(ref) {\n useEffect(() => {\n const el = ref.current;\n if (!el) return undefined;\n const update = () => {\n const canEnd = el.scrollLeft + el.clientWidth < el.scrollWidth - 1;\n const canStart = el.scrollLeft > 0;\n el.dataset.overflowEnd = canEnd ? 'true' : 'false';\n el.dataset.overflowStart = canStart ? 'true' : 'false';\n };\n update();\n el.addEventListener('scroll', update, { passive: true });\n const ro = new ResizeObserver(update);\n ro.observe(el);\n return () => {\n el.removeEventListener('scroll', update);\n ro.disconnect();\n };\n }, [ref]);\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { useScrollOverflow } from './internal/useScrollOverflow.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport { joinClasses } from './spec-utils.js';\n\n/* AvatarRail — a horizontal strip of avatar entry points. Each item is\n an anchor that routes to an entity (channel, person, brand, topic)\n page; the rail is navigation, not a picker. Items compose a 48-rung\n Thumbnail (with optional updateDot / logoBadge passing through) and\n a single-line label below. An optional trailing action (\"View all\", \"Manage\") lives\n at the end of the row, vertically centred against the avatar so the\n text reads as part of the rail rhythm, not as a second row.\n\n Anchors are wired via standard `<a href>` so right-click / open-in-\n new-tab works. The component does not intercept clicks; routing is\n the host framework's responsibility (Next.js Link, react-router,\n etc.). If the consumer needs framework-level routing, wrap each item\n in their Link primitive and pass `as` (future). */\n\nexport function AvatarRail({\n items = [],\n trailingAction,\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n /* Edge fade overflow detection — shared `useScrollOverflow` hook\n toggles `data-overflow-end` / `data-overflow-start` on the track,\n same affordance pattern Tabs uses. CSS gates the trailing-edge\n `mask-image` on `[data-overflow-end=\"true\"]` so the fade paints\n only when content actually lives past the visible edge. */\n const trackRef = useRef(null);\n useScrollOverflow(trackRef);\n const rootRef = useRef(null);\n useFullBleedGuard(rootRef, 'AvatarRail');\n return (\n <nav\n ref={rootRef}\n className={joinClasses('chorus-avatar-rail', className)}\n aria-label={ariaLabel ?? 'Entities'}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <div\n ref={trackRef}\n className=\"chorus-avatar-rail__track\"\n >\n {items.map((item) => (\n <a\n key={item.value}\n href={item.href ?? '#'}\n className=\"chorus-avatar-rail__item\"\n aria-label={item.ariaLabel ?? item.label}\n onClick={item.href ? undefined : (e) => e.preventDefault()}\n >\n <span className=\"chorus-avatar-rail__avatar\">\n <Thumbnail size={48} {...(item.thumbnail ?? { alt: item.label })} />\n </span>\n <span className=\"chorus-avatar-rail__label\">{item.label}</span>\n </a>\n ))}\n </div>\n {trailingAction ? (\n <Button\n variant=\"text\"\n size=\"small\"\n appearance=\"accent\"\n className=\"chorus-avatar-rail__trailing\"\n href={trailingAction.href ?? '#'}\n onClick={trailingAction.onClick}\n >\n {trailingAction.label}\n </Button>\n ) : null}\n </nav>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from './Button.jsx';\nimport { useBodyScrollLock, usePortalTarget } from './internal/scrimPortal.js';\nimport { joinClasses } from './spec-utils.js';\n\nexport function Dialog({\n open,\n onClose,\n title,\n body,\n image,\n imageFirst = true,\n primaryAction,\n secondaryAction,\n inline = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const target = usePortalTarget();\n const cardRef = useRef(null);\n const lastFocusedRef = useRef(null);\n useBodyScrollLock(open && !inline);\n\n useEffect(() => {\n if (!open) return undefined;\n lastFocusedRef.current = document.activeElement;\n const primary = cardRef.current?.querySelector('.chorus-dialog__actions button');\n // preventScroll: focusing must not scroll the page to the button — body is\n // scroll-locked when modal, and inline (docs) renders would jump on mount.\n primary?.focus({ preventScroll: true });\n return () => {\n const last = lastFocusedRef.current;\n // preventScroll here too: restoring focus on close (and on dev\n // StrictMode's mount→cleanup→remount) must not scroll the page back to\n // the trigger.\n if (last && typeof last.focus === 'function') last.focus({ preventScroll: true });\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) return undefined;\n const onKey = (e) => { if (e.key === 'Escape') onClose?.(); };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, onClose]);\n\n if (!open) return null;\n if (!inline && !target) return null;\n\n const imageEl = image ? (\n <img\n className=\"chorus-dialog__image\"\n src={image.src}\n alt={image.alt ?? ''}\n width={image.width}\n height={image.height}\n decoding=\"async\"\n />\n ) : null;\n\n const tree = (\n <div\n className={joinClasses('chorus-dialog__scrim', inline && 'chorus-dialog__scrim--inline', className)}\n role=\"presentation\"\n onClick={() => onClose?.()}\n >\n <div\n ref={cardRef}\n className={joinClasses('chorus-dialog__card', image && 'chorus-dialog__card--with-image')}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel ?? title}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n {title ? <h2 className=\"chorus-dialog__title\">{title}</h2> : null}\n {imageFirst ? imageEl : null}\n {body ? <p className=\"chorus-dialog__body\">{body}</p> : null}\n {imageFirst ? null : imageEl}\n {primaryAction || secondaryAction ? (\n <div className=\"chorus-dialog__actions\">\n {primaryAction ? (\n <Button appearance=\"primary\" size=\"large\" fullWidth onClick={primaryAction.onClick}>\n {primaryAction.label}\n </Button>\n ) : null}\n {secondaryAction ? (\n <Button appearance=\"tertiary\" size=\"large\" fullWidth onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n\n return inline ? tree : createPortal(tree, target);\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Divider — heavy section-break band that splits adjacent regions\n whose vertical rhythm alone doesn't read as a boundary. Single\n full-bleed block painted with `sys.color.scrimSubtle` at a fixed\n `sys.layout.stack.xs` (8) block thickness — the same scrim tier\n used by Banner default, Chip / Tag default, Progress track,\n StatusTag neutral, and Skeleton. No appearance / thickness /\n orientation axis: Divider ships one canonical band. Defaults to\n `aria-hidden=\"true\"` because the band is decorative chrome — screen-\n reader users navigate by headings, not visual breaks. See schema/\n components/divider/divider.md. */\n\nexport function Divider({\n className,\n 'aria-hidden': ariaHidden = true,\n ...rest\n}) {\n return (\n <hr\n aria-hidden={ariaHidden}\n className={joinClasses('chorus-divider', className)}\n {...rest}\n />\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const TabsContext = createContext({\n variant: 'underline',\n value: null,\n onChange: () => {},\n registerTab: () => () => {},\n focusValue: null,\n setFocusValue: () => {},\n});\n\nexport function useTabsContext() {\n return useContext(TabsContext);\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Tabs\",\n \"family\": \"tabs\",\n \"subcomponent\": \"underline\",\n \"description\": \"Horizontal tab row with a single 2px (`sys.borderWidth.thin`) `sys.color.onSurface` indicator that slides between the active tab's bottom edge on selection. Default content-section switcher.\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"underline\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The active tab's value.\"\n },\n \"onChange\": {\n \"type\": \"function\",\n \"description\": \"Fired with the next value when a tab is selected.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"description\": \"Accessible name for the tablist.\"\n },\n \"embedded\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Composition mode flag. When `true` (or when Tabs is a direct child of `.chorus-carousel` / `.chorus-feed`), enters **embedded mode**: zeroes its own `background` + `padding` so chrome defers to the host. Pass explicitly inside `<Carousel>` / `<Feed>` for the contract to be visible in JSX; the DOM-ancestry safety net in styles.css also activates the mode when omitted. See `compositionModes` in `tabs.family.json`.\"\n }\n },\n \"behavior\": {\n \"adaptiveWidth\": {\n \"description\": \"Row measures Σ(tab.intrinsicWidth) vs container.clientWidth on every layout pass. Fits → tabs stretch (flex: 1 1 0); exceeds → tabs hold content width (flex: 0 0 auto) and the row scrolls horizontally with a trailing Edge fade. Re-evaluated via ResizeObserver on container + tab row. Not a caller-supplied prop.\"\n }\n },\n \"tabProps\": {\n \"value\": {\n \"type\": \"string\",\n \"required\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Tab's accessible name. Single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Context glyph before label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"containerPaddingInline\": \"sys.layout.container.md\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"interTabGap\": \"0\",\n \"slotGap\": \"sys.layout.inline.sm\",\n \"indicatorHeight\": \"sys.borderWidth.thin\",\n \"dividerWidth\": \"sys.borderWidth.hairline\",\n \"dividerColor\": \"sys.color.outlineVariant\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"iconSize\": \"sys.icon.md\",\n \"fadeWidth\": \"ref.space.600\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"label\": \"sys.color.outline\",\n \"indicator\": null\n },\n \"selected\": {\n \"label\": \"sys.color.onSurface\",\n \"indicator\": \"sys.color.onSurface\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the tab is in.\",\n \"composition\": \"inward\",\n \"compositionReason\": \"The Tabs row is a horizontal scroller (`overflow-x: auto`, which coerces `overflow-y: auto`), so an outward ring would clip at the row's top/bottom edges. Segmented and Rounded re-anchor the chip's ring the same way — their rows are scrollers too.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"outerLayerPosition\": \"depth 0..2px from the tab edge (the outer stroke)\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\",\n \"insetLayerPosition\": \"depth 2..3px from the tab edge (the counter-ring just inside the outer stroke)\",\n \"implementation\": \"inset box-shadow on the tab's `::after` overlay (sits above the state-overlay `::before`, the label/icon, and the underline indicator). Constrained strictly inside the tab's footprint and never exceeds it.\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"underline tabs given raw <button>/<a> or bare-text children instead of <Tab value=…> elements — the sliding indicator (.chorus-tabs__indicator), the useAdaptiveFit measurement that sets data-fit, the aria-selected/data-value binding, and the active label styling all live on <Tab>; raw children render as unstyled run-together text with no indicator and a broken scroll/stretch layout\",\n \"active indicator painted with sys.color.brand — underline uses sys.color.onSurface for the indicator\",\n \"tabs wrapped in extra horizontal padding — tabs is full-bleed by family declaration\",\n \"tab label sizing below sys.typo.label.md (14px) — smaller text breaks Korean / CJK hierarchy\",\n \"manual underline drawn via `border-bottom:` — indicator is the `::after` overlay, not a real border\"\n ]\n}\n","'use client';\n\nimport { useLayoutEffect, useRef } from 'react';\nimport spec from '../../../../schema/components/tabs/underline.spec.json';\nimport { useTabsContext } from './TabsContext.js';\nimport { useScrollOverflow } from './useScrollOverflow.js';\nimport { useFullBleedGuard } from './useFullBleedGuard.js';\nimport { tokenToCss, typoStyles, joinClasses } from '../spec-utils.js';\n\n/* Drive the single sliding indicator element. The indicator is a\n `position: absolute` span pinned to the bottom of the tab row; its\n `transform` (left offset) and `width` are updated to match the\n currently-selected tab's `offsetLeft` / `offsetWidth`. CSS handles\n the easing — selection change becomes a slide, not a snap.\n\n On the very first measurement we suppress the transition so the\n indicator doesn't fly in from `{0, 0}` to its initial position; once\n placed, transitions are re-enabled for subsequent value changes.\n ResizeObserver covers layout shifts (font load, container resize,\n sibling re-flow) so the indicator stays aligned without a controlled\n trigger. */\nfunction useSlidingIndicator(containerRef, indicatorRef, value) {\n useLayoutEffect(() => {\n const container = containerRef.current;\n const indicator = indicatorRef.current;\n if (!container || !indicator) return undefined;\n\n let firstPlacement = !indicator.dataset.placed;\n const place = () => {\n const selected = container.querySelector('.chorus-tab--underline.is-selected');\n if (!selected) {\n indicator.style.opacity = '0';\n return;\n }\n if (firstPlacement) indicator.style.transition = 'none';\n indicator.style.transform = `translateX(${selected.offsetLeft}px)`;\n indicator.style.width = `${selected.offsetWidth}px`;\n indicator.style.opacity = '1';\n if (firstPlacement) {\n // Force a reflow then re-enable the transition so subsequent\n // value changes animate.\n void indicator.offsetWidth;\n indicator.style.transition = '';\n indicator.dataset.placed = 'true';\n firstPlacement = false;\n }\n };\n\n place();\n /* Re-place on container resize (layout reflow, font load, viewport\n change). We avoid observing individual tabs because their box\n changes during transitions and would re-fire `place()` mid-slide,\n restarting the transition from time 0 on every frame. */\n const ro = new ResizeObserver(place);\n ro.observe(container);\n return () => ro.disconnect();\n }, [containerRef, indicatorRef, value]);\n}\n\n/* Adaptive width — Underline has one width mode that resolves to one of\n two terminal layouts on every layout pass:\n\n • Fit — Σ(tab.intrinsicWidth) ≤ container.clientWidth.\n Tabs stretch (`flex: 1 1 0`); row overflow: visible.\n • Scroll — Σ(tab.intrinsicWidth) > container.clientWidth.\n Tabs hold content width (`flex: 0 0 auto`); row scrolls.\n\n We measure by temporarily resetting `data-fit` to the intrinsic\n (\"scroll\") layout — that's the layout where each tab's box equals its\n content — read the row's `scrollWidth`, compare to `clientWidth`, and\n commit Fit or Scroll. The reset/measure/commit happens inside one\n `useLayoutEffect` tick, so the browser never paints the intermediate\n state. A `ResizeObserver` on the row covers container width changes\n (a window resize, a parent column resizing); a `MutationObserver` on\n the row's child list covers tab add/remove. */\nfunction useAdaptiveFit(containerRef) {\n useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return undefined;\n const measure = () => {\n const prev = el.dataset.fit;\n el.dataset.fit = 'scroll';\n // Read after the reset so scrollWidth reflects the intrinsic sum.\n const fits = el.scrollWidth <= el.clientWidth + 1;\n const next = fits ? 'stretch' : 'scroll';\n if (next !== prev) el.dataset.fit = next;\n else el.dataset.fit = prev;\n };\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n const mo = new MutationObserver(measure);\n mo.observe(el, { childList: true });\n return () => {\n ro.disconnect();\n mo.disconnect();\n };\n }, [containerRef]);\n}\n\nexport function TabsUnderline({ className, style, children, ...rest }) {\n const ref = useRef(null);\n const indicatorRef = useRef(null);\n const { value } = useTabsContext();\n useAdaptiveFit(ref);\n useScrollOverflow(ref);\n useSlidingIndicator(ref, indicatorRef, value);\n useFullBleedGuard(ref, 'Tabs');\n\n const s = spec.sizing;\n const composedStyle = {\n '--tabs-container-padding-inline': tokenToCss(s.containerPaddingInline),\n '--tabs-tab-min-height': tokenToCss(s.minHeight),\n '--tabs-tab-padding-block': tokenToCss(s.paddingBlock),\n '--tabs-tab-padding-inline': tokenToCss(s.paddingInline),\n '--tabs-inter-tab-gap': tokenToCss(s.interTabGap),\n '--tabs-slot-gap': tokenToCss(s.slotGap),\n '--tabs-icon-size': tokenToCss(s.iconSize),\n '--tabs-indicator-height': tokenToCss(s.indicatorHeight),\n '--tabs-divider-width': tokenToCss(s.dividerWidth),\n '--tabs-divider-color': tokenToCss(s.dividerColor),\n '--tabs-fade-width': tokenToCss(s.fadeWidth),\n '--tabs-label-unselected': tokenToCss(spec.selectionStates.unselected.label),\n '--tabs-label-selected': tokenToCss(spec.selectionStates.selected.label),\n '--tabs-indicator-color': tokenToCss(spec.selectionStates.selected.indicator),\n '--tabs-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--tabs-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--tabs-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--tabs-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--tabs-focus-outer-width': tokenToCss(spec.focusIndicator.ring.outerWidth),\n '--tabs-focus-outer-color': tokenToCss(spec.focusIndicator.ring.outerColor),\n '--tabs-focus-inset-width': tokenToCss(spec.focusIndicator.ring.insetWidth),\n '--tabs-focus-inset-color': tokenToCss(spec.focusIndicator.ring.insetColor),\n ...typoStyles(s.labelTypo),\n ...style,\n };\n return (\n <div\n ref={ref}\n data-fit=\"scroll\"\n className={joinClasses('chorus-tabs', 'chorus-tabs--underline', className)}\n style={composedStyle}\n {...rest}\n >\n {children}\n <span ref={indicatorRef} className=\"chorus-tabs__indicator\" aria-hidden=\"true\" />\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Tabs\",\n \"family\": \"tabs\",\n \"subcomponent\": \"rounded\",\n \"description\": \"Rounded-rectangle tab row — each tab is a self-contained chip carrying a required leading icon and a label, sharing the Segmented geometry verbatim but swapping the capsule radius for sys.radius.md (8) so the tabs read as soft rounded rectangles instead of pills. Reach for this on feed / list headers where the row of choices should sit as standalone chips with a more contained, card-adjacent silhouette.\",\n \"delegatesTo\": \"chip/filter\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"rounded\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The active tab's value.\"\n },\n \"onChange\": {\n \"type\": \"function\",\n \"description\": \"Fired with the next value when a tab is selected.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"description\": \"Accessible name for the tablist.\"\n },\n \"embedded\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Composition mode flag. When `true` (or when Tabs is a direct child of `.chorus-carousel` / `.chorus-feed`), enters **embedded mode**: zeroes its own `background` + `padding` so chrome defers to the host. Pass explicitly inside `<Carousel>` / `<Feed>` for the contract to be visible in JSX; the DOM-ancestry safety net in styles.css also activates the mode when omitted. See `compositionModes` in `tabs.family.json`.\"\n }\n },\n \"tabProps\": {\n \"value\": {\n \"type\": \"string\",\n \"required\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional 16px (sys.icon.md) context glyph rendered before the label. May carry its own brand / category color independent of the label.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": false,\n \"description\": \"Tab's accessible name. Single line. Omit only when the tab is icon-only (pair with an `aria-label` for assistive tech). At least one of label / leadingIcon must be present.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"16px (sys.icon.md) context glyph before the label. At least one of label / leadingIcon must be present.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.400\",\n \"containerPaddingBlock\": \"sys.layout.container.md\",\n \"containerPaddingInline\": \"sys.layout.container.md\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"interTabGap\": \"sys.layout.inline.sm\",\n \"radius\": \"sys.radius.md\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\",\n \"fadeWidth\": \"ref.space.600\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"background\": \"transparent\",\n \"label\": \"sys.color.onSurface\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.outlineVariant\"\n },\n \"note\": \"Transparent fill so the tab adopts whatever surface sits behind it — page, raised card, sheet — without pinning to a fixed neutral step. Inherited from Filter chip's unselected recipe.\"\n },\n \"selected\": {\n \"background\": \"sys.color.inverseSurface\",\n \"label\": \"sys.color.inverseOnSurface\",\n \"border\": null\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the tab is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"inward\",\n \"compositionReason\": \"The Tabs row is a horizontal scroller; an outward ring would clip at the row's top/bottom edges.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"outerLayerPosition\": \"depth 0..2px from the tab edge (the outer stroke)\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\",\n \"insetLayerPosition\": \"depth 2..3px from the tab edge (the counter-ring just inside the outer stroke)\",\n \"implementation\": \"inset box-shadow on the tab's `::after` overlay. Constrained strictly inside the tab's footprint and never exceeds it.\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"rounded tabs given raw <button>/<a> or bare-text children instead of <Tab value=…> elements — the chip chrome (chorus-chip--filter + chorus-chip--rounded), the selected state, and the aria-selected/data-value binding all live on <Tab>; raw children render unstyled with no selected state\",\n \"rounded tab radius set to sys.radius.full (pill) — the rounded variant is the sys.radius.md (8) soft-rectangle; reach for Segmented when a capsule row is needed\",\n \"active state painted with sys.color.brand — rounded tabs use sys.color.inverseSurface fill + sys.color.inverseOnSurface label in selected state\"\n ]\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport spec from '../../../../schema/components/tabs/rounded.spec.json';\nimport { useScrollOverflow } from './useScrollOverflow.js';\nimport { useFullBleedGuard } from './useFullBleedGuard.js';\nimport { tokenToCss, joinClasses } from '../spec-utils.js';\n\n/* Rounded Tabs container. Geometry is identical to Segmented (delegates\n to Filter chip's chrome via `Tab.jsx`) — the single divergence is the\n per-tab corner radius, which steps from `sys.radius.full` (capsule)\n to `sys.radius.md` (8). The radius override lives on `.chorus-chip--rounded`\n in styles.css; the row container itself just sets the inter-tab gap.\n\n Carries the Edge fade affordance via `useScrollOverflow`, which\n toggles `data-overflow-end` whenever the row's scroll width exceeds\n its visible width — the mask rule in styles.css keys off that\n attribute. */\nexport function TabsRounded({ className, style, children, ...rest }) {\n const ref = useRef(null);\n useScrollOverflow(ref);\n useFullBleedGuard(ref, 'Tabs');\n const composedStyle = {\n '--tabs-container-padding-block': tokenToCss(spec.sizing.containerPaddingBlock),\n '--tabs-container-padding-inline': tokenToCss(spec.sizing.containerPaddingInline),\n '--tabs-inter-segment-gap': tokenToCss(spec.sizing.interTabGap),\n '--tabs-fade-width': tokenToCss(spec.sizing.fadeWidth),\n ...style,\n };\n return (\n <div\n ref={ref}\n className={joinClasses('chorus-tabs', 'chorus-tabs--segmented', 'chorus-tabs--rounded', className)}\n style={composedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Tabs\",\n \"family\": \"tabs\",\n \"subcomponent\": \"segmented\",\n \"description\": \"Inline mutually-exclusive selector. Visual chrome delegated to Filter chip — each segment renders with `chorus-chip chorus-chip--filter` classes and inherits the chip's container/label/border/state recipes verbatim. This sub adds only the row container (transparent, horizontal padding, fixed inter-segment gap) and the single-select semantics enforced via Tabs context.\",\n \"delegatesTo\": \"chip/filter\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"segmented\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The active segment's value.\"\n },\n \"onChange\": {\n \"type\": \"function\",\n \"description\": \"Fired with the next value when a segment is selected.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"description\": \"Accessible name for the tablist.\"\n },\n \"embedded\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Composition mode flag. When `true` (or when Tabs is a direct child of `.chorus-carousel` / `.chorus-feed`), enters **embedded mode**: zeroes its own `background` + `padding` so chrome defers to the host. Pass explicitly inside `<Carousel>` / `<Feed>` for the contract to be visible in JSX; the DOM-ancestry safety net in styles.css also activates the mode when omitted. See `compositionModes` in `tabs.family.json`.\"\n }\n },\n \"tabProps\": {\n \"value\": {\n \"type\": \"string\",\n \"required\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Same contract as Filter chip's label slot.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Same contract as Filter chip's leadingIcon slot.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"containerPaddingBlock\": \"sys.layout.container.md\",\n \"containerPaddingInline\": \"sys.layout.container.md\",\n \"interSegmentGap\": \"sys.layout.inline.sm\",\n \"fadeWidth\": \"ref.space.600\"\n },\n \"selectionStates\": {\n \"$ref\": \"../chip/filter.spec.json#/selectionStates\",\n \"note\": \"Each segment swaps between Filter chip's unselected (surfaceContainerHigh + outlineVariant border) and selected (inverseSurface + inverseOnSurface) recipes.\"\n },\n \"states\": {\n \"$ref\": \"../chip/filter.spec.json#/states\",\n \"note\": \"Hover / pressed / focus overlays and the disabled treatment are inherited from Filter chip; same opacities, same focus ring composition.\"\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the segment is in. Re-anchored inside the segment from Filter chip's default outward composition because the Segmented row is a horizontal scroller.\",\n \"composition\": \"inward\",\n \"compositionReason\": \"The Tabs row is a horizontal scroller; an outward ring would clip at the row's top/bottom edges.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"outerLayerPosition\": \"depth 0..2px from the segment edge (the outer stroke)\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\",\n \"insetLayerPosition\": \"depth 2..3px from the segment edge (the counter-ring just inside the outer stroke)\",\n \"implementation\": \"inset box-shadow on the segment's `::after` overlay. Constrained strictly inside the segment's footprint and never exceeds it.\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"segmented control given raw <button>/<a> or bare-text children instead of <Tab value=…> elements — the chip chrome, the selected pill state, and the aria-selected/data-value binding all live on <Tab>; raw children render unstyled with no selected state\",\n \"active item painted with sys.color.primary fill — segmented active uses sys.color.surface fill on the selected pill (the rest of the row is surfaceContainer)\",\n \"segmented row reflowing on selection — anatomy is no-layout\"\n ]\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport spec from '../../../../schema/components/tabs/segmented.spec.json';\nimport { useScrollOverflow } from './useScrollOverflow.js';\nimport { useFullBleedGuard } from './useFullBleedGuard.js';\nimport { tokenToCss, joinClasses } from '../spec-utils.js';\n\n/* Segmented Tabs container. Visual chrome of the segments themselves is\n delegated to Filter chip (see `Tab.jsx` — segmented variant renders\n with `chorus-chip chorus-chip--filter` classes). This container only\n provides the row-level layout: transparent background, horizontal\n padding, fixed inter-segment gap, and `overflow-x: auto` so a row\n that exceeds its surrounding column scrolls instead of compressing\n the segments.\n\n Carries the Edge fade affordance via `useScrollOverflow`, which\n toggles `data-overflow-end` whenever the row's scroll width exceeds\n its visible width — the mask rule in styles.css keys off that\n attribute. */\nexport function TabsSegmented({ className, style, children, ...rest }) {\n const ref = useRef(null);\n useScrollOverflow(ref);\n useFullBleedGuard(ref, 'Tabs');\n const s = spec.sizing;\n const composedStyle = {\n '--tabs-container-padding-block': tokenToCss(s.containerPaddingBlock),\n '--tabs-container-padding-inline': tokenToCss(s.containerPaddingInline),\n '--tabs-inter-segment-gap': tokenToCss(s.interSegmentGap),\n '--tabs-fade-width': tokenToCss(s.fadeWidth),\n ...style,\n };\n return (\n <div\n ref={ref}\n className={joinClasses('chorus-tabs', 'chorus-tabs--segmented', className)}\n style={composedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Children, Fragment, isValidElement, useCallback, useMemo, useRef } from 'react';\nimport { TabsContext } from './internal/TabsContext.js';\nimport { TabsUnderline } from './internal/TabsUnderline.jsx';\nimport { TabsRounded } from './internal/TabsRounded.jsx';\nimport { TabsSegmented } from './internal/TabsSegmented.jsx';\n\nconst VARIANTS = {\n underline: TabsUnderline,\n rounded: TabsRounded,\n segmented: TabsSegmented,\n};\n\nconst isDev =\n typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production';\nconst warned = new Set();\n\nfunction warnOnce(key, message) {\n if (warned.has(key)) return;\n warned.add(key);\n // eslint-disable-next-line no-console\n console.error(`[chorus] <Tabs>: ${message}`);\n}\n\n/* Dev-only guardrail. <Tabs> is a compound component: every child MUST be a\n <Tab> (the sliding indicator, adaptive-fit measurement, aria-selected\n binding, and active styling all live on <Tab>). Raw <button>/<a> or bare\n text children render unstyled with no indicator. The spec.json `forbidden`\n array states this for agents; this surfaces the same rule at runtime so the\n silent failure becomes a visible signal during development. <Tab> is\n identified by its `__chorusTab` marker (robust across HMR / bundler dedupe). */\nfunction assertTabChildren(children) {\n if (!isDev) return;\n Children.forEach(children, (child) => {\n if (child == null || child === false || child === true) return;\n if (!isValidElement(child)) {\n if (typeof child === 'string' && child.trim() === '') return;\n warnOnce(\n 'text',\n `received bare text child ${JSON.stringify(String(child))}. Wrap each label in <Tab value=\"…\">…</Tab> — bare text renders as unstyled run-together text with no tab buttons or indicator.`,\n );\n return;\n }\n const type = child.type;\n if (type === Fragment) {\n assertTabChildren(child.props?.children);\n return;\n }\n if (type?.__chorusTab === true) return;\n const name =\n typeof type === 'string' ? `<${type}>` : type?.displayName || type?.name || 'a non-<Tab> element';\n warnOnce(\n name,\n `received ${name} as a child. <Tabs> children must be <Tab value=\"…\"> — ${name} has no .chorus-tab/.chorus-chip chrome, so the sliding indicator, data-fit measurement, and active styling will not work.`,\n );\n });\n}\n\nexport function Tabs({\n variant = 'underline',\n value,\n onChange,\n embedded = false,\n children,\n ...rest\n}) {\n const Impl = VARIANTS[variant] ?? TabsUnderline;\n if (isDev) assertTabChildren(children);\n const tabValuesRef = useRef([]);\n\n const registerTab = useCallback((tabValue) => {\n if (!tabValuesRef.current.includes(tabValue)) {\n tabValuesRef.current.push(tabValue);\n }\n return () => {\n tabValuesRef.current = tabValuesRef.current.filter((v) => v !== tabValue);\n };\n }, []);\n\n const handleKeyDown = useCallback((e) => {\n const order = tabValuesRef.current;\n if (!order.length) return;\n const currentIdx = order.indexOf(value);\n let nextIdx = currentIdx;\n if (e.key === 'ArrowRight') nextIdx = (currentIdx + 1) % order.length;\n else if (e.key === 'ArrowLeft') nextIdx = (currentIdx - 1 + order.length) % order.length;\n else if (e.key === 'Home') nextIdx = 0;\n else if (e.key === 'End') nextIdx = order.length - 1;\n else return;\n e.preventDefault();\n onChange?.(order[nextIdx]);\n }, [value, onChange]);\n\n const ctx = useMemo(() => ({\n variant,\n value,\n onChange: (v) => onChange?.(v),\n registerTab,\n }), [variant, value, onChange, registerTab]);\n\n return (\n <TabsContext.Provider value={ctx}>\n <Impl\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n {children}\n </Impl>\n </TabsContext.Provider>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useTabsContext } from './internal/TabsContext.js';\nimport { joinClasses } from './spec-utils.js';\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nexport function Tab({\n value: tabValue,\n state,\n leadingIcon,\n disabled = false,\n className,\n children,\n onClick,\n ...rest\n}) {\n const { variant, value: activeValue, onChange, registerTab } = useTabsContext();\n const selected = activeValue === tabValue;\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n\n useEffect(() => {\n if (tabValue == null) return undefined;\n return registerTab(tabValue);\n }, [tabValue, registerTab]);\n\n const handleClick = (e) => {\n onClick?.(e);\n if (!e.defaultPrevented && !isDisabled) onChange(tabValue);\n };\n\n /* Segmented and Rounded tabs delegate their visual chrome to Filter\n chip — same `chorus-chip chorus-chip--filter` classes, same selected\n state CSS, same hover/pressed/focus overlays. Rounded additionally\n carries `chorus-chip--rounded` which overrides only `--chip-radius`\n (from full → md). Single-select is enforced by the Tabs context\n (only the segment whose `value` matches the active one gets\n `is-selected`), not by a chip-level toggle. Underline tabs keep\n their own `chorus-tab--underline` chrome and the sliding indicator. */\n const isChipBased = variant === 'segmented' || variant === 'rounded';\n const baseClass = isChipBased ? 'chorus-chip' : 'chorus-tab';\n const subClass = isChipBased ? 'chorus-chip--filter' : `chorus-tab--${variant}`;\n const radiusModClass = variant === 'rounded' ? 'chorus-chip--rounded' : null;\n const labelClass = isChipBased ? 'chorus-chip__label' : 'chorus-tab__label';\n const iconClass = isChipBased ? 'chorus-chip__icon' : 'chorus-tab__icon';\n\n const className_ = joinClasses(\n baseClass,\n subClass,\n radiusModClass,\n selected && 'is-selected',\n className,\n );\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n tabIndex={selected ? 0 : -1}\n className={className_}\n disabled={isDisabled}\n data-force-state={forcedState ?? undefined}\n onClick={handleClick}\n {...rest}\n >\n {leadingIcon ? (\n <span className={iconClass} aria-hidden=\"true\">{leadingIcon}</span>\n ) : null}\n {children ? <span className={labelClass}>{children}</span> : null}\n </button>\n );\n}\n\n/* Identity marker so <Tabs> can detect non-<Tab> children in development\n even across duplicate module instances (HMR / bundler dedupe), where a\n plain `child.type === Tab` reference check would give false negatives. */\nTab.displayName = 'Tab';\nTab.__chorusTab = true;\n","'use client';\n\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { joinClasses } from './spec-utils.js';\n\n/* Metadata — standalone family (renamed from Byline; previously lived\n as Row family's metadata sub). Author / brand attribution cluster\n used by Feed Post and Feed Ad. Renders a 32-rung Thumbnail, a\n primary text line (entity name + optional inline timestamp +\n optional follow toggle), and an optional secondary line (`subtitle`\n plain text OR `meta` link row). Optional trailing slot hosts an\n action like the Feed Ad dismiss button.\n\n The middot separator's CSS sets `line-height: 1` so its line-box\n equals its font-size — keeps the row's text-line tight even when\n the inherited line-height would otherwise allow extra space around\n the bullet glyph.\n\n The `compact` variant (schema/components/metadata/compact.md) is the\n one-line channel-detail attribution: a leading 32-rung Thumbnail\n (same `avatar` prop as standard) plus the secondary meta-link row —\n company name · nickname (optional badge) — with a plain trailing\n timestamp. The primary name line, follow toggle, and subtitle are\n the \"unnecessary\" info compact drops; the avatar stays.\n\n See schema/components/metadata/ — standard.md for the two-line\n head, compact.md for the one-line shape. */\n\n/* Shared meta-row grammar — independent <a> per item, middot between\n siblings, optional single badge node rendered OUTSIDE the <a>\n (canonically Badge variant=\"role\" on the trailing nickname item;\n a presentational mark must not become link content). */\nfunction metaParts(meta) {\n return meta.map((part, i) => {\n const isObj = part && typeof part === 'object' && 'label' in part;\n const label = isObj ? part.label : part;\n const href = isObj ? part.href ?? '#' : '#';\n const badge = isObj ? part.badge : undefined;\n return (\n <span key={i} className=\"chorus-metadata__meta-part\">\n {i > 0 ? <span className=\"chorus-metadata__dot\" aria-hidden=\"true\">·</span> : null}\n <a\n className=\"chorus-metadata__meta-link\"\n href={href}\n onClick={href === '#' ? (e) => e.preventDefault() : undefined}\n >\n {label}\n </a>\n {badge ? (\n <span className=\"chorus-metadata__meta-badge\">{badge}</span>\n ) : null}\n </span>\n );\n });\n}\n\nexport function Metadata({\n variant,\n avatar,\n name,\n nameHref,\n timestamp,\n followAction = false,\n followed = false,\n onFollowChange,\n subtitle,\n meta,\n trailing,\n className,\n ...rest\n}) {\n const hasMeta = Array.isArray(meta) && meta.length > 0;\n const hasSubtitle = !hasMeta && subtitle != null && subtitle !== '';\n\n if (variant === 'compact') {\n return (\n <div className={joinClasses('chorus-metadata', 'chorus-metadata--compact', className)} {...rest}>\n {avatar ? <Thumbnail size={32} {...avatar} /> : null}\n <div className=\"chorus-metadata__meta\">\n {hasMeta ? metaParts(meta) : null}\n {/* Timestamp carries no leading middot — separated from the\n identity cluster by a gap so the time reads as a distinct\n trailing element, mirroring the Standard head's name↔time gap. */}\n {timestamp ? (\n <span className=\"chorus-metadata__timestamp\">{timestamp}</span>\n ) : null}\n </div>\n </div>\n );\n }\n\n return (\n <div className={joinClasses('chorus-metadata', className)} {...rest}>\n <Thumbnail size={32} {...(avatar ?? { alt: typeof name === 'string' ? name : '' })} />\n <div className=\"chorus-metadata__text\">\n <div className=\"chorus-metadata__primary\">\n {nameHref ? (\n <a\n className=\"chorus-metadata__name\"\n href={nameHref}\n onClick={nameHref === '#' ? (e) => e.preventDefault() : undefined}\n >\n {name}\n </a>\n ) : (\n <span className=\"chorus-metadata__name\">{name}</span>\n )}\n {timestamp ? (\n <span className=\"chorus-metadata__timestamp\">{timestamp}</span>\n ) : null}\n {followAction ? (\n <>\n <span className=\"chorus-metadata__dot\" aria-hidden=\"true\">·</span>\n <button\n type=\"button\"\n className=\"chorus-metadata__follow\"\n aria-pressed={followed ? 'true' : 'false'}\n onClick={() => onFollowChange?.(!followed)}\n >\n {followed ? 'Following' : 'Follow'}\n </button>\n </>\n ) : null}\n </div>\n {hasMeta ? (\n <div className=\"chorus-metadata__meta\">{metaParts(meta)}</div>\n ) : hasSubtitle ? (\n <span className=\"chorus-metadata__subtitle\">{subtitle}</span>\n ) : null}\n </div>\n {trailing ? (\n <div\n className=\"chorus-metadata__trailing\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {trailing}\n </div>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { useRef, useState } from 'react';\nimport { Button } from './Button.jsx';\nimport { Metadata } from './Metadata.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport {\n CompensationFillIcon,\n HeartFillIcon,\n HeartIcon,\n SquareStackIcon,\n PollFillIcon,\n ReplyIcon,\n EyeIcon,\n} from './icons/index.js';\n\n/* Feed — a vertically-stacked content card. The Feed primitive is pure\n composition: it owns the slot order and the surface chrome, but every\n sub-affordance (Follow toggle, citation link, engagement counters)\n threads through props rather than children, so consumers data-bind to a\n single object instead of assembling JSX. The schema spec\n (schema/components/feed/feed.md) is the source of truth for which slots\n are optional and how they collapse — this component implements those\n rules. */\n\nfunction CoverThumbnail({ alt, src, stacked }) {\n return (\n <div className=\"chorus-feed__thumbnail\">\n {src ? (\n <img src={src} alt={alt ?? ''} />\n ) : (\n <span className=\"chorus-feed__thumbnail-fallback\" aria-label={alt ?? ''} role=\"img\" />\n )}\n {stacked ? (\n <span className=\"chorus-feed__thumbnail-stack\" aria-label=\"Multiple images\" role=\"img\">\n <SquareStackIcon size={16} />\n </span>\n ) : null}\n </div>\n );\n}\n\n/* TagBanner renders both the poll module and the offer-evaluation module.\n The two share the same chrome (surfaceVariant slab, leading icon + label\n on the editorial tone, divider, trailing participant count) and differ\n only on glyph + tone. The label string is constrained by the spec to\n \"Poll\" or \"Offer\" — those are the two editorial categories the banner\n surfaces. Consumers should not pass a free-form label. */\nfunction TagBanner({ kind, label, participants }) {\n const Icon = kind === 'offer' ? CompensationFillIcon : PollFillIcon;\n const resolvedLabel = label ?? (kind === 'offer' ? 'Offer' : 'Poll');\n return (\n <div\n className={joinClasses('chorus-feed__poll', kind === 'offer' && 'chorus-feed__poll--offer')}\n role=\"group\"\n >\n <span className=\"chorus-feed__poll-title\">\n <span className=\"chorus-feed__poll-glyph\"><Icon /></span>\n <span className=\"chorus-feed__poll-label\">{resolvedLabel}</span>\n </span>\n <span className=\"chorus-feed__poll-divider\" aria-hidden=\"true\" />\n <span className=\"chorus-feed__poll-participants\">\n <strong>{participants}</strong> Participants\n </span>\n </div>\n );\n}\n\nfunction CitationCard({ title, source, sourceIcon, hero }) {\n return (\n <a className=\"chorus-feed__citation\" href=\"#\" onClick={(e) => e.preventDefault()}>\n <span className=\"chorus-feed__citation-hero\" role=\"img\" aria-label={hero?.alt ?? ''}>\n {hero?.src ? <img src={hero.src} alt=\"\" /> : null}\n </span>\n <span className=\"chorus-feed__citation-body\">\n <span className=\"chorus-feed__citation-title\">{title}</span>\n <span className=\"chorus-feed__citation-source\">\n <span className=\"chorus-feed__citation-source-icon\" aria-hidden=\"true\">\n {sourceIcon ?? null}\n </span>\n <span className=\"chorus-feed__citation-source-name\">{source}</span>\n </span>\n </span>\n </a>\n );\n}\n\n/* Engagement footer — three counters laid out as an `xsmall` Text\n Button group (4px gap, per the Text Button group rule for the\n 24-tall rung). Likes and Comments are real Text Buttons; Views\n renders as a non-interactive `<span>` styled to match the same\n rhythm, so the row reads as one visual unit even though only the\n first two affordances commit. The Like button toggles between an\n `onSurfaceVariant` outline rest state (`HeartIcon`, `secondary`\n appearance) and a brand-filled state (`HeartFillIcon`, secondary\n appearance + `--button-text-label` override to `sys.color.brand`)\n with the count incrementing in lockstep. Pattern mirrors\n `followAction`: pass `liked` + `onLikeChange` for controlled\n state, or omit both for an uncontrolled fallback (the previews\n and docs Stage use the uncontrolled path so the demo is tappable\n without wiring). */\nfunction Engagement({ likes, comments, views, liked, onLikeChange }) {\n const isControlled = liked !== undefined;\n const [uLiked, setULiked] = useState(false);\n const [delta, setDelta] = useState(0);\n const active = isControlled ? liked : uLiked;\n const count = (likes ?? 0) + (isControlled ? 0 : delta);\n\n const handleLike = () => {\n if (isControlled) {\n onLikeChange?.(!liked);\n return;\n }\n setULiked((prev) => {\n const next = !prev;\n setDelta((d) => d + (next ? 1 : -1));\n return next;\n });\n };\n\n return (\n <div className=\"chorus-feed__engagement\" role=\"group\">\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"secondary\"\n className={joinClasses('chorus-feed__like', active && 'chorus-feed__like--active')}\n leadingIcon={active ? <HeartFillIcon /> : <HeartIcon />}\n aria-pressed={active}\n aria-label={`Like — ${count}`}\n onClick={handleLike}\n >\n {count}\n </Button>\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"secondary\"\n leadingIcon={<ReplyIcon />}\n aria-label={`Comments — ${comments}`}\n >\n {comments}\n </Button>\n {/* Views — display only. Same `xsmall`/16-glyph/12-label rhythm\n as the Text Buttons next to it, but renders as a `<span>` so\n there is no hover / focus / pressed treatment — `aria-disabled`\n is the wrong shape because views isn't an action that has been\n turned off; it simply isn't an action. */}\n <span className=\"chorus-feed__views\" role=\"status\" aria-label={`Views — ${views}`}>\n <span className=\"chorus-feed__views-icon\" aria-hidden=\"true\"><EyeIcon /></span>\n <span>{views}</span>\n </span>\n </div>\n );\n}\n\nexport function Feed({\n flag,\n avatar,\n channel,\n channelHref = '#',\n timestamp,\n followAction = false,\n followed = false,\n onFollowChange,\n meta,\n title,\n body,\n thumbnail,\n poll,\n offer,\n citation,\n mention,\n engagement,\n onClick,\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'Feed');\n\n /* Whole-card navigation — mirrors the Carousel post card's click model.\n Pass `onClick` and the card surface becomes the navigation target;\n interior affordances (channel link, Follow, Like, Comments, citation,\n mention) route independently because a click that originates on any\n <a>/<button> inside the card is ignored here and fires its own handler.\n The card stays an <article role=\"button\"> rather than wrapping content\n in a <button>/<a>: Feed contains anchors, and an interactive wrapper\n would nest interactive elements (invalid; for anchors the parser breaks\n the DOM). This is the in-contract way to make a post navigable, so there\n is no reason to add an external <Link> wrapper — which would re-pay the\n page rail as a gutter and misalign the card with NavigationBar / TabBar. */\n const clickable = typeof onClick === 'function';\n const clickProps = clickable\n ? {\n role: 'button',\n tabIndex: 0,\n onClick: (e) => {\n if (e.target.closest('a, button, [role=\"button\"], input, select, textarea, label')) return;\n onClick(e);\n },\n onKeyDown: (e) => {\n if (e.target !== e.currentTarget) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick(e);\n }\n },\n }\n : null;\n\n return (\n <article\n ref={ref}\n className={joinClasses('chorus-feed', clickable && 'chorus-feed--clickable', className)}\n {...clickProps}\n {...rest}\n >\n {flag ? <div className=\"chorus-feed__flag\">{flag}</div> : null}\n\n <Metadata\n className=\"chorus-feed__metadata\"\n avatar={avatar ?? { alt: channel }}\n name={channel}\n nameHref={channelHref}\n timestamp={timestamp}\n followAction={followAction}\n followed={followed}\n onFollowChange={onFollowChange}\n meta={meta}\n />\n\n {(title || body || thumbnail) ? (\n <div className=\"chorus-feed__post\">\n <div className=\"chorus-feed__post-text\">\n {title ? <h3 className=\"chorus-feed__title\">{title}</h3> : null}\n {body ? <p className=\"chorus-feed__body\">{body}</p> : null}\n </div>\n {thumbnail ? <CoverThumbnail {...thumbnail} /> : null}\n </div>\n ) : null}\n\n {poll ? <TagBanner kind=\"poll\" {...poll} /> : null}\n {offer ? <TagBanner kind=\"offer\" {...offer} /> : null}\n {citation ? <CitationCard {...citation} /> : null}\n\n {mention ? (\n <a className=\"chorus-feed__mention\" href=\"#\" onClick={(e) => e.preventDefault()}>\n {mention}\n </a>\n ) : null}\n\n {engagement ? <Engagement {...engagement} /> : null}\n </article>\n );\n}\n\n/* FeedGroup — semantic wrapper that bundles consecutive Feed Posts\n (canonical case: 3 stacked) into one thread-grouped or topic-bundled\n sub-stream. The group adds no surface chrome — each inner Post keeps\n its own padding + hairline bottom divider — so the bundle reads as a\n continuous slice of the stream while the wrapper carries intent via\n role=\"region\" + an optional aria-label. */\nexport function FeedGroup({ label, className, children, ...rest }) {\n return (\n <section\n className={joinClasses('chorus-feed-group', className)}\n role=\"region\"\n aria-label={label}\n {...rest}\n >\n {children}\n </section>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Metadata } from './Metadata.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { XIcon } from './icons/index.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* FeedAd — the `ad` sub-component of the Feed family. In-feed sponsored\n placement that rides the same column as the default Feed card. The\n brand row composes the shared Metadata component (avatar + name +\n \"Sponsored\" subtitle + optional dismiss trailing). The schema spec\n (schema/components/feed/ad.md) is the source of truth for which\n slots are optional and how they collapse. */\n\nfunction BrandRow({ brand, onDismiss, dismissLabel }) {\n /* Subtitle defaults to \"Sponsored\" — every FeedAd placement must read\n as sponsored content. Consumers may override but cannot drop it. */\n const subtitle = brand.subtitle ?? 'Sponsored';\n const trailing = onDismiss ? (\n <button\n type=\"button\"\n className=\"chorus-feed-ad__dismiss\"\n onClick={onDismiss}\n aria-label={dismissLabel ?? 'Dismiss ad'}\n >\n <XIcon size={16} />\n </button>\n ) : null;\n return (\n <Metadata\n className=\"chorus-feed-ad__brand\"\n avatar={brand.avatar ?? { alt: brand.name }}\n name={brand.name}\n subtitle={subtitle}\n trailing={trailing}\n />\n );\n}\n\nfunction Media({ src, alt }) {\n return (\n <div className=\"chorus-feed-ad__media\">\n {src ? (\n <img src={src} alt={alt ?? ''} />\n ) : (\n <span className=\"chorus-feed-ad__media-fallback\" aria-label={alt ?? ''} role=\"img\" />\n )}\n </div>\n );\n}\n\nexport function FeedAd({\n brand,\n onDismiss,\n dismissLabel,\n title,\n body,\n media,\n cta,\n className,\n ...rest\n}) {\n /* `cta.color` plumbs an ad-client-supplied Hex through to the button\n surface. Only the fill and border swap; every other Standard Button\n token binding stays intact. */\n const ctaStyle = cta?.color ? { background: cta.color, borderColor: cta.color } : undefined;\n const ref = useRef(null);\n useFullBleedGuard(ref, 'FeedAd');\n\n return (\n <article ref={ref} className={joinClasses('chorus-feed-ad', className)} {...rest}>\n <BrandRow brand={brand} onDismiss={onDismiss} dismissLabel={dismissLabel} />\n\n {(title || body) ? (\n <div className=\"chorus-feed-ad__post-text\">\n {title ? <h3 className=\"chorus-feed-ad__title\">{title}</h3> : null}\n {body ? <p className=\"chorus-feed-ad__body\">{body}</p> : null}\n </div>\n ) : null}\n\n {(media || cta) ? (\n /* Hero media + CTA share a single `radius.md` clip with no\n internal gap; the group's overflow:hidden makes the squared\n button corners merge into the hero's bottom edge. */\n <div className=\"chorus-feed-ad__cta-group\">\n {media ? <Media {...media} /> : null}\n {cta ? (\n <Button\n appearance=\"primary\"\n size=\"medium\"\n fullWidth\n onClick={cta.onClick}\n className=\"chorus-feed-ad__cta\"\n style={ctaStyle}\n >\n {cta.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </article>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Pagination — decorative dot-position indicator for one-page-at-a-time\n pagers (PostCarousel / ProfileCarousel, media galleries). One dot per\n page; the active dot paints `sys.color.onSurface`, the rest\n `sys.color.outlineVariant`. An inline element (`span` / inline-flex)\n sized to its dots — the host owns horizontal placement, scroll\n position, active-index tracking, and keyboard reach; tapping a dot\n does not navigate. Renders nothing below two pages.\n See schema/components/pagination/pagination.md. */\n\nexport function Pagination({\n count = 0,\n activeIndex = 0,\n className,\n ...rest\n}) {\n if (count < 2) return null;\n const active = Math.max(0, Math.min(count - 1, activeIndex));\n\n return (\n <span\n className={joinClasses('chorus-pagination', className)}\n aria-hidden=\"true\"\n {...rest}\n >\n {Array.from({ length: count }, (_, idx) => (\n <span\n key={idx}\n className={joinClasses(\n 'chorus-pagination__dot',\n idx === active && 'chorus-pagination__dot--active',\n )}\n />\n ))}\n </span>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from './Button.jsx';\nimport { EntryRow } from './EntryRow.jsx';\nimport { Pagination } from './Pagination.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { EyeIcon } from './icons/index.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* PostCarousel — the `post` sub-component of the Carousel family. A\n horizontally-scrolling pager of up to 5 compact post cards. The\n schema spec (schema/components/carousel/post.md) is the source of\n truth for the 5-card hard cap and the next-card peek geometry.\n\n PostCarousel is the *content* — the section heading + trailing\n `See all` link live on the [Carousel](./Carousel.jsx) wrapper,\n not here. Compose `<Carousel label=\"…\"><PostCarousel items={…} /></Carousel>`. */\n\nconst MAX_CARDS = 5;\n\nexport function PostCarousel({\n items = [],\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n /* Hard cap — editorial / ops mistakes never blow out the section. */\n const cards = items.slice(0, MAX_CARDS);\n const pagerRef = useRef(null);\n const cardRefs = useRef([]);\n const rootRef = useRef(null);\n useFullBleedGuard(rootRef, 'PostCarousel');\n const [activeIndex, setActiveIndex] = useState(0);\n\n /* Pagination dots are decorative; the active dot reflects the current\n snap target. IntersectionObserver fires when a card crosses ~60% of\n the pager viewport, so the dot snaps in lockstep with the swipe. */\n useEffect(() => {\n const pager = pagerRef.current;\n if (!pager || cards.length === 0) return;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting && entry.intersectionRatio >= 0.6) {\n const idx = Number(entry.target.dataset.index);\n if (!Number.isNaN(idx)) setActiveIndex(idx);\n }\n }\n },\n { root: pager, threshold: [0.6] },\n );\n for (const node of cardRefs.current) {\n if (node) observer.observe(node);\n }\n return () => observer.disconnect();\n }, [cards.length]);\n\n return (\n <div\n ref={rootRef}\n className={joinClasses('chorus-post-carousel', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <div\n ref={pagerRef}\n className=\"chorus-post-carousel__pager\"\n role=\"group\"\n aria-label=\"Carousel cards\"\n >\n {cards.map((item, idx) => (\n <Card\n key={item.id ?? idx}\n item={item}\n innerRef={(node) => { cardRefs.current[idx] = node; }}\n index={idx}\n />\n ))}\n </div>\n\n <Pagination count={cards.length} activeIndex={activeIndex} />\n </div>\n );\n}\n\nfunction Card({ item, innerRef, index }) {\n const {\n avatar,\n channel,\n verified,\n followAction,\n followed,\n onFollowChange,\n title,\n body,\n mention,\n views,\n moreLabel,\n onClick,\n } = item;\n const Tag = onClick ? 'button' : 'article';\n const extraProps = onClick ? { type: 'button', onClick } : {};\n return (\n <Tag\n ref={innerRef}\n data-index={index}\n className={joinClasses(\n 'chorus-post-carousel__card',\n onClick && 'chorus-post-carousel__card--clickable',\n )}\n {...extraProps}\n >\n <header className=\"chorus-post-carousel__card-header\">\n <EntryRow\n thumbnail={avatar ?? { alt: channel }}\n thumbnailSize={40}\n verified={verified}\n label={channel}\n trailing={\n followAction ? (\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance={followed ? 'default' : 'accent'}\n aria-pressed={!!followed}\n onClick={(e) => {\n e.stopPropagation();\n onFollowChange?.(!followed);\n }}\n >\n {followed ? 'Following' : 'Follow'}\n </Button>\n ) : null\n }\n />\n </header>\n\n <div className=\"chorus-post-carousel__card-body\">\n <h4 className=\"chorus-post-carousel__card-title\">{title}</h4>\n <p className=\"chorus-post-carousel__card-text\">{body}</p>\n {mention ? (\n <span className=\"chorus-post-carousel__card-mention\">{mention}</span>\n ) : null}\n </div>\n\n <footer className=\"chorus-post-carousel__card-footer\">\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"secondary\"\n className=\"chorus-post-carousel__card-more\"\n onClick={(e) => { e.stopPropagation(); onClick?.(); }}\n >\n {moreLabel ?? 'See more'}\n </Button>\n <span className=\"chorus-post-carousel__card-views\" role=\"status\" aria-label={`Views — ${views}`}>\n <EyeIcon />\n <span>{views}</span>\n </span>\n </footer>\n </Tag>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from './Button.jsx';\nimport { Pagination } from './Pagination.jsx';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { HeartFillIcon, PulseFillIcon, StarFillIcon } from './icons/index.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* ProfileCarousel — horizontally-scrolling rail of profile-style cards\n (channels / user profiles / company channels). Sibling to PostCarousel:\n the pager geometry is identical, the card shape is different. Each\n card has a fixed 176px width and renders Toggle Button as the follow\n affordance. The section heading and the optional 'See all' link live\n on the Section wrapper. See\n schema/components/section/profile-carousel.md for the contract. */\n\nconst MAX_CARDS = 5;\n\nconst METRIC_KINDS = {\n star: { Icon: StarFillIcon, tone: 'var(--sys-color-icon-yellow)' },\n pulse: { Icon: PulseFillIcon, tone: 'var(--sys-color-success)' },\n heart: { Icon: HeartFillIcon, tone: 'var(--sys-color-icon-red)' },\n};\n\n// Universal Chorus image-area placeholder — shared across every empty\n// image slot (Thumbnail, FeedAd media, ProfileCarousel cover). Consumers\n// expose this file at `/placeholder.png` in their public/ directory.\nconst PLACEHOLDER_IMAGE = '/placeholder.png';\n\nexport function ProfileCarousel({\n items = [],\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const cards = items.slice(0, MAX_CARDS);\n const pagerRef = useRef(null);\n const cardRefs = useRef([]);\n const rootRef = useRef(null);\n useFullBleedGuard(rootRef, 'ProfileCarousel');\n const [activeIndex, setActiveIndex] = useState(0);\n\n useEffect(() => {\n const pager = pagerRef.current;\n if (!pager || cards.length === 0) return;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting && entry.intersectionRatio >= 0.6) {\n const idx = Number(entry.target.dataset.index);\n if (!Number.isNaN(idx)) setActiveIndex(idx);\n }\n }\n },\n { root: pager, threshold: [0.6] },\n );\n for (const node of cardRefs.current) {\n if (node) observer.observe(node);\n }\n return () => observer.disconnect();\n }, [cards.length]);\n\n return (\n <div\n ref={rootRef}\n className={joinClasses('chorus-profile-carousel', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <div\n ref={pagerRef}\n className=\"chorus-profile-carousel__pager\"\n role=\"group\"\n aria-label=\"Carousel cards\"\n >\n {cards.map((item, idx) => (\n <Card\n key={item.id ?? idx}\n item={item}\n innerRef={(node) => { cardRefs.current[idx] = node; }}\n index={idx}\n />\n ))}\n </div>\n\n <Pagination count={cards.length} activeIndex={activeIndex} />\n </div>\n );\n}\n\nfunction Card({ item, innerRef, index }) {\n const {\n avatar,\n cover,\n name,\n followers,\n metrics = [],\n description,\n followed,\n onFollowChange,\n followLabel = 'Follow',\n followingLabel = 'Following',\n onClick,\n } = item;\n const hasDescription = typeof description === 'string' && description.length > 0;\n const Tag = onClick ? 'button' : 'article';\n const extraProps = onClick ? { type: 'button', onClick } : {};\n return (\n <Tag\n ref={innerRef}\n data-index={index}\n className={joinClasses(\n 'chorus-profile-carousel__card',\n onClick && 'chorus-profile-carousel__card--clickable',\n )}\n {...extraProps}\n >\n <div className=\"chorus-profile-carousel__cover\" aria-hidden=\"true\">\n <img\n className=\"chorus-profile-carousel__cover-image\"\n src={cover?.src ?? PLACEHOLDER_IMAGE}\n alt={cover?.alt ?? ''}\n />\n </div>\n\n <div className=\"chorus-profile-carousel__avatar-wrap\">\n {/* outlined paints the 2-token surface halo that separates the\n circle from the cover image underneath — same contract\n ProfileHeader's avatar uses. See thumbnail.md#with-surface-outline. */}\n <Thumbnail size={64} outlined {...(avatar ?? { alt: name })} />\n </div>\n\n <div className=\"chorus-profile-carousel__identity\">\n <h4 className=\"chorus-profile-carousel__name\">{name}</h4>\n <span className=\"chorus-profile-carousel__followers\">{followers}</span>\n </div>\n\n {hasDescription ? (\n <div className=\"chorus-profile-carousel__description\">\n <p className=\"chorus-profile-carousel__description-text\">{description}</p>\n </div>\n ) : (\n <div className=\"chorus-profile-carousel__metrics\" role=\"group\" aria-label={`${name} metrics`}>\n {metrics.map((metric, i) => {\n const kind = typeof metric.icon === 'string' ? METRIC_KINDS[metric.icon] : null;\n const Icon = kind?.Icon;\n return (\n <span key={i} className=\"chorus-profile-carousel__metric\">\n <span\n className=\"chorus-profile-carousel__metric-icon\"\n style={{ color: metric.color ?? kind?.tone }}\n aria-hidden=\"true\"\n >\n {Icon ? <Icon /> : metric.icon}\n </span>\n <span className=\"chorus-profile-carousel__metric-value\">{metric.value}</span>\n </span>\n );\n })}\n </div>\n )}\n\n <div className=\"chorus-profile-carousel__action\">\n <Button\n variant=\"toggle\"\n active={!!followed}\n onClick={(e) => {\n e.stopPropagation();\n onFollowChange?.(!followed);\n }}\n >\n {followed ? followingLabel : followLabel}\n </Button>\n </div>\n </Tag>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\n// Dev-only sanity check for NavigationBar / TabBar. These bars render IN FLOW\n// and rely on a page shell to pin them (a full-height flex column where only\n// <main> scrolls — see PageShell / patterns/layout.md). The most common bug is\n// shipping them inside the scrolling region (window-scroll + paddingBottom, or\n// a tall scrolling div) so they drift off-screen on long content. This walks up\n// to the bar's nearest scroll container and warns when the bar is INSIDE it\n// (and would scroll away) instead of pinned outside it.\n//\n// Silent in production builds. Heuristic and conservative: only warns when a\n// scrolling region is actually present, so a short page that does not yet\n// scroll never false-positives. A ResizeObserver re-checks as content grows\n// (short → tall), which is exactly when the drift becomes visible.\n\nconst WARNED = new WeakSet();\n\nfunction isDev() {\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV) {\n return process.env.NODE_ENV !== 'production';\n }\n return true;\n}\n\nfunction scrolls(el) {\n return el.scrollHeight > el.clientHeight + 4;\n}\n\n// The nearest ancestor that is an actual scroll container, or null when the\n// page itself (document) is the scroll root.\nfunction nearestScrollContainer(node) {\n let n = node.parentElement;\n while (n && n !== document.body && n !== document.documentElement) {\n const oy = getComputedStyle(n).overflowY;\n if (/(auto|scroll|overlay)/.test(oy) && scrolls(n)) return n;\n n = n.parentElement;\n }\n return null;\n}\n\nfunction checkOnce(el, name) {\n if (!el || WARNED.has(el)) return;\n\n // A self-pinned bar (sticky/fixed) won't drift — Chorus doesn't recommend it\n // (double safe-area insets), but it's not the bug this guard targets.\n const pos = getComputedStyle(el).position;\n if (pos === 'fixed' || pos === 'sticky') return;\n\n const container = nearestScrollContainer(el);\n let drifts = false;\n if (container) {\n // An inner scroll region exists; the bar drifts if it lives inside it\n // instead of being pinned as a sibling outside it.\n drifts = container.contains(el);\n } else {\n // No inner scroll container → the document scrolls as one piece. If it\n // actually scrolls, an in-flow bar drifts with the content.\n const doc = document.scrollingElement || document.documentElement;\n drifts = doc ? scrolls(doc) : false;\n }\n if (!drifts) return;\n\n WARNED.add(el);\n // eslint-disable-next-line no-console\n console.warn(\n `[Chorus] <${name}> is rendered inside the scrolling region, so it will drift off-screen on long content. ` +\n `Chorus bars render in flow and do NOT self-pin — pinning is the page shell's job. ` +\n `Wrap the screen in <PageShell nav={…} tabBar={…}> (or a full-height flex column where only <main> scrolls: ` +\n `\\`.page-shell { display:flex; flex-direction:column; height:100dvh } .page-shell > main { flex:1 1 auto; min-height:0; overflow-y:auto }\\`). ` +\n `Do NOT add position:sticky/fixed to the bar — that double-applies its safe-area inset. See patterns/layout.md.`,\n el,\n );\n}\n\n// `enabled` lets callers opt out for bars that are intentionally in-flow and\n// meant to scroll with content — e.g. the overlay NavigationBar floating over a\n// ProfileHeader cover, which drifts WITH the hero by design.\nexport function usePinnedBarGuard(ref, name, enabled = true) {\n useEffect(() => {\n if (!enabled) return;\n if (typeof window === 'undefined') return;\n if (!isDev()) return;\n const el = ref.current;\n if (!el) return;\n\n checkOnce(el, name);\n\n // Re-check as content grows (short page → tall page is when drift appears).\n const ro = new ResizeObserver(() => checkOnce(el, name));\n ro.observe(el);\n if (document.body) ro.observe(document.body);\n return () => ro.disconnect();\n }, [ref, name, enabled]);\n}\n","'use client';\n\nimport { isValidElement, useState, useRef, useEffect } from 'react';\nimport { Button } from './Button.jsx';\nimport { ChevronLeftIcon, XCircleFillIcon, MenuIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport { usePinnedBarGuard } from './internal/usePinnedBarGuard.js';\n\n/* NavigationBar — the top app bar. Sub-flavors share one component\n (`variant=\"main\" | \"sub\" | \"search\"`), each rendering a single horizontal\n strip with 16px inline + 8px block padding and a 56px min-height over\n `sys.color.surface`.\n\n Main — left-aligned page title (typo.heading.lg, 24/Semibold) with a\n leading menu icon and up to four trailing action icons. On a drill-in\n (content-detail) screen, pass `onBack` instead of `onMenuClick` and the\n leading glyph swaps to a back chevron — same row, different entry point.\n Sub — three-column grid (leading / centred title / trailing) with a\n smaller title (typo.heading.sm, 16/Semibold) and a single trailing\n slot that takes an icon, a labelled button, or an inline text link.\n\n Icon slots render as a plain `<button>` with a 24px glyph, a\n transparent rest fill, and the system's hover / pressed / focus\n overlays painted via the same `state.*` rule every other control\n uses. Not delegated to Toolbar Button — Toolbar Button is the Filter\n chip chrome (32px capsule, 16px icon) and shrinks the nav bar's\n glyphs out of the 24-rung the spec calls for. */\n\nfunction isIconDescriptor(value) {\n return value && typeof value === 'object' && !isValidElement(value) && 'icon' in value;\n}\nfunction isLinkDescriptor(value) {\n return value && typeof value === 'object' && !isValidElement(value) && 'label' in value && !('icon' in value);\n}\n\n/* Every icon slot in the bar renders as the canonical Icon Button\n sub-component (`Button variant=\"icon\"`) so the bar's hit\n target, hover overlay, and focus ring stay aligned with every other\n icon-only surface in the system without duplicating chrome. */\nfunction IconSlot({ icon, 'aria-label': ariaLabel, onClick, size = 'large', ...rest }) {\n return (\n <Button variant=\"icon\" size={size} icon={icon} aria-label={ariaLabel} onClick={onClick} {...rest} />\n );\n}\n\nfunction renderSlot(slot) {\n if (slot == null) return null;\n if (isValidElement(slot)) return slot;\n if (isIconDescriptor(slot)) return <IconSlot {...slot} />;\n if (isLinkDescriptor(slot)) {\n const { label, href, onClick } = slot;\n return (\n <Button variant=\"text\" href={href} onClick={onClick}>{label}</Button>\n );\n }\n return null;\n}\n\nexport function NavigationBar({\n variant = 'main',\n /* Sub variant — `surface` (default, opaque page chrome) or `overlay`\n (transparent + fixed-white icons, for floating over a hero / cover\n image such as inside ProfileHeader). Ignored on main / search. */\n appearance = 'surface',\n title,\n /* Main variant (tab root) — drawer trigger. The glyph is fixed (the menu /\n hamburger); consumers only wire onClick + the a11y label. */\n onMenuClick,\n menuLabel = 'Open menu',\n /* Sub variant — leading slot accepts a node or `{ icon, ... }`. */\n leading,\n leadingLabel,\n /* Main variant — up to four trailing icon descriptors. */\n trailingActions,\n /* Sub variant — single trailing slot (icon / button / link / node). */\n trailing,\n /* Search variant — bare-input bar with leading back + conditional clear. */\n value,\n defaultValue,\n placeholder,\n onChange,\n onSubmit,\n /* Back affordance — search / sub leading back, and the Main drill-in\n (content-detail) case: passing onBack swaps Main's menu glyph for a back\n chevron wired to it. */\n onBack,\n backLabel = 'Back',\n clearLabel = 'Clear search',\n autoFocus = true,\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'NavigationBar');\n // Overlay nav floats over a hero cover and scrolls with it by design — skip.\n usePinnedBarGuard(ref, 'NavigationBar', appearance !== 'overlay');\n if (variant === 'search') {\n return (\n <SearchBar\n forwardRef={ref}\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder ?? 'Search by keyword'}\n onChange={onChange}\n onSubmit={onSubmit}\n onBack={onBack}\n backLabel={backLabel}\n clearLabel={clearLabel}\n autoFocus={autoFocus}\n className={className}\n {...rest}\n />\n );\n }\n\n if (variant === 'sub') {\n const leadingEl = leading\n ? renderSlot(isIconDescriptor(leading) || isLinkDescriptor(leading) || isValidElement(leading)\n ? leading\n : { icon: leading, 'aria-label': leadingLabel })\n : null;\n const trailingEl = renderSlot(trailing);\n return (\n <header\n ref={ref}\n className={joinClasses(\n 'chorus-navigation-bar',\n 'chorus-navigation-bar--sub',\n appearance === 'overlay' && 'chorus-navigation-bar--overlay',\n className,\n )}\n data-appearance={appearance}\n {...rest}\n >\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--leading\">{leadingEl}</div>\n {/* Title is optional (composer bars omit it; overlay bars keep the\n identity below the bar). The middle grid cell must always exist —\n the 1fr/auto/1fr columns map by order — so a title-less bar\n renders a non-heading placeholder instead of an empty <h1>. */}\n {title != null && title !== '' ? (\n <h1 className=\"chorus-navigation-bar__title\">{title}</h1>\n ) : (\n <span className=\"chorus-navigation-bar__title\" aria-hidden=\"true\" />\n )}\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--trailing\">{trailingEl}</div>\n </header>\n );\n }\n\n /* Main — left-aligned title + trailing icon cluster (0..4). The leading\n glyph is the menu / hamburger on a tab root (wired to `onMenuClick`), or\n a back chevron on a drill-in / content-detail screen (wired to `onBack`).\n `onBack` wins when both are passed; with neither, the menu is the default. */\n const actions = Array.isArray(trailingActions) ? trailingActions : [];\n const isDrillIn = typeof onBack === 'function';\n return (\n <header\n ref={ref}\n className={joinClasses('chorus-navigation-bar', 'chorus-navigation-bar--main', className)}\n {...rest}\n >\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--leading\">\n {isDrillIn\n ? <IconSlot icon={<ChevronLeftIcon />} aria-label={backLabel} onClick={onBack} />\n : <IconSlot icon={<MenuIcon />} aria-label={menuLabel} onClick={onMenuClick} />}\n </div>\n <h1 className=\"chorus-navigation-bar__title\">{title}</h1>\n {actions.length > 0 ? (\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--trailing\">\n {actions.slice(0, 4).map((action, i) => {\n const el = renderSlot(action);\n return el ? <span key={i} className=\"chorus-navigation-bar__action\">{el}</span> : null;\n })}\n </div>\n ) : null}\n </header>\n );\n}\n\n/* Search — three-column grid like Sub, but the centre slot is a bare\n single-line input (no border, no fill — the bar carries the search\n affordance via the placeholder + page context, not via a pill chrome).\n The trailing column hosts a clear (×) Icon Button only when the value\n is non-empty; the input column expands to fill the freed space when\n the clear collapses, but never reflows its leading edge so the caret\n stays pixel-stable. The variant has no `disabled` state — gating\n belongs on the trigger that routes here, never on the bar itself. */\nfunction SearchBar({\n forwardRef,\n value,\n defaultValue,\n placeholder,\n onChange,\n onSubmit,\n onBack,\n backLabel,\n clearLabel,\n autoFocus,\n className,\n ...rest\n}) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const current = isControlled ? value : internalValue;\n const inputRef = useRef(null);\n\n useEffect(() => {\n if (autoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n }, [autoFocus]);\n\n function commit(next) {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n }\n\n function handleKeyDown(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n onSubmit?.(current);\n return;\n }\n if (event.key === 'Escape') {\n if (current !== '') {\n event.preventDefault();\n commit('');\n return;\n }\n event.preventDefault();\n onBack?.();\n }\n }\n\n function handleClear() {\n commit('');\n inputRef.current?.focus();\n }\n\n const showClear = current !== '';\n\n return (\n <header\n ref={forwardRef}\n className={joinClasses('chorus-navigation-bar', 'chorus-navigation-bar--search', className)}\n {...rest}\n >\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--leading\">\n <IconSlot icon={<ChevronLeftIcon />} aria-label={backLabel} onClick={onBack} />\n </div>\n <input\n ref={inputRef}\n type=\"search\"\n className=\"chorus-navigation-bar__search-input\"\n value={current}\n placeholder={placeholder}\n onChange={(e) => commit(e.target.value)}\n onKeyDown={handleKeyDown}\n />\n {showClear ? (\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--trailing\">\n {/* size=\"medium\" → 32 × 32 / 16-glyph Icon Button. The clear is a\n secondary affordance (the user's primary act on this bar is\n typing); a 40 × 40 / 24-glyph capsule would over-claim weight\n against the bare input next to it. */}\n <IconSlot icon={<XCircleFillIcon />} aria-label={clearLabel} onClick={handleClear} size=\"medium\" />\n </div>\n ) : null}\n </header>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { NavigationBar } from './NavigationBar.jsx';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { ChevronLeftIcon, GlobeIcon, LockIcon, SearchIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\nconst PLACEHOLDER_IMAGE = '/placeholder.png';\n\nconst VISIBILITY = {\n public: { Icon: GlobeIcon, defaultLabel: 'Public' },\n private: { Icon: LockIcon, defaultLabel: 'Private' },\n};\n\n/* App status-bar mock — iOS-style OS chrome (time + cellular / Wi-Fi /\n battery glyphs) painted at the very top of the cover, above the overlay\n NavigationBar. Transparent fill, fixed-white glyphs so the cover image\n shows through behind it — same \"image provides the contrast\" contract\n as the overlay nav. Purely decorative OS-chrome mimicry: intentionally\n off-token (raw px + -apple-system font, like the docs IOSKeyboard\n mock), so the whole region is aria-hidden. iOS's canonical 9:41 time\n by default. */\nfunction AppStatusBar({ time = '9:41' }) {\n return (\n <div className=\"chorus-profile-header__status-bar\" aria-hidden=\"true\">\n <span className=\"chorus-profile-header__status-bar-time\">{time}</span>\n <span className=\"chorus-profile-header__status-bar-glyphs\">\n <svg width=\"18\" height=\"12\" viewBox=\"0 0 18 12\" fill=\"currentColor\" focusable=\"false\" aria-hidden=\"true\">\n <rect x=\"0\" y=\"7.5\" width=\"3\" height=\"4.5\" rx=\"1\" />\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"7\" rx=\"1\" />\n <rect x=\"10\" y=\"2.5\" width=\"3\" height=\"9.5\" rx=\"1\" />\n <rect x=\"15\" y=\"0\" width=\"3\" height=\"12\" rx=\"1\" />\n </svg>\n <svg width=\"16\" height=\"12\" viewBox=\"0 0 24 18\" fill=\"currentColor\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M1 5l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93-1.07 7.08-1.07 1 5zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 5.14 8.87 5.14 5 9z\" />\n </svg>\n <svg width=\"25\" height=\"12\" viewBox=\"0 0 25 12\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\">\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"11\" rx=\"3.2\" stroke=\"currentColor\" strokeOpacity=\"0.4\" />\n <rect x=\"2\" y=\"2\" width=\"18\" height=\"8\" rx=\"1.8\" fill=\"currentColor\" />\n <path d=\"M23 4.2c.85.35 1.4 1 1.4 1.8s-.55 1.45-1.4 1.8V4.2z\" fill=\"currentColor\" fillOpacity=\"0.4\" />\n </svg>\n </span>\n </div>\n );\n}\n\n/* ProfileHeader — identity block at the top of a profile detail screen.\n Anatomy (top to bottom):\n - Overlay app status bar (optional, `statusBar`) — iOS-style time +\n cellular / Wi-Fi / battery glyphs, transparent fill, fixed-white,\n so the cover image shows through the OS-chrome zone\n - Overlay NavigationBar (sub variant, appearance=\"overlay\") —\n transparent, fixed-white icons, floating over the cover\n - Cover band (200px tall, full-bleed, image-area fallback)\n - Action row: avatar (Thumbnail 56, overlapping cover) + follow\n Toggle Button (positioned 16px below cover bottom)\n - Heading: name (<h1>, heading.lg) + meta row (visibility · followers)\n The cover bleeds edge-to-edge inside the page-shell content box; the\n identity column pays its own 16px inline / block padding. The\n NavigationBar is absolutely positioned over the cover so the cover\n image fills the same 200px height regardless of the bar's presence.\n See schema/components/profile-header/profile-header.md. */\nexport function ProfileHeader({\n name,\n avatar,\n cover,\n visibility = 'public',\n visibilityLabel,\n followers,\n followed = false,\n onFollowChange,\n followLabel = 'Follow',\n followingLabel = 'Following',\n /* App status bar. Pass `statusBar` (or `statusBar={{ time }}`) to paint\n an iOS-style OS status bar at the cover's top edge — transparent fill,\n fixed-white glyphs, the cover image showing through. Off by default. */\n statusBar = false,\n /* Overlay nav controls. Defaults to a back-arrow leading + search\n trailing. Pass `nav={false}` to opt out of the overlay bar. */\n nav,\n onBack,\n onSearch,\n backLabel = 'Back',\n searchLabel = 'Search',\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'ProfileHeader');\n\n const visibilityKind = VISIBILITY[visibility] ?? VISIBILITY.public;\n const VisibilityIcon = visibilityKind.Icon;\n const visibilityText = visibilityLabel ?? visibilityKind.defaultLabel;\n\n const handleFollowClick = () => {\n if (onFollowChange) onFollowChange(!followed);\n };\n\n const showNav = nav !== false;\n const showStatusBar = statusBar !== false && statusBar != null;\n const statusBarTime = typeof statusBar === 'object' ? statusBar.time : undefined;\n\n return (\n <section\n ref={ref}\n className={joinClasses(\n 'chorus-profile-header',\n showStatusBar && 'chorus-profile-header--with-status-bar',\n className,\n )}\n {...rest}\n >\n <div className=\"chorus-profile-header__cover\" aria-hidden=\"true\">\n <img\n className=\"chorus-profile-header__cover-image\"\n src={cover?.src ?? PLACEHOLDER_IMAGE}\n alt={cover?.alt ?? ''}\n />\n {showStatusBar || showNav ? (\n <div className=\"chorus-profile-header__overlay\">\n {showStatusBar ? <AppStatusBar time={statusBarTime} /> : null}\n {showNav ? (\n <div className=\"chorus-profile-header__nav\">\n <NavigationBar\n variant=\"sub\"\n appearance=\"overlay\"\n title=\"\"\n leading={{ icon: <ChevronLeftIcon />, 'aria-label': backLabel, onClick: onBack }}\n trailing={{ icon: <SearchIcon />, 'aria-label': searchLabel, onClick: onSearch }}\n />\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n\n <div className=\"chorus-profile-header__identity\">\n <div className=\"chorus-profile-header__action-row\">\n <div className=\"chorus-profile-header__avatar-wrap\">\n <Thumbnail\n size={56}\n outlined\n {...(avatar ?? { alt: name })}\n />\n </div>\n <Button\n variant=\"toggle\"\n active={followed}\n onClick={handleFollowClick}\n >\n {followed ? followingLabel : followLabel}\n </Button>\n </div>\n\n <div className=\"chorus-profile-header__heading\">\n <h1 className=\"chorus-profile-header__name\">{name}</h1>\n <div className=\"chorus-profile-header__meta\">\n <VisibilityIcon size={16} className=\"chorus-profile-header__meta-icon\" aria-hidden=\"true\" />\n <span className=\"chorus-profile-header__meta-visibility\">{visibilityText}</span>\n <span className=\"chorus-profile-header__meta-sep\" aria-hidden=\"true\">·</span>\n <span className=\"chorus-profile-header__meta-followers\">{followers}</span>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"input\",\n \"exportAlias\": \"Input\",\n \"description\": \"Single-line text field. Transparent-fill box (so it adopts whatever surface it sits on — a bottom sheet, a card, the page) whose visible stroke is an inset box-shadow, never a `border`, so it costs zero layout in every state — the field's height is exactly content + padding (a 24px line-box + 2 × 8px = 40px). Rest/hover stroke is 1px `hairline`, the active stroke steps to 2px `thin`; going active never moves the field's footprint or caret. The placeholder shows in a faint `placeholder` colour while the field is empty and the value in `text` colour once it isn't (value-driven). A trailing clear button appears only while the field is active and holds text. An optional `label` above and `helper` text or `maxLength` character count below (the two are mutually exclusive) wrap the box in a field group. The Chorus focus ring is a position:absolute overlay layer; an error appearance re-tones the whole container.\",\n \"element\": \"input\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"input\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"default\",\n \"error\"\n ],\n \"default\": \"default\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Visible label rendered above the field box and associated with it (`<label htmlFor>`).\"\n },\n \"helper\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Assistive text rendered below the field box, left-aligned. **Optional on every appearance** — omit the prop to render the field without an assistive rung; the box and label keep their footprint. On the `error` appearance the helper re-tones to `sys.color.error` so the message reads as the error caption; an error field may still be shown without a helper, in which case only the field box re-tones. Mutually exclusive with `maxLength` — if both are given, the character count is shown and `helper` is ignored.\"\n },\n \"maxLength\": {\n \"type\": \"number\",\n \"optional\": true,\n \"description\": \"Caps the input length and renders a `current/max` character count below the field box, right-aligned. Mutually exclusive with `helper`.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"group\": {\n \"required\": false,\n \"description\": \"Wrapper around the label + box + helper/count, present only when at least one of `label` / `helper` / `maxLength` is supplied. A `display: flex` column at `groupGap` between rungs.\",\n \"intrinsic\": true\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Visible label above the box. `sys.typo.label.md`, `sys.color.onSurface`. Associated with the input via `htmlFor`.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"container\": {\n \"required\": true,\n \"description\": \"The box — owns the transparent fill, the stroke (an inset box-shadow, not a `border`, so it never affects layout), radius, padding, focus ring.\",\n \"intrinsic\": true\n },\n \"input\": {\n \"required\": true,\n \"description\": \"The editable single-line text. Renders the value in the appearance's `text` colour when present, or the appearance's faint `placeholder` colour when empty — value-driven, not focus-driven. Carries `aria-describedby` pointing at the helper / count when present.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"clear\": {\n \"required\": false,\n \"description\": \"Trailing '×' button (XCircleFillIcon) that wipes the value and returns focus to the input. Rendered into the DOM whenever the value is non-empty and the field isn't disabled, but **shown only while the box is focused** — so it appears only in the active state with text to clear; hidden on an empty / blurred / disabled field.\",\n \"intrinsic\": true\n },\n \"helper\": {\n \"required\": false,\n \"description\": \"Assistive text below the box, left-aligned. `sys.typo.body.sm`, `sys.color.onSurfaceVariant`; on the `error` appearance the colour re-tones to `sys.color.error` so the message reads as the error caption. Referenced by the input's `aria-describedby`. Not rendered when a `maxLength` count is present, and intentionally omittable on every appearance (including `error`) — pass nothing and the field renders without an assistive rung.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"count\": {\n \"required\": false,\n \"description\": \"`current/max` character count below the box, right-aligned, present when `maxLength` is set. `sys.typo.body.sm`, `sys.color.onSurfaceVariant`; the current-count number is `sys.typo.label.md` weight in `sys.color.onSurface`. Referenced by the input's `aria-describedby`; updates `aria-live=\\\"polite\\\"`.\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.md\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.thin\",\n \"groupGap\": \"sys.layout.stack.xs\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"helperTypo\": \"sys.typo.body.sm\",\n \"countTypo\": \"sys.typo.body.sm\",\n \"countCurrentTypo\": \"sys.typo.label.md\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"groupColors\": {\n \"label\": \"sys.color.onSurface\",\n \"helper\": \"sys.color.onSurfaceVariant\",\n \"helperError\": \"sys.color.error\",\n \"count\": \"sys.color.onSurfaceVariant\",\n \"countCurrent\": \"sys.color.onSurface\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.onSurface\",\n \"placeholder\": \"sys.color.outline\",\n \"borderRest\": \"sys.color.outlineVariant\",\n \"borderHover\": \"sys.color.outline\",\n \"borderActive\": \"sys.color.onSurface\"\n },\n \"error\": {\n \"background\": \"sys.color.errorContainer\",\n \"text\": \"sys.color.onErrorContainer\",\n \"placeholder\": \"sys.color.onErrorContainer\",\n \"borderRest\": \"sys.color.error\",\n \"borderHover\": \"sys.color.error\",\n \"borderActive\": \"sys.color.error\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null,\n \"border\": \"borderRest\"\n },\n \"hovered\": {\n \"overlay\": null,\n \"border\": \"borderHover\"\n },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": {\n \"color\": \"text\",\n \"opacity\": \"sys.state.pressed\"\n },\n \"nestedActionScope\": \"The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button — that '×' 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.\"\n },\n \"active\": {\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"caret\": \"visible\",\n \"showsClearWhenValue\": true,\n \"note\": \"The stroke steps from its rest `hairline` (1px) to `activeStrokeWeight` (2px) and re-tones to `borderActive` — but it is an inset `box-shadow`, not a `border`, so the box model is untouched: the field's footprint, caret, and text position are pixel-stable as it goes active. Nothing reflows. The clear button is shown only in this state (and only when the value is non-empty).\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.surfaceContainerLow\",\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressClear\": true,\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the field is in (most commonly `active` since focus implies the caret is in the box). The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"accessibility\": {\n \"labelling\": \"The visible label associates with the input via `<label htmlFor>`. When no visible label is composed, the consumer supplies an aria-label.\",\n \"describedby\": \"The input's aria-describedby points at the helper id (when a helper is rendered) or the count id (when a maxLength count is rendered) — the two are mutually exclusive.\",\n \"invalid\": \"On the `error` appearance the input carries aria-invalid='true' — color alone does not expose invalidity to assistive tech. aria-invalid clears when the appearance returns to default.\",\n \"errorAnnouncement\": \"When the helper is carrying an error message (error appearance), its container is a polite live region (role='alert' / aria-live='polite') so the message is announced when it appears without yanking focus. The neutral (non-error) helper is not a live region.\",\n \"count\": \"The character count updates aria-live='polite' (see the count slot).\"\n },\n \"forbidden\": [\n \"raw <input> styled with Tailwind / inline color — the input is wrapped in the chorus-field chrome that owns the stroke\",\n \"active-state stroke painted with sys.color.primary / a container tier — the active stroke is sys.color.onSurface (default appearance) or sys.color.error (error appearance), never primary or a container tier\",\n \"stroke painted via `border:` — stroke is an inset box-shadow on the field\",\n \"helper text rendered outside the helperText slot\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"textarea\",\n \"exportAlias\": \"Textarea\",\n \"description\": \"Multi-line text field. Identical chrome contract to [input](./input.md) — transparent-fill box whose visible stroke is an inset box-shadow (never a `border`, so the field's footprint is pixel-stable across every state), 16px text in `body.md`, optional `label` above and `helper` / `maxLength` below. Diverges only on the inner element: a `<textarea>` instead of a single-line `<input>`, with a configurable `rows` rung (default 4) and a vertical-only resize handle. Same `label` / `helper` / `maxLength` group rules as input — multi-line + character count is the canonical Chorus pairing for any composition field that bounds the message length.\",\n \"element\": \"textarea\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"textarea\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\"default\", \"error\"],\n \"default\": \"default\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Visible label rendered above the field box and associated with it (`<label htmlFor>`).\"\n },\n \"helper\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Assistive text rendered below the field box, left-aligned. Same rules as [input.helper](./input.md): mutually exclusive with `maxLength`, optional on every appearance, re-tones to `sys.color.error` on the error appearance.\"\n },\n \"maxLength\": {\n \"type\": \"number\",\n \"optional\": true,\n \"description\": \"Caps the value length and renders a `current/max` character count below the box, right-aligned. Mutually exclusive with `helper`.\"\n },\n \"rows\": {\n \"type\": \"number\",\n \"default\": 4,\n \"description\": \"Minimum visible rows. The textarea is `resize: vertical` so the user can pull it taller; the value never shrinks below `rows`.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"group\": {\n \"required\": false,\n \"description\": \"Wrapper around the label + box + helper/count, present only when at least one of `label` / `helper` / `maxLength` is supplied. Delegates to the input/textarea-shared group spec.\",\n \"intrinsic\": true\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Visible label above the box. `sys.typo.label.md`, `sys.color.onSurface`. Associated with the textarea via `htmlFor`.\",\n \"accepts\": [\"text\"]\n },\n \"container\": {\n \"required\": true,\n \"description\": \"The box — owns the transparent fill, the stroke (an inset box-shadow), radius, padding, focus ring. Same chrome as input; differs only in `align-items: stretch` so the inner textarea fills the box height.\",\n \"intrinsic\": true\n },\n \"textarea\": {\n \"required\": true,\n \"description\": \"The editable multi-line text. `body.md` typo, `resize: vertical`, `rows` minimum. Carries `aria-describedby` pointing at the helper / count when present. No trailing clear button — the value can be long enough that wiping it via a single click is hostile; the user clears multi-line content by selecting text.\",\n \"accepts\": [\"text\"]\n },\n \"helper\": {\n \"required\": false,\n \"description\": \"Assistive text below the box. Same rules as input.helper.\",\n \"accepts\": [\"text\"]\n },\n \"count\": {\n \"required\": false,\n \"description\": \"`current/max` character count below the box, right-aligned. Same rules as input.count.\",\n \"accepts\": [\"text\"]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.md\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.thin\",\n \"groupGap\": \"sys.layout.stack.xs\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"helperTypo\": \"sys.typo.body.sm\",\n \"countTypo\": \"sys.typo.body.sm\",\n \"countCurrentTypo\": \"sys.typo.label.md\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\",\n \"rowsDefault\": 4,\n \"resize\": \"vertical\"\n },\n \"groupColors\": {\n \"label\": \"sys.color.onSurface\",\n \"helper\": \"sys.color.onSurfaceVariant\",\n \"helperError\": \"sys.color.error\",\n \"count\": \"sys.color.onSurfaceVariant\",\n \"countCurrent\": \"sys.color.onSurface\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.onSurface\",\n \"placeholder\": \"sys.color.outline\",\n \"borderRest\": \"sys.color.outlineVariant\",\n \"borderHover\": \"sys.color.outline\",\n \"borderActive\": \"sys.color.onSurface\"\n },\n \"error\": {\n \"background\": \"sys.color.errorContainer\",\n \"text\": \"sys.color.onErrorContainer\",\n \"placeholder\": \"sys.color.onErrorContainer\",\n \"borderRest\": \"sys.color.error\",\n \"borderHover\": \"sys.color.error\",\n \"borderActive\": \"sys.color.error\"\n }\n },\n \"states\": {\n \"default\": { \"overlay\": null, \"border\": \"borderRest\" },\n \"hovered\": { \"overlay\": null, \"border\": \"borderHover\" },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": { \"color\": \"text\", \"opacity\": \"sys.state.pressed\" },\n \"nestedActionScope\": \"The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button — that '×' 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.\"\n },\n \"active\": {\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"caret\": \"visible\",\n \"note\": \"Stroke steps from `hairline` (1px) to `activeStrokeWeight` (2px) as an inset box-shadow — same pixel-stable contract as input.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.surfaceContainerLow\",\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Same outward 3-layer ring as input.focusIndicator.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"raw <textarea> styled with Tailwind / inline color — the textarea is wrapped in the chorus-field chrome that owns the stroke\",\n \"auto-grow without bounds — the textarea has a `rows` floor; tall content is reachable by the user via the resize handle, not by an uncapped programmatic grow\",\n \"horizontal resize handle — only the vertical handle is allowed (`resize: vertical`); horizontal resize breaks the parent column's rhythm\",\n \"trailing clear button — multi-line content is too costly to wipe in one click\",\n \"stroke painted via `border:` — stroke is an inset box-shadow on the field\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"search\",\n \"exportAlias\": \"SearchBar\",\n \"description\": \"Single-line search field — a search-shaped sibling of Input. Same transparent-fill box, same hairline-at-rest / thin-at-active inset box-shadow stroke (so the box model is untouched in every state), same placeholder-vs-value colour rules, same focus ring, same trailing clear button. Two anatomy differences from Input — a leading `SearchIcon` glyph pinned at the box's inner-left edge so the field reads as a search affordance before the user types, and the corner radius steps from `sys.radius.md` to `sys.radius.full` (pill). **Search Bar is a bare box only — it does not accept a `label`, `helper`, or `maxLength`**, and so never renders the field-group wrapper; it also carries no `error` appearance — error reporting belongs to a labelled field. A search rung sits in chrome (a header bar, a list filter, a sheet's top) where the affordance is carried by the leading glyph and the placeholder; stacking a visible label or a `current/max` count on top of that competes with the search affordance instead of reinforcing it. Reach for [Input](./input.md) when the rung needs a labelled / counted form field or an error treatment.\",\n \"element\": \"input\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"search\"\n },\n \"appearance\": {\n \"type\": \"literal\",\n \"value\": \"default\",\n \"description\": \"Search Bar carries only the `default` appearance — there is no `error` form (error reporting belongs to a labelled Input).\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"The pill box — owns the transparent fill, the stroke (an inset box-shadow, not a `border`, so it never affects layout), full radius, padding, focus ring.\",\n \"intrinsic\": true\n },\n \"leading\": {\n \"required\": true,\n \"description\": \"The leading `SearchIcon` glyph pinned at the box's inner-left edge. Inherits the field's text colour (`sys.color.onSurface`); decorative — not a real button, has `aria-hidden`. 16px (`sys.icon.md`), matching the clear button's footprint so the two affixes balance.\",\n \"intrinsic\": true\n },\n \"input\": {\n \"required\": true,\n \"description\": \"The editable single-line text. Renders the value in the appearance's `text` colour when present, or the appearance's faint `placeholder` colour when empty — value-driven, not focus-driven.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"clear\": {\n \"required\": false,\n \"description\": \"Trailing '×' button (XCircleFillIcon) that wipes the value and returns focus to the input. Rendered into the DOM whenever the value is non-empty and the field isn't disabled, but **shown only while the box is focused** — so it appears only in the active state with text to clear; hidden on an empty / blurred / disabled field.\",\n \"intrinsic\": true\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.full\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.thin\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.onSurface\",\n \"placeholder\": \"sys.color.outline\",\n \"borderRest\": \"sys.color.outlineVariant\",\n \"borderHover\": \"sys.color.outline\",\n \"borderActive\": \"sys.color.onSurface\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null,\n \"border\": \"borderRest\"\n },\n \"hovered\": {\n \"overlay\": null,\n \"border\": \"borderHover\"\n },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": {\n \"color\": \"text\",\n \"opacity\": \"sys.state.pressed\"\n },\n \"nestedActionScope\": \"The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button — that '×' 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.\"\n },\n \"active\": {\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"caret\": \"visible\",\n \"showsClearWhenValue\": true,\n \"note\": \"The stroke steps from its rest `hairline` (1px) to `activeStrokeWeight` (2px) and re-tones to `borderActive` — but it is an inset `box-shadow`, not a `border`, so the box model is untouched: the field's footprint, caret, and text position are pixel-stable as it goes active. Nothing reflows. The clear button is shown only in this state (and only when the value is non-empty).\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.surfaceContainerLow\",\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressClear\": true,\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the field is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 3px outward extent is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"leading search glyph as a separate hit area — the entire field is the click / focus target\",\n \"clear glyph rendered when value is empty — the clear affordance only appears with content\",\n \"search field stacked under a navigation-bar/search — the bar variant already embeds the search input\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"select\",\n \"exportAlias\": \"Select\",\n \"description\": \"Input-shaped picker — the same transparent-fill box, hairline-at-rest / thin-at-active inset box-shadow stroke, label / helper rungs and `error` re-tone as Input, but the field is read-only and the trailing slot carries a `ArrowDownIcon` chevron (16px / `sys.icon.md`). Clicking anywhere in the box fires `onOpen`, and the consumer raises a `BottomSheet` (or other surface) with the option list. The chosen value is echoed back through `value`. Supports an optional leading icon, sized to `sys.icon.md`, that pins at the inner-left edge — same affordance as Search bar's glyph.\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"select\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"default\",\n \"error\"\n ],\n \"default\": \"default\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"helper\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional 16px (`sys.icon.md`) decorative glyph pinned at the inner-left edge of the field. Tracks the field's active text colour (`sys.color.onSurface` on the default appearance, `sys.color.onErrorContainer` on `error`) so the glyph reads as part of the typed content.\"\n },\n \"onOpen\": {\n \"type\": \"function\",\n \"optional\": true,\n \"description\": \"Fired when the field box or the trailing chevron is clicked. Consumers use this to raise a `BottomSheet` with the option list.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"intrinsic\": true,\n \"description\": \"The box — same as Input.\"\n },\n \"leading\": {\n \"required\": false,\n \"description\": \"Optional 16px glyph at the inner-left edge. Decorative (`aria-hidden`).\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"input\": {\n \"required\": true,\n \"description\": \"Read-only echo of the selected value (or the placeholder when empty).\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"dropdown\": {\n \"required\": true,\n \"intrinsic\": true,\n \"description\": \"Trailing chevron button (`ArrowDownIcon`, 16px). Always present, fires `onOpen`.\"\n },\n \"label\": {\n \"required\": false,\n \"accepts\": [\n \"text\"\n ]\n },\n \"helper\": {\n \"required\": false,\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.md\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.thin\",\n \"groupGap\": \"sys.layout.stack.xs\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"helperTypo\": \"sys.typo.body.sm\",\n \"countTypo\": \"sys.typo.body.sm\",\n \"countCurrentTypo\": \"sys.typo.label.md\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"groupColors\": {\n \"label\": \"sys.color.onSurface\",\n \"helper\": \"sys.color.onSurfaceVariant\",\n \"helperError\": \"sys.color.error\",\n \"count\": \"sys.color.onSurfaceVariant\",\n \"countCurrent\": \"sys.color.onSurface\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.onSurface\",\n \"placeholder\": \"sys.color.outline\",\n \"borderRest\": \"sys.color.outlineVariant\",\n \"borderHover\": \"sys.color.outline\",\n \"borderActive\": \"sys.color.onSurface\"\n },\n \"error\": {\n \"background\": \"sys.color.errorContainer\",\n \"text\": \"sys.color.onErrorContainer\",\n \"placeholder\": \"sys.color.onErrorContainer\",\n \"borderRest\": \"sys.color.error\",\n \"borderHover\": \"sys.color.error\",\n \"borderActive\": \"sys.color.error\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null,\n \"border\": \"borderRest\"\n },\n \"hovered\": {\n \"overlay\": null,\n \"border\": \"borderHover\"\n },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": {\n \"color\": \"text\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"active\": {\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.surfaceContainerLow\",\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Same keyboard-focus indicator as Input — outward two-layer ring composed over the active stroke.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"outerWidth\": \"sys.borderWidth.thin\",\n \"outerColor\": \"sys.color.focus\",\n \"insetWidth\": \"sys.borderWidth.hairline\",\n \"insetColor\": \"sys.color.focusInset\"\n },\n \"trigger\": \":focus-visible\"\n },\n \"accessibility\": {\n \"role\": \"the field box is the combobox trigger: role='combobox' with aria-haspopup='listbox' (the raised BottomSheet hosts the option list as a listbox) and aria-expanded reflecting whether the popup is open. aria-controls points at the popup list's id while open. Mirrors the dropdown-trigger contract already defined on button/text (aria-haspopup / aria-expanded / aria-controls).\",\n \"focusable\": \"Because the element is a `div`, it MUST carry tabindex='0' so it is reachable in the tab order — without it the picker is keyboard-inoperable.\",\n \"keyboard\": \"Enter, Space, and ArrowDown all fire onOpen (open the option surface) when the field is focused — a keyboard user must be able to open the picker without a pointer. Esc closes the raised surface (owned by the BottomSheet).\",\n \"labelling\": \"aria-labelledby points at the label when one is composed; otherwise the consumer supplies an aria-label. aria-describedby points at the helper when rendered.\",\n \"invalid\": \"On the `error` appearance the trigger carries aria-invalid='true', cleared when the appearance returns to default — same contract as Input.\",\n \"leadingIconDecorative\": \"The leading glyph is aria-hidden (see the leading slot).\"\n },\n \"forbidden\": [\n \"select rendered as a raw <select> — select variant wraps the native control with the chorus-field chrome\",\n \"trailing chevron omitted — select always carries the trailing chevron in the rest state\",\n \"select trigger that is not keyboard-focusable / openable — the div MUST carry tabindex='0' and open on Enter / Space / ArrowDown; a pointer-only picker is forbidden\"\n ]\n}\n","'use client';\n\nimport { Children, isValidElement, useId, useRef, useState } from 'react';\nimport inputSpec from '../../../schema/components/form-field/input.spec.json';\nimport textareaSpec from '../../../schema/components/form-field/textarea.spec.json';\nimport searchBarSpec from '../../../schema/components/form-field/search.spec.json';\nimport selectSpec from '../../../schema/components/form-field/select.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\nimport { XCircleFillIcon, ArrowDownIcon, SearchIcon } from './icons/index.js';\n\n/* `hovered` / `pressed` / `active` are the field's interactive feedback\n states (pointer-driven in the real component). `focused` is the\n accessibility focus ring — not part of that feedback set, and in the\n docs preview it shows only when forced from the State control. All are\n reproduced via `data-force-state` on the field box. `disabled` is a\n real prop, not a forced state. */\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'active', 'focused']);\n\n/* Internal field renderer shared by every Form field sub-component. The\n `.chorus-field` <div> is the bordered box (stroke = inset box-shadow,\n never a `border`; transparent fill); the chromeless <input> inside\n supplies the editable text, an optional **leading** decorative slot\n (Search bar's magnifier glyph), and an optional trailing clear button.\n When a `label`, `helper`, or `maxLength` is supplied the box is wrapped\n in a `.chorus-field-group` that also renders the label above and the\n assistive text / character count below — `helper` and `maxLength` are\n mutually exclusive (if both are passed, the count wins). Value can be\n controlled (`value` + `onChange`) or uncontrolled (`defaultValue`).\n The clear button is rendered whenever the value is non-empty; CSS keeps\n it hidden unless the box is focused, so it only ever shows in the\n active state with text to wipe. */\nfunction FormFieldBox({\n spec,\n subcomponent,\n leadingSlot = null,\n leadingIcon = null,\n trailingSlot = null,\n readOnly = false,\n onClick,\n appearance = spec.props.appearance.default,\n value,\n defaultValue = '',\n placeholder,\n label,\n helper,\n maxLength,\n rows,\n disabled = false,\n state,\n className,\n style,\n onChange,\n onClear,\n ...rest\n}) {\n const isTextarea = subcomponent === 'textarea';\n const resolvedLeading = leadingSlot ?? leadingIcon ?? null;\n const app = spec.appearances[appearance] ?? spec.appearances[spec.props.appearance.default];\n const controlled = value !== undefined;\n const [inner, setInner] = useState(defaultValue);\n const current = controlled ? value : inner;\n const valueLen = current == null ? 0 : String(current).length;\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const showClear = !isDisabled && valueLen > 0 && !readOnly && trailingSlot == null && !isTextarea;\n\n const showCount = maxLength != null;\n const showHelper = helper != null && !showCount;\n const hasGroup = label != null || showHelper || showCount;\n\n const inputRef = useRef(null);\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const descId = `${reactId}-desc`;\n const describedBy = hasGroup && (showHelper || showCount) ? descId : undefined;\n const textareaRows = rows ?? spec.sizing?.rowsDefault ?? 4;\n\n const composedStyle = {\n '--field-min-height': tokenToCss(spec.sizing.minHeight),\n '--field-padding-block': tokenToCss(spec.sizing.paddingBlock),\n '--field-padding-inline': tokenToCss(spec.sizing.paddingInline),\n '--field-slot-gap': tokenToCss(spec.sizing.slotGap),\n '--field-radius': tokenToCss(spec.sizing.radius),\n '--field-border-width': tokenToCss(spec.sizing.borderWidth),\n '--field-active-stroke': tokenToCss(spec.sizing.activeStrokeWeight),\n '--field-icon-size': tokenToCss(spec.sizing.iconSize),\n '--field-group-gap': tokenToCss(spec.sizing.groupGap),\n '--field-bg': tokenToCss(app.background),\n '--field-bg-disabled': tokenToCss(spec.states.disabled.background),\n '--field-text': tokenToCss(app.text),\n '--field-placeholder': tokenToCss(app.placeholder),\n '--field-border': tokenToCss(app.borderRest),\n '--field-border-hover': tokenToCss(app.borderHover),\n '--field-border-active': tokenToCss(app.borderActive),\n '--field-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--field-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--field-focus-outer-width': tokenToCss(spec.focusIndicator.ring.outerWidth),\n '--field-focus-outer-color': tokenToCss(spec.focusIndicator.ring.outerColor),\n '--field-focus-inset-width': tokenToCss(spec.focusIndicator.ring.insetWidth),\n '--field-focus-inset-color': tokenToCss(spec.focusIndicator.ring.insetColor),\n ...typoStyles(spec.sizing.textTypo),\n };\n\n const handleChange = (event) => {\n if (!controlled) setInner(event.target.value);\n onChange?.(event);\n };\n\n const handleClear = () => {\n if (!controlled) setInner('');\n onClear?.();\n inputRef.current?.focus();\n };\n\n const fieldBox = (\n <div\n className={joinClasses(\n 'chorus-field',\n `chorus-field--${subcomponent}`,\n `chorus-field--${appearance}`,\n isDisabled && 'is-disabled',\n !hasGroup && className,\n )}\n data-force-state={forcedState ?? undefined}\n style={hasGroup ? undefined : { ...composedStyle, ...style }}\n >\n {resolvedLeading != null ? (\n <span className=\"chorus-field__leading\" aria-hidden=\"true\">\n {resolvedLeading}\n </span>\n ) : null}\n {isTextarea ? (\n <textarea\n ref={inputRef}\n id={hasGroup && label != null ? inputId : undefined}\n className=\"chorus-field__textarea\"\n value={current}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={readOnly}\n rows={textareaRows}\n maxLength={showCount ? maxLength : undefined}\n aria-describedby={describedBy}\n onChange={handleChange}\n onClick={onClick}\n {...(hasGroup ? {} : rest)}\n />\n ) : (\n <input\n ref={inputRef}\n id={hasGroup && label != null ? inputId : undefined}\n type=\"text\"\n className=\"chorus-field__input\"\n value={current}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={readOnly}\n maxLength={showCount ? maxLength : undefined}\n aria-describedby={describedBy}\n onChange={handleChange}\n onClick={onClick}\n {...(hasGroup ? {} : rest)}\n />\n )}\n {showClear ? (\n <button\n type=\"button\"\n className=\"chorus-field__clear\"\n data-nested-action=\"\"\n aria-label=\"Clear\"\n onClick={handleClear}\n >\n <XCircleFillIcon />\n </button>\n ) : null}\n {trailingSlot != null ? (\n <span className=\"chorus-field__trailing\" aria-hidden=\"true\">\n {trailingSlot}\n </span>\n ) : null}\n </div>\n );\n\n if (!hasGroup) return fieldBox;\n\n return (\n <div\n className={joinClasses(\n 'chorus-field-group',\n `chorus-field-group--${appearance}`,\n isDisabled && 'is-disabled',\n className,\n )}\n style={{ ...composedStyle, ...style }}\n {...rest}\n >\n {label != null ? (\n <label className=\"chorus-field-group__label\" htmlFor={inputId}>\n {label}\n </label>\n ) : null}\n {fieldBox}\n {showHelper ? (\n <span id={descId} className=\"chorus-field-group__helper\">\n {helper}\n </span>\n ) : null}\n {showCount ? (\n <span id={descId} className=\"chorus-field-group__count\" aria-live=\"polite\">\n <strong className=\"chorus-field-group__count-current\">{valueLen}</strong>/{maxLength}\n </span>\n ) : null}\n </div>\n );\n}\n\n/* Input — the labelled `variant=\"input\"` shape, exported as its own\n * runtime name so consumers can write `<Input label=… />` instead of\n * `<FormField variant=\"input\" label=… />`. Same props, same render. */\nexport function Input(props) {\n return <FormFieldBox spec={inputSpec} subcomponent=\"input\" {...props} />;\n}\nconst FormFieldInput = Input;\n\n/* Textarea — the multi-line cousin of Input. Identical chrome, but the\n inner element is a `<textarea>` with a `rows` floor (default 4) and\n a vertical-only resize handle. No trailing clear button — multi-line\n content is too costly to wipe in one click. */\nexport function Textarea(props) {\n return <FormFieldBox spec={textareaSpec} subcomponent=\"textarea\" {...props} />;\n}\nconst FormFieldTextarea = Textarea;\n\n/* Search bar — same field as Input with a leading `SearchIcon` pinned at\n the inner-left edge and a `sys.radius.full` pill corner. The glyph is\n decorative (`aria-hidden`); the search action is performed by the input\n itself (Enter / `onChange`). Bare box only — `label`, `helper`, and\n `maxLength` are intentionally not supported (see search.spec.json /\n .md); the affordance is the leading glyph + the placeholder, and a\n visible label / count rung competes with that rather than reinforcing\n it. The props are stripped here so a stray pass at the call site can't\n re-introduce the field-group wrapper. */\nexport function SearchBar({\n label: _label,\n helper: _helper,\n maxLength: _maxLength,\n appearance: _appearance,\n ...rest\n}) {\n return (\n <FormFieldBox\n spec={searchBarSpec}\n subcomponent=\"search\"\n appearance=\"default\"\n leadingSlot={<SearchIcon />}\n {...rest}\n />\n );\n}\nconst FormFieldSearchBar = SearchBar;\n\n/* Select — Input-shaped sibling that opens a bottom sheet instead of\n accepting keystrokes. Visually the same box as `input` (label, helper,\n error appearance, focus ring, optional leading icon), but the trailing\n slot is a chevron-down glyph and the field is read-only — clicking\n anywhere on the box (or the chevron) fires `onOpen`, and the consumer\n raises a `BottomSheet` with the option list. The chosen value is\n echoed back through `value`. */\nexport function Select({ onOpen, value, defaultValue, placeholder, ...rest }) {\n const handleOpen = () => onOpen?.();\n return (\n <FormFieldBox\n spec={selectSpec}\n subcomponent=\"select\"\n readOnly\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder}\n onClick={handleOpen}\n trailingSlot={\n <button\n type=\"button\"\n className=\"chorus-field__dropdown\"\n aria-label=\"Open options\"\n onClick={(e) => { e.stopPropagation(); handleOpen(); }}\n >\n <ArrowDownIcon />\n </button>\n }\n {...rest}\n />\n );\n}\n\nconst FormFieldSelect = Select;\nconst VARIANTS = {\n input: FormFieldInput,\n textarea: FormFieldTextarea,\n search: FormFieldSearchBar,\n select: FormFieldSelect,\n};\n\nexport function FormField({ variant = 'input', ...rest }) {\n const Impl = VARIANTS[variant] ?? FormFieldInput;\n return <Impl {...rest} />;\n}\n\n/* Form field group — composes multiple FormField rungs.\n\n `vertical` (default): stacks each child at `sys.layout.stack.md` (16px)\n gap. Each child keeps its own label / helper / count.\n\n `horizontal`: joins children side-by-side inside one shared\n `.chorus-field-group` shell. The group owns a single label above and\n helper / count below; the children render as bare boxes (their own\n label / helper props are stripped) and sit in a flex row at\n `sys.layout.inline.md` gap. Use for a leading \"select\"-style field\n (country code, currency) + trailing real input. */\nexport function FormFieldGroup({\n direction = 'vertical',\n label,\n helper,\n appearance = 'default',\n disabled = false,\n className,\n style,\n children,\n ...rest\n}) {\n const reactId = useId();\n const helperId = `${reactId}-helper`;\n\n if (direction === 'vertical') {\n return (\n <div\n className={joinClasses('chorus-field-stack', className)}\n style={style}\n {...rest}\n >\n {children}\n </div>\n );\n }\n\n const bare = Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const { label: _l, helper: _h, maxLength: _m, ...passthrough } = child.props;\n return { ...child, props: passthrough };\n });\n\n return (\n <div\n className={joinClasses(\n 'chorus-field-group',\n 'chorus-field-group--row',\n `chorus-field-group--${appearance}`,\n disabled && 'is-disabled',\n className,\n )}\n style={style}\n {...rest}\n >\n {label != null ? (\n <span className=\"chorus-field-group__label\">{label}</span>\n ) : null}\n <div className=\"chorus-field-row\" aria-describedby={helper ? helperId : undefined}>\n {bare}\n </div>\n {helper != null ? (\n <span id={helperId} className=\"chorus-field-group__helper\">\n {helper}\n </span>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* PageShell — the canonical app scaffold that PINS NavigationBar (top) and\n TabBar (bottom) while only the body scrolls. Chorus bars render in flow and\n do NOT self-pin (and must not be given position: sticky/fixed — that\n double-applies their safe-area insets). The shell is the pinning mechanism:\n a full-height flex column whose middle <main> is the sole scroll region.\n\n Compose:\n <PageShell\n nav={<NavigationBar variant=\"main\" … />}\n tabBar={<TabBar … />}\n >\n … screen content (the only part that scrolls) …\n </PageShell>\n\n `nav` and `tabBar` are flow children at their natural height; `<main>` takes\n the remaining space and is the only scroll container, so the bars stay put on\n long lists. The shell deliberately owns ONLY the pin/scroll mechanics — it\n does not impose a content gutter, so the body honors the normal full-bleed /\n inline padding contract. Pass `bodyProps` to add the page gutter or other\n layout to <main> (e.g. bodyProps={{ style: { paddingInline: 'var(--sys-layout-page-md)' } }}). */\nexport function PageShell({ nav, tabBar, children, className, bodyProps, ...rest }) {\n const { className: bodyClassName, ...bodyRest } = bodyProps ?? {};\n return (\n <div className={joinClasses('chorus-page-shell', className)} {...rest}>\n {nav}\n <main className={joinClasses('chorus-page-shell__body', bodyClassName)} {...bodyRest}>\n {children}\n </main>\n {tabBar}\n </div>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { ChevronDownIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* NavCard — a single bounded drill-in navigation card. Outlined rounded\n surface with leading label, optional supporting line, and an auto-rendered\n trailing chevron. Whole card is the tap target. Renders <button> by default,\n <a href> when `href` is set. See schema/components/nav-card/nav-card.md. */\n\nexport function NavCard({\n label,\n supportingText,\n leading,\n trailingIcon,\n variant = 'default',\n appearance = 'default',\n href,\n onClick,\n disabled = false,\n forcedState,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'NavCard');\n\n /* `default` ships no trailing affordance — the card is a labelled\n surface with an optional leading slot. `nav` auto-renders the\n drill-in chevron. A consumer-supplied `trailingIcon` overrides on\n either variant (e.g. an external-link glyph or expand-down arrow). */\n const trailing = trailingIcon ?? (variant === 'nav' ? <ChevronRightGlyph /> : null);\n const sharedProps = {\n ref,\n className: joinClasses(\n 'chorus-nav-card',\n variant !== 'default' && `chorus-nav-card--variant-${variant}`,\n appearance !== 'default' && `chorus-nav-card--${appearance}`,\n className,\n ),\n 'aria-label': ariaLabel ?? label,\n 'data-force-state': forcedState ?? undefined,\n 'data-disabled': disabled ? 'true' : undefined,\n ...rest,\n };\n\n const body = (\n <>\n {leading ? <span className=\"chorus-nav-card__leading\">{leading}</span> : null}\n <span className=\"chorus-nav-card__label-col\">\n <span className=\"chorus-nav-card__label\">{label}</span>\n {supportingText ? (\n <span className=\"chorus-nav-card__supporting\">{supportingText}</span>\n ) : null}\n </span>\n {trailing ? (\n <span className=\"chorus-nav-card__trailing\" aria-hidden=\"true\">\n {trailing}\n </span>\n ) : null}\n </>\n );\n\n if (href) {\n return (\n <a\n {...sharedProps}\n href={disabled ? undefined : href}\n onClick={disabled ? (e) => e.preventDefault() : onClick}\n aria-disabled={disabled || undefined}\n >\n {body}\n </a>\n );\n }\n return (\n <button\n type=\"button\"\n {...sharedProps}\n onClick={onClick}\n disabled={disabled}\n >\n {body}\n </button>\n );\n}\n\n/* Right-pointing chevron, derived from the down-chevron glyph rotated 270°.\n Re-using the existing icon avoids shipping a duplicate ChevronRight SVG\n (it's also how list/nav renders its trailing chevron). The rotation is\n scoped to the trailing slot via the .chorus-nav-card__trailing class\n so it never affects a consumer-supplied custom trailingIcon. */\nfunction ChevronRightGlyph() {\n return (\n <span\n className=\"chorus-nav-card__chevron\"\n style={{ display: 'inline-flex', transform: 'rotate(-90deg)' }}\n >\n <ChevronDownIcon size={16} />\n </span>\n );\n}\n\n/* NavCardGroup — vertical stack of NavCards with a fixed `sys.layout.stack.xs`\n (8px) gap. Owns no padding of its own and never paints chrome — each child\n NavCard stays its own outlined surface. Reach for it when several drill-in\n cards belong to one logical section but should read as discrete cards (vs\n a list/nav rail where rows tile flush with hairline dividers). */\nexport function NavCardGroup({\n className,\n children,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n return (\n <div\n className={joinClasses('chorus-nav-card-group', className)}\n role=\"group\"\n aria-label={ariaLabel}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Progress — linear (determinate) progress bar. Pass `value` 0..1 (or a\n raw count together with `max`); a filled segment shows the completion\n ratio. Single visual rung — 8px tall, radius.full, `inverseSurface`\n indicator on a `sys.color.scrimSubtle` track scrim (~8% black light /\n ~8% white dark) so the bar reads on any host surface.\n See schema/components/progress/progress.md. */\n\nexport function Progress({\n value = 0,\n max = 1,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ratio = Math.max(0, Math.min(1, value / max));\n const percent = Math.round(ratio * 100);\n\n return (\n <div\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={percent}\n className={joinClasses('chorus-progress', className)}\n {...rest}\n >\n <span\n className=\"chorus-progress__indicator\"\n style={{ transform: `translateX(${-100 + percent}%)` }}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { Header } from './Header.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* Carousel — a labelled page region (renamed from Section). Wraps an\n optional Header (size=\"large\") and a horizontal-pager body slot. The\n header anatomy is owned by the Header component so other hosts\n (in-sheet sub-sections, bounded cards) can reuse the same shape via\n `<Header />` directly.\n\n When both `label` and `headerAction` are omitted, the header row is\n suppressed entirely and the body sits flush against the surface's\n block padding — useful when the surrounding screen already provides\n a heading or the carousel is purely visual chrome.\n\n Link-affordance rule: the trailing headerAction is a Text Button\n `appearance=\"accent\"` — enforced by Header itself. */\n\nconst HEADING_TAGS = new Set(['H1', 'H2', 'H3', 'H4', 'H5', 'H6']);\nconst HEADER_WARNED = new WeakSet();\n\n/* Dev-time guard: Carousel's `label` prop forwards into a Header at\n the top of the surface — Header owns the chrome, the typo, and the\n spacing. When a caller renders their own <h*> heading as a Carousel\n body child the chrome duplicates: Header sits at the top + the\n caller's <h*> re-indents the body, which is the canonical cause of\n the double-paid block padding inside Carousel we keep seeing in\n generated UIs. Warn once per element, dev only. Silent in\n production builds (NODE_ENV gate). */\nfunction useCarouselLabelGuard(bodyRef) {\n useEffect(() => {\n if (typeof window === 'undefined') return;\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production') return;\n const body = bodyRef.current;\n if (!body || HEADER_WARNED.has(body)) return;\n const heading = Array.from(body.children).find((child) => HEADING_TAGS.has(child.tagName));\n if (!heading) return;\n HEADER_WARNED.add(body);\n // eslint-disable-next-line no-console\n console.warn(\n `[Chorus] <Carousel> direct child is a <${heading.tagName.toLowerCase()}> — Carousel already renders a labelled <Header> via its \\`label\\` prop. ` +\n `The sibling heading duplicates the chrome (Header at the top + your heading re-indents the body), which is the canonical cause of double-paid block padding inside Carousel. ` +\n `Fix: drop the heading from the body and pass the label through Carousel's prop — <Carousel label=\"…\" headerAction={…}>{body}</Carousel>.`,\n heading,\n );\n });\n}\n\nexport function Carousel({\n label,\n headerAction,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n const bodyRef = useRef(null);\n useFullBleedGuard(ref, 'Carousel');\n useCarouselLabelGuard(bodyRef);\n const hasHeader = (label != null && label !== '') || headerAction != null;\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-carousel', className)}\n data-headless={hasHeader ? undefined : 'true'}\n aria-label={ariaLabel ?? label}\n {...rest}\n >\n {hasHeader ? (\n <Header size=\"large\" label={label} headerAction={headerAction} />\n ) : null}\n <div ref={bodyRef} className=\"chorus-carousel__body\">{children}</div>\n </section>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useBodyScrollLock, usePortalTarget } from './internal/scrimPortal.js';\nimport { joinClasses } from './spec-utils.js';\n\n/* SideSheet — off-canvas content column anchored to the leading or\n trailing edge of the viewport. Pairs with BottomSheet as the \"Sheet\"\n family's other anchor: BottomSheet for committed-sheet flows, SideSheet\n for off-canvas navigation columns, settings panes, channel directories.\n\n Composition is free-form via `children` — the canonical fill is a\n Header (size=\"medium\") column heading + an embedded `<List\n variant=\"entry\">` directory stack (40 avatar + label + inline count\n Badge + optional trailing icon toggle), optionally followed by\n another Header + List(entry) pair and a pinned footer action.\n\n Like BottomSheet: renders into a body portal when open, locks body\n scroll, returns focus to the trigger on close, and dismisses on\n Escape / backdrop tap.\n\n `inline` mode renders the sheet inside its parent layout (no portal,\n no fixed positioning, no body lock) — for docs previews that need to\n show the sheet card without occluding the page. */\nexport function SideSheet({\n open,\n onClose,\n anchor = 'left',\n width = 320,\n footer,\n children,\n inline = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const target = usePortalTarget();\n const scrimRef = useRef(null);\n const cardRef = useRef(null);\n const lastFocusedRef = useRef(null);\n useBodyScrollLock(open && !inline);\n\n useEffect(() => {\n if (!open || inline) return undefined;\n lastFocusedRef.current = document.activeElement;\n const focusable = cardRef.current?.querySelector(\n 'button, a[href], [tabindex]:not([tabindex=\"-1\"]), input:not([disabled])',\n );\n focusable?.focus?.({ preventScroll: true });\n return () => {\n const last = lastFocusedRef.current;\n // preventScroll: restoring focus on close must not scroll the page back\n // to the trigger (consistent with Dialog/BottomSheet).\n if (last && typeof last.focus === 'function') last.focus({ preventScroll: true });\n };\n }, [open, inline]);\n\n useEffect(() => {\n if (!open || inline) return undefined;\n const onKey = (e) => { if (e.key === 'Escape') onClose?.(); };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, inline, onClose]);\n\n if (!open) return null;\n if (!inline && !target) return null;\n\n const onScrimClick = (e) => {\n if (e.target === scrimRef.current) onClose?.();\n };\n\n const tree = (\n <div\n ref={scrimRef}\n className={joinClasses(\n 'chorus-side-sheet__scrim',\n inline && 'chorus-side-sheet__scrim--inline',\n className,\n )}\n data-anchor={anchor}\n onClick={inline ? undefined : onScrimClick}\n {...rest}\n >\n <aside\n ref={cardRef}\n className=\"chorus-side-sheet__card\"\n role=\"dialog\"\n aria-modal={inline ? undefined : 'true'}\n aria-label={ariaLabel}\n style={{ '--side-sheet-width': typeof width === 'number' ? `${width}px` : width }}\n >\n <div className=\"chorus-side-sheet__body\">{children}</div>\n {footer ? (\n <footer className=\"chorus-side-sheet__footer\">{footer}</footer>\n ) : null}\n </aside>\n </div>\n );\n\n return inline ? tree : createPortal(tree, target);\n}\n\n/* SideSheetGroup — Header + List bundling primitive. The Header is\n full-bleed and drives the rhythm: its 16px (`stack.md`) block-end is\n the header↔list gap, and its 24px (`stack.lg`) block-start is both the\n 24 between groups and the body's top inset for the first group. The\n group adds no sibling margin of its own. Lead each group with a Header\n so \"header + items\" reads as one unit and the inter-group rhythm reads\n as a divider. */\nexport function SideSheetGroup({ children, className, ...rest }) {\n return (\n <div className={joinClasses('chorus-side-sheet__group', className)} {...rest}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Skeleton — placeholder shape that previews where real content will\n render. A single tonal block on `surfaceContainerHighest` with a\n slow opacity pulse. Three shapes: `text` (default, 16px-line block),\n `block` (rectangular, taller fill — image / card body), `circle`\n (Thumbnail-equivalent avatar placeholder). Consumer-supplied width /\n height override the default footprint. `layoutInset=\"inline\"` — the\n placeholder sits as a leaf inside whichever surface it stands in\n for; no full-bleed gutter responsibility. See schema/components/\n skeleton/skeleton.md. */\n\nexport function Skeleton({\n shape = 'text',\n width,\n height,\n className,\n style,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n return (\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-label={ariaLabel ?? 'Loading'}\n className={joinClasses(\n 'chorus-skeleton',\n `chorus-skeleton--${shape}`,\n className,\n )}\n style={{\n ...(width != null ? { width: typeof width === 'number' ? `${width}px` : width } : null),\n ...(height != null ? { height: typeof height === 'number' ? `${height}px` : height } : null),\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n/* SkeletonGroup — vertical stack of Skeletons that mirrors the rhythm\n of the content it replaces. Owns no chrome of its own; only enforces\n `sys.layout.stack.xs` (8px) between children so a multi-line text\n placeholder reads as one block. */\nexport function SkeletonGroup({\n className,\n children,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={ariaLabel ?? 'Loading'}\n className={joinClasses('chorus-skeleton-group', className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* StatusTag — small inline status pill. Tonal label-style chrome at\n 10px text, 4px inline / 2px block padding, `sys.radius.xs` corners.\n Two appearances:\n - neutral : `surfaceContainerHighest` fill + `onSurfaceVariant`\n foreground — the quiet, informational default\n (\"pending\", \"draft\", \"queued\").\n - error : `errorContainer` fill + `onErrorContainer` foreground\n — the rejection / blocked state (\"rejected\", \"failed\").\n Decorative (`<span role=\"status\">`) — never an interactive element.\n See schema/components/status-tag/status-tag.md. */\n\nexport function StatusTag({\n appearance = 'neutral',\n children,\n className,\n ...rest\n}) {\n return (\n <span\n role=\"status\"\n className={joinClasses(\n 'chorus-status-tag',\n `chorus-status-tag--${appearance}`,\n className,\n )}\n {...rest}\n >\n {children}\n </span>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"SubHeader\",\n \"family\": \"header\",\n \"subcomponent\": \"sub\",\n \"description\": \"The quiet member of the Header family — a section-dividing label. A single line of 14px (`sys.typo.label.md`, 14 / Semibold) text in the muted `sys.color.onSurfaceVariant` tone that names the group of rows beneath it (\\\"Following\\\", \\\"More Topics to follow\\\"). No size axis — the muted tone is the dividing device, and the label-weight typo keeps it reading as a section label rather than body copy. Reached as `<SubHeader>`; its louder sibling is [Main](./main.md) (`<Header>`), an `onSurface` heading at 16 / 20. Optionally carries a single trailing `action` Text Button (`size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`) for a quiet region-level commit (\\\"See all\\\", \\\"Edit\\\", \\\"Manage\\\"); icon drill-in and dropdown disclosure stay Main's territory, where the louder `onSurface` heading tone belongs. Rendered as a semantic `<h3>` by default so screen-reader heading navigation lands on the group label; consumers may override the wrapping element via the `as` prop (e.g. `as=\\\"div\\\"` when the host already owns the heading semantics). Full-bleed: pays the same 16 (`sys.layout.container.md`) inline inset as the List rows it labels, with asymmetric block padding (24 above to break from the previous region, 8 below to bind the label to its group).\",\n \"element\": \"h3\",\n \"props\": {\n \"label\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"The section label text (\\\"Following\\\", \\\"More Topics to follow\\\"). Single line; the consumer keeps it short. `children` may be passed instead and takes precedence — `label` is the canonical string form.\"\n },\n \"action\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"Trailing Text Button binding. Object: `{ label, href, onClick }`. Rendered as a Text Button at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"` — the one trailing affordance SubHeader carries, for a quiet region-level commit (\\\"See all\\\", \\\"Edit\\\", \\\"Manage\\\"). When set, the wrapper becomes a full-bleed flex row and the label is nested as the heading (`as`) on the leading edge so the heading's accessible name never absorbs the button. Mirrors Header's `headerAction` binding; SubHeader supports no icon or dropdown mode (those stay Header's, where the louder heading tone belongs).\"\n },\n \"as\": {\n \"type\": \"literal\",\n \"values\": [\"h2\", \"h3\", \"h4\", \"div\"],\n \"default\": \"h3\",\n \"description\": \"Wrapping element for the label. Defaults to `<h3>` so the muted label still registers as a heading for the group beneath it; use a different heading level to fit the host's document outline, or `as=\\\"div\\\"` when the surrounding host already carries the section semantics. The label element is never interactive — in `action` mode the click target sits on the trailing Text Button, and the flex-row wrapper that holds both is a non-semantic `<div>`.\"\n },\n \"children\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Label content — overrides `label` when both are set. Use the `label` string for the canonical case; `children` is the escape hatch for inline composition.\"\n },\n \"className\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Composes with the component's own class. Use sparingly — SubHeader exposes its tone and inset through the spec; overriding them breaks the alignment-with-rows and muted-divider contracts.\"\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"The full-bleed label line. Pays `sys.layout.container.md` (16) inline inset to align with the List rows beneath, `sys.layout.stack.lg` (24) block padding above and `sys.layout.stack.xs` (8) below. Non-interactive. Without `action` the container IS the heading element (`as`); with `action` it is a non-semantic flex `<div>` (`space-between`, `sys.layout.inline.md` gap) holding the nested label and the trailing action on opposite edges.\"\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Section label text. `<h3>` by default (overridable via `as`). Typo `sys.typo.label.md` (14 / Semibold); color `sys.color.onSurfaceVariant`. Single line.\",\n \"accepts\": [\"text\"]\n },\n \"action\": {\n \"required\": false,\n \"description\": \"Optional trailing Text Button. Fixed at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`; label comes from `action.label`. Owns its own tap target — clicks land on the button, not the surrounding row. Present only when `action` is set.\",\n \"accepts\": [\"button\"],\n \"rendersAs\": \"button:text\"\n }\n },\n \"appearance\": {\n \"containerFill\": \"transparent\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"labelColor\": \"sys.color.onSurfaceVariant\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"paddingBlockStart\": \"sys.layout.stack.lg\",\n \"paddingBlockEnd\": \"sys.layout.stack.xs\",\n \"note\": \"The container paints NO fill — `transparent` — so the muted label composes directly on whatever surface tier it sits on (surface, surfaceContainer, a tonal band, a Sheet body) and stays harmonious on any host. The dividing device is the tone, not a painted background. The muted `onSurfaceVariant` tone is a tone down from Header's `onSurface` heading so the label reads as a region marker, not a competing title. The 14 / Semibold `label.md` rung is the section-label weight: smaller than any Header heading (16 / 20) but emphatic enough to read as a label over the rows beneath it. Asymmetric block padding (24 above / 8 below) breaks the label from the previous region and binds it to the group below.\"\n },\n \"behavior\": {\n \"rendering\": \"When neither `label` nor `children` is set, SubHeader renders nothing (no empty container) — even when `action` is set, since a trailing button with no label is meaningless.\",\n \"singleAction\": \"SubHeader carries at most one trailing affordance, and only a Text Button (`action`). It supports no icon drill-in and no dropdown disclosure — those stay Header's, where the louder `onSurface` heading tone reads as a heading-with-affordance rather than a quiet labelled region. The distinction from Header is the tone/weight axis (muted `onSurfaceVariant` label at 14 vs `onSurface` heading at 16/20), not the presence of a trailing commit.\",\n \"actionSemantics\": \"In `action` mode the wrapper is a non-semantic flex `<div>` and the label keeps its heading element (`as`) nested on the leading edge, so the trailing Text Button never folds into the heading's accessible name. The button owns its own tap target; the row chrome is non-interactive.\",\n \"fullBleed\": \"Pays its own 16 (`container.md`) inline inset so the label aligns with the full-bleed List rows it heads. Must not be wrapped in a padding-inline container, or the label drifts off the row inset.\"\n },\n \"states\": {\n \"description\": \"SubHeader itself has no lifecycle states — the label is a static, non-interactive marker. When `action` is set, the trailing Text Button carries its own hover / pressed / focus.\"\n },\n \"forbidden\": [\n \"SubHeader painted in `onSurface` or any non-muted tone — the muted `onSurfaceVariant` IS the dividing device; a full-strength tone makes it compete with the page heading (reach for Header instead)\",\n \"SubHeader given an opaque container fill (`surface`, `surfaceContainer`, any background) — the container is `transparent` so the label harmonizes on any host surface tier; a painted fill clashes the moment it sits on a non-surface band\",\n \"SubHeader given a trailing icon drill-in or dropdown disclosure — only a single Text Button `action` is allowed; an icon/dropdown affordance belongs on Header\",\n \"SubHeader given more than one trailing action — the row carries a single quiet commit, not a button cluster\",\n \"SubHeader `action` rendered as anything but a Text Button (Standard Button, Icon Button, raw <a>) — the link affordance keeps the navigational intent in the accent tone, mirroring Header\",\n \"SubHeader typo dialled above `label.md` (14 / Semibold) — a larger or louder rung is a Header heading, not a quiet group label\",\n \"SubHeader wrapped in a padding-inline div or `style={{ paddingInline }}` — it is full-bleed and pays its own 16 inset to align with the rows beneath\",\n \"SubHeader rendered as a raw <p> / <span> with Tailwind — the label owns its tone, inset, and block rhythm through the spec\"\n ]\n}\n","'use client';\n\nimport subHeaderSpec from '../../../schema/components/header/sub.spec.json';\nimport { Button } from './Button.jsx';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\n/* SubHeader — quiet section-dividing label. A 14px (`label.md`,\n 14 / Semibold) line in the muted `onSurfaceVariant` tone that\n names the group of\n rows beneath it (\"Following\", \"More Topics to follow\"). The muted\n tone is the whole dividing device — a tone down from Header's\n `onSurface` heading so the label reads as a region marker, not a\n competing title. Full-bleed: pays the same 16 (`container.md`)\n inline inset as the List rows it heads, with asymmetric block\n padding (24 above to break from the previous region, 8 below to\n bind the label to its group). Renders as a semantic <h3> by default\n so screen-reader heading navigation lands on the group label; pass\n `as=\"div\"` when the host already owns the section semantics.\n\n Optional trailing `action` — a single Text Button (`size=\"xsmall\"`,\n `appearance=\"accent\"`) for a quiet region-level commit (\"See all\",\n \"Edit\", \"Manage\"). When set, the wrapper becomes a full-bleed flex\n row: the label is nested as the heading (`as`) on the leading edge\n and the action sits on the trailing edge, so the heading text never\n absorbs the button into its accessible name. This is the one\n trailing affordance SubHeader carries — icon drill-in and dropdown\n disclosure stay Header's territory, where the louder `onSurface`\n heading tone belongs. See schema/components/header/sub.md. */\n\nfunction subHeaderStyle(spec) {\n const a = spec.appearance;\n return {\n '--sub-header-color': tokenToCss(a.labelColor),\n '--sub-header-padding-inline': tokenToCss(a.paddingInline),\n '--sub-header-padding-block-start': tokenToCss(a.paddingBlockStart),\n '--sub-header-padding-block-end': tokenToCss(a.paddingBlockEnd),\n ...typoStyles(a.labelTypo),\n };\n}\n\nexport function SubHeader({\n label,\n action,\n as: As = 'h3',\n className,\n children,\n style,\n ...rest\n}) {\n const content = children ?? label;\n if (content == null || content === '') return null;\n\n const mergedStyle = { ...subHeaderStyle(subHeaderSpec), ...style };\n\n /* No action — the wrapper IS the heading and carries the label text\n directly (the canonical quiet group label, unchanged). */\n if (!action) {\n return (\n <As\n className={joinClasses('chorus-sub-header', className)}\n style={mergedStyle}\n {...rest}\n >\n {content}\n </As>\n );\n }\n\n /* Action mode — a full-bleed flex row. The wrapper is a non-semantic\n <div> that pays the inset; the label keeps its heading element\n (`as`) nested on the leading edge so the trailing Text Button stays\n out of the heading's accessible name. */\n return (\n <div\n className={joinClasses('chorus-sub-header', 'chorus-sub-header--action', className)}\n style={mergedStyle}\n {...rest}\n >\n <As className=\"chorus-sub-header__label\">{content}</As>\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"accent\"\n className=\"chorus-sub-header__action\"\n href={action.href ?? '#'}\n onClick={action.onClick}\n leadingIcon={action.leadingIcon}\n trailingIcon={action.trailingIcon}\n >\n {action.label}\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport { useRef, useState } from 'react';\nimport { joinClasses } from './spec-utils.js';\n\n/* Switch — binary active/inactive control. Pill-shaped track with a\n circular thumb that translates between the two ends. The active state\n paints the track in `primary` so the contract reads chromatically\n without a label; inactive shows a transparent track with a hairline\n outline and a white thumb. See schema/components/switch/switch.md. */\n\nexport function Switch({\n checked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n forcedState,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}) {\n const isControlled = checked != null;\n const [internal, setInternal] = useState(defaultChecked);\n const value = isControlled ? checked : internal;\n const ref = useRef(null);\n\n const handleClick = (e) => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInternal(next);\n onCheckedChange?.(next, e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-state={value ? 'active' : 'inactive'}\n data-force-state={forcedState ?? undefined}\n data-disabled={disabled ? 'true' : undefined}\n disabled={disabled}\n className={joinClasses('chorus-switch', className)}\n onClick={handleClick}\n {...rest}\n >\n <span className=\"chorus-switch__thumb\" aria-hidden=\"true\" />\n </button>\n );\n}\n","'use client';\n\nimport { createContext, useContext, useId, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* Accordion — vertical stack of expandable rows. Each item has a trigger\n header (label + auto-rendered trailing chevron that rotates on expand)\n and a content body that animates open below it. `type=\"single\"` allows\n one expanded item at a time; `type=\"multiple\"` allows any number. See\n schema/components/accordion/accordion.md. */\n\nconst AccordionContext = createContext(null);\n\nexport function Accordion({\n type = 'single',\n value,\n defaultValue,\n onValueChange,\n collapsible = true,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const isControlled = value !== undefined;\n\n const normalizeInitial = () => {\n if (defaultValue == null) return type === 'multiple' ? [] : null;\n if (type === 'multiple') return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n return defaultValue;\n };\n\n const [internal, setInternal] = useState(normalizeInitial);\n const current = isControlled ? value : internal;\n\n const setValue = (next) => {\n if (!isControlled) setInternal(next);\n onValueChange?.(next);\n };\n\n const isOpen = (itemValue) =>\n type === 'multiple'\n ? Array.isArray(current) && current.includes(itemValue)\n : current === itemValue;\n\n const toggle = (itemValue) => {\n if (type === 'multiple') {\n const arr = Array.isArray(current) ? current : [];\n setValue(arr.includes(itemValue) ? arr.filter((v) => v !== itemValue) : [...arr, itemValue]);\n return;\n }\n if (current === itemValue) {\n if (collapsible) setValue(null);\n } else {\n setValue(itemValue);\n }\n };\n\n const ref = useRef(null);\n useFullBleedGuard(ref, 'Accordion');\n\n const ctx = useMemo(() => ({ type, isOpen, toggle }), [type, current, collapsible]);\n\n return (\n <AccordionContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"region\"\n aria-label={ariaLabel}\n className={joinClasses('chorus-accordion', className)}\n {...rest}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\nfunction AccordionItem({\n value,\n label,\n disabled = false,\n strong = false,\n forcedState,\n children,\n className,\n ...rest\n}) {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error('Accordion.Item must be rendered inside <Accordion>.');\n }\n const contentId = useId();\n const open = ctx.isOpen(value);\n\n return (\n <div\n className={joinClasses('chorus-accordion__item', className)}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? 'true' : undefined}\n data-strong={strong ? 'true' : undefined}\n {...rest}\n >\n <button\n type=\"button\"\n className=\"chorus-accordion__trigger\"\n aria-expanded={open}\n aria-controls={contentId}\n disabled={disabled}\n data-force-state={forcedState ?? undefined}\n onClick={() => {\n if (disabled) return;\n ctx.toggle(value);\n }}\n >\n <span className=\"chorus-accordion__label\">{label}</span>\n <span className=\"chorus-accordion__chevron\" aria-hidden=\"true\">\n <ChevronDownIcon size={16} />\n </span>\n </button>\n <div\n id={contentId}\n role=\"region\"\n className=\"chorus-accordion__content\"\n hidden={!open}\n >\n <div className=\"chorus-accordion__content-inner\">{children}</div>\n </div>\n </div>\n );\n}\n\nAccordion.Item = AccordionItem;\n","'use client';\n\nimport { isValidElement, useRef } from 'react';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport { usePinnedBarGuard } from './internal/usePinnedBarGuard.js';\n\n/* TabBar — the bottom tab bar. A horizontal strip pinned to the bottom of\n the app surface that exposes the top-level destinations (Home / Company /\n Explore / Jobs / Notifications …) in one tap. Each item stacks a 24px\n glyph above a 10px label; the active item is signalled by the filled\n companion glyph + `onSurface` colour, inactive items render the outline\n glyph in `onSurfaceVariant`.\n\n Items are distributed with `justify-content: space-evenly`, which makes\n the row's start padding, the gap between adjacent items, and the row's\n end padding all the same visible whitespace — the optical-alignment\n rule the bar's spec calls for so the icons read as evenly placed across\n the row regardless of label width.\n\n An item may opt into `appearance=\"primary\"` to render a tile-shaped\n commit affordance (a primary-filled rounded square hosting the glyph)\n — the conventional \"Create\" / \"Compose\" entry at the trailing end of\n the bar. The label still sits below at the same 10/Regular rung so the\n item shares the row's vertical rhythm. */\n\nfunction TabBarItem({ item, isActive, onSelect }) {\n const {\n value,\n label,\n icon,\n activeIcon,\n href,\n onClick,\n appearance,\n forcedState,\n 'aria-label': ariaLabel,\n ...itemRest\n } = item;\n\n const glyph = isActive && activeIcon ? activeIcon : icon;\n const isPrimary = appearance === 'primary';\n\n const className = joinClasses(\n 'chorus-tab-bar__item',\n isPrimary && 'chorus-tab-bar__item--primary',\n isActive && !isPrimary && 'is-active',\n );\n\n const content = (\n <>\n <span className=\"chorus-tab-bar__icon\" aria-hidden={label ? 'true' : undefined}>\n {isValidElement(glyph) ? glyph : null}\n </span>\n {label ? <span className=\"chorus-tab-bar__label\">{label}</span> : null}\n </>\n );\n\n const handleClick = (event) => {\n onClick?.(event);\n /* Primary items invoke a screen-covering overlay rather than a\n sibling destination — they never own selection inside the bar,\n so suppress the selection callback for them. */\n if (!event.defaultPrevented && !isPrimary) onSelect?.(value);\n };\n\n if (href) {\n return (\n <a\n className={className}\n href={href}\n aria-current={isActive ? 'page' : undefined}\n aria-label={ariaLabel}\n data-force-state={forcedState ?? undefined}\n onClick={handleClick}\n {...itemRest}\n >\n {content}\n </a>\n );\n }\n return (\n <button\n type=\"button\"\n className={className}\n aria-current={isActive ? 'page' : undefined}\n aria-label={ariaLabel}\n data-force-state={forcedState ?? undefined}\n onClick={handleClick}\n {...itemRest}\n >\n {content}\n </button>\n );\n}\n\nexport function TabBar({\n items,\n value,\n onChange,\n 'aria-label': ariaLabel = 'Primary',\n className,\n ...rest\n}) {\n const rows = Array.isArray(items) ? items : [];\n const ref = useRef(null);\n useFullBleedGuard(ref, 'TabBar');\n usePinnedBarGuard(ref, 'TabBar');\n return (\n <nav\n ref={ref}\n className={joinClasses('chorus-tab-bar', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n {rows.map((item) => (\n <TabBarItem\n key={item.value}\n item={item}\n isActive={item.value === value}\n onSelect={onChange}\n />\n ))}\n </nav>\n );\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { joinClasses } from './spec-utils.js';\n\n/* Toast — transient confirmation strip. Inverse-toned by default so the\n message reads against any underlying page tier without per-surface\n tuning. Presentational only: the owner mounts and unmounts the toast\n on its own timer.\n\n The `trailing` slot accepts a Button node directly — typically a\n `<Button variant=\"text\" size=\"small\" appearance=\"inverse\">` for an\n action affordance (Undo, View) or a `<Button variant=\"icon\"\n size=\"medium\" appearance=\"inverse\">` for explicit dismissal. Passing\n the Button as a node (rather than a shorthand object) keeps the\n composition explicit at the call site: a reader sees the exact\n sub-component the Toast delegates to, including its `appearance`\n binding. */\nexport function Toast({\n children,\n trailing,\n className,\n ...rest\n}) {\n const trailingEl = isValidElement(trailing)\n ? cloneElement(trailing, {\n className: joinClasses('chorus-toast__trailing', trailing.props.className),\n })\n : trailing;\n return (\n <div\n className={joinClasses('chorus-toast', className)}\n role=\"status\"\n aria-live=\"polite\"\n {...rest}\n >\n <span className=\"chorus-toast__body\">{children}</span>\n {trailingEl}\n </div>\n );\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { joinClasses } from './spec-utils.js';\n\n/* Tooltip — trigger-anchored explanation bubble. Two appearances:\n `default` paints the brand-blue bubble (`primary` / `onPrimary`, both\n theme-stable) and is the canonical reach; `inverse` swaps to the\n inverse cluster (`inverseSurface` / `inverseOnSurface`) for screens\n already saturated with primary tone, where the brand-blue bubble\n would compete with the surrounding chrome.\n\n Presentational only: the owner positions the bubble relative to its\n trigger (honouring the 16-token viewport safe area and the 4-token\n trigger offset spelled out in the spec) and mounts/unmounts on\n hover/focus.\n\n The `action` slot accepts a Button node directly — bind its\n `appearance` to match the tooltip: `onPrimary` for the default\n (brand-blue) tooltip so the label stays white in both themes, or\n `inverse` for the inverse tooltip so the label flips with the host\n fill. */\nexport function Tooltip({\n children,\n appearance = 'default',\n placement = 'top',\n action,\n className,\n ...rest\n}) {\n const actionEl = isValidElement(action)\n ? cloneElement(action, {\n className: joinClasses('chorus-tooltip__action', action.props.className),\n })\n : action;\n return (\n <div\n className={joinClasses(\n 'chorus-tooltip',\n `chorus-tooltip--appearance-${appearance}`,\n className,\n )}\n data-placement={placement}\n role=\"tooltip\"\n {...rest}\n >\n <span className=\"chorus-tooltip__body\">{children}</span>\n {actionEl}\n <span className=\"chorus-tooltip__caret\" aria-hidden=\"true\" />\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../schema/components/badge/update.spec.json","../../../schema/components/badge/role.spec.json","../src/spec-utils.js","../src/Badge.jsx","../src/internal/useFullBleedGuard.js","../src/Banner.jsx","../../../schema/components/button/standard.spec.json","../src/internal/ButtonStandard.jsx","../../../schema/components/button/fab.spec.json","../src/internal/ButtonFab.jsx","../src/internal/ButtonIcon.jsx","../src/internal/ButtonText.jsx","../src/icons/index.js","../src/internal/ButtonCheck.jsx","../../../schema/components/chip/filter.spec.json","../../../schema/components/chip/tag.spec.json","../../../schema/components/button/toggle.spec.json","../src/Chip.jsx","../src/internal/ButtonToolbar.jsx","../src/internal/ButtonToggle.jsx","../src/Button.jsx","../src/internal/useFocusTrap.js","../src/internal/scrimPortal.js","../src/BottomSheet.jsx","../src/Bubble.jsx","../src/ButtonGroup.jsx","../../../schema/components/header/main.spec.json","../src/Header.jsx","../src/Thumbnail.jsx","../src/EntryRow.jsx","../src/List.jsx","../src/SuggestionList.jsx","../src/DirectoryList.jsx","../src/NavList.jsx","../src/internal/useScrollOverflow.js","../src/AvatarRail.jsx","../src/Dialog.jsx","../src/Divider.jsx","../../../schema/components/empty-state/empty-state.spec.json","../src/EmptyState.jsx","../src/internal/TabsContext.js","../../../schema/components/tabs/underline.spec.json","../src/internal/TabsUnderline.jsx","../../../schema/components/tabs/rounded.spec.json","../src/internal/TabsRounded.jsx","../../../schema/components/tabs/segmented.spec.json","../src/internal/TabsSegmented.jsx","../src/Tabs.jsx","../src/Tab.jsx","../src/Metadata.jsx","../src/Feed.jsx","../src/FeedAd.jsx","../src/Pagination.jsx","../src/PostCarousel.jsx","../src/ProfileCarousel.jsx","../src/internal/usePinnedBarGuard.js","../src/NavigationBar.jsx","../src/ProfileHeader.jsx","../../../schema/components/form-field/input.spec.json","../../../schema/components/form-field/textarea.spec.json","../../../schema/components/form-field/search.spec.json","../../../schema/components/form-field/select.spec.json","../src/FormField.jsx","../src/PageShell.jsx","../src/NavCard.jsx","../src/Progress.jsx","../src/Carousel.jsx","../src/SideSheet.jsx","../src/Skeleton.jsx","../../../schema/components/spinner/spinner.spec.json","../src/Spinner.jsx","../src/StatusTag.jsx","../../../schema/components/header/sub.spec.json","../src/SubHeader.jsx","../src/Switch.jsx","../src/Accordion.jsx","../src/TabBar.jsx","../src/Toast.jsx","../src/Tooltip.jsx"],"names":["s","jsx","useEffect","useRef","jsxs","appearanceStyle","FORCEABLE_STATES","sizingStyle","forwardRef","ButtonText","Fragment","ButtonCheck","Button","useState","createPortal","px","useId","useCallback","useMemo","createContext","useContext","useLayoutEffect","VARIANTS","isDev","Children","isValidElement","MAX_CARDS","Card","WARNED","checkOnce","PLACEHOLDER_IMAGE","_a","SearchBar","cloneElement"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Badge\",\n \"family\": \"badge\",\n \"subcomponent\": \"update\",\n \"description\": \"Brand-tone indicator attached to a host label (channel entry, list row, thumbnail corner) flagging unread / new activity. Two top-level **types** share the same brand fill and `radius.full` corner: **Numeric** (a labelled count pill, the canonical badge — `size: medium | small`) and **Dot** (a labelless update dot — `size: dot-md | dot-sm` — used by [Thumbnail](../thumbnail/thumbnail.md) as the corner activity flag, and reachable by any other host that wants the same affordance). The Dot rungs ignore `count` and `children` and never render text.\",\n \"element\": \"span\",\n \"types\": {\n \"numeric\": {\n \"description\": \"Labelled count pill — the canonical Badge form. A 1-character label collapses to a perfect circle; 2+ characters or `99+` stretch into a content-growing pill.\",\n \"sizes\": [\n \"medium\",\n \"small\"\n ]\n },\n \"dot\": {\n \"description\": \"Labelless update dot — the corner activity flag. Paints a 1px `surface`-color halo as `box-shadow` so it reads cleanly above any host imagery without enlarging its bounding box.\",\n \"sizes\": [\n \"dot-md\",\n \"dot-sm\"\n ]\n }\n },\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"update\"\n },\n \"size\": {\n \"type\": \"literal\",\n \"values\": [\n \"medium\",\n \"small\",\n \"dot-md\",\n \"dot-sm\"\n ],\n \"default\": \"medium\",\n \"description\": \"Four rungs split across the two types. **Numeric** — `medium` / `small` carry the count label. **Dot** — `dot-md` (8×8) / `dot-sm` (6×6) drop the label entirely and paint the labelless update dot. The dot rungs ignore `count` and `children`.\"\n },\n \"count\": {\n \"type\": \"number\",\n \"optional\": true,\n \"description\": \"Numeric type only. If provided, the badge formats the value: 1–99 render as the literal number, 100+ renders as `99+`. Pass children instead for non-numeric content (e.g. `NEW`). Ignored on the Dot rungs.\"\n },\n \"children\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Numeric type only — custom label, overrides count formatting. Ignored on the Dot rungs.\"\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": false,\n \"description\": \"Short single-line label — typically a 1–2 digit count or the literal `99+` overflow. Required on the Numeric rungs (`medium` / `small`); absent on the Dot rungs (`dot-md` / `dot-sm`).\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"appearance\": {\n \"background\": \"sys.color.text.brand\",\n \"label\": \"sys.color.text.onFill\",\n \"radius\": \"sys.radius.full\",\n \"dotOutline\": {\n \"color\": \"sys.color.surface.default\",\n \"width\": \"sys.borderWidth.thin\",\n \"rendering\": \"box-shadow\",\n \"note\": \"Update Dot rungs paint a 2px `surface`-color outline as a `box-shadow` so the dot stays a discrete chip on any host (image, icon, row) without enlarging its bounding box. The outline carves the dot out of whatever sits beside it; without it the brand fill blends into surrounding fills with similar luminance.\"\n }\n },\n \"sizes\": {\n \"medium\": {\n \"minHeight\": \"ref.space.250\",\n \"minWidth\": \"ref.space.250\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"ref.space.75\",\n \"labelTypo\": \"sys.typo.label.sm\"\n },\n \"small\": {\n \"minHeight\": \"ref.space.200\",\n \"minWidth\": \"ref.space.200\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"sys.layout.container.2xs\",\n \"labelTypo\": \"sys.typo.label.xs\"\n },\n \"dot-md\": {\n \"minHeight\": \"ref.space.100\",\n \"minWidth\": \"ref.space.100\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"0\",\n \"labelTypo\": null,\n \"note\": \"Labelless 8 × 8 dot (`ref.space.100`) — Thumbnail's update flag at the 32 / 40 / 48 rungs. Paints the brand fill with a 1px `surface`-color halo so it carves out of the host image.\"\n },\n \"dot-sm\": {\n \"minHeight\": \"ref.space.75\",\n \"minWidth\": \"ref.space.75\",\n \"paddingBlock\": \"0\",\n \"paddingInline\": \"0\",\n \"labelTypo\": null,\n \"note\": \"Labelless 6 × 6 dot (`ref.space.75`) — Thumbnail's update flag at the 16 / 20 / 24 rungs.\"\n }\n },\n \"accessibility\": {\n \"announcement\": \"A badge conveys meaning (unread count / new activity) that colour and position alone do not expose. The Numeric badge MUST carry an accessible name that states what the number means — e.g. aria-label='5 unread', not the bare '5' — supplied via aria-label on the badge or visually-hidden text in the host label. A lone number is meaningless to a screen reader.\",\n \"dot\": \"The labelless Dot has no text at all. It MUST be given an accessible name on the host (e.g. aria-label='New activity'), OR — when the host's own label already announces the unread / new state — the dot carries aria-hidden='true' to avoid a meaningless duplicate announcement.\",\n \"overflow\": \"When the count overflows to '99+', the accessible name should read the intent (e.g. 'over 99 unread'), not the literal glyph.\"\n },\n \"forbidden\": [\n \"badge painted with sys.color.text.brand outside the HOT / NEW / unread-count canon — brand on a badge is the marker, not a tint\",\n \"badge rendered as a raw <span> with Tailwind — badge chrome owns the radius / padding / typography\",\n \"more than one badge on the same anchor — the host slot is single-badge by anatomy\",\n \"badge label below 12px (label.sm is the floor)\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Badge\",\n \"family\": \"badge\",\n \"subcomponent\": \"role\",\n \"description\": \"Role badge — a tonal primary-container pill naming a user's role or title, riding the bare nickname (no @ prefix) at the end of the user-metadata meta row. Labels display in English; canonical: 'Channel owner' (채널장), 'Verified' (현직자, the verified professional). Two appearances: `default` (pale `sys.color.background.selected` fill with `sys.color.text.link` label) and `inverse` (`sys.color.background.inverse` / `sys.color.text.inverse` — reserved for the PRO mark on paid professional users). Shared geometry, 10px (`caption`) text, 16-rung min-height, `radius.full` corner. Identity, not state: it says who the person *is* — for workflow state (pending / rejected / draft) reach for StatusTag instead. Presentational; never interactive. Reaches the meta row through Metadata's meta-item `badge` field so the pill renders outside the nickname's <a>.\",\n \"element\": \"span\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"role\"\n },\n \"appearance\": {\n \"type\": \"literal\",\n \"values\": [\n \"default\",\n \"inverse\"\n ],\n \"default\": \"default\",\n \"description\": \"`default` — tonal primaryContainer pair for ordinary role marks (Channel owner, Verified). `inverse` — high-contrast inverseSurface pair, reserved for the paid-expert PRO mark.\"\n },\n \"children\": {\n \"type\": \"node\",\n \"description\": \"Required role / title label — short, single line, English display (Channel owner, Verified, Moderator).\"\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"The role / title text — English display, 1–2 words; the pill grows with content from the 16px square minimum.\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"sys.color.background.selected\",\n \"label\": \"sys.color.text.link\",\n \"radius\": \"sys.radius.full\",\n \"default\": true,\n \"note\": \"Tonal informational pair — pale primary container fill with the deep primary-container label. Theme-aware sys tokens, so no separate dark binding. Never the brand pair: brand is reserved for the Update sub's activity marker, and a brand-filled role mark would read as an alert, not an identity.\"\n },\n \"inverse\": {\n \"background\": \"sys.color.background.inverse\",\n \"label\": \"sys.color.text.inverse\",\n \"radius\": \"sys.radius.full\",\n \"note\": \"Inverse pair — the strongest mark in the row: near-black pill with light label (theme-aware; flips in dark mode). Reserved for the PRO mark on paid professional users. Same geometry as default; only the fill pair changes.\"\n }\n },\n \"sizes\": {\n \"medium\": {\n \"minHeight\": \"ref.space.200\",\n \"minWidth\": \"ref.space.200\",\n \"paddingBlock\": \"ref.space.25\",\n \"paddingInline\": \"ref.space.75\",\n \"labelTypo\": \"sys.typo.label.xs\",\n \"labelLineHeight\": \"1.2\",\n \"note\": \"Single 16-rung (`ref.space.200`) — sized to ride inline beside `caption`/`label` metadata text without stretching the row. 2 × 6 padding (`ref.space.25` × `ref.space.75`); the reference steps bind raw where `sys.*` exposes no step, in lockstep with the Update sub's rungs. Label line-height is the structural `1.2` (same device as StatusTag): 10px × 1.2 + 2 × 2px padding = exactly 16px — `caption`'s 15px running-text line would push the pill to 19.\"\n }\n },\n \"accessibility\": {\n \"announcement\": \"The label is real text and announces as-is (e.g. 'Verified'). No extra aria-label needed when the visible text already names the role; do not aria-hide it — the role mark carries meaning the surrounding metadata does not repeat.\"\n },\n \"forbidden\": [\n \"role badge used for workflow state (pending / approved / rejected / draft) — that is StatusTag's contract\",\n \"role badge used for unread / new-activity signalling — that is the Update sub (brand fill)\",\n \"brand or error fill on a role badge — the role mark is informational, only the primaryContainer pair\",\n \"interactive usage (onClick, href, hover affordance) — presentational, state belongs to the host row\",\n \"more than one badge on a nickname — exactly one role badge may ride the nickname; when a user qualifies for several, pick the contextually dominant one\",\n \"role badge detached from a user identity host — canonical seat is the bare nickname at the end of the Metadata meta row (via the meta item's `badge` field, outside the link); it annotates a person, never floats alone\",\n \"role badge placed inside the nickname <a> (link content) — pass it through the meta item's `badge` field so it stays outside the link\",\n \"inverse appearance on a non-PRO mark — the high-contrast pair is the paid-expert signal, not a styling option\"\n ]\n}\n","const RAW_RE = /^(\\d+px|0|transparent|currentColor|none|auto|inherit|\\d+%)$/i;\n\nexport function tokenToCss(value) {\n if (value == null) return null;\n if (typeof value !== 'string') return value;\n if (RAW_RE.test(value)) return value;\n if (value.startsWith('var(')) return value;\n return `var(--${value.replace(/\\./g, '-')})`;\n}\n\nexport function typoStyles(token) {\n if (!token) return {};\n const base = `--${token.replace(/\\./g, '-')}`;\n return {\n fontSize: `var(${base}-size)`,\n fontWeight: `var(${base}-weight)`,\n lineHeight: `var(${base}-line)`,\n letterSpacing: `var(${base}-tracking)`,\n };\n}\n\nexport function joinClasses(...parts) {\n return parts.filter(Boolean).join(' ');\n}\n","import updateSpec from '../../../schema/components/badge/update.spec.json';\nimport roleSpec from '../../../schema/components/badge/role.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\nfunction formatCount(value) {\n if (typeof value !== 'number' || Number.isNaN(value)) return null;\n if (value < 0) return '0';\n if (value > 99) return '99+';\n return String(Math.floor(value));\n}\n\nfunction sizingStyle(spec, size) {\n const s = spec.sizes[size] ?? spec.sizes.medium;\n return {\n '--badge-min-height': tokenToCss(s.minHeight),\n '--badge-min-width': tokenToCss(s.minWidth),\n '--badge-padding-block': tokenToCss(s.paddingBlock),\n '--badge-padding-inline': tokenToCss(s.paddingInline),\n ...(s.labelTypo ? typoStyles(s.labelTypo) : null),\n };\n}\n\nfunction appearanceStyle(spec) {\n return {\n '--badge-bg': tokenToCss(spec.appearance.background),\n '--badge-label': tokenToCss(spec.appearance.label),\n '--badge-radius': tokenToCss(spec.appearance.radius),\n };\n}\n\nconst DOT_SIZES = new Set(['dot-md', 'dot-sm']);\n\n/* Badge — two subs behind one export, selected by `variant`.\n\n `update` (default): numeric count pill (medium / small) plus the\n labelless **Dot** rungs (`dot-md` / `dot-sm`). The dot rungs render\n no label and paint a halo as a box-shadow so the dot reads cleanly\n above any host imagery. Thumbnail's corner update flag is the\n canonical host — `dot-md` at the 32 / 40 / 48 rungs, `dot-sm` at\n the 16 / 20 / 24 rungs.\n\n `role`: identity pill naming the user's role / title (Channel\n owner, Verified) riding the meta-row nickname. Single 16-rung;\n ignores `size`, `count`, and the dot rungs. Two appearances:\n `default` (tonal primaryContainer pair) and `inverse`\n (inverseSurface pair — reserved for the paid-expert PRO mark).\n Exactly one role badge may ride a nickname. */\nexport function Badge({\n variant = 'update',\n appearance = 'default',\n size = 'medium',\n count,\n className,\n children,\n style,\n 'aria-hidden': ariaHidden,\n ...rest\n}) {\n if (variant === 'role') {\n if (children == null || children === '') return null;\n const roleAppearance =\n roleSpec.appearances[appearance] ?? roleSpec.appearances.default;\n return (\n <span\n className={joinClasses('chorus-badge', 'chorus-badge--role', className)}\n style={{\n ...sizingStyle(roleSpec, 'medium'),\n '--badge-bg': tokenToCss(roleAppearance.background),\n '--badge-label': tokenToCss(roleAppearance.label),\n '--badge-radius': tokenToCss(roleAppearance.radius),\n /* Structural 1.2 (StatusTag's device): 10px × 1.2 + 2 × 2px\n padding lands the pill at exactly its 16px rung — caption's\n 15px running-text line-height would push it to 19. */\n lineHeight: roleSpec.sizes.medium.labelLineHeight,\n ...style,\n }}\n aria-hidden={ariaHidden}\n {...rest}\n >\n {children}\n </span>\n );\n }\n\n const isDot = DOT_SIZES.has(size);\n const composedStyle = {\n ...sizingStyle(updateSpec, size),\n ...appearanceStyle(updateSpec),\n ...style,\n };\n\n if (isDot) {\n return (\n <span\n className={joinClasses('chorus-badge', 'chorus-badge--dot', `chorus-badge--${size}`, className)}\n style={composedStyle}\n aria-hidden={ariaHidden ?? true}\n {...rest}\n />\n );\n }\n\n const label = children ?? formatCount(count);\n if (label == null || label === '') return null;\n return (\n <span\n className={joinClasses('chorus-badge', `chorus-badge--${size}`, className)}\n style={composedStyle}\n aria-hidden={ariaHidden}\n {...rest}\n >\n {label}\n </span>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\n// Dev-only sanity check for `layoutInset=\"full-bleed\"` family components.\n// On mount, measure the parent element's computed padding-inline and the\n// component's own margin-inline. If the effective rail inset is positive\n// (parent padding not negated by negative margin opt-out), the page rail\n// is being double-paid — warn once per element with a fix recipe.\n//\n// Silent in production builds (dead-code-eliminated by the bundler when\n// process.env.NODE_ENV is statically resolvable). Falls back to a runtime\n// check otherwise so we never warn end users.\n//\n// Why ResizeObserver / RO instead of a one-shot measurement: parent layout\n// can shift after mount (font load, suspense boundary resolve, hydration\n// commit on RSC routes). One useEffect tick can fire before the parent's\n// padding is in its steady state and produce a false \"all clear\". The RO\n// re-checks across the first few layout settlings; we still warn at most\n// once per element via the WARNED WeakSet so a normal viewport resize\n// doesn't spam the console.\n\nconst WARNED = new WeakSet();\n\nfunction isDev() {\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV) {\n return process.env.NODE_ENV !== 'production';\n }\n return true;\n}\n\nfunction px(value) {\n const n = parseFloat(value);\n return Number.isFinite(n) ? n : 0;\n}\n\nfunction checkOnce(el, name) {\n if (!el || WARNED.has(el)) return;\n const parent = el.parentElement;\n if (!parent) return;\n\n const cs = getComputedStyle(parent);\n const padStart = px(cs.paddingInlineStart);\n const padEnd = px(cs.paddingInlineEnd);\n if (padStart === 0 && padEnd === 0) return;\n\n const selfCs = getComputedStyle(el);\n // Self-padding is the other half of the rail inset. When the\n // component has zeroed it (embedded mode — opt-in prop or DOM-\n // ancestry safety net inside Section / Feed), the parent's gutter\n // is paid once and there's no double-pay to warn about.\n if (px(selfCs.paddingInlineStart) === 0 && px(selfCs.paddingInlineEnd) === 0) return;\n\n const marginStart = px(selfCs.marginInlineStart);\n const marginEnd = px(selfCs.marginInlineEnd);\n\n const effectiveStart = padStart + marginStart;\n const effectiveEnd = padEnd + marginEnd;\n if (effectiveStart <= 0 && effectiveEnd <= 0) return;\n\n WARNED.add(el);\n // eslint-disable-next-line no-console\n console.warn(\n `[Chorus] <${name}> is layoutInset=\"full-bleed\" — direct child of the page shell, owns its internal row/header padding via layout.container.*. ` +\n `Parent padding-inline (${padStart}px / ${padEnd}px) leaves an effective rail inset of ${effectiveStart}px / ${effectiveEnd}px on this instance, ` +\n `so the page gutter is double-paid and section headings, list-row leading content, chip rails, and feed-item author blocks land at different rails. ` +\n `Fix: either remove the parent's padding-inline (the page shell pays the gutter once at <main>), or — if the parent is a bounded surface ` +\n `(Card / Dialog / BottomSheet / Sheet) — apply the negative-margin opt-out idiom: ` +\n `style={{ marginInline: 'calc(-1 * var(--sys-layout-container-md))', width: 'calc(100% + 2 * var(--sys-layout-container-md))', maxWidth: 'none' }}. ` +\n `See LOVABLE.md §A.4 and AGENTS.md § Composition rules.`,\n el,\n );\n}\n\nexport function useFullBleedGuard(ref, name) {\n useEffect(() => {\n if (typeof window === 'undefined') return;\n if (!isDev()) return;\n const el = ref.current;\n if (!el) return;\n\n // First-tick check after layout commit.\n checkOnce(el, name);\n\n // Re-check on parent / self size changes (font load, hydration shifts,\n // suspense fallback → real content swap). Cheap; only runs in dev.\n const ro = new ResizeObserver(() => checkOnce(el, name));\n ro.observe(el);\n if (el.parentElement) ro.observe(el.parentElement);\n return () => ro.disconnect();\n }, [ref, name]);\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* Banner — a self-contained block that explains a feature, capability,\n or piece of content sitting *within* the body flow but visually\n separated from it. Two appearances: `default` (low-key surface\n variant — the canonical aside) and `accent` (primary-tinted, eye-\n catching). Optional title renders as a heading line above the body;\n optional action slot renders as an inline link below the body;\n optional trailingIcon or trailingAction (a Text Button) centers\n vertically at the trailing edge. `neutralBody` lays the Default\n appearance's neutral foreground over the `accent` fill. */\nexport function Banner({\n appearance = 'default',\n outlined = false,\n neutralBody = false,\n title,\n icon,\n thumbnail,\n action,\n trailingAction,\n trailingIcon,\n children,\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'Banner');\n return (\n <div\n ref={ref}\n className={joinClasses(\n 'chorus-banner',\n `chorus-banner--${appearance}`,\n outlined && 'chorus-banner--outlined',\n neutralBody && 'chorus-banner--neutral-body',\n className,\n )}\n role=\"note\"\n {...rest}\n >\n {thumbnail ? (\n <span className=\"chorus-banner__thumbnail\" aria-hidden=\"true\">{thumbnail}</span>\n ) : null}\n {!thumbnail && icon ? (\n <span className=\"chorus-banner__icon\" aria-hidden=\"true\">{icon}</span>\n ) : null}\n <div className=\"chorus-banner__content\">\n {title ? <p className=\"chorus-banner__title\">{title}</p> : null}\n {children ? <p className=\"chorus-banner__body\">{children}</p> : null}\n {action ? (\n <a\n className=\"chorus-banner__action\"\n href={action.href}\n onClick={action.onClick}\n >\n {action.label}\n </a>\n ) : null}\n </div>\n {trailingAction ? (\n <span className=\"chorus-banner__trailing-action\">{trailingAction}</span>\n ) : trailingIcon ? (\n <span className=\"chorus-banner__trailing-icon\" aria-hidden=\"true\">{trailingIcon}</span>\n ) : null}\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Button\",\n \"family\": \"button\",\n \"subcomponent\": \"standard\",\n \"description\": \"Standard inline action button. Two independent axes: size (chosen by surface), appearance (chosen by emphasis). Fixed-footprint. The default button form — reach for FAB / Toolbar Button / Toggle Button when the standard inline shape does not fit.\",\n \"element\": \"button\",\n \"props\": {\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"primary\",\n \"secondary\",\n \"outlined\",\n \"tertiary\"\n ],\n \"default\": \"primary\"\n },\n \"size\": {\n \"type\": \"enum\",\n \"values\": [\n \"large\",\n \"medium\",\n \"small\"\n ],\n \"default\": \"large\"\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"fullWidth\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"truncate\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Accessible name. Single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Optional context glyph before the label. Inherits currentColor.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizes\": {\n \"large\": {\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"gap\": \"sys.layout.inline.md\",\n \"minHeight\": \"ref.space.600\",\n \"minWidth\": \"160px\",\n \"radius\": \"sys.radius.md\",\n \"labelTypo\": \"sys.typo.label.lg\",\n \"iconSize\": \"sys.icon.lg\"\n },\n \"medium\": {\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"gap\": \"sys.layout.inline.md\",\n \"minHeight\": \"ref.space.500\",\n \"minWidth\": \"160px\",\n \"radius\": \"sys.radius.md\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"small\": {\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"gap\": \"sys.layout.inline.sm\",\n \"minHeight\": \"ref.space.400\",\n \"minWidth\": \"160px\",\n \"radius\": \"sys.radius.sm\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"iconSize\": \"sys.icon.md\"\n }\n },\n \"appearances\": {\n \"primary\": {\n \"background\": \"sys.color.background.primary\",\n \"border\": null,\n \"label\": \"sys.color.text.onFill\"\n },\n \"secondary\": {\n \"background\": \"sys.color.background.neutral\",\n \"border\": null,\n \"label\": \"sys.color.text.default\"\n },\n \"outlined\": {\n \"background\": \"transparent\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.text.link\"\n },\n \"label\": \"sys.color.text.link\"\n },\n \"tertiary\": {\n \"background\": \"transparent\",\n \"border\": null,\n \"label\": \"sys.color.text.subtle\"\n }\n },\n \"flavors\": {\n \"destructive\": {\n \"description\": \"Error-family appearances for irreversible commits (Delete, Remove, Discard). Destructive is a TONAL form, not a solid red fill or an outline — a soft danger-toned fill with a danger label and NO border, matching Blind's tonal button system (a tonal red sits beside a tonal neutral). It reads as destructive without a loud red block dominating the (monochrome) UI. A solid red fill is reserved for a future high-stakes escalation only.\",\n \"appearances\": {\n \"primary\": {\n \"background\": \"sys.color.background.danger\",\n \"border\": null,\n \"label\": \"sys.color.text.danger\"\n },\n \"secondary\": {\n \"background\": \"sys.color.background.danger\",\n \"border\": null,\n \"label\": \"sys.color.text.danger\"\n },\n \"outlined\": {\n \"background\": \"transparent\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.text.danger\"\n },\n \"label\": \"sys.color.text.danger\"\n },\n \"tertiary\": {\n \"background\": \"transparent\",\n \"border\": null,\n \"label\": \"sys.color.text.danger\"\n }\n }\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the button is in; never via plain mouse click.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the button is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"behavior\": {\n \"labelLine\": \"single\",\n \"truncation\": {\n \"whiteSpace\": \"nowrap\",\n \"overflow\": \"hidden\",\n \"textOverflow\": \"ellipsis\"\n },\n \"fullWidth\": {\n \"width\": \"100%\"\n }\n },\n \"forbidden\": [\n \"raw <button> wrapper styled with Tailwind / inline-style instead of the chorus-button--standard chrome\",\n \"appearance=tertiary / outlined used as the screen's primary commit — the highest-emphasis commit uses appearance=primary; the lower-emphasis appearances are for secondary / supporting actions\",\n \"destructive flavor used outside Dialog / BottomSheet primary-action context\",\n \"raw `border:` declaration — the edge stroke is an inset box-shadow\",\n \"manual focus ring via `outline:` — the ring is the `::after` overlay layer\"\n ]\n}\n","import spec from '../../../../schema/components/button/standard.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from '../spec-utils.js';\n\nfunction sizeStyle(size) {\n const s = spec.sizes[size] ?? spec.sizes[spec.props.size.default];\n return {\n '--button-standard-padding-block': tokenToCss(s.paddingBlock),\n '--button-standard-padding-inline': tokenToCss(s.paddingInline),\n '--button-standard-gap': tokenToCss(s.gap),\n '--button-standard-min-height': tokenToCss(s.minHeight),\n '--button-standard-min-width': tokenToCss(s.minWidth),\n '--button-standard-radius': tokenToCss(s.radius),\n '--button-standard-icon-size': tokenToCss(s.iconSize),\n ...typoStyles(s.labelTypo),\n };\n}\n\nfunction appearanceStyle(appearance) {\n const a = spec.appearances[appearance] ?? spec.appearances[spec.props.appearance.default];\n return {\n '--button-standard-bg': tokenToCss(a.background),\n '--button-standard-label': tokenToCss(a.label),\n '--button-standard-border-width': a.border ? tokenToCss(a.border.width) : '0px',\n '--button-standard-border-color': a.border ? tokenToCss(a.border.color) : 'transparent',\n };\n}\n\nfunction stateStyle() {\n return {\n '--button-standard-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--button-standard-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--button-standard-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--button-standard-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--button-standard-focus-outer-color': tokenToCss(spec.focusIndicator.ring.color),\n };\n}\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nexport function ButtonStandard({\n appearance = spec.props.appearance.default,\n size = spec.props.size.default,\n state,\n leadingIcon,\n fullWidth = false,\n truncate = false,\n disabled = false,\n className,\n children,\n style,\n ...rest\n}) {\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const className_ = joinClasses(\n 'chorus-button--standard',\n `chorus-button--standard--appearance-${appearance}`,\n `chorus-button--standard--size-${size}`,\n fullWidth && 'chorus-button--standard--full-width',\n truncate && 'chorus-button--standard--truncate',\n className,\n );\n const composedStyle = {\n ...sizeStyle(size),\n ...appearanceStyle(appearance),\n ...stateStyle(),\n ...style,\n };\n return (\n <button\n type=\"button\"\n className={className_}\n disabled={isDisabled}\n data-force-state={forcedState ?? undefined}\n style={composedStyle}\n {...rest}\n >\n {leadingIcon ? (\n <span className=\"chorus-button--standard__icon\" aria-hidden=\"true\">{leadingIcon}</span>\n ) : null}\n <span className=\"chorus-button--standard__label\">{children}</span>\n </button>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Fab\",\n \"family\": \"button\",\n \"subcomponent\": \"fab\",\n \"description\": \"Floating action button. Single fixed sizing rung, pill geometry, floating elevation. No disabled state.\",\n \"element\": \"button\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"fab\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"primary\",\n \"secondary\"\n ],\n \"default\": \"primary\"\n },\n \"icon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"note\": \"Provide as children. At least one of icon/label required.\"\n }\n },\n \"slots\": {\n \"icon\": {\n \"required\": false,\n \"description\": \"24px (sys.icon.lg) glyph naming the action. Optional but at least one of icon/label required.\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Short verb phrase. When present, padded internally so glyph never crowds the pill ends.\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.600\",\n \"padding\": \"sys.layout.container.sm\",\n \"iconSize\": \"sys.icon.lg\",\n \"slotGap\": \"0\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"radius\": \"sys.radius.full\",\n \"elevation\": \"sys.elevation.floating\",\n \"labelTypo\": \"sys.typo.label.lg\"\n },\n \"appearances\": {\n \"primary\": {\n \"background\": \"sys.color.text.brand\",\n \"label\": \"sys.color.text.onFill\"\n },\n \"secondary\": {\n \"background\": \"sys.color.surface.default\",\n \"label\": \"sys.color.text.default\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the FAB is in; never via plain mouse click.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the FAB is in. The ring stacks above the FAB's floating elevation so the lift survives focus. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"more than one fab per screen — the FAB is the single canonical commit\",\n \"fab styled with sys.color.background.primary fill — the FAB carries sys.color.text.brand by anatomy contract\",\n \"destructive flavor on a FAB — destructive commits live inside Dialog / BottomSheet, never a floating commit\",\n \"fab placed inline in flow — it floats over content, anchored bottom-right by the page shell\"\n ]\n}\n","import spec from '../../../../schema/components/button/fab.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from '../spec-utils.js';\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nfunction appearanceStyle(appearance) {\n const a = spec.appearances[appearance] ?? spec.appearances[spec.props.appearance.default];\n return {\n '--button-fab-bg': tokenToCss(a.background),\n '--button-fab-label': tokenToCss(a.label),\n };\n}\n\nconst sizingStyle = () => ({\n '--button-fab-min-height': tokenToCss(spec.sizing.minHeight),\n '--button-fab-padding': tokenToCss(spec.sizing.padding),\n '--button-fab-icon-size': tokenToCss(spec.sizing.iconSize),\n '--button-fab-slot-gap': tokenToCss(spec.sizing.slotGap),\n '--button-fab-label-inset': tokenToCss(spec.sizing.labelInset),\n '--button-fab-radius': tokenToCss(spec.sizing.radius),\n '--button-fab-elevation': tokenToCss(spec.sizing.elevation),\n '--button-fab-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--button-fab-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--button-fab-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--button-fab-focus-outer-color': tokenToCss(spec.focusIndicator.ring.color),\n ...typoStyles(spec.sizing.labelTypo),\n});\n\nexport function ButtonFab({\n appearance = spec.props.appearance.default,\n state,\n icon,\n className,\n children,\n style,\n ...rest\n}) {\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const className_ = joinClasses(\n 'chorus-button--fab',\n `chorus-button--button-fab--appearance-${appearance}`,\n !children && 'chorus-button--button-fab--icon-only',\n className,\n );\n const composedStyle = {\n ...sizingStyle(),\n ...appearanceStyle(appearance),\n ...style,\n };\n return (\n <button\n type=\"button\"\n className={className_}\n data-force-state={forcedState ?? undefined}\n style={composedStyle}\n {...rest}\n >\n {icon ? <span className=\"chorus-button--fab__icon\" aria-hidden=\"true\">{icon}</span> : null}\n {children ? <span className=\"chorus-button--fab__label\">{children}</span> : null}\n </button>\n );\n}\n","import { joinClasses } from '../spec-utils.js';\n\n/* Icon Button — the icon-only commit surface. Sized by padding\n (`sys.layout.container.xs` on every edge) around the glyph, so\n two rungs fall out of the icon scale: `large` (24-glyph → 40\n × 40, the default, page chrome) and `medium` (16-glyph → 32\n × 32, for dense affordances perched inside another control's\n chrome). Carries no visible label; consumers MUST supply\n `aria-label`. Hover / pressed paint `sys.state.*` overlays,\n focus composes the standard three-layer ring (see DESIGN.md\n → Focus ring composition). */\nexport function ButtonIcon({\n icon,\n size = 'large',\n appearance = 'default',\n state,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n /* Optical alignment is the **default** rendering rule — the base\n `.chorus-button--icon` style negates the capsule's 8px padding via\n negative margins on every side, so the visible glyph (not the\n transparent chrome) defines the button's layout edges. The hover\n capsule still paints on all four sides — the chrome becomes a\n hover-only affordance, not a layout participant. See\n `schema/components/button/icon.md → Behavior`. */\n return (\n <button\n type=\"button\"\n className={joinClasses(\n 'chorus-button--icon',\n `chorus-button--icon--${size}`,\n `chorus-button--icon--appearance-${appearance}`,\n className,\n )}\n aria-label={ariaLabel}\n data-force-state={state}\n {...rest}\n >\n <span className=\"chorus-button--icon__icon\" aria-hidden=\"true\">{icon}</span>\n </button>\n );\n}\n","import { forwardRef } from 'react';\nimport { joinClasses } from '../spec-utils.js';\n\n/* Text Button — the link-shaped commit surface. Reads as a `primary`-\n coloured 16/Semibold label at rest with no fill / no border, but\n paints a button-like state overlay on hover / pressed (the bare\n Text-link contract uses a 1px underline) and composes the standard\n three-layer focus ring. Sized by min-height: 40 + 8px padding so\n the control aligns with Icon Button next to it (Navigation Bar\n Page trailing slot is the canonical surface).\n\n Renders as <a> when `href` is given (browser open-in-new-tab,\n right-click affordances) and as <button> otherwise — keeps the\n semantic surface honest while letting consumers swap routing\n strategies without changing the rendered chrome. */\nexport const ButtonText = forwardRef(function ButtonText({\n children,\n href,\n state,\n size = 'medium',\n appearance = 'default',\n disabled = false,\n leadingIcon,\n trailingIcon,\n className,\n ...rest\n}, ref) {\n const isDisabled = disabled || state === 'disabled';\n /* Optical alignment is the **default** rendering rule — the base\n `.chorus-button--text` style negates the button's block / inline\n padding via negative margins on every side, so the visible label\n bounding box (not the chrome) defines the button's layout edges.\n The hover capsule still paints on all four sides — the chrome\n becomes a hover-only affordance, not a layout participant. See\n `schema/components/button/text.md → Behavior`. */\n const cls = joinClasses(\n 'chorus-button--text',\n `chorus-button--text--size-${size}`,\n `chorus-button--text--appearance-${appearance}`,\n className,\n );\n const props = {\n className: cls,\n 'data-force-state': state,\n ...rest,\n };\n if (href == null) {\n props.disabled = isDisabled;\n } else if (isDisabled) {\n props['aria-disabled'] = 'true';\n }\n /* Icon slots wrap in `<span aria-hidden>` so the glyph stays decorative\n and the button's accessible name is the label text. The 24px footprint\n and the 8px label-gap are paid by `.chorus-button--text__icon` /\n `.chorus-button--text { gap }` respectively — see styles.css. */\n const content = (\n <>\n {leadingIcon ? <span className=\"chorus-button--text__icon\" aria-hidden=\"true\">{leadingIcon}</span> : null}\n <span className=\"chorus-button--text__label\">{children}</span>\n {trailingIcon ? <span className=\"chorus-button--text__icon\" aria-hidden=\"true\">{trailingIcon}</span> : null}\n </>\n );\n if (href != null) {\n return <a ref={ref} href={href} {...props}>{content}</a>;\n }\n return <button ref={ref} type=\"button\" {...props}>{content}</button>;\n});\n","/* AUTO-GENERATED by packages/ui/src/icons/build-icons.mjs\n from the icon sources in schema/icons/ (svg/*.svg + icons.json). Do not\n edit by hand — re-run the script to regenerate. */\n\nfunction makeIcon(name, render, keywords = []) {\n function Icon({ size = 20, ...props }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n {render}\n </svg>\n );\n }\n Icon.displayName = name;\n Icon.keywords = keywords;\n return Icon;\n}\n\nexport const ArrowDownIcon = makeIcon(\n 'ArrowDownIcon',\n <><path d=\"M12.7954 17.7955C12.3561 18.2348 11.6438 18.2348 11.2044 17.7955L3.49991 9.99996C3.06057 9.56062 3.06058 8.84831 3.49991 8.40897C3.93925 7.96963 4.65157 7.96963 5.09091 8.40897L11.9999 15.409L18.9089 8.49996C19.3482 8.06062 20.0606 8.06062 20.4999 8.49996C20.9392 8.9393 20.9392 9.65161 20.4999 10.091L12.7954 17.7955Z\" fill=\"currentColor\"/></>,\n [\"downward\",\"down\",\"arrow-down\"],\n);\n\nexport const ArrowDownCircleIcon = makeIcon(\n 'ArrowDownCircleIcon',\n <><path d=\"M12.7071 15.2071C12.3166 15.5976 11.6834 15.5976 11.2929 15.2071L7.29289 11.2071C6.90237 10.8166 6.90237 10.1834 7.29289 9.7929C7.68342 9.4024 8.31658 9.4024 8.70711 9.7929L12 13.0858L15.2929 9.7929C15.6834 9.4024 16.3166 9.4024 16.7071 9.7929C17.0976 10.1834 17.0976 10.8166 16.7071 11.2071L12.7071 15.2071ZM12 2C17.5228 2 21.9999 6.4771 21.9999 12C21.9999 17.5228 17.5228 21.9999 12 21.9999C6.47714 21.9999 2 17.5228 2 12C2 6.4771 6.47714 2 12 2ZM12 4C7.58169 4 3.99995 7.5817 3.99995 12C3.99995 16.4182 7.58169 19.9999 12 19.9999C16.4182 19.9999 20 16.4182 20 11.9999C20 7.5817 16.4182 4 12 4Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"down\",\"circle\",\"icon\"],\n);\n\nexport const ArrowDownCircleFillIcon = makeIcon(\n 'ArrowDownCircleFillIcon',\n <><path d=\"M16.7071 11.207L12.7071 15.207C12.3166 15.5975 11.6834 15.5975 11.2929 15.207L7.29289 11.207C6.90237 10.8165 6.90237 10.1833 7.29289 9.79283C7.68342 9.40231 8.31658 9.40231 8.70711 9.79283L12 13.0857L15.2929 9.79283C15.6834 9.40231 16.3166 9.40231 16.7071 9.79283C17.0976 10.1833 17.0976 10.8165 16.7071 11.207ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"down\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const ArrowUpIcon = makeIcon(\n 'ArrowUpIcon',\n <><path d=\"M11.2044 6.2045C11.6438 5.76517 12.3561 5.76517 12.7954 6.2045L20.5 14C20.9393 14.4393 20.9393 15.1517 20.5 15.591C20.0607 16.0303 19.3483 16.0303 18.909 15.591L11.9999 8.59099L5.09091 15.591C4.65157 16.0303 3.93925 16.0303 3.49991 15.591C3.06058 15.1517 3.06058 14.4393 3.49991 14L11.2044 6.2045Z\" fill=\"currentColor\"/></>,\n [\"upward\",\"up\",\"arrow-up\"],\n);\n\nexport const ArrowUpCircleIcon = makeIcon(\n 'ArrowUpCircleIcon',\n <><path d=\"M12.7071 8.79283C12.3166 8.40231 11.6834 8.40231 11.2929 8.79283L7.29289 12.7928C6.90237 13.1833 6.90237 13.8165 7.29289 14.207C7.68342 14.5975 8.31658 14.5975 8.70711 14.207L12 10.9141L15.2929 14.207C15.6834 14.5975 16.3166 14.5975 16.7071 14.207C17.0976 13.8165 17.0976 13.1833 16.7071 12.7928L12.7071 8.79283ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999ZM12 19.9999C7.58169 19.9999 3.99995 16.4182 3.99995 11.9999C3.99995 7.58171 7.58169 4 12 4C16.4182 4 20 7.58173 20 12C20 16.4182 16.4182 19.9999 12 19.9999Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"up\",\"circle\",\"icon\"],\n);\n\nexport const ArrowUpCircleFillIcon = makeIcon(\n 'ArrowUpCircleFillIcon',\n <><path d=\"M21.9999 11.9999C21.9999 17.5228 17.5228 21.9999 12 21.9999C6.47714 21.9999 2 17.5228 2 11.9999C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 11.9999ZM16.7071 12.7928L12.7071 8.79283C12.3166 8.40231 11.6834 8.40231 11.2929 8.79283L7.29289 12.7928C6.90237 13.1833 6.90237 13.8165 7.29289 14.207C7.68342 14.5975 8.31658 14.5975 8.70711 14.207L12 10.9141L15.2929 14.207C15.6834 14.5975 16.3166 14.5975 16.7071 14.207C17.0976 13.8165 17.0976 13.1833 16.7071 12.7928Z\" fill=\"currentColor\"/></>,\n [\"arrow\",\"up\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const BarIcon = makeIcon(\n 'BarIcon',\n <><path d=\"M7.00015 7C6.72401 7 6.50015 7.22386 6.50015 7.5V8.5C6.50015 8.77614 6.72401 9 7.00015 9H11.5001C11.7763 9 12.0001 8.77614 12.0001 8.5V7.5C12.0001 7.22386 11.7763 7 11.5001 7H7.00015ZM7.00015 11C6.72401 11 6.50015 11.2239 6.50015 11.5V12.5C6.50015 12.7761 6.72401 13 7.00015 13H17.0002C17.2763 13 17.5002 12.7761 17.5002 12.5L17.5002 11.5C17.5002 11.2239 17.2763 11 17.0002 11H7.00015ZM7.00015 15C6.72401 15 6.50015 15.2239 6.50015 15.5V16.5C6.50015 16.7761 6.72401 17 7.00015 17H14.0001C14.2763 17 14.5001 16.7761 14.5001 16.5V15.5C14.5001 15.2239 14.2763 15 14.0001 15H7.00015ZM2.50015 5.49988C2.50015 3.84301 3.84331 2.49986 5.50018 2.49988L18.5002 2.49999C20.157 2.5 21.5002 3.84315 21.5002 5.49999V18.5002C21.5002 20.1571 20.157 21.5002 18.5001 21.5002L5.50009 21.4999C3.84326 21.4999 2.50015 20.1567 2.50015 18.4999V5.49988ZM5.50015 4.50024C4.94787 4.50024 4.50015 4.94796 4.50015 5.50024V18.5001C4.50015 19.0524 4.94786 19.5001 5.50014 19.5001L18.5001 19.5002C19.0524 19.5002 19.5001 19.0525 19.5001 18.5002V5.50033C19.5001 4.94804 19.0524 4.50033 18.5002 4.50033L5.50015 4.50024Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"icon\"],\n);\n\nexport const BarCircleIcon = makeIcon(\n 'BarCircleIcon',\n <><path d=\"M13.3328 1.31004C13.5446 1.12034 13.8271 1.02977 14.1098 1.06098C18.746 1.57291 22.4272 5.25404 22.9392 9.89031C22.9704 10.173 22.8798 10.4555 22.6901 10.6673C22.5004 10.8791 22.2295 11.0001 21.9452 11.0001H14C13.4477 11.0001 13 10.5524 13 10.0001V2.05494C13 1.77061 13.121 1.49973 13.3328 1.31004ZM15 3.25177V9.00008H20.7483C20.0251 6.18968 17.8104 3.97499 15 3.25177ZM10.662 4.31235C10.8769 4.50218 11 4.77513 11 5.06189V13L18.9382 13.0001C19.225 13.0001 19.4979 13.1232 19.6877 13.3381C19.8776 13.5531 19.966 13.8392 19.9305 14.1237C19.3774 18.5642 15.59 22.0001 11 22.0001C6.02944 22.0001 2 17.9707 2 13.0001C2 8.41014 5.436 4.62261 9.8764 4.06955C10.161 4.03411 10.447 4.12253 10.662 4.31235ZM9 6.28951C6.10919 7.14954 4 9.82953 4 13.0001C4 16.8661 7.134 20.0001 11 20.0001C14.1706 20.0001 16.8505 17.891 17.7106 15.0001L9.99999 15C9.44771 15 9 14.5523 9 14V6.28951Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"circle\",\"icon\"],\n);\n\nexport const BarCircleFillIcon = makeIcon(\n 'BarCircleFillIcon',\n <><path d=\"M19 13C19.5523 13 20.0058 13.4495 19.9452 13.9984C19.4485 18.4991 15.6331 22 11 22C6.02944 22 2 17.9706 2 13C2 8.36692 5.50088 4.55149 10.0016 4.05477C10.5506 3.99419 11 4.44773 11 5.00002V10C11 11.6569 12.3431 13 14 13H19ZM13 2.00002C13 1.44773 13.449 0.994767 13.9986 1.04925C18.7241 1.51777 22.4823 5.27588 22.9508 10.0014C23.0053 10.551 22.5523 11 22 11H14C13.4477 11 13 10.5523 13 10V2.00002Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const BarFillIcon = makeIcon(\n 'BarFillIcon',\n <><path d=\"M7.00003 7.00009C6.72389 7.00009 6.50003 7.22395 6.50003 7.50009V8.50009C6.50003 8.77624 6.72389 9.00009 7.00003 9.00009H11.5C11.7762 9.00009 12 8.77624 12 8.50009V7.50009C12 7.22395 11.7762 7.00009 11.5 7.00009H7.00003ZM7.00003 11.0001C6.72389 11.0001 6.50003 11.224 6.50003 11.5001V12.5001C6.50003 12.7762 6.72389 13.0001 7.00003 13.0001H17C17.2762 13.0001 17.5 12.7762 17.5 12.5001V11.5001C17.5 11.224 17.2762 11.0001 17 11.0001H7.00003ZM7.00002 15.0001C6.72388 15.0001 6.50003 15.2239 6.50003 15.5001V16.5001C6.50003 16.7762 6.72389 17.0001 7.00003 17.0001L14.0001 17C14.2762 17 14.5001 16.7762 14.5001 16.5L14.5 15.5C14.5 15.2239 14.2762 15 14 15L7.00002 15.0001ZM2.50004 5.50018C2.50004 3.84333 3.84317 2.50019 5.50002 2.50017L18.5 2.50006C20.1568 2.50005 21.5 3.84319 21.5 5.50005L21.5 18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.50004C3.84318 21.5 2.50004 20.1569 2.50004 18.5V5.50018Z\" fill=\"currentColor\"/></>,\n [\"bar\",\"fill\",\"icon\"],\n);\n\nexport const BellIcon = makeIcon(\n 'BellIcon',\n <><path d=\"M4.00008 10C4.00008 5.58172 7.5818 2 12.0001 2C16.4184 2 20.0001 5.58172 20.0001 10V11.8944C20.0001 12.0919 20.0585 12.2849 20.168 12.4492L21.7957 14.8906C22.6817 16.2197 21.729 18 20.1316 18H16.9001C16.4368 20.2822 14.419 22 12.0001 22C9.58112 22 7.56337 20.2822 7.1001 18H3.8686C2.27121 18 1.31842 16.2197 2.2045 14.8906L3.83213 12.4491C3.94164 12.2849 4.00008 12.0919 4.00008 11.8944V10ZM9.17079 18C9.58262 19.1652 10.6939 20 12.0001 20C13.3063 20 14.4175 19.1652 14.8294 18H9.17079ZM12.0001 4C8.68637 4 6.00008 6.68629 6.00008 10V11.8944C6.00008 12.4867 5.82477 13.0657 5.49623 13.5585L3.8686 16H20.1316L18.5039 13.5585C18.1754 13.0657 18.0001 12.4867 18.0001 11.8944V10C18.0001 6.68629 15.3138 4 12.0001 4Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"alert\",\"alarm\"],\n);\n\nexport const BellFillIcon = makeIcon(\n 'BellFillIcon',\n <><path d=\"M19.9999 11.8496V10C19.9999 5.58172 16.4181 2 11.9999 2C7.58158 2 3.99985 5.58172 3.99985 10V11.8496C3.99985 12.2723 3.86594 12.6841 3.61733 13.026L2.30992 14.8237C1.34851 16.1456 2.29282 18 3.92739 18H7.09987C7.56314 20.2822 9.5809 22 11.9999 22C14.4188 22 16.4366 20.2822 16.8998 18H20.0723C21.7069 18 22.6512 16.1456 21.6898 14.8237L20.3824 13.026C20.1338 12.6841 19.9999 12.2723 19.9999 11.8496ZM11.9999 20C10.6936 20 9.5824 19.1652 9.17056 18H14.8291C14.4173 19.1652 13.3061 20 11.9999 20Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"alert\",\"alarm\",\"filled\"],\n);\n\nexport const BellOffIcon = makeIcon(\n 'BellOffIcon',\n <><path d=\"M5.94536 1.66793C6.40489 1.36158 7.02576 1.48576 7.33211 1.94528L19.6654 20.4453C19.9718 20.9048 19.8476 21.5257 19.3881 21.832C18.9286 22.1384 18.3077 22.0142 18.0013 21.5547L16.4658 19.2513C15.6421 20.8819 13.9517 22 12.0001 22C9.58112 22 7.56337 20.2822 7.1001 18H3.8686C2.27121 18 1.31842 16.2197 2.2045 14.8906L3.83213 12.4491C3.94164 12.2849 4.00008 12.0919 4.00008 11.8944V9.99998C4.00008 7.73487 4.94146 5.68963 6.45433 4.23416L5.66801 3.05468C5.36166 2.59516 5.48583 1.97429 5.94536 1.66793ZM9.1709 18C9.58274 19.1652 10.694 20 12.0002 20C13.3064 20 14.4177 19.1652 14.8295 18H9.1709ZM18.7019 16H20.1316L18.5039 13.5585C18.1754 13.0657 18.0001 12.4867 18.0001 11.8944V9.99998C18.0001 6.68628 15.3138 3.99998 12.0001 3.99998C11.5835 3.99998 11.1768 4.04244 10.7841 4.12327L9.61058 2.36294C10.3652 2.12709 11.1678 1.99998 12.0001 1.99998C16.4184 1.99998 20.0001 5.58171 20.0001 9.99998V11.8944C20.0001 12.0919 20.0585 12.2849 20.168 12.4491L21.7957 14.8906C22.6817 16.2197 21.729 18 20.1316 18H20.0353L18.7019 16ZM14.2983 15.9999L7.58772 5.93408C6.60214 7.00314 6.00014 8.43122 6.00014 9.99991V11.8943C6.00014 12.4866 5.82482 13.0656 5.49629 13.5584L3.86865 15.9999H14.2983Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"mute\",\"off\",\"silent\"],\n);\n\nexport const BellOffFillIcon = makeIcon(\n 'BellOffFillIcon',\n <><path d=\"M5.94536 1.66793C6.40489 1.36158 7.02576 1.48576 7.33211 1.94528L19.6654 20.4453C19.9718 20.9048 19.8476 21.5257 19.3881 21.832C18.9286 22.1384 18.3077 22.0142 18.0013 21.5547L16.4658 19.2513C15.6421 20.8819 13.9517 22 12.0001 22C9.58112 22 7.56337 20.2822 7.1001 18H3.8686C2.27121 18 1.31842 16.2197 2.2045 14.8906L3.83213 12.4491C3.94164 12.2849 4.00008 12.0919 4.00008 11.8944V9.99998C4.00008 7.73487 4.94146 5.68963 6.45433 4.23416L5.66801 3.05468C5.36166 2.59516 5.48583 1.97429 5.94536 1.66793ZM21.7957 14.8906C22.6817 16.2197 21.729 18 20.1316 18L9.61058 2.36294C10.3652 2.12709 11.1678 1.99998 12.0001 1.99998C16.4184 1.99998 20.0001 5.58171 20.0001 9.99998V11.8944C20.0001 12.0919 20.0585 12.2849 20.168 12.4491L21.7957 14.8906ZM9.1709 18C9.58273 19.1652 10.694 20 12.0002 20C13.3064 20 14.4176 19.1652 14.8295 18H9.1709Z\" fill=\"currentColor\"/></>,\n [\"notification\",\"bell\",\"mute\",\"off\",\"silent\",\"filled\"],\n);\n\nexport const BookmarkIcon = makeIcon(\n 'BookmarkIcon',\n <><path d=\"M4 4C4 2.89543 4.89543 2 6 2H18C19.1046 2 20 2.89543 20 4V20C20 21.6267 18.1613 22.573 16.8375 21.6275L12 18.1721L7.16248 21.6275C5.83874 22.573 4 21.6267 4 20V4ZM18 4H6V20L10.8375 16.5446C11.5329 16.0479 12.4671 16.0479 13.1625 16.5446L18 20V4Z\" fill=\"currentColor\"/></>,\n [\"bookmark\",\"save\",\"pin\"],\n);\n\nexport const BookmarkFillIcon = makeIcon(\n 'BookmarkFillIcon',\n <><path d=\"M4.5 4.5C4.5 3.39543 5.39543 2.5 6.5 2.5H17.5C18.6046 2.5 19.5 3.39543 19.5 4.5V20.5C19.5 21.2549 18.6955 21.7376 18.0294 21.3824L12.4706 18.4176C12.1765 18.2608 11.8235 18.2608 11.5294 18.4176L5.97059 21.3824C5.30448 21.7376 4.5 21.2549 4.5 20.5V4.5Z\" fill=\"currentColor\"/></>,\n [\"bookmark\",\"save\",\"pin\",\"filled\"],\n);\n\nexport const BriefcaseIcon = makeIcon(\n 'BriefcaseIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10 4H14C14.5523 4 15 4.44772 15 5V6H9V5C9 4.44772 9.44772 4 10 4ZM7 6V5C7 3.34315 8.34315 2 10 2H14C15.6569 2 17 3.34315 17 5V6H19C20.6569 6 22 7.34315 22 9V13C22 14.1104 21.3967 15.0799 20.5 15.5987V18.5C20.5 20.1569 19.1569 21.5 17.5 21.5H6.5C4.84315 21.5 3.5 20.1569 3.5 18.5V15.5987C2.6033 15.0799 2 14.1104 2 13V9C2 7.34315 3.34315 6 5 6H7ZM5 8C4.44772 8 4 8.44772 4 9V13C4 13.5523 4.44772 14 5 14H12H19C19.5523 14 20 13.5523 20 13V9C20 8.44771 19.5523 8 19 8H5ZM13 16H18.5V18.5C18.5 19.0523 18.0523 19.5 17.5 19.5H6.5C5.94772 19.5 5.5 19.0523 5.5 18.5V16H11V17C11 17.5523 11.4477 18 12 18C12.5523 18 13 17.5523 13 17V16Z\" fill=\"currentColor\"/></>,\n [\"briefcase\",\"work\",\"job\",\"business\"],\n);\n\nexport const BriefcaseFillIcon = makeIcon(\n 'BriefcaseFillIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10 4H14C14.5523 4 15 4.44772 15 5V6H9V5C9 4.44772 9.44772 4 10 4ZM7 6V5C7 3.34315 8.34315 2 10 2H14C15.6569 2 17 3.34315 17 5V6H19C20.6569 6 22 7.34315 22 9V12.25C22 13.3546 21.1046 14.25 20 14.25H4C2.89543 14.25 2 13.3546 2 12.25V9C2 7.34315 3.34315 6 5 6H7ZM11 16H4.5C3.94772 16 3.5 16.4477 3.5 17V18.5C3.5 20.1569 4.84315 21.5 6.5 21.5H17.5C19.1569 21.5 20.5 20.1569 20.5 18.5V17C20.5 16.4477 20.0523 16 19.5 16H13V18C13 18.5523 12.5523 19 12 19C11.4477 19 11 18.5523 11 18V16Z\" fill=\"currentColor\"/></>,\n [\"briefcase\",\"work\",\"job\",\"business\",\"filled\"],\n);\n\nexport const BuildingIcon = makeIcon(\n 'BuildingIcon',\n <><path d=\"M3 21.5C2.44772 21.5 2 21.0523 2 20.5V5C2 3.34315 3.34315 2 5 2H12C13.6569 2 15 3.34315 15 5V10H19C20.6569 10 22 11.3431 22 13V20.5C22 21.0523 21.5523 21.5 21 21.5H3ZM6 11.5C6 12.0523 6.44772 12.5 7 12.5H10C10.5523 12.5 11 12.0523 11 11.5C11 10.9477 10.5523 10.5 10 10.5H7C6.44772 10.5 6 10.9477 6 11.5ZM6 8C6 8.55228 6.44772 9 7 9H10C10.5523 9 11 8.55228 11 8C11 7.44772 10.5523 7 10 7H7C6.44772 7 6 7.44772 6 8ZM4 19.5H7.5V17C7.5 16.4477 7.94772 16 8.5 16C9.05228 16 9.5 16.4477 9.5 17V19.5H13V5C13 4.44772 12.5523 4 12 4H5C4.44772 4 4 4.44772 4 5V19.5ZM15 19.5H20V13C20 12.4477 19.5523 12 19 12H15V19.5Z\" fill=\"currentColor\"/></>,\n [\"company\",\"building\",\"office\"],\n);\n\nexport const BuildingFillIcon = makeIcon(\n 'BuildingFillIcon',\n <><path d=\"M2 20.5C2 21.0523 2.44771 21.5 3 21.5H6.5C7.05228 21.5 7.5 21.0523 7.5 20.5V18C7.5 17.4477 7.94771 17 8.5 17C9.05228 17 9.5 17.4477 9.5 18V20.5C9.5 21.0523 9.94771 21.5 10.5 21.5H15V19.5V12V10V4C15 2.89543 14.1046 2 13 2L4.00002 2.00001C2.89546 2.00001 2.00003 2.89544 2.00003 4.00001L2 20.5ZM17 10V21.5H21C21.5523 21.5 22 21.0523 22 20.5V12C22 10.8954 21.1046 10 20 10H17ZM6.75 12.5C6.19771 12.5 5.75 12.0523 5.75 11.5C5.75 10.9477 6.19771 10.5 6.75 10.5H10.25C10.8023 10.5 11.25 10.9477 11.25 11.5C11.25 12.0523 10.8023 12.5 10.25 12.5H6.75ZM6.75 8.5C6.19771 8.5 5.75 8.05228 5.75 7.5C5.75 6.94771 6.19771 6.5 6.75 6.5H10.25C10.8023 6.5 11.25 6.94771 11.25 7.5C11.25 8.05228 10.8023 8.5 10.25 8.5H6.75Z\" fill=\"currentColor\"/></>,\n [\"company\",\"building\",\"office\",\"filled\"],\n);\n\nexport const CameraIcon = makeIcon(\n 'CameraIcon',\n <><path d=\"M10.2361 4.5C9.8573 4.5 9.51103 4.714 9.34164 5.05279L8.39443 6.94721C8.22504 7.286 7.87877 7.5 7.5 7.5H5C4.44772 7.5 4 7.94772 4 8.5V18C4 18.5523 4.44772 19 5 19H19C19.5523 19 20 18.5523 20 18V8.5C20 7.94772 19.5523 7.5 19 7.5H16.5C16.1212 7.5 15.775 7.286 15.6056 6.94721L14.6584 5.05279C14.489 4.714 14.1427 4.5 13.7639 4.5H10.2361ZM7.55279 4.15836C8.06096 3.14201 9.09975 2.5 10.2361 2.5H13.7639C14.9002 2.5 15.939 3.14201 16.4472 4.15836L17.118 5.5H19C20.6569 5.5 22 6.84315 22 8.5V18C22 19.6569 20.6569 21 19 21H5C3.34315 21 2 19.6569 2 18V8.5C2 6.84315 3.34315 5.5 5 5.5H6.88197L7.55279 4.15836ZM12 10.5C10.6193 10.5 9.5 11.6193 9.5 13C9.5 14.3807 10.6193 15.5 12 15.5C13.3807 15.5 14.5 14.3807 14.5 13C14.5 11.6193 13.3807 10.5 12 10.5ZM7.5 13C7.5 10.5147 9.51472 8.5 12 8.5C14.4853 8.5 16.5 10.5147 16.5 13C16.5 15.4853 14.4853 17.5 12 17.5C9.51472 17.5 7.5 15.4853 7.5 13Z\" fill=\"currentColor\"/></>,\n [\"photo\",\"camera\",\"image\"],\n);\n\nexport const CameraFillIcon = makeIcon(\n 'CameraFillIcon',\n <><path d=\"M7.55279 4.15836C8.06096 3.14201 9.09975 2.5 10.2361 2.5H13.7639C14.9002 2.5 15.939 3.14201 16.4472 4.15836L17.118 5.5H19C20.6569 5.5 22 6.84315 22 8.5V18C22 19.6569 20.6569 21 19 21H5C3.34315 21 2 19.6569 2 18V8.5C2 6.84315 3.34315 5.5 5 5.5H6.88197L7.55279 4.15836ZM9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16C10.3431 16 9 14.6569 9 13ZM12 8C9.23858 8 7 10.2386 7 13C7 15.7614 9.23858 18 12 18C14.7614 18 17 15.7614 17 13C17 10.2386 14.7614 8 12 8Z\" fill=\"currentColor\"/></>,\n [\"photo\",\"camera\",\"image\",\"filled\"],\n);\n\nexport const CampusIcon = makeIcon(\n 'CampusIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4885 2.88139C11.4225 2.33671 12.5779 2.33661 13.5119 2.88139L21.7795 7.70365C22.6852 8.23218 22.7611 9.47106 22.0129 10.1236C22.0514 11.5216 22.213 13.1887 22.8947 14.5523C23.1416 15.0462 22.9412 15.647 22.4474 15.8941C21.9535 16.1411 21.3526 15.9408 21.1056 15.4468C20.4387 14.1127 20.1744 12.6033 20.0695 11.2915L19.0353 11.8951L19.3879 16.1109C19.4869 17.3002 18.8712 18.4356 17.8205 19.0015L13.422 21.3697C12.5343 21.8475 11.466 21.8475 10.5783 21.3697L6.17986 19.0015C5.12898 18.4356 4.51343 17.3003 4.61248 16.1109L4.96404 11.8951L2.22088 10.2954C1.22899 9.71656 1.22895 8.2825 2.22088 7.70365L10.4885 2.88139ZM13.5119 15.1177L13.3342 15.2134C12.4342 15.6604 11.3642 15.6286 10.4885 15.1177L6.87713 13.0113L6.60564 16.2769C6.57264 16.6733 6.77784 17.0521 7.1281 17.2408L11.5265 19.6089C11.8222 19.7679 12.1781 19.7679 12.4738 19.6089L16.8722 17.2408C17.2223 17.0521 17.4277 16.6732 17.3947 16.2769L17.1222 13.0113L13.5119 15.1177ZM12.5041 4.60892C12.1928 4.4274 11.8076 4.4275 11.4963 4.60892L3.96795 8.99955L11.4963 13.3902C11.8076 13.5718 12.1927 13.5718 12.5041 13.3902L20.0002 9.01713C20.0002 9.0114 20.0002 9.00524 20.0002 8.99955H20.0314L12.5041 4.60892Z\" fill=\"currentColor\"/></>,\n [\"campus\",\"icon\"],\n);\n\nexport const CampusFillIcon = makeIcon(\n 'CampusFillIcon',\n <><path d=\"M18.3915 16.1943C18.4575 16.9872 18.047 17.7438 17.3466 18.1211L12.9482 20.4892C12.3562 20.808 11.6436 20.808 11.0517 20.4892L6.65323 18.1211C5.95287 17.7438 5.54326 16.9871 5.60929 16.1943L5.8212 13.6426L9.73722 15.7646C11.1486 16.5291 12.8513 16.5291 14.2626 15.7646L18.1786 13.6426L18.3915 16.1943Z\" fill=\"currentColor\"/><path d=\"M10.571 2.77361C11.4622 2.29088 12.5372 2.29103 13.4284 2.77361L21.9704 7.40056C22.8324 7.86744 22.842 9.09238 22.0017 9.5783C22.0158 11.0701 22.1212 13.0068 22.8943 14.5529C23.1412 15.0469 22.941 15.6477 22.447 15.8947C21.9531 16.1415 21.3521 15.9413 21.1052 15.4474C20.326 13.8891 20.0998 12.091 20.032 10.6486L13.4284 14.2258C12.5371 14.7085 11.4623 14.7086 10.571 14.2258L2.02902 9.5988C1.15637 9.12592 1.15623 7.87332 2.02902 7.40056L10.571 2.77361Z\" fill=\"currentColor\"/></>,\n [\"campus\",\"fill\",\"icon\"],\n);\n\nexport const CardIcon = makeIcon(\n 'CardIcon',\n <><path d=\"M8 2C6.89543 2 6 2.89543 6 4H18C18 2.89543 17.1046 2 16 2H8ZM4 8C4 6.89543 4.89543 6 6 6H18C19.1046 6 20 6.89543 20 8H4ZM2 12.5C2 11.1193 3.11929 10 4.5 10H19.5C20.8807 10 22 11.1193 22 12.5V19C22 20.3807 20.8807 21.5 19.5 21.5H4.5C3.11929 21.5 2 20.3807 2 19V12.5ZM4.5 12C4.22386 12 4 12.2239 4 12.5V19C4 19.2761 4.22386 19.5 4.5 19.5H19.5C19.7761 19.5 20 19.2761 20 19V12.5C20 12.2239 19.7761 12 19.5 12H4.5Z\" fill=\"currentColor\"/></>,\n [\"card\",\"icon\"],\n);\n\nexport const CardFillIcon = makeIcon(\n 'CardFillIcon',\n <><path d=\"M8 2C6.89543 2 6 2.89543 6 4H18C18 2.89543 17.1046 2 16 2H8ZM4 8C4 6.89543 4.89543 6 6 6H18C19.1046 6 20 6.89543 20 8H4ZM4.5 10C3.11929 10 2 11.1193 2 12.5V19C2 20.3807 3.11929 21.5 4.5 21.5H19.5C20.8807 21.5 22 20.3807 22 19V12.5C22 11.1193 20.8807 10 19.5 10H4.5Z\" fill=\"currentColor\"/></>,\n [\"card\",\"fill\",\"icon\"],\n);\n\nexport const ChartBarIcon = makeIcon(\n 'ChartBarIcon',\n <><path d=\"M6.87491 17C6.87491 17.2762 7.09877 17.5 7.37491 17.5H8.62491C8.90106 17.5 9.12491 17.2762 9.12491 17V13.125C9.12491 12.5037 8.62123 12 7.99991 12C7.37859 12 6.87491 12.5037 6.87491 13.125V17ZM10.8749 17C10.8749 17.2762 11.0988 17.5 11.3749 17.5H12.6249C12.9011 17.5 13.1249 17.2762 13.1249 17V8.12501C13.1249 7.50369 12.6212 7.00001 11.9999 7.00001C11.3786 7.00001 10.8749 7.50369 10.8749 8.12501V17ZM14.8749 17C14.8749 17.2762 15.0988 17.5 15.3749 17.5H16.6249C16.9011 17.5 17.1249 17.2762 17.1249 17V10.625C17.1249 10.0037 16.6212 9.50004 15.9999 9.50004C15.3786 9.50004 14.8749 10.0037 14.8749 10.625V17ZM5.49994 21.5C3.84307 21.5 2.49992 20.1569 2.49994 18.5L2.50005 5.5C2.50007 3.84316 3.84321 2.50003 5.50005 2.50003L18.5002 2.50003C20.1571 2.50003 21.5003 3.84321 21.5002 5.50009L21.5 18.5001C21.4999 20.1569 20.1568 21.5 18.5 21.5H5.49994ZM4.5003 18.5C4.5003 19.0523 4.94802 19.5 5.5003 19.5H18.5002C19.0525 19.5 19.5002 19.0523 19.5002 18.5L19.5003 5.50004C19.5003 4.94776 19.0526 4.50004 18.5003 4.50004H5.50039C4.94811 4.50004 4.50039 4.94775 4.50039 5.50003L4.5003 18.5Z\" fill=\"currentColor\"/></>,\n [\"insights\",\"chart\",\"analytics\",\"graph\",\"stats\"],\n);\n\nexport const ChartBarFillIcon = makeIcon(\n 'ChartBarFillIcon',\n <><path d=\"M7.00003 17C7.00003 17.2761 7.22389 17.5 7.50003 17.5H8.50003C8.77617 17.5 9.00003 17.2761 9.00003 17V13C9.00003 12.4477 8.55232 12 8.00003 12C7.44775 12 7.00003 12.4477 7.00003 13V17ZM11 17C11 17.2761 11.2239 17.5 11.5 17.5H12.5C12.7762 17.5 13 17.2761 13 17V8.00004C13 7.44775 12.5523 7.00004 12 7.00004C11.4477 7.00004 11 7.44775 11 8.00004V17ZM15 17C15 17.2761 15.2239 17.5 15.5 17.5H16.5C16.7762 17.5 17 17.2761 17 17L17 10.5C17 9.9477 16.5523 9.49999 16 9.49999C15.4477 9.49999 15 9.94771 15 10.5L15 17ZM5.50011 21.5C3.84327 21.5 2.50013 20.1568 2.50011 18.5L2.5 5.50006C2.49999 3.84319 3.84313 2.50003 5.49999 2.50003L18.5 2.5C20.1568 2.5 21.5 3.84314 21.5 5.5V18.5C21.5 20.1568 20.1568 21.5 18.5 21.5H5.50011Z\" fill=\"currentColor\"/></>,\n [\"insights\",\"chart\",\"analytics\",\"graph\",\"stats\",\"filled\"],\n);\n\nexport const ChatIcon = makeIcon(\n 'ChatIcon',\n <><path d=\"M16 12C15.3096 12 14.75 11.4404 14.75 10.75C14.75 10.0596 15.3096 9.5 16 9.5C16.6904 9.5 17.25 10.0596 17.25 10.75C17.25 11.4404 16.6904 12 16 12ZM12 12C11.3096 12 10.75 11.4404 10.75 10.75C10.75 10.0596 11.3096 9.5 12 9.5C12.6904 9.5 13.25 10.0596 13.25 10.75C13.25 11.4404 12.6904 12 12 12ZM9.25 10.75C9.25 11.4404 8.69036 12 8 12C7.30964 12 6.75 11.4404 6.75 10.75C6.75 10.0596 7.30964 9.5 8 9.5C8.69036 9.5 9.25 10.0596 9.25 10.75ZM10.5 20.1386C10.5 21.1666 11.3334 22 12.3614 22C12.7753 22 13.1774 21.862 13.5041 21.6079L18.9115 17.4021C20.8602 15.8865 22 13.5561 22 11.0873V10.5C22 6.08172 18.4183 2.5 14 2.5H10C5.58172 2.5 2 6.08172 2 10.5C2 14.9183 5.58172 18.5 10 18.5H10.5V20.1386ZM12.5 17.5C12.5 16.9477 12.0523 16.5 11.5 16.5H10C6.68629 16.5 4 13.8137 4 10.5C4 7.18629 6.68629 4.5 10 4.5H14C17.3137 4.5 20 7.18629 20 10.5V11.0783C20 12.9226 19.1518 14.6644 17.7 15.8017L12.5 19.875V17.5Z\" fill=\"currentColor\"/></>,\n [\"chat\",\"message\",\"talk\",\"conversation\",\"speech\"],\n);\n\nexport const ChatFillIcon = makeIcon(\n 'ChatFillIcon',\n <><path d=\"M7.995 12C8.68259 12 9.24 11.4376 9.24 10.75C9.24 10.0624 8.68259 9.49999 7.995 9.49999C7.30741 9.49999 6.75 10.0624 6.75 10.75C6.75 11.4376 7.30741 12 7.995 12ZM12 12C12.6904 12 13.25 11.4403 13.25 10.75C13.25 10.0596 12.6904 9.49999 12 9.49999C11.3096 9.49999 10.75 10.0596 10.75 10.75C10.75 11.4403 11.3096 12 12 12ZM16 12C16.6904 12 17.25 11.4403 17.25 10.75C17.25 10.0596 16.6904 9.49999 16 9.49999C15.3096 9.49999 14.75 10.0596 14.75 10.75C14.75 11.4403 15.3096 12 16 12ZM11 18H9.75C5.46979 18 2 14.5302 2 10.25C2 5.96979 5.4698 2.5 9.75 2.5L14 2.5C18.4183 2.50001 22 6.08173 22 10.5V10.9575C22 13.4995 20.792 15.8901 18.7456 17.398L12.7987 21.7799C12.6047 21.9229 12.37 22 12.129 22C11.5055 22 11 21.4945 11 20.871V18Z\" fill=\"currentColor\"/></>,\n [\"chat\",\"message\",\"talk\",\"conversation\",\"speech\",\"filled\"],\n);\n\nexport const CheckCircleIcon = makeIcon(\n 'CheckCircleIcon',\n <><path d=\"M9.89304 15.8928C10.2836 16.2833 10.9167 16.2833 11.3073 15.8928L16.9501 10.2499C17.3367 9.86333 17.3367 9.23653 16.9501 8.84993C16.5635 8.46333 15.9367 8.46333 15.5501 8.84993L10.6001 13.7999L8.45014 11.6499C8.06354 11.2633 7.43674 11.2633 7.05014 11.6499C6.66354 12.0365 6.66354 12.6633 7.05014 13.0499L9.89304 15.8928ZM12 21.9999C6.47721 21.9999 2.00001 17.5228 2 12C1.99999 6.47714 6.47721 1.99999 12 2C17.5228 2.00001 22 6.4771 22.0001 11.9999C22.0001 17.5227 17.5229 21.9999 12 21.9999ZM11.9997 20.0001C16.418 20.0001 19.9997 16.4183 19.9997 12.0001C19.9997 7.58179 16.418 4.00007 11.9997 4.00007C7.58144 4.00007 3.99971 7.58179 3.99971 12.0001C3.99971 16.4183 7.58144 20.0001 11.9997 20.0001Z\" fill=\"currentColor\"/></>,\n [\"check\",\"circle\",\"icon\"],\n);\n\nexport const CheckCircleFillIcon = makeIcon(\n 'CheckCircleFillIcon',\n <><path d=\"M9.89304 15.8928C10.2836 16.2833 10.9167 16.2833 11.3073 15.8928L16.9501 10.2499C17.3367 9.86333 17.3367 9.23653 16.9501 8.84993C16.5635 8.46333 15.9367 8.46333 15.5501 8.84993L10.6001 13.7999L8.45014 11.6499C8.06355 11.2633 7.43674 11.2633 7.05014 11.6499C6.66354 12.0365 6.66355 12.6633 7.05014 13.0499L9.89304 15.8928ZM12 21.9999C6.47721 21.9999 1.99999 17.5228 1.99999 12C1.99999 6.47714 6.47723 2.00001 12.0001 2.00003C17.5228 2.00005 22 6.47713 22.0001 11.9999C22.0001 17.5228 17.5229 21.9999 12 21.9999Z\" fill=\"currentColor\"/></>,\n [\"check\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const CheckboxIcon = makeIcon(\n 'CheckboxIcon',\n <><path d=\"M3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"checkbox\",\"check\",\"select\",\"unchecked\"],\n);\n\nexport const CheckboxFillIcon = makeIcon(\n 'CheckboxFillIcon',\n <><path d=\"M3 6C3 4.5 4.5 3 6 3H18C19.5 3 21 4.5 21 6V18C21 19.5 19.5 21 18 21H6C4.5 21 3 19.5 3 18V6ZM16.7071 10.2071C17.0976 9.81658 17.0976 9.18342 16.7071 8.79289C16.3166 8.40237 15.6834 8.40237 15.2929 8.79289L10.5 13.5858L8.70711 11.7929C8.31658 11.4024 7.68342 11.4024 7.29289 11.7929C6.90237 12.1834 6.90237 12.8166 7.29289 13.2071L9.79289 15.7071C10.1834 16.0976 10.8166 16.0976 11.2071 15.7071L16.7071 10.2071Z\" fill=\"currentColor\"/></>,\n [\"checkbox\",\"check\",\"select\",\"checked\",\"filled\"],\n);\n\nexport const CheckedIcon = makeIcon(\n 'CheckedIcon',\n <><path d=\"M18.1592 4.45898C18.4579 3.99469 19.0766 3.8606 19.541 4.15918C20.0053 4.45791 20.1394 5.07656 19.8408 5.54101L10.8408 19.541C10.6615 19.8197 10.3558 19.9919 10.0244 20C9.69293 20.0081 9.37925 19.8509 9.18652 19.5811L4.18652 12.5811C3.86551 12.1316 3.96953 11.5075 4.41894 11.1865C4.86836 10.8655 5.49247 10.9695 5.81347 11.4189L9.95605 17.2187L18.1592 4.45898Z\" fill=\"currentColor\"/></>,\n [\"check\",\"checked\",\"done\",\"confirm\"],\n);\n\nexport const ChevronDownIcon = makeIcon(\n 'ChevronDownIcon',\n <><path d=\"M5.29289 8.79289C5.68342 8.40237 6.31658 8.40237 6.70711 8.79289L12 14.0858L17.2929 8.79289C17.6834 8.40237 18.3166 8.40237 18.7071 8.79289C19.0976 9.18342 19.0976 9.81658 18.7071 10.2071L12.7071 16.2071C12.3166 16.5976 11.6834 16.5976 11.2929 16.2071L5.29289 10.2071C4.90237 9.81658 4.90237 9.18342 5.29289 8.79289Z\" fill=\"currentColor\"/></>,\n [\"expand\",\"chevron-down\",\"unfold\"],\n);\n\nexport const ChevronLeftIcon = makeIcon(\n 'ChevronLeftIcon',\n <><path d=\"M6.2045 12.7954C5.76517 12.356 5.76517 11.6437 6.2045 11.2044L13.909 3.49992C14.3483 3.06058 15.0607 3.06058 15.5 3.49992C15.9393 3.93926 15.9393 4.65155 15.5 5.09089L8.59099 11.9999L15.5 18.909C15.9393 19.3483 15.9393 20.0607 15.5 20.5C15.0607 20.9393 14.3483 20.9393 13.909 20.5L6.2045 12.7954Z\" fill=\"currentColor\"/></>,\n [\"back\",\"backward\",\"chevron-left\",\"previous\"],\n);\n\nexport const ChevronLeftCircleIcon = makeIcon(\n 'ChevronLeftCircleIcon',\n <><path d=\"M8.79289 11.2928C8.60536 11.4803 8.5 11.7347 8.5 11.9999C8.5 12.2651 8.60536 12.5195 8.79289 12.707L12.7929 16.707C13.1834 17.0975 13.8166 17.0975 14.2071 16.707C14.5976 16.3165 14.5976 15.6833 14.2071 15.2928L10.9142 11.9999L14.2071 8.70705C14.5976 8.31652 14.5976 7.68336 14.2071 7.29283C13.8166 6.90231 13.1834 6.90231 12.7929 7.29283L8.79289 11.2928ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999ZM12 19.9999C7.58169 19.9999 3.99995 16.4182 3.99995 11.9999C3.99995 7.58171 7.58169 4 12 4C16.4182 4 20 7.58173 20 12C20 16.4182 16.4182 19.9999 12 19.9999Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"left\",\"circle\",\"icon\"],\n);\n\nexport const ChevronLeftCircleFillIcon = makeIcon(\n 'ChevronLeftCircleFillIcon',\n <><path d=\"M21.9999 11.9999C21.9999 17.5228 17.5228 21.9999 12 21.9999C6.47714 21.9999 2 17.5228 2 11.9999C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 11.9999ZM8.79289 11.2928C8.60536 11.4803 8.5 11.7347 8.5 11.9999C8.5 12.2651 8.60536 12.5195 8.79289 12.707L12.7929 16.707C13.1834 17.0975 13.8166 17.0975 14.2071 16.707C14.5976 16.3165 14.5976 15.6833 14.2071 15.2928L10.9142 11.9999L14.2071 8.70705C14.5976 8.31652 14.5976 7.68336 14.2071 7.29283C13.8166 6.90231 13.1834 6.90231 12.7929 7.29283L8.79289 11.2928Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"left\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const ChevronRightIcon = makeIcon(\n 'ChevronRightIcon',\n <><path d=\"M17.7954 11.2045C18.2347 11.6439 18.2347 12.3562 17.7954 12.7955L10.0909 20.5C9.65156 20.9393 8.93926 20.9393 8.49992 20.5C8.06058 20.0607 8.06058 19.3483 8.49992 18.909L15.4089 12L8.49992 5.09103C8.06058 4.65169 8.06058 3.93938 8.49992 3.50004C8.93926 3.0607 9.65156 3.0607 10.0909 3.50004L17.7954 11.2045Z\" fill=\"currentColor\"/></>,\n [\"forward\",\"chevron-right\",\"next\"],\n);\n\nexport const ChevronRightCircleIcon = makeIcon(\n 'ChevronRightCircleIcon',\n <><path d=\"M15.2071 11.2928C15.3946 11.4803 15.5 11.7347 15.5 11.9999C15.5 12.2651 15.3946 12.5195 15.2071 12.707L11.2071 16.707C10.8166 17.0975 10.1834 17.0975 9.79289 16.707C9.40239 16.3165 9.40239 15.6833 9.79289 15.2928L13.0858 11.9999L9.79289 8.70705C9.40239 8.31652 9.40239 7.68336 9.79289 7.29283C10.1834 6.90231 10.8166 6.90231 11.2071 7.29283L15.2071 11.2928ZM12 21.9999C6.47719 21.9999 2.00009 17.5228 2.00009 11.9999C2.00009 6.47715 6.47719 2 12 2C17.5229 2 22 6.47715 22 11.9999C22 17.5228 17.5229 21.9999 12 21.9999ZM12 19.9999C16.4183 19.9999 20 16.4182 20 11.9999C20 7.58171 16.4183 4 12 4C7.58179 4 3.99999 7.58173 3.99999 12C3.99999 16.4182 7.58179 19.9999 12 19.9999Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"right\",\"circle\",\"icon\"],\n);\n\nexport const ChevronRightCircleFillIcon = makeIcon(\n 'ChevronRightCircleFillIcon',\n <><path d=\"M15.2071 11.2928C15.3946 11.4803 15.5 11.7347 15.5 11.9999C15.5 12.2651 15.3946 12.5195 15.2071 12.707L11.2071 16.707C10.8166 17.0975 10.1834 17.0975 9.79289 16.707C9.40237 16.3165 9.40237 15.6833 9.79289 15.2928L13.0858 11.9999L9.79289 8.70705C9.40237 8.31652 9.40237 7.68336 9.79289 7.29283C10.1834 6.90231 10.8166 6.90231 11.2071 7.29283L15.2071 11.2928ZM12 21.9999C17.5228 21.9999 21.9999 17.5228 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5228 6.47714 21.9999 12 21.9999Z\" fill=\"currentColor\"/></>,\n [\"chevron\",\"right\",\"circle\",\"fill\",\"icon\"],\n);\n\nexport const ChevronUpIcon = makeIcon(\n 'ChevronUpIcon',\n <><path d=\"M11.2929 7.79289C11.6834 7.40237 12.3166 7.40237 12.7071 7.79289L18.7071 13.7929C19.0976 14.1834 19.0976 14.8166 18.7071 15.2071C18.3166 15.5976 17.6834 15.5976 17.2929 15.2071L12 9.91421L6.70711 15.2071C6.31658 15.5976 5.68342 15.5976 5.29289 15.2071C4.90237 14.8166 4.90237 14.1834 5.29289 13.7929L11.2929 7.79289Z\" fill=\"currentColor\"/></>,\n [\"collapse\",\"chevron-up\",\"fold\"],\n);\n\nexport const CompensationIcon = makeIcon(\n 'CompensationIcon',\n <><path d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H18.5C20.1569 2.5 21.5 3.84315 21.5 5.5V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V5.5ZM5.5 4.5C4.94772 4.5 4.5 4.94772 4.5 5.5V18.5C4.5 19.0523 4.94772 19.5 5.5 19.5H18.5C19.0523 19.5 19.5 19.0523 19.5 18.5V5.5C19.5 4.94772 19.0523 4.5 18.5 4.5H5.5ZM9.5325 7.0895C9.9753 6.81275 10.4832 6.65479 11 6.57336V5.5H13V6.57336C13.5168 6.65479 14.0247 6.81275 14.4675 7.0895C15.2686 7.59016 15.75 8.41557 15.75 9.5C15.75 10.0523 15.3023 10.5 14.75 10.5C14.1977 10.5 13.75 10.0523 13.75 9.5C13.75 9.08443 13.6064 8.90984 13.4075 8.7855C13.1371 8.61647 12.6684 8.5 12 8.5C11.3316 8.5 10.8629 8.61647 10.5925 8.7855C10.3936 8.90984 10.25 9.08443 10.25 9.5C10.25 9.88856 10.3876 10.1122 10.6796 10.3296C11.0386 10.5969 11.5746 10.8041 12.3162 11.0513C13.0448 11.2942 13.8877 11.5877 14.5375 12.075C15.2609 12.6176 15.75 13.4014 15.75 14.5C15.75 15.5844 15.2686 16.4098 14.4675 16.9105C14.0247 17.1872 13.5168 17.3452 13 17.4266V18.5H11V17.4266C10.4832 17.3452 9.9753 17.1872 9.5325 16.9105C8.73144 16.4098 8.25 15.5844 8.25 14.5C8.25 13.9477 8.69772 13.5 9.25 13.5C9.80228 13.5 10.25 13.9477 10.25 14.5C10.25 14.9156 10.3936 15.0902 10.5925 15.2145C10.8629 15.3835 11.3316 15.5 12 15.5C12.6684 15.5 13.1371 15.3835 13.4075 15.2145C13.6064 15.0902 13.75 14.9156 13.75 14.5C13.75 14.0986 13.6141 13.8824 13.3375 13.675C12.9873 13.4124 12.4552 13.2058 11.6838 12.9487C10.9786 12.7137 10.1396 12.4209 9.48525 11.9338C8.76397 11.3967 8.25 10.6114 8.25 9.5C8.25 8.41557 8.73144 7.59016 9.5325 7.0895Z\" fill=\"currentColor\"/></>,\n [\"compensation\",\"money\",\"pay\",\"salary\"],\n);\n\nexport const CompensationFillIcon = makeIcon(\n 'CompensationFillIcon',\n <><path d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H18.5C20.1569 2.5 21.5 3.84315 21.5 5.5V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V5.5ZM11.125 6.6813C10.5842 6.75544 10.0539 6.91103 9.59875 7.1955C8.83533 7.67264 8.375 8.45737 8.375 9.5C8.375 10.5663 8.86545 11.3164 9.5599 11.8335C10.1958 12.3069 11.0159 12.5943 11.7233 12.8301C12.492 13.0864 13.0436 13.2983 13.4125 13.575C13.717 13.8034 13.875 14.055 13.875 14.5C13.875 14.9574 13.7103 15.1726 13.4738 15.3205C13.1746 15.5075 12.6786 15.625 12 15.625C11.3214 15.625 10.8254 15.5075 10.5262 15.3205C10.2897 15.1726 10.125 14.9574 10.125 14.5C10.125 14.0168 9.73325 13.625 9.25 13.625C8.76675 13.625 8.375 14.0168 8.375 14.5C8.375 15.5426 8.83533 16.3274 9.59875 16.8045C10.0539 17.089 10.5842 17.2446 11.125 17.3187V18.625C11.125 19.1082 11.5168 19.5 12 19.5C12.4832 19.5 12.875 19.1082 12.875 18.625V17.3187C13.4158 17.2446 13.9461 17.089 14.4012 16.8045C15.1647 16.3274 15.625 15.5426 15.625 14.5C15.625 13.445 15.158 12.6966 14.4625 12.175C13.8314 11.7017 13.008 11.4137 12.2767 11.1699C11.5373 10.9235 10.9824 10.7109 10.605 10.4298C10.2862 10.1924 10.125 9.93374 10.125 9.5C10.125 9.04263 10.2897 8.82736 10.5262 8.6795C10.8254 8.49254 11.3214 8.375 12 8.375C12.6786 8.375 13.1746 8.49254 13.4738 8.6795C13.7103 8.82736 13.875 9.04263 13.875 9.5C13.875 9.98325 14.2668 10.375 14.75 10.375C15.2332 10.375 15.625 9.98325 15.625 9.5C15.625 8.45737 15.1647 7.67264 14.4012 7.1955C13.9461 6.91103 13.4158 6.75544 12.875 6.6813V5.375C12.875 4.89175 12.4832 4.5 12 4.5C11.5168 4.5 11.125 4.89175 11.125 5.375V6.6813Z\" fill=\"currentColor\"/></>,\n [\"compensation\",\"money\",\"pay\",\"salary\",\"filled\"],\n);\n\nexport const ComposeIcon = makeIcon(\n 'ComposeIcon',\n <><path d=\"M16.5858 2.99997C17.3668 2.21892 18.6332 2.21892 19.4142 2.99997L21 4.58576C21.781 5.36681 21.781 6.63314 21 7.41419L9.82842 18.5858C8.28263 20.1316 6.18608 21 4 21C3.44772 21 3 20.5523 3 20C3 17.8139 3.86842 15.7173 5.41421 14.1715L16.5858 2.99997ZM16.5858 8.99997L15 7.41418L6.82843 15.5858C5.91963 16.4946 5.31997 17.6547 5.09714 18.9028C6.34525 18.68 7.50541 18.0803 8.41421 17.1715L16.5858 8.99997ZM17.9999 7.58576L19.5857 5.99997L17.9999 4.41418L16.4141 5.99997L17.9999 7.58576Z\" fill=\"currentColor\"/></>,\n [\"compose\",\"edit\",\"write\",\"pencil\"],\n);\n\nexport const ComposeFillIcon = makeIcon(\n 'ComposeFillIcon',\n <><path d=\"M16.5858 2.99997C17.3668 2.21892 18.6332 2.21892 19.4142 2.99997L21 4.58576C21.781 5.3668 21.7811 6.63314 21 7.41419L19.4142 8.99999L15 4.58577L16.5858 2.99997ZM13.5858 5.99999L5.41421 14.1715C3.86842 15.7173 3 17.8139 3 20C3 20.5523 3.44772 21 4 21C6.18608 21 8.28263 20.1316 9.82842 18.5858L18 10.4142L13.5858 5.99999Z\" fill=\"currentColor\"/></>,\n [\"compose\",\"edit\",\"write\",\"pencil\",\"filled\"],\n);\n\nexport const DiscoverIcon = makeIcon(\n 'DiscoverIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15 9C18.3137 9 21 11.6863 21 15C21 16.2957 20.587 17.4938 19.8887 18.4746L21.1211 19.707C21.5116 20.0976 21.5116 20.7306 21.1211 21.1211C20.7306 21.5116 20.0976 21.5116 19.707 21.1211L18.4746 19.8887C17.4938 20.587 16.2957 21 15 21C11.6863 21 9 18.3137 9 15C9 11.6863 11.6863 9 15 9ZM15 11C12.7909 11 11 12.7909 11 15C11 17.2091 12.7909 19 15 19C15.0886 19 15.1765 18.9959 15.2637 18.9902C15.2738 18.9896 15.2839 18.989 15.2939 18.9883C15.3678 18.9829 15.441 18.9751 15.5137 18.9658C15.5306 18.9636 15.5476 18.9614 15.5645 18.959C15.7335 18.9351 15.899 18.9008 16.0605 18.8564C16.0681 18.8544 16.0755 18.8517 16.083 18.8496C16.1576 18.8287 16.231 18.8053 16.3037 18.7803C16.3134 18.7769 16.3233 18.7739 16.333 18.7705C16.4925 18.7141 16.6474 18.6486 16.7969 18.5732C16.8018 18.5708 16.8066 18.5679 16.8115 18.5654C17.7199 18.103 18.427 17.3046 18.7705 16.333C18.7739 16.3233 18.7769 16.3134 18.7803 16.3037C18.8621 16.0664 18.9229 15.8196 18.959 15.5645C18.9614 15.5476 18.9636 15.5306 18.9658 15.5137C18.9874 15.3454 19 15.1741 19 15C19 12.7909 17.2091 11 15 11Z\" fill=\"currentColor\"/><path d=\"M7.32324 12.75C7.13671 13.3875 7.0281 14.0574 7.00684 14.75H5V19H8.07324C8.49765 19.7334 9.03343 20.3938 9.66016 20.9561C9.59257 20.9701 9.52401 20.9822 9.4541 20.9893L9.25 21H5L4.7959 20.9893C3.85435 20.8938 3.1062 20.1457 3.01074 19.2041L3 19V14.75C3 13.7143 3.78722 12.863 4.7959 12.7607L5 12.75H7.32324Z\" fill=\"currentColor\"/><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9.4541 3.01074C10.4628 3.113 11.25 3.96435 11.25 5V7.93262C9.84059 8.68201 8.68307 9.84064 7.93359 11.25H5L4.7959 11.2393C3.85435 11.1438 3.1062 10.3957 3.01074 9.4541L3 9.25V5C3 3.96435 3.78722 3.113 4.7959 3.01074L5 3H9.25L9.4541 3.01074ZM5 9.25H9.25V5H5V9.25Z\" fill=\"currentColor\"/><path d=\"M19.2041 3.01074C20.2128 3.113 21 3.96435 21 5V9.25L20.9893 9.4541C20.9822 9.52401 20.9701 9.59257 20.9561 9.66016C20.3937 9.03331 19.7335 8.49671 19 8.07227V5H14.75V7.00586C14.0575 7.02712 13.3874 7.13577 12.75 7.32227V5C12.75 3.96435 13.5372 3.113 14.5459 3.01074L14.75 3H19L19.2041 3.01074Z\" fill=\"currentColor\"/></>,\n [\"discover\",\"icon\"],\n);\n\nexport const DiscoverFillIcon = makeIcon(\n 'DiscoverFillIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15 9C18.3137 9 21 11.6863 21 15C21 16.2957 20.587 17.4938 19.8887 18.4746L21.1211 19.707C21.5116 20.0976 21.5116 20.7306 21.1211 21.1211C20.7306 21.5116 20.0976 21.5116 19.707 21.1211L18.4746 19.8887C17.4938 20.587 16.2957 21 15 21C11.6863 21 9 18.3137 9 15C9 11.6863 11.6863 9 15 9ZM15 11C12.7909 11 11 12.7909 11 15C11 17.2091 12.7909 19 15 19C15.0886 19 15.1765 18.9959 15.2637 18.9902C15.2738 18.9896 15.2839 18.989 15.2939 18.9883C15.3678 18.9829 15.441 18.9751 15.5137 18.9658C15.5306 18.9636 15.5476 18.9614 15.5645 18.959C15.7335 18.9351 15.899 18.9008 16.0605 18.8564C16.0681 18.8544 16.0755 18.8517 16.083 18.8496C16.1576 18.8287 16.231 18.8053 16.3037 18.7803C16.3134 18.7769 16.3233 18.7739 16.333 18.7705C16.4925 18.7141 16.6474 18.6486 16.7969 18.5732C16.8018 18.5708 16.8066 18.5679 16.8115 18.5654C17.7199 18.103 18.427 17.3046 18.7705 16.333C18.7739 16.3233 18.7769 16.3134 18.7803 16.3037C18.8621 16.0664 18.9229 15.8196 18.959 15.5645C18.9614 15.5476 18.9636 15.5306 18.9658 15.5137C18.9874 15.3454 19 15.1741 19 15C19 12.7909 17.2091 11 15 11Z\" fill=\"currentColor\"/><path d=\"M7.32324 12.75C7.11434 13.4639 7 14.2185 7 15C7 17.3662 8.02824 19.4914 9.66113 20.9561C9.52834 20.9838 9.39104 21 9.25 21H5C3.89543 21 3 20.1046 3 19V14.75C3 13.6454 3.89543 12.75 5 12.75H7.32324Z\" fill=\"currentColor\"/><path d=\"M9.25 3C10.3546 3 11.25 3.89543 11.25 5V7.93262C9.8406 8.68201 8.68307 9.84064 7.93359 11.25H5C3.89543 11.25 3 10.3546 3 9.25V5C3 3.89543 3.89543 3 5 3H9.25Z\" fill=\"currentColor\"/><path d=\"M19 3C20.1046 3 21 3.89543 21 5V9.25C21 9.39104 20.9838 9.52834 20.9561 9.66113C19.4914 8.02824 17.3662 7 15 7C14.2186 7 13.4639 7.11341 12.75 7.32227V5C12.75 3.89543 13.6454 3 14.75 3H19Z\" fill=\"currentColor\"/></>,\n [\"discover\",\"fill\",\"icon\"],\n);\n\nexport const DocsIcon = makeIcon(\n 'DocsIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M5.50003 2.49988L15.5 2.49996V2.50152C16.1091 2.52316 16.6888 2.77461 17.1213 3.20711L20.7929 6.87868C21.2254 7.31117 21.4768 7.89086 21.4985 8.5H21.5V18.5002C21.5 20.1571 20.1568 21.5002 18.4999 21.5002L5.49994 21.4999C3.84311 21.4999 2.5 20.1567 2.5 18.4999V5.49988C2.5 3.84301 3.84316 2.49986 5.50003 2.49988ZM19.0858 9H16C15.4477 9 15 8.55228 15 8V4.91421C15 4.55065 15.4551 4.36928 15.7071 4.62132L19.3787 8.29289C19.6295 8.5437 19.4494 9 19.0858 9ZM13 4.50024C13 4.50024 13 6.88113 13 8C13 9.65685 14.3431 11 16 11C17.1189 11 19.5 11 19.5 11V18.5002C19.5 19.0525 19.0523 19.5002 18.5 19.5002L5.49999 19.5001C4.94771 19.5001 4.49999 19.0524 4.49999 18.5001V5.50024C4.49999 4.94796 4.94771 4.50024 5.5 4.50024H13Z\" fill=\"currentColor\"/></>,\n [\"docs\",\"icon\"],\n);\n\nexport const DocsFillIcon = makeIcon(\n 'DocsFillIcon',\n <><path d=\"M5.5 2.5C3.84315 2.5 2.5 3.84315 2.5 5.5V18.5C2.5 20.1569 3.84315 21.5 5.5 21.5H18.5C20.1569 21.5 21.5 20.1569 21.5 18.5V11H16C14.3431 11 13 9.65685 13 8V2.5H5.5Z\" fill=\"currentColor\"/><path d=\"M15 2.5V8C15 8.55228 15.4477 9 16 9H21.5V8.32843C21.5 7.79799 21.2893 7.28929 20.9142 6.91421L17.0858 3.08579C16.7107 2.71071 16.202 2.5 15.6716 2.5H15Z\" fill=\"currentColor\"/></>,\n [\"docs\",\"fill\",\"icon\"],\n);\n\nexport const DownloadIcon = makeIcon(\n 'DownloadIcon',\n <><path d=\"M7.29289 10.7071L11.2929 14.7071C11.6834 15.0976 12.3166 15.0976 12.7071 14.7071L16.7071 10.7071C17.0976 10.3166 17.0976 9.68342 16.7071 9.29289C16.3166 8.90237 15.6834 8.90237 15.2929 9.29289L13 11.5858V3.5C13 2.9477 12.5523 2.5 12 2.5C11.4477 2.5 11 2.9477 11 3.5V11.5858L8.70711 9.29289C8.31658 8.90237 7.68342 8.90237 7.29289 9.29289C6.90237 9.68342 6.90237 10.3166 7.29289 10.7071ZM5 12C5 11.4477 4.55228 11 4 11C3.44772 11 3 11.4477 3 12V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V12C21 11.4477 20.5523 11 20 11C19.4477 11 19 11.4477 19 12V19H5V12Z\" fill=\"currentColor\"/></>,\n [\"download\",\"save\",\"export\"],\n);\n\nexport const DownvoteIcon = makeIcon(\n 'DownvoteIcon',\n <><path d=\"M12.3377 20.1492C11.9669 21.2616 10.9165 22 9.75894 22C8.25535 22 7 20.7832 7 19.2566C7 18.5331 7.01693 17.8157 7.13627 17.0996L7.31954 16H5C3.34315 16 2 14.6569 2 13C2 10.2146 2.53472 7.47063 3.56864 4.88583C4.02423 3.74685 5.12735 3 6.35407 3H19C20.6569 3 22 4.34315 22 6V13C22 14.6569 20.6569 16 19 16H14.9684C13.8991 17.2831 12.8761 18.5338 12.3377 20.1492ZM15.5 14H19C19.5523 14 20 13.5523 20 13V6C20 5.44772 19.5523 5 19 5H15.5V14ZM13.5 5H6.35407C5.94516 5 5.57745 5.24895 5.42559 5.62861C4.48592 7.97784 4 10.4683 4 13C4 13.5523 4.44772 14 5 14H8.5C9.10858 14 9.58644 14.5641 9.48639 15.1644L9.10906 17.4284C9.00788 18.0355 9 18.6434 9 19.2566C9 19.6557 9.3368 20 9.75894 20C10.0706 20 10.3465 19.7983 10.4403 19.5168C11.0711 17.6246 12.2464 16.1423 13.5 14.6379V5Z\" fill=\"currentColor\"/></>,\n [\"downvote\",\"icon\"],\n);\n\nexport const DownvoteFillIcon = makeIcon(\n 'DownvoteFillIcon',\n <><path d=\"M19.9998 3H16.9999V16H19.9999C21.1045 16 21.9999 15.1045 21.9999 14L21.9998 4.99998C21.9998 3.89542 21.1043 3 19.9998 3ZM10.1623 22C11.3568 22 12.0103 21.1315 12.3512 20.1088C12.8929 18.4838 13.8747 17.2449 14.9999 16V3H6.35406C5.12735 3 4.02422 3.74685 3.56863 4.88583C2.53471 7.47062 2 10.2146 2 13C2 14.6569 3.34314 16 5 16H8.49987C8.49987 16 8 18.5361 8 19.8377C8 21.0319 8.96808 22 10.1623 22Z\" fill=\"currentColor\"/></>,\n [\"downvote\",\"fill\",\"icon\"],\n);\n\nexport const DuplicateIcon = makeIcon(\n 'DuplicateIcon',\n <><path d=\"M1.99951 15C1.9995 16.6568 3.34265 18 4.99951 18H14.9997C16.6565 18 17.9996 16.6569 17.9997 15.0001L17.9998 5.00006C17.9999 3.34318 16.6567 2 14.9998 2H4.99951C3.34267 2 1.99953 3.34313 1.99951 4.99997V15ZM4.99988 16C4.44759 16 3.99987 15.5523 3.99988 15L3.99985 5C3.99985 4.44772 4.44757 4 4.99985 4H14.9999C15.5522 4 15.9999 4.44772 15.9999 5.00001V15C15.9999 15.5523 15.5522 16 14.9999 16H4.99988ZM21.9999 8C21.9999 6.89543 21.1045 6 19.9999 6V15C19.9999 17.7614 17.7613 20 14.9999 20H5.99989C5.99989 21.1046 6.89532 22 7.99985 22H14.9999C18.8659 22 22 18.8659 21.9999 14.9999L21.9999 8Z\" fill=\"currentColor\"/></>,\n [\"duplicate\",\"copy\",\"clipboard\"],\n);\n\nexport const DuplicateFillIcon = makeIcon(\n 'DuplicateFillIcon',\n <><path d=\"M1.99951 15C1.9995 16.6568 3.34266 18 4.99953 18H14.9997C16.6566 18 17.9997 16.6569 17.9997 15.0001L17.9999 5.00006C17.9999 3.34318 16.6568 2 14.9999 2H4.99953C3.34268 2 1.99953 3.34313 1.99951 4.99997V15ZM22 8C22 6.89543 21.1046 6 20 6V15C20 17.7614 17.7614 20 15 20H5.99993C5.99993 21.1046 6.89537 22 7.99995 22H15C18.866 22 22 18.866 22 15V8Z\" fill=\"currentColor\"/></>,\n [\"duplicate\",\"copy\",\"clipboard\",\"filled\"],\n);\n\nexport const EllipsisHorizontalIcon = makeIcon(\n 'EllipsisHorizontalIcon',\n <><path d=\"M4 11C3.44772 11 3 11.4477 3 12C3 12.5523 3.44772 13 4 13C4.55228 13 5 12.5523 5 12C5 11.4477 4.55228 11 4 11ZM1 12C1 10.3431 2.34315 9 4 9C5.65685 9 7 10.3431 7 12C7 13.6569 5.65685 15 4 15C2.34315 15 1 13.6569 1 12ZM12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11ZM9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12ZM20 11C19.4477 11 19 11.4477 19 12C19 12.5523 19.4477 13 20 13C20.5523 13 21 12.5523 21 12C21 11.4477 20.5523 11 20 11ZM17 12C17 10.3431 18.3431 9 20 9C21.6569 9 23 10.3431 23 12C23 13.6569 21.6569 15 20 15C18.3431 15 17 13.6569 17 12Z\" fill=\"currentColor\"/></>,\n [\"more\",\"overflow\",\"ellipsis\",\"dots\"],\n);\n\nexport const EllipsisHorizontalFillIcon = makeIcon(\n 'EllipsisHorizontalFillIcon',\n <><path d=\"M1 12C1 10.3431 2.34315 9 4 9C5.65685 9 7 10.3431 7 12C7 13.6569 5.65685 15 4 15C2.34315 15 1 13.6569 1 12ZM9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12ZM17 12C17 10.3431 18.3431 9 20 9C21.6569 9 23 10.3431 23 12C23 13.6569 21.6569 15 20 15C18.3431 15 17 13.6569 17 12Z\" fill=\"currentColor\"/></>,\n [\"more\",\"overflow\",\"ellipsis\",\"dots\",\"filled\"],\n);\n\nexport const EmbedIcon = makeIcon(\n 'EmbedIcon',\n <><path d=\"M14.2747 4.03849C13.7437 3.88677 13.1902 4.19426 13.0385 4.72529L9.03848 18.7253C8.88675 19.2563 9.19424 19.8098 9.72528 19.9615C10.2563 20.1133 10.8098 19.8058 10.9615 19.2747L14.9615 5.27473C15.1132 4.7437 14.8058 4.19021 14.2747 4.03849ZM17.7929 7.79291C17.4024 8.18343 17.4024 8.8166 17.7929 9.20712L20.5858 12L17.7929 14.7929C17.4024 15.1834 17.4024 15.8166 17.7929 16.2071C18.1834 16.5976 18.8166 16.5976 19.2071 16.2071L22.7071 12.7071C23.0976 12.3166 23.0976 11.6834 22.7071 11.2929L19.2071 7.79291C18.8166 7.40238 18.1834 7.40238 17.7929 7.79291ZM6.20711 7.79291C5.81658 7.40238 5.18342 7.40238 4.79289 7.79291L1.29289 11.2929C0.90237 11.6834 0.90237 12.3166 1.29289 12.7071L4.79289 16.2071C5.18342 16.5976 5.81658 16.5976 6.20711 16.2071C6.59763 15.8166 6.59763 15.1834 6.20711 14.7929L3.41421 12L6.20711 9.20712C6.59763 8.8166 6.59763 8.18343 6.20711 7.79291Z\" fill=\"currentColor\"/></>,\n [\"embed\",\"code\",\"snippet\"],\n);\n\nexport const ExclamationCircleIcon = makeIcon(\n 'ExclamationCircleIcon',\n <><path d=\"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 6.5C12.5523 6.5 13 6.94772 13 7.5V12.75C13 13.3023 12.5523 13.75 12 13.75C11.4477 13.75 11 13.3023 11 12.75V7.5C11 6.94772 11.4477 6.5 12 6.5ZM13.25 16.25C13.25 16.9404 12.6904 17.5 12 17.5C11.3096 17.5 10.75 16.9404 10.75 16.25C10.75 15.5596 11.3096 15 12 15C12.6904 15 13.25 15.5596 13.25 16.25Z\" fill=\"currentColor\"/></>,\n [\"warning\",\"alert\",\"caution\",\"error\"],\n);\n\nexport const ExclamationCircleFillIcon = makeIcon(\n 'ExclamationCircleFillIcon',\n <><path d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM13.25 7.75C13.25 7.05964 12.6904 6.5 12 6.5C11.3096 6.5 10.75 7.05964 10.75 7.75V12.25C10.75 12.9404 11.3096 13.5 12 13.5C12.6904 13.5 13.25 12.9404 13.25 12.25V7.75ZM12 17.75C12.6904 17.75 13.25 17.1904 13.25 16.5C13.25 15.8096 12.6904 15.25 12 15.25C11.3096 15.25 10.75 15.8096 10.75 16.5C10.75 17.1904 11.3096 17.75 12 17.75Z\" fill=\"currentColor\"/></>,\n [\"warning\",\"alert\",\"caution\",\"error\",\"filled\"],\n);\n\nexport const ExtractIcon = makeIcon(\n 'ExtractIcon',\n <><path d=\"M7.62507 12C7.62507 11.4477 8.07279 11 8.62507 11H15.3751C15.9274 11 16.3751 11.4477 16.3751 12C16.3751 12.5523 15.9274 13 15.3751 13H8.62507C8.07279 13 7.62507 12.5523 7.62507 12ZM2.00014 12C2.00012 6.47719 6.47726 2 12.0001 2C17.5229 2 22.0001 6.47717 22.0001 12C22.0001 17.5228 17.5229 22 12.0001 22C6.47729 22 2.00016 17.5229 2.00014 12ZM12.0001 4C7.5818 4 4.00007 7.58172 4.00007 12C4.00007 16.4183 7.5818 20 12.0001 20C16.4184 20 20.0001 16.4183 20.0001 12C20.0001 7.58172 16.4184 4 12.0001 4Z\" fill=\"currentColor\"/></>,\n [\"extract\",\"icon\"],\n);\n\nexport const ExtractFillIcon = makeIcon(\n 'ExtractFillIcon',\n <><path d=\"M1.9999 11.9999C1.99994 6.47711 6.47719 2 12 2C17.5229 2 22.0001 6.47715 22.0001 12C22.0001 17.5228 17.5229 22 12 22C6.47713 22 1.99986 17.5228 1.9999 11.9999ZM8.5001 11C7.94782 11 7.5001 11.4477 7.5001 12C7.5001 12.5523 7.94782 13 8.5001 13H15.5001C16.0524 13 16.5001 12.5523 16.5001 12C16.5001 11.4477 16.0524 11 15.5001 11H8.5001Z\" fill=\"currentColor\"/></>,\n [\"extract\",\"fill\",\"icon\"],\n);\n\nexport const EyeIcon = makeIcon(\n 'EyeIcon',\n <><path d=\"M3.81697 10.4538C4.95209 8.58258 7.33427 6 11.9999 6C16.6655 6 19.0477 8.58258 20.1828 10.4538C20.7643 11.4123 20.7643 12.5877 20.1828 13.5462C19.0477 15.4174 16.6655 18 11.9999 18C7.33427 18 4.9521 15.4174 3.81697 13.5462C3.23549 12.5877 3.23549 11.4123 3.81697 10.4538ZM11.9999 4C6.41971 4 3.47685 7.15835 2.10701 9.41645C1.13881 11.0125 1.13881 12.9875 2.10701 14.5836C3.47685 16.8417 6.41971 20 11.9999 20C17.5801 20 20.523 16.8417 21.8928 14.5835C22.861 12.9875 22.861 11.0125 21.8928 9.41645C20.523 7.15835 17.5801 4 11.9999 4ZM9.9999 12C9.9999 10.8954 10.8953 10 11.9999 10C13.1045 10 13.9999 10.8954 13.9999 12C13.9999 13.1046 13.1045 14 11.9999 14C10.8953 14 9.9999 13.1046 9.9999 12ZM11.9999 8C9.79076 8 7.9999 9.79086 7.9999 12C7.9999 14.2091 9.79076 16 11.9999 16C14.209 16 15.9999 14.2091 15.9999 12C15.9999 9.79086 14.209 8 11.9999 8Z\" fill=\"currentColor\"/></>,\n [\"view\",\"eye\",\"see\",\"views\"],\n);\n\nexport const EyeFillIcon = makeIcon(\n 'EyeFillIcon',\n <><path d=\"M2.10701 9.41645C3.47685 7.15835 6.41971 4 11.9999 4C17.5801 4 20.523 7.15835 21.8928 9.41645C22.861 11.0125 22.861 12.9875 21.8928 14.5835C20.523 16.8417 17.5801 20 11.9999 20C6.41971 20 3.47685 16.8417 2.10701 14.5836C1.13881 12.9875 1.13881 11.0125 2.10701 9.41645ZM9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12ZM12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7Z\" fill=\"currentColor\"/></>,\n [\"view\",\"eye\",\"see\",\"views\",\"filled\"],\n);\n\nexport const EyeOffIcon = makeIcon(\n 'EyeOffIcon',\n <><path d=\"M3.29289 3.29289C3.68342 2.90237 4.31658 2.90237 4.70711 3.29289C8.24597 6.8313 11.7845 10.37 15.3231 13.9087C17.1177 15.7035 18.9124 17.4982 20.7071 19.2929C21.0976 19.6834 21.0976 20.3166 20.7071 20.7071C20.3166 21.0976 19.6834 21.0976 19.2929 20.7071L17.3864 18.8006C15.9496 19.5201 14.1751 20 11.9999 20C6.41971 20 3.47685 16.8417 2.10701 14.5836C1.13881 12.9875 1.13881 11.0125 2.10701 9.41645C2.70317 8.43371 3.59727 7.28046 4.87704 6.29125L3.29289 4.70711C2.90237 4.31658 2.90237 3.68342 3.29289 3.29289ZM12.2506 8.00773L15.9922 11.7493C15.8679 9.73986 14.26 8.13199 12.2506 8.00773ZM19.1723 14.9294C19.5857 14.4575 19.9182 13.9825 20.1828 13.5462C20.7643 12.5877 20.7643 11.4123 20.1828 10.4538C19.0477 8.58258 16.6655 6 11.9999 6C11.4174 6 10.8705 6.04025 10.3572 6.11435L8.66466 4.42179C9.65442 4.15536 10.7623 4 11.9999 4C17.5801 4 20.523 7.15835 21.8928 9.41645C22.861 11.0125 22.861 12.9875 21.8928 14.5835C21.5573 15.1365 21.1275 15.7435 20.5878 16.3449L19.1723 14.9294ZM6.30512 7.71936C5.13843 8.56472 4.34353 9.5858 3.81697 10.4538C3.23549 11.4123 3.23549 12.5877 3.81697 13.5462C4.9521 15.4174 7.33427 18 11.9999 18C13.5228 18 14.8025 17.7248 15.8749 17.2891L14.0319 15.4461C13.4364 15.7981 12.7417 16 11.9999 16C9.79076 16 7.9999 14.2091 7.9999 12C7.9999 11.2582 8.20185 10.5635 8.55376 9.968L6.30512 7.71936ZM10.0677 11.4819C10.0235 11.6471 9.9999 11.8208 9.9999 12C9.9999 13.1046 10.8953 14 11.9999 14C12.1791 14 12.3528 13.9764 12.518 13.9322L10.0677 11.4819Z\" fill=\"currentColor\"/></>,\n [\"invisible\",\"hide\",\"eye-off\"],\n);\n\nexport const EyeOffFillIcon = makeIcon(\n 'EyeOffFillIcon',\n <><path d=\"M3.29289 3.29289C3.68342 2.90237 4.31658 2.90237 4.70711 3.29289L20.7071 19.2929C21.0976 19.6834 21.0976 20.3166 20.7071 20.7071C20.3166 21.0976 19.6834 21.0976 19.2929 20.7071L17.3864 18.8006C15.9496 19.5201 14.1751 20 11.9999 20C6.41971 20 3.47685 16.8417 2.10701 14.5836C1.13881 12.9875 1.13881 11.0125 2.10701 9.41645C2.70317 8.43371 3.59727 7.28046 4.87704 6.29125L3.29289 4.70711C2.90237 4.31658 2.90237 3.68342 3.29289 3.29289ZM16.9503 12.7075C16.9831 12.4764 17 12.2402 17 12C17 9.23858 14.7614 7 12 7C11.7598 7 11.5236 7.01693 11.2925 7.04966L8.66466 4.42179C9.65442 4.15536 10.7623 4 11.9999 4C17.5801 4 20.523 7.15835 21.8928 9.41645C22.861 11.0125 22.861 12.9875 21.8928 14.5835C21.5573 15.1365 21.1275 15.7435 20.5878 16.3449L16.9503 12.7075ZM7.8284 9.24255C7.30488 10.0329 7 10.9808 7 11.9999C7 14.7613 9.23858 16.9999 12 16.9999C13.0191 16.9999 13.967 16.695 14.7574 16.1715L13.2934 14.7075C12.9018 14.8949 12.4631 14.9999 12 14.9999C10.3431 14.9999 9 13.6568 9 11.9999C9 11.5368 9.10495 11.0981 9.29237 10.7065L7.8284 9.24255Z\" fill=\"currentColor\"/></>,\n [\"invisible\",\"hide\",\"eye-off\",\"filled\"],\n);\n\nexport const FilterIcon = makeIcon(\n 'FilterIcon',\n <><path d=\"M16 4.875C15.3787 4.875 14.875 5.37868 14.875 6C14.875 6.62132 15.3787 7.125 16 7.125C16.6213 7.125 17.125 6.62132 17.125 6C17.125 5.37868 16.6213 4.875 16 4.875ZM13.2606 5.125C13.6308 3.96504 14.7173 3.125 16 3.125C17.2827 3.125 18.3692 3.96504 18.7394 5.125H20C20.4832 5.125 20.875 5.51675 20.875 6C20.875 6.48325 20.4832 6.875 20 6.875H18.7394C18.3692 8.03496 17.2827 8.875 16 8.875C14.7173 8.875 13.6308 8.03496 13.2606 6.875H4C3.51675 6.875 3.125 6.48325 3.125 6C3.125 5.51675 3.51675 5.125 4 5.125H13.2606ZM8 10.875C7.37868 10.875 6.875 11.3787 6.875 12C6.875 12.6213 7.37868 13.125 8 13.125C8.62132 13.125 9.125 12.6213 9.125 12C9.125 11.3787 8.62132 10.875 8 10.875ZM5.26058 11.125C5.63076 9.96504 6.71728 9.125 8 9.125C9.28272 9.125 10.3692 9.96504 10.7394 11.125H20C20.4832 11.125 20.875 11.5168 20.875 12C20.875 12.4832 20.4832 12.875 20 12.875H10.7394C10.3692 14.035 9.28272 14.875 8 14.875C6.71728 14.875 5.63076 14.035 5.26058 12.875H4C3.51675 12.875 3.125 12.4832 3.125 12C3.125 11.5168 3.51675 11.125 4 11.125H5.26058ZM16 16.875C15.3787 16.875 14.875 17.3787 14.875 18C14.875 18.6213 15.3787 19.125 16 19.125C16.6213 19.125 17.125 18.6213 17.125 18C17.125 17.3787 16.6213 16.875 16 16.875ZM13.2606 17.125C13.6308 15.965 14.7173 15.125 16 15.125C17.2827 15.125 18.3692 15.965 18.7394 17.125H20C20.4832 17.125 20.875 17.5168 20.875 18C20.875 18.4832 20.4832 18.875 20 18.875H18.7394C18.3692 20.035 17.2827 20.875 16 20.875C14.7173 20.875 13.6308 20.035 13.2606 18.875H4C3.51675 18.875 3.125 18.4832 3.125 18C3.125 17.5168 3.51675 17.125 4 17.125H13.2606Z\" fill=\"currentColor\"/></>,\n [\"filter\",\"icon\"],\n);\n\nexport const FilterFillIcon = makeIcon(\n 'FilterFillIcon',\n <><path d=\"M13.2606 5.125C13.6308 3.96504 14.7173 3.125 16 3.125C17.2827 3.125 18.3692 3.96504 18.7394 5.125H20C20.4832 5.125 20.875 5.51675 20.875 6C20.875 6.48325 20.4832 6.875 20 6.875H18.7394C18.3692 8.03496 17.2827 8.875 16 8.875C14.7173 8.875 13.6308 8.03496 13.2606 6.875H4C3.51675 6.875 3.125 6.48325 3.125 6C3.125 5.51675 3.51675 5.125 4 5.125H13.2606ZM5.26058 11.125C5.63076 9.96504 6.71728 9.125 8 9.125C9.28272 9.125 10.3692 9.96504 10.7394 11.125H20C20.4832 11.125 20.875 11.5168 20.875 12C20.875 12.4832 20.4832 12.875 20 12.875H10.7394C10.3692 14.035 9.28272 14.875 8 14.875C6.71728 14.875 5.63076 14.035 5.26058 12.875H4C3.51675 12.875 3.125 12.4832 3.125 12C3.125 11.5168 3.51675 11.125 4 11.125H5.26058ZM13.2606 17.125C13.6308 15.965 14.7173 15.125 16 15.125C17.2827 15.125 18.3692 15.965 18.7394 17.125H20C20.4832 17.125 20.875 17.5168 20.875 18C20.875 18.4832 20.4832 18.875 20 18.875H18.7394C18.3692 20.035 17.2827 20.875 16 20.875C14.7173 20.875 13.6308 20.035 13.2606 18.875H4C3.51675 18.875 3.125 18.4832 3.125 18C3.125 17.5168 3.51675 17.125 4 17.125H13.2606Z\" fill=\"currentColor\"/></>,\n [\"filter\",\"fill\",\"icon\"],\n);\n\nexport const FlagIcon = makeIcon(\n 'FlagIcon',\n <><path d=\"M4 1C4.55228 1 5 1.44772 5 2V3.5H11.5C12.8062 3.5 13.9175 4.33481 14.3293 5.5H19.5C20.6046 5.5 21.5 6.39543 21.5 7.5V15.5C21.5 16.6046 20.6046 17.5 19.5 17.5H15.5C14.1938 17.5 13.0825 16.6652 12.6707 15.5H5V22C5 22.5523 4.55228 23 4 23C3.44772 23 3 22.5523 3 22V2C3 1.44772 3.44772 1 4 1ZM14.5 7.5V14.5C14.5 15.0523 14.9477 15.5 15.5 15.5H19.5V7.5H14.5ZM5 5.5V13.5H12.5V6.5C12.5 5.94772 12.0523 5.5 11.5 5.5H5Z\" fill=\"currentColor\"/></>,\n [\"flag\",\"icon\"],\n);\n\nexport const FlagFillIcon = makeIcon(\n 'FlagFillIcon',\n <><path d=\"M5 2C5 1.44772 4.55228 1 4 1C3.44772 1 3 1.44772 3 2V22C3 22.5523 3.44772 23 4 23C4.55228 23 5 22.5523 5 22V15.5H11.6707C12.0825 16.6652 13.1938 17.5 14.5 17.5H19.5C20.6046 17.5 21.5 16.6046 21.5 15.5V7.5C21.5 6.39543 20.6046 5.5 19.5 5.5H14.3293C13.9175 4.33481 12.8062 3.5 11.5 3.5H5V2Z\" fill=\"currentColor\"/></>,\n [\"flag\",\"fill\",\"icon\"],\n);\n\nexport const GiftIcon = makeIcon(\n 'GiftIcon',\n <><path d=\"M7 22C5.34315 22 4 20.6569 4 19V13C2.89543 13 2 12.1046 2 11V8C2 6.89543 2.89543 6 4 6H7.2C7.03333 5.7 7 5.36667 7 5C7 3.35098 8.35098 2 10 2C10.7667 2 11.4333 2.3 12 2.8C12.5667 2.26667 13.2333 2 14 2C15.649 2 17 3.35098 17 5C17 5.36667 16.9333 5.66667 16.8 6H20C21.1046 6 22 6.89543 22 8V11C22 12.1046 21.1046 13 20 13V19C20 20.6569 18.6569 22 17 22H7ZM14 4C13.4425 4 13 4.44255 13 5C13 5.55745 13.4425 6 14 6C14.5575 6 15 5.55745 15 5C15 4.44255 14.5575 4 14 4ZM9 5C9 5.55745 9.44255 6 10 6C10.5575 6 11 5.55745 11 5C11 4.44255 10.5575 4 10 4C9.44255 4 9 4.44255 9 5ZM4 8V11H11V8H4ZM11 20V13H6V19C6 19.5523 6.44772 20 7 20H11ZM13 20H17C17.5523 20 18 19.5523 18 19V13H13V20ZM20 11V8H13V11H20Z\" fill=\"currentColor\"/></>,\n [\"gift\",\"icon\"],\n);\n\nexport const GiftFillIcon = makeIcon(\n 'GiftFillIcon',\n <><path d=\"M4 19C4 20.6569 5.34315 22 7 22H17C18.6569 22 20 20.6569 20 19V15H13V19C13 19.5523 12.5523 20 12 20C11.4477 20 11 19.5523 11 19V15H4V19ZM4 13H11V8H13V13H20C21.1046 13 22 12.1046 22 11V8C22 6.89543 21.1046 6 20 6H16.8C16.9333 5.66667 17 5.36667 17 5C17 3.35098 15.649 2 14 2C13.2333 2 12.5667 2.26667 12 2.8C11.4333 2.3 10.7667 2 10 2C8.35098 2 7 3.35098 7 5C7 5.36667 7.03333 5.7 7.2 6H4C2.89543 6 2 6.89543 2 8V11C2 12.1046 2.89543 13 4 13ZM13 5C13 4.44255 13.4425 4 14 4C14.5575 4 15 4.44255 15 5C15 5.55745 14.5575 6 14 6C13.4425 6 13 5.55745 13 5ZM10 6C9.44255 6 9 5.55745 9 5C9 4.44255 9.44255 4 10 4C10.5575 4 11 4.44255 11 5C11 5.55745 10.5575 6 10 6Z\" fill=\"currentColor\"/></>,\n [\"gift\",\"fill\",\"icon\"],\n);\n\nexport const GlobeIcon = makeIcon(\n 'GlobeIcon',\n <><path d=\"M12.0179 21.9999C17.5325 21.9902 21.9999 17.5169 21.9999 11.9999C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 11.9999C2 17.5169 6.46745 21.9902 11.9821 21.9999L12 22L12.0179 21.9999ZM11.6177 19.6738C10.8287 18.6725 10.5403 17.2251 10.3262 16H13.6738C13.4597 17.2251 13.1713 18.6725 12.3823 19.6738C12.0972 20.0354 11.9101 20.0447 11.6177 19.6738ZM9.24519 19.513C7.47692 18.8644 6.00128 17.6095 5.07024 16H8.29887C8.48753 17.1963 8.76505 18.3969 9.24519 19.513ZM12.3823 4.32624C13.1714 5.32751 13.4597 6.77493 13.6738 8H10.3262C10.5403 6.77493 10.8286 5.32751 11.6177 4.32624C11.8977 3.97092 12.0907 3.95618 12.3823 4.32624ZM8.29892 8H5.07025C6.00129 6.39052 7.47696 5.13549 9.24527 4.48694C8.76516 5.6031 8.48758 6.80366 8.29892 8ZM8.07165 14H4.25205C3.91609 12.6947 3.91604 11.3053 4.25203 10H8.07165C7.97751 11.2944 7.97751 12.7056 8.07165 14ZM15.9284 10H19.748C20.0839 11.3054 20.0839 12.6946 19.748 14H15.9284C16.0226 12.7056 16.0226 11.2944 15.9284 10ZM13.9228 14H10.0774C9.97265 12.6701 9.97265 11.3299 10.0774 10H13.9228C14.0275 11.3298 14.0275 12.6702 13.9228 14ZM14.7549 4.48694C16.5231 5.13551 17.9988 6.39051 18.9298 7.99998H15.7012C15.5126 6.80374 15.235 5.60299 14.7549 4.48694ZM15.7012 16H18.9298C17.9988 17.6094 16.5231 18.8644 14.7549 19.513C15.235 18.3969 15.5126 17.1963 15.7012 16Z\" fill=\"currentColor\"/></>,\n [\"globe\",\"icon\"],\n);\n\nexport const GlobeFillIcon = makeIcon(\n 'GlobeFillIcon',\n <><path d=\"M14.186 14.25H9.814C9.72736 12.7521 9.72736 11.2479 9.814 9.75H14.186C14.2726 11.2479 14.2726 12.7521 14.186 14.25ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM8.91956 4.99143C8.97634 4.73009 9.15692 4.51518 9.40997 4.42864C9.98673 4.2314 10.4967 4.78872 10.3696 5.38488C10.1878 6.23771 10.0384 7.20516 9.93263 8.25005H14.0675C13.9618 7.20514 13.8123 6.23767 13.6306 5.38483C13.5035 4.78871 14.0134 4.23141 14.5901 4.42864C14.8432 4.51517 15.0238 4.73008 15.0806 4.99141C15.2925 5.96665 15.4603 7.06542 15.5748 8.25005H18.5648C18.8748 8.25005 19.1615 8.41697 19.2895 8.69929C19.5205 9.20853 19.1197 9.75005 18.5606 9.75005H15.6885C15.7695 11.2071 15.7695 12.7929 15.6885 14.25H18.5606C19.1197 14.25 19.5205 14.7915 19.2895 15.3008C19.1615 15.5831 18.8748 15.75 18.5648 15.75H15.5748C15.4603 16.9346 15.2925 18.0334 15.0806 19.0086C15.0238 19.2699 14.8432 19.4848 14.5902 19.5714C14.0135 19.7686 13.5035 19.2113 13.6306 18.6152C13.8123 17.7623 13.9618 16.7949 14.0675 15.75H9.93263C10.0384 16.7949 10.1878 17.7623 10.3696 18.6151C10.4967 19.2113 9.98667 19.7687 9.40992 19.5714C9.1569 19.4848 8.97636 19.2699 8.91957 19.0086C8.70765 18.0334 8.5399 16.9346 8.42531 15.75H5.43534C5.12535 15.75 4.83862 15.5831 4.71058 15.3008C4.47963 14.7915 4.88031 14.25 5.43946 14.25H8.31168C8.2307 12.7929 8.2307 11.2071 8.31168 9.75005H5.43946C4.88031 9.75005 4.47963 9.20851 4.71058 8.69929C4.83862 8.41697 5.12534 8.25005 5.43534 8.25005H8.42531C8.53989 7.06543 8.70765 5.96667 8.91956 4.99143Z\" fill=\"currentColor\"/></>,\n [\"globe\",\"fill\",\"icon\"],\n);\n\nexport const HashTagIcon = makeIcon(\n 'HashTagIcon',\n <><path d=\"M10.7707 3.03736C11.3024 3.18689 11.6122 3.7391 11.4627 4.27076L10.4138 8.00001H15.7445L16.9104 3.73626C17.0561 3.20353 17.606 2.88975 18.1388 3.03542C18.6715 3.18109 18.9853 3.73104 18.8396 4.26377L17.818 8.00001H20.5C21.0523 8.00001 21.5 8.44773 21.5 9.00001C21.5 9.5523 21.0523 10 20.5 10H17.2711L16.1773 14H19C19.5523 14 20 14.4477 20 15C20 15.5523 19.5523 16 19 16H15.6305L14.4646 20.2638C14.3189 20.7965 13.769 21.1103 13.2362 20.9646C12.7035 20.8189 12.3897 20.269 12.5354 19.7363L13.557 16H8.1638L6.96265 20.2708C6.81312 20.8024 6.26091 21.1122 5.72925 20.9627C5.1976 20.8131 4.88782 20.2609 5.03735 19.7293L6.0862 16H3.5C2.94772 16 2.5 15.5523 2.5 15C2.5 14.4477 2.94772 14 3.5 14H6.6487L7.7737 10H5C4.44772 10 4 9.5523 4 9.00001C4 8.44773 4.44772 8.00001 5 8.00001H8.3362L9.53735 3.72927C9.68688 3.19761 10.2391 2.88783 10.7707 3.03736ZM9.8513 10L8.7263 14H14.1039L15.1977 10H9.8513Z\" fill=\"currentColor\"/></>,\n [\"hashtag\",\"tag\",\"channel\",\"topic\"],\n);\n\nexport const HeadphonesIcon = makeIcon(\n 'HeadphonesIcon',\n <><path d=\"M5 10.5C5 6.63401 8.13401 3.5 12 3.5C15.866 3.5 19 6.63401 19 10.5V11H16C14.3431 11 13 12.3431 13 14V16.5C13 18.1569 14.3431 19.5 16 19.5H19C19 20.0523 18.5523 21 18 21H13C12.4477 21 12 21.4477 12 22C12 22.5523 12.4477 23 13 23H18C19.6569 23 21 21.6569 21 20V10.5C21 5.52944 16.9706 1.5 12 1.5C7.02944 1.5 3 5.52944 3 10.5V16.5C3 18.1569 4.34315 19.5 6 19.5H8C9.65685 19.5 11 18.1569 11 16.5V14C11 12.3431 9.65685 11 8 11H5V10.5ZM16 13H19V17.5H16C15.4477 17.5 15 17.0523 15 16.5V14C15 13.4477 15.4477 13 16 13ZM5 16.5V13H8C8.55228 13 9 13.4477 9 14V16.5C9 17.0523 8.55228 17.5 8 17.5H6C5.44772 17.5 5 17.0523 5 16.5Z\" fill=\"currentColor\"/></>,\n [\"headphones\",\"icon\"],\n);\n\nexport const HeadphonesFillIcon = makeIcon(\n 'HeadphonesFillIcon',\n <><path d=\"M12 3.5C8.13401 3.5 5 6.63401 5 10.5V11H8C9.10457 11 10 11.8954 10 13V17C10 18.1046 9.10457 19 8 19H5C3.89543 19 3 18.1046 3 17V10.5C3 5.52944 7.02944 1.5 12 1.5C16.9706 1.5 21 5.52944 21 10.5V20C21 21.6569 19.6569 23 18 23H13C12.4477 23 12 22.5523 12 22C12 21.4477 12.4477 21 13 21H18C18.5523 21 19 20.5523 19 20V19H16C14.8954 19 14 18.1046 14 17V13C14 11.8954 14.8954 11 16 11H19V10.5C19 6.63401 15.866 3.5 12 3.5Z\" fill=\"currentColor\"/></>,\n [\"headphones\",\"fill\",\"icon\"],\n);\n\nexport const HeartIcon = makeIcon(\n 'HeartIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M17 2.5C20.3137 2.5 22.5 5.18629 22.5 8.5C22.5 13.8138 16.4975 17.0035 12.8301 21.0195C12.4178 21.4709 11.7056 21.4995 11.2559 21.1045L11.1699 21.0195C7.50249 17.0035 1.5 13.8138 1.5 8.5C1.5 5.18629 3.68629 2.5 7 2.5C9.5 2.5 11 3.5 12 5.5C13 3.5 14.5 2.5 17 2.5ZM17 4.5C16.0188 4.5 15.4062 4.69412 14.9854 4.95312C14.5668 5.21071 14.1677 5.63732 13.7891 6.39453C13.4503 7.0721 12.7575 7.5 12 7.5C11.2425 7.5 10.5497 7.0721 10.2109 6.39453C9.83233 5.63732 9.43315 5.21071 9.01465 4.95312C8.59376 4.69412 7.98122 4.5 7 4.5C5.01376 4.5 3.5 6.05394 3.5 8.5C3.5 10.3367 4.51688 11.9713 6.375 13.834C7.29556 14.7568 8.32645 15.6438 9.43066 16.6133C10.2812 17.3601 11.1709 18.1527 12 18.9922C12.8291 18.1527 13.7188 17.3601 14.5693 16.6133C15.6735 15.6438 16.7044 14.7568 17.625 13.834C19.4831 11.9713 20.5 10.3367 20.5 8.5C20.5 6.05394 18.9862 4.5 17 4.5Z\" fill=\"currentColor\"/></>,\n [\"heart\",\"like\",\"favorite\"],\n);\n\nexport const HeartFillIcon = makeIcon(\n 'HeartFillIcon',\n <><path d=\"M17 2.5C20.3137 2.5 22.5 5.18629 22.5 8.5C22.5 13.8138 16.4978 17.0037 12.8303 21.0197C12.3906 21.5013 11.6094 21.5013 11.1697 21.0197C7.50222 17.0037 1.5 13.8138 1.5 8.5C1.5 5.18629 3.68629 2.5 7 2.5C9.5 2.5 11 3.5 12 5.5C13 3.5 14.5 2.5 17 2.5Z\" fill=\"currentColor\"/></>,\n [\"heart\",\"like\",\"favorite\",\"filled\"],\n);\n\nexport const HomeIcon = makeIcon(\n 'HomeIcon',\n <><path d=\"M5 19.5H8.5V15.5C8.5 14.3954 9.39543 13.5 10.5 13.5H13.5C14.6046 13.5 15.5 14.3954 15.5 15.5V19.5H19V10.393C19 10.1011 18.8724 9.82372 18.6508 9.63374L12 3.93306L5.34921 9.63373C5.12756 9.82372 5 10.1011 5 10.393V19.5ZM5 21.5C3.89543 21.5 3 20.6046 3 19.5V10.3382C3 9.44784 3.39547 8.6035 4.07945 8.03352L10.7196 2.50003C11.4613 1.88196 12.5387 1.88195 13.2804 2.50003L19.9206 8.03352C20.6045 8.6035 21 9.44784 21 10.3382V19.5C21 20.6046 20.1046 21.5 19 21.5H15.5C14.3954 21.5 13.5 20.6046 13.5 19.5V15.5H10.5V19.5C10.5 20.6046 9.60457 21.5 8.5 21.5H5Z\" fill=\"currentColor\"/></>,\n [\"home\",\"house\"],\n);\n\nexport const HomeFillIcon = makeIcon(\n 'HomeFillIcon',\n <><path d=\"M4.5 21.5C3.67157 21.5 2.99999 20.8284 2.99999 20L2.99994 10.3381C2.99994 9.44778 3.39541 8.60344 4.07939 8.03346L10.7196 2.49997C11.4613 1.88189 12.5386 1.88189 13.2803 2.49997L19.9205 8.03346C20.6045 8.60344 20.9999 9.44778 20.9999 10.3381L21 20C21 20.8284 20.3284 21.5 19.5 21.5H15.5C14.6716 21.5 14 20.8284 14 20V16C14 15.4477 13.5523 15 13 15H11C10.4477 15 10 15.4477 10 16V20C10 20.8284 9.32843 21.5 8.5 21.5L4.5 21.5Z\" fill=\"currentColor\"/></>,\n [\"home\",\"house\",\"filled\"],\n);\n\nexport const ImageIcon = makeIcon(\n 'ImageIcon',\n <><path d=\"M2 6.5C2 4.84315 3.34315 3.5 5 3.5H19C20.6569 3.5 22 4.84315 22 6.5V17.5C22 19.1569 20.6569 20.5 19 20.5H5C3.34315 20.5 2 19.1569 2 17.5V6.5ZM19 5.5H5C4.44772 5.5 4 5.94772 4 6.5V11.5858L6.79289 8.79289C7.18342 8.40237 7.81658 8.40237 8.20711 8.79289L13.5 14.0858L15.2929 12.2929C15.6834 11.9024 16.3166 11.9024 16.7071 12.2929L20 15.5858V6.5C20 5.94771 19.5523 5.5 19 5.5ZM19.7487 18.1629L16 14.4142L14.2071 16.2071C13.8166 16.5976 13.1834 16.5976 12.7929 16.2071L7.5 10.9142L4 14.4142V17.5C4 18.0523 4.44772 18.5 5 18.5H19C19.298 18.5 19.5655 18.3697 19.7487 18.1629Z\" fill=\"currentColor\"/></>,\n [\"picture\",\"image\",\"gallery\"],\n);\n\nexport const ImageFillIcon = makeIcon(\n 'ImageFillIcon',\n <><path d=\"M2 6.5C2 4.84315 3.34315 3.5 5 3.5H19C20.6569 3.5 22 4.84315 22 6.5V17.0858L16.7071 11.7929C16.3166 11.4024 15.6834 11.4024 15.2929 11.7929L13.5 13.5858L8.20711 8.29289C7.81658 7.90237 7.18342 7.90237 6.79289 8.29289L2 13.0858V6.5ZM2 15.9142V17.5C2 19.1569 3.34315 20.5 5 20.5H19C19.9778 20.5 20.8463 20.0322 21.394 19.3082L16 13.9142L14.2071 15.7071C13.8166 16.0976 13.1834 16.0976 12.7929 15.7071L7.5 10.4142L2 15.9142Z\" fill=\"currentColor\"/></>,\n [\"picture\",\"image\",\"gallery\",\"filled\"],\n);\n\nexport const InfoIcon = makeIcon(\n 'InfoIcon',\n <><path d=\"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 11.25C12.5523 11.25 13 11.6977 13 12.25V16.5C13 17.0523 12.5523 17.5 12 17.5C11.4477 17.5 11 17.0523 11 16.5V12.25C11 11.6977 11.4477 11.25 12 11.25ZM13.5 8.5C13.5 9.32843 12.8284 10 12 10C11.1716 10 10.5 9.32843 10.5 8.5C10.5 7.67157 11.1716 7 12 7C12.8284 7 13.5 7.67157 13.5 8.5Z\" fill=\"currentColor\"/></>,\n [\"info\",\"information\",\"help\",\"about\"],\n);\n\nexport const InfoFillIcon = makeIcon(\n 'InfoFillIcon',\n <><path d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 9.5C12.8284 9.5 13.5 8.82843 13.5 8C13.5 7.17157 12.8284 6.5 12 6.5C11.1716 6.5 10.5 7.17157 10.5 8C10.5 8.82843 11.1716 9.5 12 9.5ZM13 12.25C13 11.6977 12.5523 11.25 12 11.25C11.4477 11.25 11 11.6977 11 12.25V16.5C11 17.0523 11.4477 17.5 12 17.5C12.5523 17.5 13 17.0523 13 16.5V12.25Z\" fill=\"currentColor\"/></>,\n [\"info\",\"information\",\"help\",\"about\",\"filled\"],\n);\n\nexport const InvitationIcon = makeIcon(\n 'InvitationIcon',\n <><path d=\"M13.2184 2.44716C12.4427 2.10241 11.5573 2.10241 10.7816 2.44716L3.78158 5.55827C2.6982 6.03978 2 7.11414 2 8.29971V18C2 19.6568 3.34315 21 5 21H19C20.6569 21 22 19.6568 22 18V8.29971C22 7.11414 21.3018 6.03978 20.2184 5.55827L13.2184 2.44716ZM11.5939 4.27479C11.8524 4.15987 12.1476 4.15987 12.4061 4.27479L19.4061 7.3859C19.7673 7.5464 20 7.90452 20 8.29971V9.35009L18 10.239V8.49996C18 7.94768 17.5523 7.49996 17 7.49996H7C6.44772 7.49996 6 7.94768 6 8.49996V10.239L4 9.35009V8.29971C4 7.90452 4.23273 7.5464 4.59386 7.3859L11.5939 4.27479ZM16 9.49996V11.1279L12.4061 12.7251C12.1476 12.8401 11.8524 12.8401 11.5939 12.7251L8 11.1279V9.49996H16ZM4 18V11.5387L10.7816 14.5528C11.5573 14.8975 12.4427 14.8975 13.2184 14.5528L20 11.5387V18C20 18.5522 19.5523 19 19 19H5C4.44772 19 4 18.5522 4 18Z\" fill=\"currentColor\"/></>,\n [\"invitation\",\"icon\"],\n);\n\nexport const InvitationFillIcon = makeIcon(\n 'InvitationFillIcon',\n <><path d=\"M10.7816 2.44716C11.5573 2.10241 12.4427 2.10241 13.2184 2.44716L20.2184 5.55827C21.3018 6.03978 22 7.11414 22 8.29971V8.35619L18.0002 10.1743V7.5C18.0002 6.94772 17.5525 6.5 17.0002 6.5H7.00023C6.44794 6.5 6.00023 6.94772 6.00023 7.5V10.1743L2 8.35598V8.29971C2 7.11414 2.6982 6.03978 3.78158 5.55827L10.7816 2.44716ZM2 10.5529V18C2 19.6568 3.34315 21 5 21H19C20.6569 21 22 19.6568 22 18V10.5531L13.2416 14.5342C12.4529 14.8927 11.5476 14.8927 10.7588 14.5342L2 10.5529Z\" fill=\"currentColor\"/></>,\n [\"invitation\",\"fill\",\"icon\"],\n);\n\nexport const LinkIcon = makeIcon(\n 'LinkIcon',\n <><path d=\"M16.3431 2C14.8429 2 13.404 2.59599 12.3431 3.65685L9.41421 6.58579C9.02369 6.97631 9.02369 7.60948 9.41421 8C9.80474 8.39052 10.4379 8.39052 10.8284 8L13.7574 5.07107C14.4432 4.38527 15.3733 4 16.3431 4C18.3628 4 20 5.63723 20 7.65685C20 8.62671 19.6147 9.55685 18.9289 10.2426L16 13.1716C15.6095 13.5621 15.6095 14.1953 16 14.5858C16.3905 14.9763 17.0237 14.9763 17.4142 14.5858L20.3431 11.6569C21.404 10.596 22 9.15715 22 7.65685C22 4.53266 19.4673 2 16.3431 2ZM14.5858 17.4142C14.9763 17.0237 14.9763 16.3905 14.5858 16C14.1953 15.6095 13.5621 15.6095 13.1716 16L10.2426 18.9289C9.55685 19.6147 8.62671 20 7.65685 20C5.63723 20 4 18.3628 4 16.3431C4 15.3733 4.38527 14.4432 5.07107 13.7574L8 10.8284C8.39052 10.4379 8.39052 9.80474 8 9.41421C7.60948 9.02369 6.97631 9.02369 6.58579 9.41421L3.65685 12.3431C2.59599 13.404 2 14.8429 2 16.3431C2 19.4673 4.53266 22 7.65685 22C9.15715 22 10.596 21.404 11.6569 20.3431L14.5858 17.4142ZM15.7071 8.29289C16.0976 8.68342 16.0976 9.31658 15.7071 9.70711L9.70711 15.7071C9.31658 16.0976 8.68342 16.0976 8.29289 15.7071C7.90237 15.3166 7.90237 14.6834 8.29289 14.2929L14.2929 8.29289C14.6834 7.90237 15.3166 7.90237 15.7071 8.29289Z\" fill=\"currentColor\"/></>,\n [\"link\",\"url\",\"attach\",\"external\"],\n);\n\nexport const LocationIcon = makeIcon(\n 'LocationIcon',\n <><path d=\"M12 13.5C13.3807 13.5 14.5 12.3807 14.5 11C14.5 9.61929 13.3807 8.5 12 8.5C10.6193 8.5 9.5 9.61929 9.5 11C9.5 12.3807 10.6193 13.5 12 13.5ZM12 2C7.07886 2 2.99995 5.9894 3 10.9105C3.00003 13.48 4.10921 15.9243 6.04289 17.6163L11.3415 22.2526C11.7186 22.5825 12.2815 22.5825 12.6585 22.2526L17.9571 17.6163C19.8909 15.9243 21.0001 13.4799 21 10.9104C21 5.98929 16.9211 2 12 2ZM5 10.9105C4.99996 7.09396 8.18344 4 12 4C15.8165 4 19 7.09387 19 10.9104C19.0001 12.9032 18.1398 14.7989 16.6401 16.1112L12 20.1712L7.3599 16.1111C5.86024 14.7989 5.00002 12.9032 5 10.9105Z\" fill=\"currentColor\"/></>,\n [\"location\",\"icon\"],\n);\n\nexport const LocationFillIcon = makeIcon(\n 'LocationFillIcon',\n <><path d=\"M12 2C7.07886 2 2.99995 5.9894 3 10.9105C3.00003 13.48 4.10921 15.9243 6.04289 17.6163L11.3415 22.2526C11.7186 22.5825 12.2815 22.5825 12.6585 22.2526L17.9571 17.6163C19.8909 15.9243 21.0001 13.4799 21 10.9104C21 5.98929 16.9211 2 12 2ZM14.5 11C14.5 12.3807 13.3807 13.5 12 13.5C10.6193 13.5 9.5 12.3807 9.5 11C9.5 9.61929 10.6193 8.5 12 8.5C13.3807 8.5 14.5 9.61929 14.5 11Z\" fill=\"currentColor\"/></>,\n [\"location\",\"fill\",\"icon\"],\n);\n\nexport const LockIcon = makeIcon(\n 'LockIcon',\n <><path d=\"M6.00022 22C4.34339 22 3.00025 20.6569 3.00022 19L3.00012 11C3.0001 9.34317 4.34325 8 6.00012 8L6.99984 8V6C6.99984 3.23858 9.23842 1 11.9998 1C14.7613 0.999999 16.9998 3.23858 16.9998 6V8L18.0003 8C19.6571 8 21.0003 9.34315 21.0003 11V19C21.0003 20.6569 19.6571 22 18.0003 22H6.00022ZM4.99984 19C4.99984 19.5523 5.44756 20 5.99984 20H17.9998C18.5521 20 18.9998 19.5523 18.9998 19V11C18.9998 10.4477 18.5521 10 17.9998 10H5.99984C5.44756 10 4.99984 10.4477 4.99984 11V19ZM8.99984 8H14.9998V6C14.9998 4.34315 13.6567 3 11.9998 3C10.343 3 8.99984 4.34315 8.99984 6V8ZM9.99984 15C9.99984 16.1046 10.8953 17 11.9998 17C13.1044 17 13.9998 16.1046 13.9998 15C13.9998 13.8954 13.1044 13 11.9998 13C10.8953 13 9.99984 13.8954 9.99984 15Z\" fill=\"currentColor\"/></>,\n [\"locked\",\"lock\",\"private\",\"secure\"],\n);\n\nexport const LockFillIcon = makeIcon(\n 'LockFillIcon',\n <><path d=\"M6 22C4.34315 22 3 20.6568 3 19V11C3 9.34314 4.34315 7.99999 6 7.99999H7V6.00003C7 3.2386 9.23858 1.00003 12 1.00003C14.7614 1.00003 17 3.23861 17 6.00003V7.99999H18C19.6569 7.99999 21 9.34314 21 11V19C21 20.6568 19.6569 22 18 22H6ZM10 15C10 16.1046 10.8954 17 12 17C13.1046 17 14 16.1046 14 15C14 13.8955 13.1046 13 12 13C10.8954 13 10 13.8955 10 15ZM9.5 7.99999H14.5V5.99999C14.5 4.61928 13.3807 3.49999 12 3.49999C10.6193 3.49999 9.5 4.61928 9.5 5.99999V7.99999Z\" fill=\"currentColor\"/></>,\n [\"locked\",\"lock\",\"private\",\"secure\",\"filled\"],\n);\n\nexport const LoginIcon = makeIcon(\n 'LoginIcon',\n <><path d=\"M10.5 20C10.5 19.4477 10.9477 19 11.5 19H18.5V5H11.5C10.9477 5 10.5 4.5523 10.5 4C10.5 3.4477 10.9477 3 11.5 3H18.5C19.6046 3 20.5 3.8954 20.5 5V19C20.5 20.1046 19.6046 21 18.5 21H11.5C10.9477 21 10.5 20.5523 10.5 20Z\" fill=\"currentColor\"/><path d=\"M13.7071 12.7071C13.8946 12.5196 14 12.2652 14 12C14 11.7348 13.8946 11.4804 13.7071 11.2929L9.7071 7.29289C9.3166 6.90237 8.6834 6.90237 8.2929 7.29289C7.9024 7.68342 7.9024 8.31658 8.2929 8.70711L10.5858 11H4C3.4477 11 3 11.4477 3 12C3 12.5523 3.4477 13 4 13H10.5858L8.2929 15.2929C7.9024 15.6834 7.9024 16.3166 8.2929 16.7071C8.6834 17.0976 9.3166 17.0976 9.7071 16.7071L13.7071 12.7071Z\" fill=\"currentColor\"/></>,\n [\"login\",\"signin\",\"enter\"],\n);\n\nexport const LogoutIcon = makeIcon(\n 'LogoutIcon',\n <><path d=\"M21.5 12C21.5 12.2652 21.3946 12.5196 21.2071 12.7071L17.2071 16.7071C16.8166 17.0976 16.1834 17.0976 15.7929 16.7071C15.4024 16.3166 15.4024 15.6834 15.7929 15.2929L18.0858 13H11.5C10.9477 13 10.5 12.5523 10.5 12C10.5 11.4477 10.9477 11 11.5 11H18.0858L15.7929 8.70711C15.4024 8.31658 15.4024 7.68342 15.7929 7.29289C16.1834 6.90237 16.8166 6.90237 17.2071 7.29289L21.2071 11.2929C21.3946 11.4804 21.5 11.7348 21.5 12ZM13.5 4C13.5 4.55228 13.0523 5 12.5 5H5.5V19H12.5C13.0523 19 13.5 19.4477 13.5 20C13.5 20.5523 13.0523 21 12.5 21H5.5C4.39543 21 3.5 20.1046 3.5 19V5C3.5 3.89543 4.39543 3 5.5 3H12.5C13.0523 3 13.5 3.44771 13.5 4Z\" fill=\"currentColor\"/></>,\n [\"logout\",\"signout\",\"exit\"],\n);\n\nexport const MaleFillIcon = makeIcon(\n 'MaleFillIcon',\n <><path d=\"M14 2C13.4477 2 13 2.44772 13 3C13 3.55228 13.4477 4 14 4H18.5858L14.9056 7.68014C13.551 6.62708 11.8487 6 10 6C5.58172 6 2 9.58172 2 14C2 18.4183 5.58172 22 10 22C14.4183 22 18 18.4183 18 14C18 12.1513 17.3729 10.449 16.3199 9.09436L20 5.41421V10C20 10.5523 20.4477 11 21 11C21.5523 11 22 10.5523 22 10V3C22 2.44772 21.5523 2 21 2H14ZM16 14C16 17.3137 13.3137 20 10 20C6.68629 20 4 17.3137 4 14C4 10.6863 6.68629 8 10 8C13.3137 8 16 10.6863 16 14Z\" fill=\"currentColor\"/></>,\n [\"male\",\"fill\",\"icon\"],\n);\n\nexport const MegaphoneIcon = makeIcon(\n 'MegaphoneIcon',\n <><path d=\"M20.7072 2.29289C21.0978 2.68342 21.0978 3.31658 20.7072 3.70711L18.4572 5.95711C18.0667 6.34763 17.4335 6.34763 17.043 5.95711C16.6525 5.56658 16.6525 4.93342 17.043 4.54289L19.293 2.29289C19.6835 1.90237 20.3167 1.90237 20.7072 2.29289ZM15.5821 5.23525C15.0968 3.46738 13.0503 2.66035 11.4889 3.62117L1.67495 9.66054C0.596239 10.3244 0.0506543 11.5941 0.311597 12.8336L0.68729 14.618C0.953534 15.8827 1.99358 16.8199 3.24913 16.9768L3.97915 19.4102C4.44029 20.9473 5.8551 22 7.45992 22C9.89421 22 11.6402 19.6534 10.9407 17.3217L10.8442 17H15.205C17.0202 17 18.3374 15.2724 17.8569 13.522L15.5821 5.23525ZM12.5371 5.32448C12.9629 5.06244 13.5211 5.28254 13.6534 5.76469L15.9283 14.0515C16.0593 14.5288 15.7001 15 15.205 15H3.62293C3.15005 15 2.74181 14.6688 2.64439 14.206L2.26869 12.4215C2.18171 12.0084 2.36357 11.5851 2.72314 11.3639L12.5371 5.32448ZM18.53 11.7575C18.6639 11.2217 19.2069 10.8959 19.7427 11.0299L22.7427 11.7799C23.2785 11.9138 23.6042 12.4567 23.4703 12.9925C23.3363 13.5283 22.7934 13.8541 22.2576 13.7201L19.2576 12.9701C18.7218 12.8362 18.396 12.2933 18.53 11.7575ZM22.8061 8.45203C23.3319 8.28302 23.6212 7.71978 23.4522 7.19399C23.2831 6.6682 22.7199 6.37897 22.1941 6.54797L18.6941 7.67297C18.1683 7.84198 17.8791 8.40522 18.0481 8.93101C18.2171 9.4568 18.7803 9.74603 19.3061 9.57703L22.8061 8.45203ZM5.34424 17H8.75618L9.02512 17.8964C9.33964 18.9449 8.55458 20 7.46001 20C6.73841 20 6.10225 19.5267 5.8949 18.8355L5.34424 17Z\" fill=\"currentColor\"/></>,\n [\"megaphone\",\"icon\"],\n);\n\nexport const MegaphoneFillIcon = makeIcon(\n 'MegaphoneFillIcon',\n <><path d=\"M20.7071 3.70711C21.0976 3.31658 21.0976 2.68342 20.7071 2.29289C20.3166 1.90237 19.6834 1.90237 19.2929 2.29289L17.0429 4.54289C16.6524 4.93342 16.6524 5.56658 17.0429 5.95711C17.4334 6.34763 18.0666 6.34763 18.4571 5.95711L20.7071 3.70711ZM15.4054 4.59242C15.0083 3.14598 13.3339 2.48569 12.0564 3.27181L1.37496 9.84501C0.476032 10.3982 0.0213793 11.4563 0.23883 12.4892L0.770609 15.0151C1.01417 16.1719 2.03477 17 3.21698 17H3.25597L3.97903 19.4102C4.44017 20.9473 5.85498 22 7.45979 22C9.89409 22 11.64 19.6534 10.9406 17.3217L10.844 17H15.8605C17.3457 17 18.4234 15.5866 18.0303 14.1544L15.4054 4.59242ZM5.89468 18.8355L5.34404 17H8.75597L9.0249 17.8964C9.33943 18.9449 8.55436 20 7.45979 20C6.7382 20 6.10203 19.5267 5.89468 18.8355ZM19.7425 11.0299C19.2067 10.8959 18.6638 11.2217 18.5299 11.7575C18.3959 12.2933 18.7217 12.8362 19.2575 12.9701L22.2575 13.7201C22.7933 13.8541 23.3362 13.5283 23.4701 12.9925C23.6041 12.4567 23.2783 11.9138 22.7425 11.7799L19.7425 11.0299ZM23.452 7.19399C23.621 7.71978 23.3318 8.28302 22.806 8.45203L19.306 9.57703C18.7802 9.74603 18.217 9.4568 18.048 8.93101C17.879 8.40522 18.1682 7.84198 18.694 7.67297L22.194 6.54797C22.7198 6.37897 23.283 6.6682 23.452 7.19399Z\" fill=\"currentColor\"/></>,\n [\"megaphone\",\"fill\",\"icon\"],\n);\n\nexport const MentionIcon = makeIcon(\n 'MentionIcon',\n <><path d=\"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C12.9368 20 13.834 19.8394 14.6668 19.545C15.1875 19.361 15.7588 19.6339 15.9428 20.1546C16.1269 20.6754 15.854 21.2467 15.3332 21.4307C14.2894 21.7997 13.167 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 12.8359 21.8972 13.6491 21.7031 14.4273C21.2745 16.1457 19.6348 17 18.1268 17C16.6968 17 15.4366 16.2727 14.6962 15.1677C13.8807 15.9904 12.7499 16.5 11.5 16.5C9.01472 16.5 7 14.4853 7 12C7 9.51472 9.01472 7.5 11.5 7.5C12.4251 7.5 13.285 7.77914 14 8.25777V8C14 7.44772 14.4477 7 15 7C15.5523 7 16 7.44772 16 8V12.8732C16 14.0478 16.9522 15 18.1268 15C18.9928 15 19.6166 14.5284 19.7626 13.9432C19.9175 13.3222 20 12.6714 20 12C20 7.58172 16.4183 4 12 4ZM14 12C14 10.6193 12.8807 9.5 11.5 9.5C10.1193 9.5 9 10.6193 9 12C9 13.3807 10.1193 14.5 11.5 14.5C12.8807 14.5 14 13.3807 14 12Z\" fill=\"currentColor\"/></>,\n [\"mention\",\"icon\"],\n);\n\nexport const MenuIcon = makeIcon(\n 'MenuIcon',\n <><path d=\"M4 6C4 5.44772 4.44772 5 5 5H19C19.5523 5 20 5.44772 20 6C20 6.55228 19.5523 7 19 7H5C4.44772 7 4 6.55228 4 6Z\" fill=\"currentColor\"/><path d=\"M4 12C4 11.4477 4.44772 11 5 11H19C19.5523 11 20 11.4477 20 12C20 12.5523 19.5523 13 19 13H5C4.44772 13 4 12.5523 4 12Z\" fill=\"currentColor\"/><path d=\"M4 18C4 17.4477 4.44772 17 5 17H19C19.5523 17 20 17.4477 20 18C20 18.5523 19.5523 19 19 19H5C4.44772 19 4 18.5523 4 18Z\" fill=\"currentColor\"/></>,\n [\"menu\",\"hamburger\",\"navigation\"],\n);\n\nexport const MicrophoneIcon = makeIcon(\n 'MicrophoneIcon',\n <><path d=\"M12 2C9.23858 2 7 4.23858 7 7V11C7 13.7614 9.23858 16 12 16C14.7614 16 17 13.7614 17 11V7C17 4.23858 14.7614 2 12 2ZM9 7C9 5.34315 10.3431 4 12 4C13.6569 4 15 5.34315 15 7V11C15 12.6569 13.6569 14 12 14C10.3431 14 9 12.6569 9 11V7ZM5 10.5C5 9.94772 4.55228 9.5 4 9.5C3.44772 9.5 3 9.94772 3 10.5V11C3 15.6326 6.50005 19.4476 11 19.9451V22C11 22.5523 11.4477 23 12 23C12.5523 23 13 22.5523 13 22V19.9451C17.5 19.4476 21 15.6326 21 11V10.5C21 9.94772 20.5523 9.5 20 9.5C19.4477 9.5 19 9.94772 19 10.5V11C19 14.866 15.866 18 12 18C8.13401 18 5 14.866 5 11V10.5Z\" fill=\"currentColor\"/></>,\n [\"microphone\",\"icon\"],\n);\n\nexport const MicrophoneFillIcon = makeIcon(\n 'MicrophoneFillIcon',\n <><path d=\"M7 7C7 4.23858 9.23858 2 12 2C14.7614 2 17 4.23858 17 7V11C17 13.7614 14.7614 16 12 16C9.23858 16 7 13.7614 7 11V7ZM5 10.5C5 9.94772 4.55228 9.5 4 9.5C3.44772 9.5 3 9.94772 3 10.5V11C3 15.6326 6.50005 19.4476 11 19.9451V22C11 22.5523 11.4477 23 12 23C12.5523 23 13 22.5523 13 22V19.9451C17.5 19.4476 21 15.6326 21 11V10.5C21 9.94772 20.5523 9.5 20 9.5C19.4477 9.5 19 9.94772 19 10.5V11C19 14.866 15.866 18 12 18C8.13401 18 5 14.866 5 11V10.5Z\" fill=\"currentColor\"/></>,\n [\"microphone\",\"fill\",\"icon\"],\n);\n\nexport const MixedboxIcon = makeIcon(\n 'MixedboxIcon',\n <><path d=\"M7.625 12C7.625 11.4477 8.07272 11 8.625 11H15.375C15.9273 11 16.375 11.4477 16.375 12C16.375 12.5523 15.9273 13 15.375 13H8.625C8.07272 13 7.625 12.5523 7.625 12ZM3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"mixedbox\",\"icon\"],\n);\n\nexport const MixedboxFillIcon = makeIcon(\n 'MixedboxFillIcon',\n <><path d=\"M3 6C3 4.5 4.5 3 6 3H18C19.5 3 21 4.5 21 6V18C21 19.5 19.5 21 18 21H6C4.5 21 3 19.5 3 18V6ZM8.5 11C7.94772 11 7.5 11.4477 7.5 12C7.5 12.5523 7.94772 13 8.5 13H15.5C16.0523 13 16.5 12.5523 16.5 12C16.5 11.4477 16.0523 11 15.5 11H8.5Z\" fill=\"currentColor\"/></>,\n [\"mixedbox\",\"fill\",\"icon\"],\n);\n\nexport const MoonIcon = makeIcon(\n 'MoonIcon',\n <><path d=\"M12.8519 2.03584C17.9765 2.46873 22.0001 6.76397 22.0001 12.0001C22.0001 17.5229 17.5229 22.0001 12.0001 22.0001C6.76397 22.0001 2.46873 17.9765 2.03584 12.8519C1.96617 12.0272 2.91832 11.4747 3.59979 11.9444C4.56592 12.6103 5.73594 13.0001 7.00001 13.0001C10.3138 13.0001 13.0001 10.3138 13.0001 7.00001C13.0001 5.73594 12.6103 4.56592 11.9444 3.59979C11.4747 2.91832 12.0272 1.96617 12.8519 2.03584ZM14.5758 4.42351C14.8509 5.23239 15.0001 6.09921 15.0001 7.00001C15.0001 11.4183 11.4183 15.0001 7.00001 15.0001C6.09921 15.0001 5.23239 14.8509 4.42351 14.5758C5.49552 17.7301 8.48305 20.0001 12.0001 20.0001C16.4183 20.0001 20.0001 16.4183 20.0001 12.0001C20.0001 8.48305 17.7301 5.49552 14.5758 4.42351Z\" fill=\"currentColor\"/></>,\n [\"night\",\"moon\",\"dark\",\"theme\"],\n);\n\nexport const MoonFillIcon = makeIcon(\n 'MoonFillIcon',\n <><path d=\"M12.8519 2.03584C12.0272 1.96617 11.4747 2.91832 11.9444 3.59979C12.6103 4.56592 13.0001 5.73594 13.0001 7.00001C13.0001 10.3138 10.3138 13.0001 7.00001 13.0001C5.73594 13.0001 4.56592 12.6103 3.59979 11.9444C2.91832 11.4747 1.96617 12.0272 2.03584 12.8519C2.46873 17.9765 6.76397 22.0001 12.0001 22.0001C17.5229 22.0001 22.0001 17.5229 22.0001 12.0001C22.0001 6.76397 17.9765 2.46873 12.8519 2.03584Z\" fill=\"currentColor\"/></>,\n [\"night\",\"moon\",\"dark\",\"theme\",\"filled\"],\n);\n\nexport const PlusIcon = makeIcon(\n 'PlusIcon',\n <><path d=\"M12 3C12.5523 3 13 3.44772 13 4V11H20C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13H13V20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20V13H4C3.44772 13 3 12.5523 3 12C3 11.4477 3.44772 11 4 11H11V4C11 3.44772 11.4477 3 12 3Z\" fill=\"currentColor\"/></>,\n [\"add\",\"plus\",\"new\",\"create\"],\n);\n\nexport const PlusCircleIcon = makeIcon(\n 'PlusCircleIcon',\n <><path d=\"M11 16.5C11 17.0523 11.4477 17.5 12 17.5C12.5523 17.5 13 17.0523 13 16.5V13H16.5C17.0523 13 17.5 12.5523 17.5 12C17.5 11.4477 17.0523 11 16.5 11H13V7.5C13 6.94771 12.5523 6.5 12 6.5C11.4477 6.5 11 6.94771 11 7.5V11H7.50001C6.94773 11 6.50001 11.4477 6.50001 12C6.50001 12.5523 6.94773 13 7.50001 13H11V16.5ZM22 12C22 17.5228 17.5229 22 12 22C6.4772 22 2.00006 17.5228 2.00006 12C2.00006 6.47718 6.4772 2.00003 12 2.00003C17.5229 2.00003 22 6.47718 22 12ZM4.00001 12C4.00001 16.4183 7.58176 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58176 16.4183 4.00003 12 4.00003C7.58175 4.00003 4.00001 7.58174 4.00001 12Z\" fill=\"currentColor\"/></>,\n [\"add\",\"plus\",\"create\",\"circle\"],\n);\n\nexport const PlusCircleFillIcon = makeIcon(\n 'PlusCircleFillIcon',\n <><path d=\"M11.0004 16.5C11.0004 17.0522 11.4481 17.5 12.0004 17.5C12.5527 17.5 13.0004 17.0522 13.0004 16.5V13H16.5C17.0523 13 17.5 12.5523 17.5 12C17.5 11.4477 17.0523 11 16.5 11H13.0004V7.49995C13.0004 6.94767 12.5527 6.49995 12.0004 6.49995C11.4481 6.49995 11.0004 6.94767 11.0004 7.49995V11H7.50004C6.94776 11 6.50004 11.4477 6.50004 12C6.50004 12.5523 6.94776 13 7.50004 13H11.0004V16.5ZM12.0003 22C6.47737 22 2.0001 17.5228 2.00018 11.9999C2.00026 6.47709 6.47745 2.00003 12.0002 2C17.5231 1.99997 22.0004 6.47718 22.0004 12.0001C22.0003 17.5229 17.5231 22 12.0003 22Z\" fill=\"currentColor\"/></>,\n [\"add\",\"plus\",\"create\",\"circle\",\"filled\"],\n);\n\nexport const PlusSquareIcon = makeIcon(\n 'PlusSquareIcon',\n <><path d=\"M12 7.5C12.5523 7.5 13 7.94772 13 8.5V11H15.5C16.0523 11 16.5 11.4477 16.5 12C16.5 12.5523 16.0523 13 15.5 13H13V15.5C13 16.0523 12.5523 16.5 12 16.5C11.4477 16.5 11 16.0523 11 15.5V13H8.5C7.94772 13 7.5 12.5523 7.5 12C7.5 11.4477 7.94772 11 8.5 11H11V8.5C11 7.94772 11.4477 7.5 12 7.5Z\" fill=\"currentColor\"/><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M18 3C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34315 4.34315 3 6 3H18ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"plus\",\"square\",\"icon\"],\n);\n\nexport const PlusSquareFillIcon = makeIcon(\n 'PlusSquareFillIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M18 3C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34315 4.34315 3 6 3H18ZM12 7C11.4477 7 11 7.44772 11 8V11H8C7.44772 11 7 11.4477 7 12C7 12.5523 7.44772 13 8 13H11V16C11 16.5523 11.4477 17 12 17C12.5523 17 13 16.5523 13 16V13H16C16.5523 13 17 12.5523 17 12C17 11.4477 16.5523 11 16 11H13V8C13 7.44772 12.5523 7 12 7Z\" fill=\"currentColor\"/></>,\n [\"plus\",\"square\",\"fill\",\"icon\"],\n);\n\nexport const PollIcon = makeIcon(\n 'PollIcon',\n <><path d=\"M6.63961 4.5C6.16293 4.5 5.75251 4.83646 5.65903 5.30388L4.7198 10H19.2802L18.341 5.30388C18.2475 4.83646 17.8371 4.5 17.3604 4.5H6.63961ZM19.5 12H4.5V18.5C4.5 19.0523 4.94772 19.5 5.5 19.5H18.5C19.0523 19.5 19.5 19.0523 19.5 18.5V12ZM3.69787 4.91165C3.97832 3.50938 5.20956 2.5 6.63961 2.5H17.3604C18.7904 2.5 20.0217 3.50938 20.3021 4.91165L21.4806 10.8039C21.4935 10.8685 21.5 10.9341 21.5 11V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V11C2.5 10.9341 2.5065 10.8685 2.51942 10.8039L3.69787 4.91165ZM8 7C8 6.44772 8.44772 6 9 6H15C15.5523 6 16 6.44772 16 7C16 7.55228 15.5523 8 15 8H9C8.44772 8 8 7.55228 8 7ZM15.2071 13.2929C15.5976 13.6834 15.5976 14.3166 15.2071 14.7071L11.7071 18.2071C11.3166 18.5976 10.6834 18.5976 10.2929 18.2071L8.79289 16.7071C8.40237 16.3166 8.40237 15.6834 8.79289 15.2929C9.18342 14.9024 9.81658 14.9024 10.2071 15.2929L11 16.0858L13.7929 13.2929C14.1834 12.9024 14.8166 12.9024 15.2071 13.2929Z\" fill=\"currentColor\"/></>,\n [\"poll\",\"vote\",\"ballot\"],\n);\n\nexport const PollFillIcon = makeIcon(\n 'PollFillIcon',\n <><path d=\"M3.69787 4.91165C3.97832 3.50938 5.20956 2.5 6.63961 2.5H17.3604C18.7904 2.5 20.0217 3.50938 20.3021 4.91165L21.1198 9H2.8802L3.69787 4.91165ZM2.5 11H21.5V18.5C21.5 20.1569 20.1569 21.5 18.5 21.5H5.5C3.84315 21.5 2.5 20.1569 2.5 18.5V11ZM9 5C8.44772 5 8 5.44772 8 6C8 6.55228 8.44772 7 9 7H15C15.5523 7 16 6.55228 16 6C16 5.44772 15.5523 5 15 5H9ZM15.2071 14.7071C15.5976 14.3166 15.5976 13.6834 15.2071 13.2929C14.8166 12.9024 14.1834 12.9024 13.7929 13.2929L11 16.0858L10.2071 15.2929C9.81658 14.9024 9.18342 14.9024 8.79289 15.2929C8.40237 15.6834 8.40237 16.3166 8.79289 16.7071L10.2929 18.2071C10.6834 18.5976 11.3166 18.5976 11.7071 18.2071L15.2071 14.7071Z\" fill=\"currentColor\"/></>,\n [\"poll\",\"vote\",\"ballot\",\"filled\"],\n);\n\nexport const ProfileIcon = makeIcon(\n 'ProfileIcon',\n <><path d=\"M12 4C9.51475 4 7.50003 6.01472 7.50003 8.5C7.50003 10.9853 9.51475 13 12 13C14.4853 13 16.5 10.9853 16.5 8.5C16.5 6.01472 14.4853 4 12 4ZM5.50003 8.5C5.50003 4.91015 8.41018 2 12 2C15.5899 2 18.5 4.91015 18.5 8.5C18.5 10.9892 17.1008 13.1516 15.0459 14.2436C16.7129 14.5365 18.0696 15.0912 19.1115 15.8962C20.7682 17.1764 21.5 18.9898 21.5 21C21.5 21.5523 21.0523 22 20.5 22C19.9477 22 19.5 21.5523 19.5 21C19.5 19.5102 18.9818 18.3236 17.8886 17.4788C16.756 16.6036 14.8823 16 12 16C9.11774 16 7.24405 16.6036 6.11145 17.4788C5.01817 18.3236 4.5 19.5102 4.5 21C4.5 21.5523 4.05228 22 3.5 22C2.94772 22 2.5 21.5523 2.5 21C2.5 18.9898 3.23183 17.1764 4.88856 15.8962C5.93041 15.0911 7.28716 14.5365 8.95412 14.2436C6.89927 13.1516 5.50003 10.9892 5.50003 8.5Z\" fill=\"currentColor\"/></>,\n [\"profile\",\"person\",\"user\",\"account\",\"mypage\"],\n);\n\nexport const ProfileFillIcon = makeIcon(\n 'ProfileFillIcon',\n <><path d=\"M12.0001 15C15.5899 15 18.5001 12.0899 18.5001 8.5C18.5001 4.91015 15.5899 2 12.0001 2C8.41023 2 5.50008 4.91015 5.50008 8.5C5.50008 12.0899 8.41023 15 12.0001 15ZM5.88573 15.2133C4.04376 16.2204 3.17576 17.8774 3.02438 20.2194C2.99478 20.6773 3.31085 21.0759 3.76038 21.168C5.15044 21.4529 8.3017 22 12.0001 22C15.6985 22 18.8497 21.4529 20.2398 21.168C20.6893 21.0759 21.0054 20.6773 20.9758 20.2194C20.8244 17.8774 19.9564 16.2204 18.1144 15.2133C17.7778 15.0292 17.3684 15.1017 17.0603 15.3303C15.6465 16.3794 13.8958 17 12.0001 17C10.1044 17 8.35364 16.3794 6.9399 15.3303C6.63177 15.1017 6.22239 15.0292 5.88573 15.2133Z\" fill=\"currentColor\"/></>,\n [\"profile\",\"person\",\"user\",\"account\",\"mypage\",\"filled\"],\n);\n\nexport const PulseIcon = makeIcon(\n 'PulseIcon',\n <><path d=\"M11.4363 7.64888C11.29 7.25857 10.9168 7 10.5 7C10.0832 7 9.71003 7.25857 9.56367 7.64888L8.307 11H6C5.44772 11 5 11.4477 5 12C5 12.5523 5.44772 13 6 13H9C9.41684 13 9.78997 12.7414 9.93633 12.3511L10.5 10.848L12.5637 16.3511C12.71 16.7414 13.0832 17 13.5 17C13.9168 17 14.29 16.7414 14.4363 16.3511L15.693 13H18C18.5523 13 19 12.5523 19 12C19 11.4477 18.5523 11 18 11H15C14.5832 11 14.21 11.2586 14.0637 11.6489L13.5 13.152L11.4363 7.64888ZM12 22C17.5228 22 21.9999 17.5228 21.9999 12C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 12C2 17.5228 6.47714 22 12 22ZM12 20C7.58169 20 3.99995 16.4182 3.99995 12C3.99995 7.58171 7.58169 4 12 4C16.4182 4 20 7.58173 20 12C20 16.4183 16.4182 20 12 20Z\" fill=\"currentColor\"/></>,\n [\"pulse\",\"icon\"],\n);\n\nexport const PulseFillIcon = makeIcon(\n 'PulseFillIcon',\n <><path d=\"M12 22C17.5228 22 21.9999 17.5228 21.9999 12C21.9999 6.47715 17.5228 2 12 2C6.47714 2 2 6.47715 2 12C2 17.5228 6.47714 22 12 22ZM10.5 7C10.9168 7 11.29 7.25857 11.4363 7.64888L13.5 13.152L14.0637 11.6489C14.21 11.2586 14.5832 11 15 11H18C18.5523 11 19 11.4477 19 12C19 12.5523 18.5523 13 18 13H15.693L14.4363 16.3511C14.29 16.7414 13.9168 17 13.5 17C13.0832 17 12.71 16.7414 12.5637 16.3511L10.5 10.848L9.93633 12.3511C9.78997 12.7414 9.41684 13 9 13H6C5.44772 13 5 12.5523 5 12C5 11.4477 5.44772 11 6 11H8.307L9.56367 7.64888C9.71003 7.25857 10.0832 7 10.5 7Z\" fill=\"currentColor\"/></>,\n [\"pulse\",\"fill\",\"icon\"],\n);\n\nexport const RadioIcon = makeIcon(\n 'RadioIcon',\n <><path d=\"M21.9999 12C21.9999 17.5228 17.5228 22 12 22C6.47714 22 2 17.5228 2 12C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 12ZM3.99995 12C3.99995 16.4182 7.58169 20 12 20C16.4182 20 20 16.4183 20 12C20 7.58173 16.4182 4 12 4C7.58169 4 3.99995 7.58171 3.99995 12Z\" fill=\"currentColor\"/></>,\n [\"radio\",\"unselected\",\"circle\"],\n);\n\nexport const RadioFillIcon = makeIcon(\n 'RadioFillIcon',\n <><path d=\"M12 17C14.7614 17 16.9999 14.7614 16.9999 12C16.9999 9.23863 14.7614 7.00001 12 7.00001C9.2387 7.00001 7.00019 9.23852 7.00009 11.9998C6.99999 14.7613 9.23856 17 12 17ZM12.0001 22C6.47728 22 2.00001 17.5228 2.00005 11.9999C2.00009 6.47713 6.47732 2.00003 12.0001 2.00003C17.523 2.00003 22.0002 6.47721 22.0002 12.0001C22.0002 17.5229 17.523 22 12.0001 22ZM11.9998 20C16.4181 20 19.9998 16.4183 19.9998 12C19.9998 7.58177 16.4181 4.00006 11.9998 4.00006C7.58159 4.00006 3.99985 7.58177 3.99985 12C3.99985 16.4183 7.58159 20 11.9998 20Z\" fill=\"currentColor\"/></>,\n [\"radio\",\"selected\",\"circle\",\"filled\"],\n);\n\nexport const ReactIcon = makeIcon(\n 'ReactIcon',\n <><path d=\"M20 1.5C20 0.947715 19.5523 0.5 19 0.5C18.4477 0.5 18 0.947715 18 1.5V4H15.5C14.9477 4 14.5 4.44772 14.5 5C14.5 5.55228 14.9477 6 15.5 6H18V8.5C18 9.05228 18.4477 9.5 19 9.5C19.5523 9.5 20 9.05228 20 8.5V6H22.5C23.0523 6 23.5 5.55228 23.5 5C23.5 4.44772 23.0523 4 22.5 4H20V1.5ZM4 12C4 7.58172 7.58172 4 12 4C12.5523 4 13 3.55228 13 3C13 2.44772 12.5523 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 11.4477 21.5523 11 21 11C20.4477 11 20 11.4477 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM9 11.5C9.82843 11.5 10.5 10.8284 10.5 10C10.5 9.17157 9.82843 8.5 9 8.5C8.17157 8.5 7.5 9.17157 7.5 10C7.5 10.8284 8.17157 11.5 9 11.5ZM15 11.5C15.8284 11.5 16.5 10.8284 16.5 10C16.5 9.17157 15.8284 8.5 15 8.5C14.1716 8.5 13.5 9.17157 13.5 10C13.5 10.8284 14.1716 11.5 15 11.5ZM7.9453 13.6679C7.49131 13.9706 7.36572 14.602 7.66859 15.0557C7.94927 15.4674 8.34642 15.8078 8.7578 16.0821C9.47053 16.5572 10.5364 17 12 17C13.4636 17 14.5295 16.5572 15.2422 16.0821C15.6577 15.805 16.0527 15.4731 16.3321 15.0547C16.6384 14.5952 16.5142 13.9743 16.0547 13.6679C15.2074 13.1031 14.7365 14.0155 14.1328 14.4179C13.7205 14.6928 13.0364 15 12 15C10.9636 15 10.2795 14.6928 9.8672 14.4179C9.26353 14.0155 8.79261 13.1031 7.9453 13.6679Z\" fill=\"currentColor\"/></>,\n [\"react\",\"icon\"],\n);\n\nexport const ReactFillIcon = makeIcon(\n 'ReactFillIcon',\n <><path d=\"M19.5 0.5C20.0523 0.5 20.5 0.947715 20.5 1.5V3.5H22.5C23.0523 3.5 23.5 3.94772 23.5 4.5C23.5 5.05228 23.0523 5.5 22.5 5.5H20.5V7.5C20.5 8.05228 20.0523 8.5 19.5 8.5C18.9477 8.5 18.5 8.05228 18.5 7.5V5.5H16.5C15.9477 5.5 15.5 5.05228 15.5 4.5C15.5 3.94772 15.9477 3.5 16.5 3.5H18.5V1.5C18.5 0.947715 18.9477 0.5 19.5 0.5ZM14.4562 2.30388C13.6704 2.10543 12.8475 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 11.1525 21.8946 10.3296 21.6961 9.5438C21.1484 10.1321 20.3672 10.5 19.5 10.5C17.8431 10.5 16.5 9.15685 16.5 7.5C14.8431 7.5 13.5 6.15685 13.5 4.5C13.5 3.63283 13.8679 2.85159 14.4562 2.30388ZM10.5 11C10.5 11.8284 9.82843 12.5 9 12.5C8.17157 12.5 7.5 11.8284 7.5 11C7.5 10.1716 8.17157 9.5 9 9.5C9.82843 9.5 10.5 10.1716 10.5 11ZM16.5 11C16.5 11.8284 15.8284 12.5 15 12.5C14.1716 12.5 13.5 11.8284 13.5 11C13.5 10.1716 14.1716 9.5 15 9.5C15.8284 9.5 16.5 10.1716 16.5 11ZM12.0001 18C10.5365 18 9.47064 17.5572 8.75791 17.0821C8.34653 16.8078 7.94938 16.4674 7.6687 16.0557C7.36583 15.602 7.49143 14.9706 7.94541 14.668C8.57461 14.2485 8.99626 14.6437 9.41883 15.0397C9.56532 15.177 9.71192 15.3144 9.86731 15.418C10.2796 15.6928 10.9638 16 12.0001 16C13.0365 16 13.7206 15.6928 14.1329 15.418C14.2883 15.3144 14.4349 15.177 14.5814 15.0397C15.004 14.6437 15.4256 14.2485 16.0548 14.668C16.5143 14.9743 16.6385 15.5952 16.3322 16.0547C16.0528 16.4731 15.6578 16.8051 15.2423 17.0821C14.5296 17.5572 13.4638 18 12.0001 18Z\" fill=\"currentColor\"/></>,\n [\"react\",\"fill\",\"icon\"],\n);\n\nexport const RectangleIcon = makeIcon(\n 'RectangleIcon',\n <><path d=\"M3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6ZM6 5C5.44772 5 5 5.44772 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6C19 5.44772 18.5523 5 18 5H6Z\" fill=\"currentColor\"/></>,\n [\"rectangle\",\"frame\",\"outline\"],\n);\n\nexport const RectangleFillIcon = makeIcon(\n 'RectangleFillIcon',\n <><path d=\"M3 6C3 4.34315 4.34315 3 6 3H18C19.6569 3 21 4.34315 21 6V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6Z\" fill=\"currentColor\"/></>,\n [\"rectangle\",\"frame\",\"filled\"],\n);\n\nexport const RefreshIcon = makeIcon(\n 'RefreshIcon',\n <><path d=\"M6 12C6 8.68629 8.68629 6 12 6C14.2199 6 16.1599 7.20612 17.1976 9H14C13.4477 9 13 9.44772 13 10C13 10.5523 13.4477 11 14 11H19C19.5523 11 20 10.5523 20 10V5C20 4.44772 19.5523 4 19 4C18.4477 4 18 4.44772 18 5V6.70863C16.5345 5.04786 14.3902 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C15.6255 20 18.6853 17.5891 19.6686 14.2853C19.8261 13.7559 19.5247 13.1991 18.9954 13.0415C18.466 12.884 17.9092 13.1854 17.7517 13.7148C17.0138 16.1939 14.7165 18 12 18C8.68629 18 6 15.3137 6 12Z\" fill=\"currentColor\"/></>,\n [\"refresh\",\"reload\",\"sync\"],\n);\n\nexport const ReplyIcon = makeIcon(\n 'ReplyIcon',\n <><path d=\"M10.5 18.5H10C5.58172 18.5 2 14.9183 2 10.5C2 6.08172 5.58172 2.5 10 2.5H13.6056C18.2417 2.5 22 6.25831 22 10.8944C22 13.4849 20.804 15.9302 18.7593 17.5206L13.5041 21.6079C13.1774 21.862 12.7753 22 12.3614 22C11.3334 22 10.5 21.1666 10.5 20.1386V18.5ZM10.5 16.5C11.6046 16.5 12.5 17.3954 12.5 18.5V19.8552L17.5314 15.9419C19.089 14.7304 20 12.8677 20 10.8944C20 7.36288 17.1371 4.5 13.6056 4.5H10C6.68629 4.5 4 7.18629 4 10.5C4 13.8137 6.68629 16.5 10 16.5H10.5Z\" fill=\"currentColor\"/></>,\n [\"reply\",\"comment\",\"speech\"],\n);\n\nexport const ReplyFillIcon = makeIcon(\n 'ReplyFillIcon',\n <><path d=\"M9.75 2.5C5.46979 2.5 2 5.96979 2 10.25C2 14.5302 5.46979 18 9.75 18H11V20.871C11 21.4945 11.5055 22 12.129 22C12.37 22 12.6047 21.9229 12.7987 21.7799C12.9927 21.6369 18.6219 17.4891 18.6219 17.4891C20.7461 15.9239 22 13.4425 22 10.804C22 6.21781 18.2822 2.5 13.6961 2.5H9.75Z\" fill=\"currentColor\"/></>,\n [\"reply\",\"comment\",\"speech\",\"filled\"],\n);\n\nexport const ScrollTopIcon = makeIcon(\n 'ScrollTopIcon',\n <><path d=\"M4 3C4 2.44772 4.44772 2 5 2H19C19.5523 2 20 2.44772 20 3C20 3.55228 19.5523 4 19 4H5C4.44772 4 4 3.55228 4 3ZM11.293 5.29289C11.6835 4.90237 12.3167 4.90237 12.7072 5.29289L19.7072 12.2929C20.0977 12.6834 20.0977 13.3166 19.7072 13.7071C19.3167 14.0976 18.6835 14.0976 18.293 13.7071L13.0001 8.41421V22C13.0001 22.5523 12.5524 23 12.0001 23C11.4478 23 11.0001 22.5523 11.0001 22V8.41421L5.70718 13.7071C5.31666 14.0976 4.68349 14.0976 4.29297 13.7071C3.90244 13.3166 3.90244 12.6834 4.29297 12.2929L11.293 5.29289Z\" fill=\"currentColor\"/></>,\n [\"scroll-top\",\"back-to-top\",\"top\",\"upward-bar\"],\n);\n\nexport const SearchIcon = makeIcon(\n 'SearchIcon',\n <><path d=\"M10.5 2.59961C14.863 2.59961 18.4004 6.13695 18.4004 10.5C18.4004 12.3251 17.7803 14.0065 16.7412 15.3438L16.6865 15.4141L16.749 15.4766L21.1367 19.8633C21.4882 20.2148 21.4882 20.7852 21.1367 21.1367C20.7852 21.4882 20.2148 21.4882 19.8633 21.1367L15.4766 16.749L15.4141 16.6865L15.3438 16.7412C14.0065 17.7803 12.3251 18.4004 10.5 18.4004C6.13695 18.4004 2.59961 14.863 2.59961 10.5C2.59961 6.13695 6.13695 2.59961 10.5 2.59961ZM10.5 4.40039C7.13106 4.40039 4.40039 7.13106 4.40039 10.5C4.40039 13.8689 7.13106 16.5996 10.5 16.5996C12.1847 16.5996 13.7086 15.9184 14.8135 14.8135C15.9184 13.7086 16.5996 12.1847 16.5996 10.5C16.5996 7.13106 13.8689 4.40039 10.5 4.40039Z\" fill=\"currentColor\" stroke=\"currentColor\" strokeWidth=\"0.2\" strokeLinecap=\"round\"/></>,\n [\"search\",\"find\",\"magnifier\",\"lookup\"],\n);\n\nexport const SearchFillIcon = makeIcon(\n 'SearchFillIcon',\n <><path d=\"M10.5 2.59961C14.863 2.59961 18.4004 6.13695 18.4004 10.5C18.4004 12.2356 17.8392 13.8412 16.8906 15.1445L16.8408 15.2139L16.9004 15.2744L21.0635 19.4365C21.5126 19.8856 21.5126 20.6144 21.0635 21.0635C20.6144 21.5126 19.8856 21.5126 19.4365 21.0635L15.2744 16.9004L15.2139 16.8408L15.1445 16.8906C13.8412 17.8392 12.2356 18.4004 10.5 18.4004C6.13695 18.4004 2.59961 14.863 2.59961 10.5C2.59961 6.13695 6.13695 2.59961 10.5 2.59961ZM10.5 4.90039C7.40721 4.90039 4.90039 7.40721 4.90039 10.5C4.90039 13.5928 7.40721 16.0996 10.5 16.0996C12.0467 16.0996 13.4453 15.4746 14.46 14.46C15.4746 13.4453 16.0996 12.0467 16.0996 10.5C16.0996 7.40721 13.5928 4.90039 10.5 4.90039Z\" fill=\"currentColor\" stroke=\"currentColor\" strokeWidth=\"0.2\" strokeLinecap=\"round\"/></>,\n [\"search\",\"fill\",\"icon\"],\n);\n\nexport const SettingsIcon = makeIcon(\n 'SettingsIcon',\n <><path d=\"M11.0002 1C9.89566 1 9.00023 1.89543 9.00023 3V4.04484C8.12614 4.37461 7.32124 4.84397 6.61257 5.42528L5.7061 4.90193C4.74951 4.34964 3.52633 4.67739 2.97405 5.63398L1.97405 7.36603C1.42176 8.32262 1.74951 9.5458 2.7061 10.0981L3.61169 10.6209C3.53831 11.0703 3.50023 11.531 3.50023 12C3.50023 12.469 3.5383 12.9297 3.61167 13.379L2.7059 13.9019C1.74931 14.4542 1.42156 15.6774 1.97385 16.634L2.97385 18.366C3.52613 19.3226 4.74931 19.6504 5.7059 19.0981L6.61249 18.5746C7.32118 19.156 8.1261 19.6254 9.00023 19.9552V21C9.00023 22.1046 9.89566 23 11.0002 23H13.0002C14.1048 23 15.0002 22.1046 15.0002 21V19.9552C15.8743 19.6254 16.6793 19.156 17.388 18.5747L18.2946 19.0981C19.2511 19.6504 20.4743 19.3226 21.0266 18.366L22.0266 16.634C22.5789 15.6774 22.2511 14.4542 21.2946 13.9019L20.3888 13.379C20.4621 12.9297 20.5002 12.469 20.5002 12C20.5002 11.531 20.4621 11.0703 20.3888 10.6209L21.2944 10.0981C22.2509 9.54579 22.5787 8.32261 22.0264 7.36602L21.0264 5.63397C20.4741 4.67738 19.2509 4.34963 18.2944 4.90192L17.3879 5.42528C16.6792 4.84397 15.8743 4.37461 15.0002 4.04484V3C15.0002 1.89543 14.1048 1 13.0002 1H11.0002ZM11.0002 3H13.0002V4.76962C13.0002 5.21944 13.3006 5.6139 13.7342 5.73357C14.8132 6.0314 15.7812 6.60134 16.5588 7.36651C16.8793 7.68184 17.3708 7.74453 17.7602 7.51973L19.2944 6.63397L20.2944 8.36602L18.7618 9.25082C18.3727 9.4755 18.1812 9.93215 18.2937 10.3672C18.4283 10.8879 18.5002 11.4348 18.5002 12C18.5002 12.5652 18.4283 13.1121 18.2937 13.6327C18.1812 14.0678 18.3727 14.5244 18.7619 14.7491L20.2946 15.634L19.2946 17.366L17.7603 16.4802C17.3709 16.2554 16.8794 16.3181 16.5589 16.6334C15.7812 17.3986 14.8133 17.9686 13.7342 18.2664C13.3006 18.3861 13.0002 18.7806 13.0002 19.2304V21H11.0002V19.2304C11.0002 18.7806 10.6999 18.3861 10.2663 18.2664C9.18718 17.9686 8.21923 17.3986 7.44157 16.6334C7.12109 16.3181 6.62956 16.2554 6.24019 16.4802L4.7059 17.366L3.7059 15.634L5.23859 14.7491C5.62773 14.5244 5.81923 14.0677 5.70674 13.6327C5.57212 13.1121 5.50023 12.5652 5.50023 12C5.50023 11.4348 5.57213 10.8879 5.70677 10.3672C5.81926 9.93216 5.62776 9.47551 5.23861 9.25083L3.7061 8.36603L4.7061 6.63398L6.24027 7.51973C6.62963 7.74453 7.12115 7.68184 7.44163 7.36651C8.21928 6.60134 9.18721 6.0314 10.2663 5.73357C10.6999 5.6139 11.0002 5.21944 11.0002 4.76962V3ZM10 12C10 10.8954 10.8955 10 12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8955 14 10 13.1046 10 12ZM12 8C9.79089 8 8.00003 9.79086 8.00003 12C8.00003 14.2091 9.79089 16 12 16C14.2092 16 16 14.2091 16 12C16 9.79086 14.2092 8 12 8Z\" fill=\"currentColor\"/></>,\n [\"settings\",\"gear\",\"preferences\",\"configuration\"],\n);\n\nexport const SettingsFillIcon = makeIcon(\n 'SettingsFillIcon',\n <><path d=\"M9.00025 3C9.00025 1.89543 9.89569 1 11.0003 1H13.0003C14.1048 1 15.0003 1.89543 15.0003 3V4.58185C15.6955 4.86326 16.3417 5.2393 16.9231 5.6937L18.2945 4.90192C19.2511 4.34964 20.4742 4.67739 21.0265 5.63398L22.0265 7.36603C22.5788 8.32261 22.2511 9.54579 21.2945 10.0981L19.922 10.8905C20.0213 11.6214 20.0213 12.3787 19.922 13.1096L21.2944 13.9019C22.2509 14.4542 22.5787 15.6774 22.0264 16.634L21.0264 18.366C20.4741 19.3226 19.2509 19.6504 18.2944 19.0981L16.923 18.3063C16.3417 18.7607 15.6954 19.1367 15.0003 19.4181V21C15.0003 22.1046 14.1048 23 13.0003 23H11.0003C9.89568 23 9.00025 22.1046 9.00025 21V19.4183C8.30498 19.1369 7.65869 18.7608 7.07727 18.3064L5.70603 19.0981C4.74944 19.6504 3.52626 19.3226 2.97397 18.366L1.97397 16.634C1.42169 15.6774 1.74944 14.4542 2.70602 13.9019L4.07822 13.1097C3.97892 12.3787 3.97892 11.6214 4.07821 10.8904L2.7059 10.0981C1.74932 9.54579 1.42156 8.32261 1.97385 7.36602L2.97385 5.63397C3.52613 4.67738 4.74931 4.34963 5.7059 4.90192L7.07722 5.69365C7.65865 5.23921 8.30496 4.86315 9.00025 4.58174V3ZM12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\" fill=\"currentColor\"/></>,\n [\"settings\",\"gear\",\"preferences\",\"configuration\",\"filled\"],\n);\n\nexport const ShareIcon = makeIcon(\n 'ShareIcon',\n <><path d=\"M11.2929 2.79289C11.6834 2.40237 12.3166 2.40237 12.7071 2.79289L16.7071 6.79289C17.0976 7.18342 17.0976 7.81658 16.7071 8.20711C16.3166 8.59763 15.6834 8.59763 15.2929 8.20711L13 5.91421V13C13 13.5523 12.5523 14 12 14C11.4477 14 11 13.5523 11 13V5.91421L8.70711 8.20711C8.31658 8.59763 7.68342 8.59763 7.29289 8.20711C6.90237 7.81658 6.90237 7.18342 7.29289 6.79289L11.2929 2.79289ZM4 11C4.55228 11 5 11.4477 5 12V19H19V12C19 11.4477 19.4477 11 20 11C20.5523 11 21 11.4477 21 12V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V12C3 11.4477 3.44772 11 4 11Z\" fill=\"currentColor\"/></>,\n [\"share\",\"upload\",\"export\"],\n);\n\nexport const ShieldIcon = makeIcon(\n 'ShieldIcon',\n <><path d=\"M21.0002 8.09953V11.0001C21.0001 15.2383 19.2261 19.0331 13.1715 21.9665C12.4326 22.3245 11.5679 22.3245 10.829 21.9666C4.77428 19.0331 3 15.2383 3 11.0001L3.00006 8.09951C3.00009 6.51877 3.93104 5.08632 5.37554 4.44434L10.3758 2.22206C11.41 1.7624 12.5906 1.76241 13.6249 2.22208L18.6248 4.44429C20.0693 5.0863 21.0002 6.51878 21.0002 8.09953ZM5 11.0001C5.00001 12.8275 5.37783 14.4331 6.32043 15.8819C7.27168 17.3441 8.90641 18.8127 11.701 20.1667C11.8892 20.2578 12.1113 20.2578 12.2994 20.1667C15.094 18.8127 16.7286 17.3441 17.6798 15.882C18.6224 14.4331 19.0002 12.8275 19.0002 11.0001V8.09953C19.0002 7.30916 18.5348 6.59292 17.8125 6.27191L12.8126 4.0497C12.2955 3.81986 11.7052 3.81986 11.188 4.04969L6.1878 6.27197C5.46555 6.59296 5.00008 7.30918 5.00006 8.09955L5 11.0001ZM16.2071 9.29289C16.5976 9.68342 16.5976 10.3166 16.2071 10.7071L11.7071 15.2071C11.3166 15.5976 10.6834 15.5976 10.2929 15.2071L7.79289 12.7071C7.40237 12.3166 7.40237 11.6834 7.79289 11.2929C8.18342 10.9024 8.81658 10.9024 9.20711 11.2929L11 13.0858L14.7929 9.29289C15.1834 8.90237 15.8166 8.90237 16.2071 9.29289Z\" fill=\"currentColor\"/></>,\n [\"secure\",\"shield\",\"protected\",\"safety\"],\n);\n\nexport const ShieldFillIcon = makeIcon(\n 'ShieldFillIcon',\n <><path d=\"M3 11.0001L3.00006 8.09951C3.00009 6.51877 3.93104 5.08632 5.37554 4.44434L10.3758 2.22206C11.41 1.7624 12.5906 1.76241 13.6249 2.22208L18.6248 4.44429C20.0693 5.0863 21.0002 6.51878 21.0002 8.09953V11.0001C21.0001 15.2383 19.2261 19.0331 13.1715 21.9665C12.4326 22.3245 11.5679 22.3245 10.829 21.9666C4.77428 19.0331 3 15.2383 3 11.0001ZM16.2071 10.7071C16.5976 10.3166 16.5976 9.68342 16.2071 9.29289C15.8166 8.90237 15.1834 8.90237 14.7929 9.29289L11 13.0858L9.20711 11.2929C8.81658 10.9024 8.18342 10.9024 7.79289 11.2929C7.40237 11.6834 7.40237 12.3166 7.79289 12.7071L10.2929 15.2071C10.6834 15.5976 11.3166 15.5976 11.7071 15.2071L16.2071 10.7071Z\" fill=\"currentColor\"/></>,\n [\"secure\",\"shield\",\"protected\",\"safety\",\"filled\"],\n);\n\nexport const SquareStackIcon = makeIcon(\n 'SquareStackIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9 3C7.34315 3 6 4.34315 6 6H8C8 5.44772 8.44772 5 9 5H18C18.5523 5 19 5.44772 19 6V15C19 15.5523 18.5523 16 18 16V18C19.6569 18 21 16.6569 21 15V6C21 4.34315 19.6569 3 18 3H9ZM3 9C3 7.34315 4.34315 6 6 6H15C16.6569 6 18 7.34315 18 9V18C18 19.6569 16.6569 21 15 21H6C4.34315 21 3 19.6569 3 18V9ZM6 8C5.44772 8 5 8.44772 5 9V18C5 18.5523 5.44772 19 6 19H15C15.5523 19 16 18.5523 16 18V9C16 8.44772 15.5523 8 15 8H6Z\" fill=\"currentColor\"/></>,\n [\"multiple\",\"stacked\",\"layers\",\"gallery\"],\n);\n\nexport const StarIcon = makeIcon(\n 'StarIcon',\n <><path d=\"M10.638 2.56546C11.1741 1.40315 12.826 1.40315 13.3621 2.56546L15.6361 7.49539L21.0274 8.13461C22.2985 8.28532 22.809 9.8564 21.8692 10.7255L17.8833 14.4116L18.9414 19.7365C19.1908 20.992 17.8544 21.963 16.7375 21.3378L12 18.686L7.26264 21.3378C6.14573 21.963 4.80928 20.992 5.05874 19.7365L6.11681 14.4115L2.13086 10.7255C1.19111 9.85641 1.70158 8.28532 2.97267 8.13462L8.36401 7.49539L10.638 2.56546ZM12 4.38748L10.0629 8.58722C9.84439 9.06093 9.39547 9.3871 8.87742 9.44852L4.28461 9.99307L7.68019 13.1332C8.0632 13.4874 8.23467 14.0151 8.13301 14.5268L7.23165 19.0631L11.2674 16.8041C11.7226 16.5493 12.2775 16.5493 12.7327 16.8041L16.7685 19.0631L15.8671 14.5268C15.7654 14.0151 15.9369 13.4874 16.3199 13.1332L19.7155 9.99307L15.1227 9.44852C14.6046 9.3871 14.1557 9.06093 13.9372 8.58722L12 4.38748Z\" fill=\"currentColor\"/></>,\n [\"star\",\"favorite\",\"rate\"],\n);\n\nexport const StarFillIcon = makeIcon(\n 'StarFillIcon',\n <><path d=\"M13.3621 2.56546C12.826 1.40315 11.1741 1.40315 10.638 2.56546L8.36401 7.49539L2.97267 8.13462C1.70158 8.28532 1.19111 9.85641 2.13086 10.7255L6.11681 14.4115L5.05874 19.7365C4.80928 20.992 6.14573 21.963 7.26264 21.3378L12 18.686L16.7375 21.3378C17.8544 21.963 19.1908 20.992 18.9414 19.7365L17.8833 14.4116L21.8692 10.7255C22.809 9.8564 22.2985 8.28532 21.0274 8.13461L15.6361 7.49539L13.3621 2.56546Z\" fill=\"currentColor\"/></>,\n [\"star\",\"favorite\",\"rate\",\"filled\"],\n);\n\nexport const StopIcon = makeIcon(\n 'StopIcon',\n <><path d=\"M21.9999 12C21.9999 17.5228 17.5228 22 12 22C6.47714 22 2 17.5228 2 12C2 6.47715 6.47714 2 12 2C17.5228 2 21.9999 6.47715 21.9999 12ZM3.99995 12C3.99995 16.4182 7.58169 20 12 20C13.8487 20 15.5509 19.3729 16.9056 18.3198L5.68012 7.09433C4.62704 8.44901 3.99995 10.1513 3.99995 12ZM18.3197 16.9056C19.3728 15.5509 19.9999 13.8487 19.9999 12C19.9999 7.58173 16.4181 4 11.9999 4C10.1512 4 8.44892 4.62707 7.09424 5.68012L18.3197 16.9056Z\" fill=\"currentColor\"/></>,\n [\"stop\",\"icon\"],\n);\n\nexport const StoryIcon = makeIcon(\n 'StoryIcon',\n <><path d=\"M18.5 10.5C20.9853 10.5 23 8.48528 23 6C23 3.51472 20.9853 1.5 18.5 1.5C16.0147 1.5 14 3.51472 14 6C14 8.48528 16.0147 10.5 18.5 10.5ZM20 12.3261V18.5C20 19.0523 19.5523 19.5 19 19.5H5C4.44772 19.5 4 19.0523 4 18.5V9C4 8.44772 4.44772 8 5 8H7.5C7.87877 8 8.22504 7.786 8.39443 7.44721L9.34164 5.55279C9.51103 5.214 9.8573 5 10.2361 5H12.0764C12.1863 4.28869 12.4114 3.61546 12.7322 3H10.2361C9.09975 3 8.06096 3.64201 7.55279 4.65836L6.88197 6H5C3.34315 6 2 7.34315 2 9V18.5C2 20.1569 3.34315 21.5 5 21.5H19C20.6569 21.5 22 20.1569 22 18.5V11.4782C21.3945 11.8659 20.7204 12.1559 20 12.3261ZM9.5 13.5C9.5 12.1193 10.6193 11 12 11C13.3807 11 14.5 12.1193 14.5 13.5C14.5 14.8807 13.3807 16 12 16C10.6193 16 9.5 14.8807 9.5 13.5ZM12 9C9.51472 9 7.5 11.0147 7.5 13.5C7.5 15.9853 9.51472 18 12 18C14.4853 18 16.5 15.9853 16.5 13.5C16.5 11.0147 14.4853 9 12 9ZM18.5 3.25C18.9142 3.25 19.25 3.58579 19.25 4V5.25H20.5C20.9142 5.25 21.25 5.58579 21.25 6C21.25 6.41421 20.9142 6.75 20.5 6.75H19.25V8C19.25 8.41421 18.9142 8.75 18.5 8.75C18.0858 8.75 17.75 8.41421 17.75 8V6.75H16.5C16.0858 6.75 15.75 6.41421 15.75 6C15.75 5.58579 16.0858 5.25 16.5 5.25H17.75V4C17.75 3.58579 18.0858 3.25 18.5 3.25Z\" fill=\"currentColor\"/></>,\n [\"story\",\"reel\",\"feed\"],\n);\n\nexport const StoryFillIcon = makeIcon(\n 'StoryFillIcon',\n <><path d=\"M18.5 10.5C20.9853 10.5 23 8.48528 23 6C23 3.51472 20.9853 1.5 18.5 1.5C16.0147 1.5 14 3.51472 14 6C14 8.48528 16.0147 10.5 18.5 10.5ZM22 11.4782V18.5C22 20.1569 20.6569 21.5 19 21.5H5C3.34315 21.5 2 20.1569 2 18.5V9C2 7.34315 3.34315 6 5 6H6.88197L7.55279 4.65836C8.06096 3.64201 9.09975 3 10.2361 3H12.7322C12.2644 3.89751 12 4.91787 12 6C12 6.89573 12.1812 7.74914 12.5089 8.52558C12.3416 8.50867 12.1718 8.5 12 8.5C9.23858 8.5 7 10.7386 7 13.5C7 16.2614 9.23858 18.5 12 18.5C14.7614 18.5 17 16.2614 17 13.5C17 13.0825 16.9488 12.677 16.8524 12.2894C17.3786 12.4268 17.9308 12.5 18.5 12.5C19.7886 12.5 20.9897 12.125 22 11.4782ZM12 10.5C10.3431 10.5 9 11.8431 9 13.5C9 15.1569 10.3431 16.5 12 16.5C13.6569 16.5 15 15.1569 15 13.5C15 11.8431 13.6569 10.5 12 10.5ZM18.5 3.25C18.9142 3.25 19.25 3.58579 19.25 4V5.25H20.5C20.9142 5.25 21.25 5.58579 21.25 6C21.25 6.41421 20.9142 6.75 20.5 6.75H19.25V8C19.25 8.41421 18.9142 8.75 18.5 8.75C18.0858 8.75 17.75 8.41421 17.75 8V6.75H16.5C16.0858 6.75 15.75 6.41421 15.75 6C15.75 5.58579 16.0858 5.25 16.5 5.25H17.75V4C17.75 3.58579 18.0858 3.25 18.5 3.25Z\" fill=\"currentColor\"/></>,\n [\"story\",\"reel\",\"feed\",\"filled\"],\n);\n\nexport const SunIcon = makeIcon(\n 'SunIcon',\n <><path d=\"M13.25 2C13.25 1.30964 12.6904 0.75 12 0.75C11.3096 0.75 10.75 1.30964 10.75 2V4C10.75 4.69036 11.3096 5.25 12 5.25C12.6904 5.25 13.25 4.69036 13.25 4V2ZM5.81259 4.04507C5.32444 3.55692 4.53298 3.55692 4.04483 4.04507C3.55667 4.53323 3.55667 5.32468 4.04483 5.81284L5.45904 7.22705C5.9472 7.71521 6.73865 7.71521 7.22681 7.22705C7.71496 6.7389 7.71496 5.94744 7.22681 5.45929L5.81259 4.04507ZM19.9552 5.81284C20.4433 5.32468 20.4433 4.53323 19.9552 4.04507C19.467 3.55692 18.6756 3.55692 18.1874 4.04507L16.7732 5.45929C16.285 5.94744 16.285 6.7389 16.7732 7.22705C17.2613 7.71521 18.0528 7.71521 18.541 7.22705L19.9552 5.81284ZM2 10.75C1.30964 10.75 0.75 11.3096 0.75 12C0.75 12.6904 1.30964 13.25 2 13.25H4C4.69036 13.25 5.25 12.6904 5.25 12C5.25 11.3096 4.69036 10.75 4 10.75H2ZM20 10.75C19.3096 10.75 18.75 11.3096 18.75 12C18.75 12.6904 19.3096 13.25 20 13.25H22C22.6904 13.25 23.25 12.6904 23.25 12C23.25 11.3096 22.6904 10.75 22 10.75H20ZM7.22725 18.5408C7.71541 18.0526 7.71541 17.2611 7.22725 16.773C6.7391 16.2848 5.94764 16.2848 5.45948 16.773L4.04527 18.1872C3.55711 18.6754 3.55711 19.4668 4.04527 19.955C4.53343 20.4431 5.32488 20.4431 5.81304 19.955L7.22725 18.5408ZM18.5405 16.773C18.0524 16.2848 17.2609 16.2848 16.7728 16.773C16.2846 17.2611 16.2846 18.0526 16.7728 18.5408L18.187 19.955C18.6751 20.4431 19.4666 20.4431 19.9547 19.955C20.4429 19.4668 20.4429 18.6754 19.9547 18.1872L18.5405 16.773ZM13.25 20C13.25 19.3096 12.6904 18.75 12 18.75C11.3096 18.75 10.75 19.3096 10.75 20V22C10.75 22.6904 11.3096 23.25 12 23.25C12.6904 23.25 13.25 22.6904 13.25 22V20ZM12 7C14.7614 7 17 9.23858 17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7ZM15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12Z\" fill=\"currentColor\"/></>,\n [\"day\",\"sun\",\"light\",\"theme\"],\n);\n\nexport const SunFillIcon = makeIcon(\n 'SunFillIcon',\n <><path d=\"M13.25 2C13.25 1.30964 12.6904 0.75 12 0.75C11.3096 0.75 10.75 1.30964 10.75 2V4C10.75 4.69036 11.3096 5.25 12 5.25C12.6904 5.25 13.25 4.69036 13.25 4V2ZM5.81259 4.04507C5.32444 3.55692 4.53298 3.55692 4.04483 4.04507C3.55667 4.53323 3.55667 5.32468 4.04483 5.81284L5.45904 7.22705C5.9472 7.71521 6.73865 7.71521 7.22681 7.22705C7.71496 6.7389 7.71496 5.94744 7.22681 5.45929L5.81259 4.04507ZM19.9552 5.81284C20.4433 5.32468 20.4433 4.53323 19.9552 4.04507C19.467 3.55692 18.6756 3.55692 18.1874 4.04507L16.7732 5.45929C16.285 5.94744 16.285 6.7389 16.7732 7.22705C17.2613 7.71521 18.0528 7.71521 18.541 7.22705L19.9552 5.81284ZM2 10.75C1.30964 10.75 0.75 11.3096 0.75 12C0.75 12.6904 1.30964 13.25 2 13.25H4C4.69036 13.25 5.25 12.6904 5.25 12C5.25 11.3096 4.69036 10.75 4 10.75H2ZM20 10.75C19.3096 10.75 18.75 11.3096 18.75 12C18.75 12.6904 19.3096 13.25 20 13.25H22C22.6904 13.25 23.25 12.6904 23.25 12C23.25 11.3096 22.6904 10.75 22 10.75H20ZM7.22725 18.5408C7.71541 18.0526 7.71541 17.2611 7.22725 16.773C6.7391 16.2848 5.94764 16.2848 5.45948 16.773L4.04527 18.1872C3.55711 18.6754 3.55711 19.4668 4.04527 19.955C4.53343 20.4431 5.32488 20.4431 5.81304 19.955L7.22725 18.5408ZM18.5405 16.773C18.0524 16.2848 17.2609 16.2848 16.7728 16.773C16.2846 17.2611 16.2846 18.0526 16.7728 18.5408L18.187 19.955C18.6751 20.4431 19.4666 20.4431 19.9547 19.955C20.4429 19.4668 20.4429 18.6754 19.9547 18.1872L18.5405 16.773ZM13.25 20C13.25 19.3096 12.6904 18.75 12 18.75C11.3096 18.75 10.75 19.3096 10.75 20V22C10.75 22.6904 11.3096 23.25 12 23.25C12.6904 23.25 13.25 22.6904 13.25 22V20ZM17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7C14.7614 7 17 9.23858 17 12Z\" fill=\"currentColor\"/></>,\n [\"day\",\"sun\",\"light\",\"theme\",\"filled\"],\n);\n\nexport const TagIcon = makeIcon(\n 'TagIcon',\n <><path d=\"M15 7C13.8954 7 13 7.89543 13 9C13 10.1046 13.8954 11 15 11C16.1046 11 17 10.1046 17 9C17 7.89543 16.1046 7 15 7ZM12.4141 3C11.8836 3 11.3749 3.21071 10.9998 3.58579L2.49985 12.0858C1.7188 12.8668 1.7188 14.1332 2.49985 14.9142L9.08564 21.5C9.86669 22.281 11.133 22.281 11.9141 21.5L20.4141 13C20.7891 12.6249 20.9998 12.1162 20.9998 11.5858V5C20.9998 3.89543 20.1044 3 18.9998 3H12.4141ZM12.4141 5H18.9998V11.5858L10.4998 20.0858L3.91406 13.5L12.4141 5Z\" fill=\"currentColor\"/></>,\n [\"tag\",\"icon\"],\n);\n\nexport const TagFillIcon = makeIcon(\n 'TagFillIcon',\n <><path d=\"M10.9998 3.58579C11.3749 3.21071 11.8836 3 12.4141 3H18.9998C20.1044 3 20.9998 3.89543 20.9998 5V11.5858C20.9998 12.1162 20.7891 12.6249 20.4141 13L11.9141 21.5C11.133 22.281 9.86669 22.281 9.08564 21.5L2.49985 14.9142C1.7188 14.1332 1.7188 12.8668 2.49985 12.0858L10.9998 3.58579ZM15 11C16.1046 11 17 10.1046 17 9C17 7.89543 16.1046 7 15 7C13.8954 7 13 7.89543 13 9C13 10.1046 13.8954 11 15 11Z\" fill=\"currentColor\"/></>,\n [\"tag\",\"fill\",\"icon\"],\n);\n\nexport const ThumbUpIcon = makeIcon(\n 'ThumbUpIcon',\n <><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.50102 2.35995C8.95773 1.54682 9.81968 1 10.794 1C12.4393 1 13.6632 2.52007 13.313 4.12693L12.5272 7.82927H18.4064C19.7819 7.82927 21.013 8.68286 21.4953 9.97101C22.0138 11.3557 21.4648 12.547 20.6455 13.6394C21.2926 15.1642 21.2294 16.7689 20.1768 18.1175C20.7607 19.2853 20.7811 20.6252 19.9708 21.7056C19.3597 22.5204 18.4005 23 17.382 23H10.745C5.91528 23 2 19.0847 2 14.255C2 11.6056 3.24422 9.2106 4.91391 7.35624C6.34958 5.7618 7.57751 4.00416 8.50102 2.35995ZM10.2448 3.33937C9.25303 5.10509 7.94008 6.98432 6.40019 8.69452C4.95087 10.3041 4 12.2431 4 14.255C4 17.9802 7.01985 21 10.745 21H17.382C18.2823 21 18.892 20.0201 18.4875 19.2111C18.0525 18.341 18.0567 17.5832 18.6861 16.7769C19.1332 16.2041 19.2344 15.4339 18.9505 14.765C18.4676 13.627 18.7576 12.8233 19.4451 11.9066C19.7108 11.5523 19.7776 11.087 19.6223 10.6723C19.4324 10.1653 18.9478 9.82927 18.4064 9.82927H12.4971C11.2409 9.82927 10.3037 8.67229 10.5645 7.44348L11.3586 3.70203C11.5116 3.00522 10.5617 2.77519 10.2448 3.33937Z\" fill=\"currentColor\"/></>,\n [\"thumb-up\",\"like\",\"upvote\",\"approve\"],\n);\n\nexport const ThumbUpFillIcon = makeIcon(\n 'ThumbUpFillIcon',\n <><path d=\"M10.794 1.5C10.0107 1.5 9.31032 1.94007 8.93696 2.6048C7.99639 4.27939 6.7472 6.06743 5.28548 7.69081C3.67088 9.48398 2.5 11.765 2.5 14.255C2.5 18.8086 6.19142 22.5 10.745 22.5H17.382C18.2432 22.5 19.0541 22.0945 19.5708 21.4056C20.1926 20.5765 20.2926 19.4673 19.8292 18.5403C19.6409 18.1638 19.595 18.0503 19.8686 17.6998C20.6509 16.6974 20.8281 15.3495 20.3313 14.179C20.0759 13.5771 20.2555 13.326 20.6451 12.8066C21.2177 12.043 21.3617 11.0402 21.0271 10.1463C20.6178 9.05346 19.5734 8.32927 18.4064 8.32927H12.4971C12.1947 8.32927 11.9691 8.05074 12.0318 7.75491L12.8238 4.02365L12.8242 4.02185C13.1074 2.72613 12.1207 1.5 10.794 1.5Z\" fill=\"currentColor\"/></>,\n [\"thumb-up\",\"like\",\"upvote\",\"approve\",\"filled\"],\n);\n\nexport const TopicIcon = makeIcon(\n 'TopicIcon',\n <><path d=\"M2.5 4.5C2.5 3.39543 3.39543 2.5 4.5 2.5H9C10.1046 2.5 11 3.39543 11 4.5V9C11 10.1046 10.1046 11 9 11H4.5C3.39543 11 2.5 10.1046 2.5 9V4.5ZM9 4.5H4.5V9H9V4.5ZM13 4.5C13 3.39543 13.8954 2.5 15 2.5H19.5C20.6046 2.5 21.5 3.39543 21.5 4.5V9C21.5 10.1046 20.6046 11 19.5 11H15C13.8954 11 13 10.1046 13 9V4.5ZM19.5 4.5H15V9H19.5V4.5ZM2.5 15C2.5 13.8954 3.39543 13 4.5 13H9C10.1046 13 11 13.8954 11 15V19.5C11 20.6046 10.1046 21.5 9 21.5H4.5C3.39543 21.5 2.5 20.6046 2.5 19.5V15ZM9 15H4.5V19.5H9V15ZM13 15C13 13.8954 13.8954 13 15 13H19.5C20.6046 13 21.5 13.8954 21.5 15V19.5C21.5 20.6046 20.6046 21.5 19.5 21.5H15C13.8954 21.5 13 20.6046 13 19.5V15ZM19.5 15H15V19.5H19.5V15Z\" fill=\"currentColor\"/></>,\n [\"topic\",\"grid\",\"category\"],\n);\n\nexport const TopicFillIcon = makeIcon(\n 'TopicFillIcon',\n <><path d=\"M11 4.5C11 3.39543 10.1046 2.5 9 2.5H4.5C3.39543 2.5 2.5 3.39543 2.5 4.5V9C2.5 10.1046 3.39543 11 4.5 11H9C10.1046 11 11 10.1046 11 9V4.5ZM21.5 4.5C21.5 3.39543 20.6046 2.5 19.5 2.5H15C13.8954 2.5 13 3.39543 13 4.5V9C13 10.1046 13.8954 11 15 11H19.5C20.6046 11 21.5 10.1046 21.5 9V4.5ZM11 15C11 13.8954 10.1046 13 9 13H4.5C3.39543 13 2.5 13.8954 2.5 15V19.5C2.5 20.6046 3.39543 21.5 4.5 21.5H9C10.1046 21.5 11 20.6046 11 19.5V15ZM21.5 15C21.5 13.8954 20.6046 13 19.5 13H15C13.8954 13 13 13.8954 13 15V19.5C13 20.6046 13.8954 21.5 15 21.5H19.5C20.6046 21.5 21.5 20.6046 21.5 19.5V15Z\" fill=\"currentColor\"/></>,\n [\"topic\",\"grid\",\"category\",\"filled\"],\n);\n\nexport const TrashIcon = makeIcon(\n 'TrashIcon',\n <><path d=\"M11 10C11 9.44772 10.5523 9 10 9C9.44772 9 9 9.44772 9 10V16C9 16.5523 9.44772 17 10 17C10.5523 17 11 16.5523 11 16V10ZM14 9C14.5523 9 15 9.44772 15 10V16C15 16.5523 14.5523 17 14 17C13.4477 17 13 16.5523 13 16V10C13 9.44772 13.4477 9 14 9ZM9 2C7.34315 2 6 3.34315 6 5H4C3.44772 5 3 5.44772 3 6C3 6.55228 3.44772 7 4 7H4.06445L4.93998 20.133C5.01002 21.1836 5.88263 22 6.93555 22H17.0644C18.1174 22 18.99 21.1836 19.06 20.133L19.9356 7H20C20.5523 7 21 6.55229 21 6C21 5.44772 20.5523 5 20 5H18C18 3.34315 16.6569 2 15 2H9ZM6.93555 20L6.06889 7H17.9311L17.0644 20H6.93555ZM8 5C8 4.44772 8.44772 4 9 4H15C15.5523 4 16 4.44772 16 5H8Z\" fill=\"currentColor\"/></>,\n [\"trash\",\"icon\"],\n);\n\nexport const TrashFillIcon = makeIcon(\n 'TrashFillIcon',\n <><path d=\"M6 5C6 3.34315 7.34315 2 9 2H15C16.6569 2 18 3.34315 18 5H20C20.5523 5 21 5.44772 21 6C21 6.55229 20.5523 7 20 7H19.9356L19.06 20.133C18.99 21.1836 18.1174 22 17.0644 22H6.93555C5.88263 22 5.01002 21.1836 4.93998 20.133L4.06445 7H4C3.44772 7 3 6.55228 3 6C3 5.44772 3.44772 5 4 5H6ZM15 10C15 9.44772 14.5523 9 14 9C13.4477 9 13 9.44772 13 10V17C13 17.5523 13.4477 18 14 18C14.5523 18 15 17.5523 15 17V10ZM9 4C8.44772 4 8 4.44772 8 5H16C16 4.44772 15.5523 4 15 4H9ZM11 10C11 9.44772 10.5523 9 10 9C9.44772 9 9 9.44772 9 10V17C9 17.5523 9.44772 18 10 18C10.5523 18 11 17.5523 11 17V10Z\" fill=\"currentColor\"/></>,\n [\"trash\",\"fill\",\"icon\"],\n);\n\nexport const UpvoteIcon = makeIcon(\n 'UpvoteIcon',\n <><path d=\"M11.6623 3.85076C12.0331 2.73844 13.0835 2 14.2411 2C15.7446 2 17 3.21678 17 4.74342C17 5.85021 16.8617 6.91251 16.6805 8H19C20.6569 8 22 9.34315 22 11C22 13.7854 21.4653 16.5294 20.4314 19.1142C19.9758 20.2531 18.8726 21 17.6459 21H5C3.34315 21 2 19.6569 2 18V11C2 9.34315 3.34315 8 5 8H9.03162C10.1009 6.71688 11.1239 5.46616 11.6623 3.85076ZM8.5 10H5C4.44772 10 4 10.4477 4 11V18C4 18.5523 4.44772 19 5 19H8.5V10ZM10.5 19H17.6459C18.0548 19 18.4225 18.751 18.5744 18.3714C19.5141 16.0222 20 13.5317 20 11C20 10.4477 19.5523 10 19 10H15.5C14.8914 10 14.4136 9.4359 14.5136 8.8356C14.7413 7.46941 15 6.13253 15 4.74342C15 4.34433 14.6632 4 14.2411 4C13.9294 4 13.6535 4.20171 13.5597 4.48321C12.9289 6.37544 11.7536 7.85772 10.5 9.36205V19Z\" fill=\"currentColor\"/></>,\n [\"upvote\",\"icon\"],\n);\n\nexport const UpvoteFillIcon = makeIcon(\n 'UpvoteFillIcon',\n <><path d=\"M11.7863 3.47851C12.0806 2.59556 12.9069 2 13.8376 2C15.0318 2 15.9999 2.96808 15.9999 4.16228C16 5.5 15.5 8.00001 15.5 8.00001L18.9999 8C20.6567 8 21.9999 9.34315 21.9999 11C21.9999 13.7854 21.4652 16.5294 20.4312 19.1142C19.9756 20.2531 18.8725 21 17.6458 21H9V8C10.1252 6.75513 11.2446 5.1035 11.7863 3.47851ZM7 21H4.00011C2.89555 21 2.00012 20.1046 2.00011 19L2 10C1.99999 8.89545 2.89542 8.00001 3.99999 8.00001L7 8V21Z\" fill=\"currentColor\"/></>,\n [\"upvote\",\"fill\",\"icon\"],\n);\n\nexport const VerifiedIcon = makeIcon(\n 'VerifiedIcon',\n <><path d=\"M13.2973 1.79161C12.5498 1.15459 11.4504 1.15459 10.7029 1.79161L8.5364 3.63786L5.69898 3.86429C4.71996 3.94242 3.94254 4.71984 3.86441 5.69886L3.63799 8.53628L1.79174 10.7027C1.15471 11.4503 1.15471 12.5497 1.79174 13.2972L3.63799 15.4637L3.86441 18.3011C3.94254 19.2801 4.71996 20.0575 5.69898 20.1357L8.5364 20.3621L10.7029 22.2083C11.4504 22.8454 12.5498 22.8454 13.2973 22.2083L15.4638 20.3621L18.3012 20.1357C19.2802 20.0575 20.0577 19.2801 20.1358 18.3011L20.3622 15.4637L22.2085 13.2972C22.8455 12.5497 22.8455 11.4503 22.2085 10.7027L20.3622 8.53628L20.1358 5.69886C20.0577 4.71984 19.2802 3.94242 18.3012 3.86429L15.4638 3.63786L13.2973 1.79161ZM9.83364 5.16009L12.0001 3.31384L14.1666 5.16009C14.4869 5.43307 14.8852 5.59805 15.3047 5.63153L18.1421 5.85795L18.3686 8.69537C18.402 9.11491 18.567 9.51319 18.84 9.83351L20.6862 12L18.84 14.1664C18.567 14.4868 18.402 14.8851 18.3686 15.3046L18.1421 18.142L15.3047 18.3684C14.8852 18.4019 14.4869 18.5669 14.1666 18.8399L12.0001 20.6861L9.83364 18.8399C9.51331 18.5669 9.11503 18.4019 8.6955 18.3684L5.85808 18.142L5.63165 15.3046C5.59817 14.8851 5.4332 14.4868 5.16021 14.1664L3.31396 12L5.16021 9.83351C5.4332 9.51319 5.59817 9.11491 5.63165 8.69537L5.85808 5.85795L8.6955 5.63153C9.11503 5.59805 9.51331 5.43307 9.83364 5.16009ZM16.2072 10.7071C16.5977 10.3166 16.5977 9.6834 16.2072 9.29287C15.8167 8.90235 15.1835 8.90235 14.793 9.29287L11.0001 13.0858L9.20721 11.2929C8.81669 10.9023 8.18352 10.9023 7.793 11.2929C7.40247 11.6834 7.40247 12.3166 7.793 12.7071L10.293 15.2071C10.6835 15.5976 11.3167 15.5976 11.7072 15.2071L16.2072 10.7071Z\" fill=\"currentColor\"/></>,\n [\"verified\",\"badge\",\"approved\",\"trusted\"],\n);\n\nexport const VerifiedFillIcon = makeIcon(\n 'VerifiedFillIcon',\n <><path d=\"M10.7029 1.79161C11.4504 1.15459 12.5498 1.15459 13.2973 1.79161L15.4638 3.63786L18.3012 3.86429C19.2802 3.94242 20.0577 4.71984 20.1358 5.69886L20.3622 8.53628L22.2085 10.7027C22.8455 11.4503 22.8455 12.5497 22.2085 13.2972L20.3622 15.4637L20.1358 18.3011C20.0577 19.2801 19.2802 20.0575 18.3012 20.1357L15.4638 20.3621L13.2973 22.2083C12.5498 22.8454 11.4504 22.8454 10.7029 22.2083L8.5364 20.3621L5.69898 20.1357C4.71996 20.0575 3.94254 19.2801 3.86441 18.3011L3.63799 15.4637L1.79174 13.2972C1.15471 12.5497 1.15471 11.4503 1.79174 10.7027L3.63799 8.53628L3.86441 5.69886C3.94254 4.71984 4.71996 3.94242 5.69898 3.86429L8.5364 3.63786L10.7029 1.79161ZM16.2071 10.7071C16.5976 10.3166 16.5976 9.68342 16.2071 9.29289C15.8166 8.90237 15.1834 8.90237 14.7929 9.29289L11 13.0858L9.20711 11.2929C8.81658 10.9024 8.18342 10.9024 7.79289 11.2929C7.40237 11.6834 7.40237 12.3166 7.79289 12.7071L10.2929 15.2071C10.6834 15.5976 11.3166 15.5976 11.7071 15.2071L16.2071 10.7071Z\" fill=\"currentColor\"/></>,\n [\"verified\",\"badge\",\"approved\",\"trusted\",\"filled\"],\n);\n\nexport const XIcon = makeIcon(\n 'XIcon',\n <><path d=\"M4.29289 4.29289C4.68342 3.90237 5.31658 3.90237 5.70711 4.29289L12 10.5858L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.4142 12L19.7071 18.2929C20.0976 18.6834 20.0976 19.3166 19.7071 19.7071C19.3166 20.0976 18.6834 20.0976 18.2929 19.7071L12 13.4142L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.5858 12L4.29289 5.70711C3.90237 5.31658 3.90237 4.68342 4.29289 4.29289Z\" fill=\"currentColor\"/></>,\n [\"close\",\"dismiss\",\"x\",\"cancel\"],\n);\n\nexport const XCircleIcon = makeIcon(\n 'XCircleIcon',\n <><path d=\"M7.70029 16.2999C8.08689 16.6865 8.71369 16.6865 9.10029 16.2999L12.0003 13.3999L14.9003 16.2999C15.2869 16.6865 15.9137 16.6865 16.3003 16.2999C16.6869 15.9133 16.6869 15.2865 16.3003 14.8999L13.4003 11.9999L16.3003 9.09991C16.6869 8.71331 16.6869 8.08651 16.3003 7.69991C15.9137 7.31331 15.2869 7.31331 14.9003 7.69991L12.0003 10.5999L9.10029 7.69991C8.71369 7.31331 8.08689 7.31331 7.70029 7.69991C7.31369 8.08651 7.31369 8.71331 7.70029 9.09991L10.6003 11.9999L7.70029 14.8999C7.31369 15.2865 7.31369 15.9133 7.70029 16.2999ZM12.0002 22C6.47731 22 2.00002 17.5228 2.00006 11.9999C2.0001 6.47708 6.47732 1.99997 12.0001 1.99997C17.523 1.99997 22.0003 6.47717 22.0002 12C22.0002 17.5228 17.523 21.9999 12.0002 22ZM12.0003 19.9999C16.4186 19.9999 20.0003 16.4182 20.0003 11.9999C20.0003 7.58163 16.4186 3.99991 12.0003 3.99991C7.58201 3.99991 4.00029 7.58163 4.00029 11.9999C4.00029 16.4182 7.58201 19.9999 12.0003 19.9999Z\" fill=\"currentColor\"/></>,\n [\"close\",\"dismiss\",\"clear\",\"circle\",\"x\",\"cancel\"],\n);\n\nexport const XCircleFillIcon = makeIcon(\n 'XCircleFillIcon',\n <><path d=\"M7.70015 16.3C8.08675 16.6866 8.71355 16.6866 9.10015 16.3L12.0001 13.4L14.9002 16.3C15.2867 16.6866 15.9136 16.6866 16.3001 16.3C16.6867 15.9134 16.6867 15.2866 16.3001 14.9L13.4002 12L16.3001 9.1C16.6867 8.7134 16.6867 8.0866 16.3001 7.7C15.9136 7.3134 15.2867 7.3134 14.9001 7.7L12.0001 10.6L9.10015 7.7C8.71355 7.3134 8.08675 7.3134 7.70015 7.7C7.31355 8.0866 7.31355 8.7134 7.70015 9.1L10.6002 12L7.70015 14.9C7.31355 15.2866 7.31355 15.9134 7.70015 16.3ZM12 22C6.47714 22 2 17.5229 2 12C2 6.47721 6.47712 2.00006 11.9999 2.00003C17.5229 2 22.0001 6.47725 22 12.0002C21.9999 17.523 17.5228 22 12 22Z\" fill=\"currentColor\"/></>,\n [\"close\",\"dismiss\",\"clear\",\"circle\",\"x\",\"cancel\",\"filled\"],\n);\n\n/* Semantic aliases — call sites importing these names continue to\n resolve; the underlying glyph is the canonical icon. */\nexport const CopyIcon = DuplicateIcon;\nexport const MicIcon = MicrophoneIcon;\nexport const ViewIcon = EyeIcon;\nexport const ViewFillIcon = EyeFillIcon;\nexport const VisibleIcon = EyeIcon;\nexport const VisibleFillIcon = EyeFillIcon;\nexport const InvisibleIcon = EyeOffIcon;\nexport const InvisibleFillIcon = EyeOffFillIcon;\nexport const AddIcon = PlusIcon;\nexport const AddCircleIcon = PlusCircleIcon;\nexport const AddCircleFillIcon = PlusCircleFillIcon;\nexport const AddSquareIcon = PlusSquareIcon;\nexport const AddSquareFillIcon = PlusSquareFillIcon;\nexport const CloseIcon = XIcon;\nexport const CloseCircleIcon = XCircleIcon;\nexport const CloseCircleFillIcon = XCircleFillIcon;\nexport const CollapseIcon = ChevronUpIcon;\nexport const ExpandIcon = ChevronDownIcon;\nexport const BackwardIcon = ChevronLeftIcon;\nexport const BackwardCircleIcon = ChevronLeftCircleIcon;\nexport const BackwardCircleFillIcon = ChevronLeftCircleFillIcon;\nexport const ForwardIcon = ChevronRightIcon;\nexport const ForwardCircleIcon = ChevronRightCircleIcon;\nexport const ForwardCircleFillIcon = ChevronRightCircleFillIcon;\nexport const DownwardIcon = ArrowDownIcon;\nexport const DownwardCircleIcon = ArrowDownCircleIcon;\nexport const DownwardCircleFillIcon = ArrowDownCircleFillIcon;\nexport const UpwardIcon = ArrowUpIcon;\nexport const UpwardCircleIcon = ArrowUpCircleIcon;\nexport const UpwardCircleFillIcon = ArrowUpCircleFillIcon;\nexport const NotificationIcon = BellIcon;\nexport const NotificationFillIcon = BellFillIcon;\nexport const NotificationOffIcon = BellOffIcon;\nexport const NotificationOffFillIcon = BellOffFillIcon;\nexport const MoreIcon = EllipsisHorizontalIcon;\nexport const MoreFillIcon = EllipsisHorizontalFillIcon;\nexport const DayIcon = SunIcon;\nexport const DayFillIcon = SunFillIcon;\nexport const NightIcon = MoonIcon;\nexport const NightFillIcon = MoonFillIcon;\nexport const CompanyIcon = BuildingIcon;\nexport const CompanyFillIcon = BuildingFillIcon;\nexport const LockedIcon = LockIcon;\nexport const LockedFillIcon = LockFillIcon;\nexport const SecureIcon = ShieldIcon;\nexport const SecureFillIcon = ShieldFillIcon;\nexport const WarningIcon = ExclamationCircleIcon;\nexport const WarningFillIcon = ExclamationCircleFillIcon;\nexport const VoiceIcon = MicrophoneIcon;\nexport const VoiceFillIcon = MicrophoneFillIcon;\nexport const WebIcon = GlobeIcon;\nexport const WebFillIcon = GlobeFillIcon;\nexport const PhotoIcon = CameraIcon;\nexport const PhotoFillIcon = CameraFillIcon;\nexport const PictureIcon = ImageIcon;\nexport const PictureFillIcon = ImageFillIcon;\nexport const InsightsIcon = ChartBarIcon;\nexport const InsightsFillIcon = ChartBarFillIcon;\nexport const MultipleIcon = SquareStackIcon;\n\nexport const icons = {\n ArrowDownIcon,\n ArrowDownCircleIcon,\n ArrowDownCircleFillIcon,\n ArrowUpIcon,\n ArrowUpCircleIcon,\n ArrowUpCircleFillIcon,\n BarIcon,\n BarCircleIcon,\n BarCircleFillIcon,\n BarFillIcon,\n BellIcon,\n BellFillIcon,\n BellOffIcon,\n BellOffFillIcon,\n BookmarkIcon,\n BookmarkFillIcon,\n BriefcaseIcon,\n BriefcaseFillIcon,\n BuildingIcon,\n BuildingFillIcon,\n CameraIcon,\n CameraFillIcon,\n CampusIcon,\n CampusFillIcon,\n CardIcon,\n CardFillIcon,\n ChartBarIcon,\n ChartBarFillIcon,\n ChatIcon,\n ChatFillIcon,\n CheckCircleIcon,\n CheckCircleFillIcon,\n CheckboxIcon,\n CheckboxFillIcon,\n CheckedIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronLeftCircleIcon,\n ChevronLeftCircleFillIcon,\n ChevronRightIcon,\n ChevronRightCircleIcon,\n ChevronRightCircleFillIcon,\n ChevronUpIcon,\n CompensationIcon,\n CompensationFillIcon,\n ComposeIcon,\n ComposeFillIcon,\n DiscoverIcon,\n DiscoverFillIcon,\n DocsIcon,\n DocsFillIcon,\n DownloadIcon,\n DownvoteIcon,\n DownvoteFillIcon,\n DuplicateIcon,\n DuplicateFillIcon,\n EllipsisHorizontalIcon,\n EllipsisHorizontalFillIcon,\n EmbedIcon,\n ExclamationCircleIcon,\n ExclamationCircleFillIcon,\n ExtractIcon,\n ExtractFillIcon,\n EyeIcon,\n EyeFillIcon,\n EyeOffIcon,\n EyeOffFillIcon,\n FilterIcon,\n FilterFillIcon,\n FlagIcon,\n FlagFillIcon,\n GiftIcon,\n GiftFillIcon,\n GlobeIcon,\n GlobeFillIcon,\n HashTagIcon,\n HeadphonesIcon,\n HeadphonesFillIcon,\n HeartIcon,\n HeartFillIcon,\n HomeIcon,\n HomeFillIcon,\n ImageIcon,\n ImageFillIcon,\n InfoIcon,\n InfoFillIcon,\n InvitationIcon,\n InvitationFillIcon,\n LinkIcon,\n LocationIcon,\n LocationFillIcon,\n LockIcon,\n LockFillIcon,\n LoginIcon,\n LogoutIcon,\n MaleFillIcon,\n MegaphoneIcon,\n MegaphoneFillIcon,\n MentionIcon,\n MenuIcon,\n MicrophoneIcon,\n MicrophoneFillIcon,\n MixedboxIcon,\n MixedboxFillIcon,\n MoonIcon,\n MoonFillIcon,\n PlusIcon,\n PlusCircleIcon,\n PlusCircleFillIcon,\n PlusSquareIcon,\n PlusSquareFillIcon,\n PollIcon,\n PollFillIcon,\n ProfileIcon,\n ProfileFillIcon,\n PulseIcon,\n PulseFillIcon,\n RadioIcon,\n RadioFillIcon,\n ReactIcon,\n ReactFillIcon,\n RectangleIcon,\n RectangleFillIcon,\n RefreshIcon,\n ReplyIcon,\n ReplyFillIcon,\n ScrollTopIcon,\n SearchIcon,\n SearchFillIcon,\n SettingsIcon,\n SettingsFillIcon,\n ShareIcon,\n ShieldIcon,\n ShieldFillIcon,\n SquareStackIcon,\n StarIcon,\n StarFillIcon,\n StopIcon,\n StoryIcon,\n StoryFillIcon,\n SunIcon,\n SunFillIcon,\n TagIcon,\n TagFillIcon,\n ThumbUpIcon,\n ThumbUpFillIcon,\n TopicIcon,\n TopicFillIcon,\n TrashIcon,\n TrashFillIcon,\n UpvoteIcon,\n UpvoteFillIcon,\n VerifiedIcon,\n VerifiedFillIcon,\n XIcon,\n XCircleIcon,\n XCircleFillIcon,\n CopyIcon,\n MicIcon,\n ViewIcon,\n ViewFillIcon,\n VisibleIcon,\n VisibleFillIcon,\n InvisibleIcon,\n InvisibleFillIcon,\n AddIcon,\n AddCircleIcon,\n AddCircleFillIcon,\n AddSquareIcon,\n AddSquareFillIcon,\n CloseIcon,\n CloseCircleIcon,\n CloseCircleFillIcon,\n CollapseIcon,\n ExpandIcon,\n BackwardIcon,\n BackwardCircleIcon,\n BackwardCircleFillIcon,\n ForwardIcon,\n ForwardCircleIcon,\n ForwardCircleFillIcon,\n DownwardIcon,\n DownwardCircleIcon,\n DownwardCircleFillIcon,\n UpwardIcon,\n UpwardCircleIcon,\n UpwardCircleFillIcon,\n NotificationIcon,\n NotificationFillIcon,\n NotificationOffIcon,\n NotificationOffFillIcon,\n MoreIcon,\n MoreFillIcon,\n DayIcon,\n DayFillIcon,\n NightIcon,\n NightFillIcon,\n CompanyIcon,\n CompanyFillIcon,\n LockedIcon,\n LockedFillIcon,\n SecureIcon,\n SecureFillIcon,\n WarningIcon,\n WarningFillIcon,\n VoiceIcon,\n VoiceFillIcon,\n WebIcon,\n WebFillIcon,\n PhotoIcon,\n PhotoFillIcon,\n PictureIcon,\n PictureFillIcon,\n InsightsIcon,\n InsightsFillIcon,\n MultipleIcon,\n};\n","import { forwardRef } from 'react';\nimport { joinClasses } from '../spec-utils.js';\nimport { CheckboxIcon, CheckboxFillIcon } from '../icons/index.js';\n\n/* Check Button — Text Button shape with a required leading 24px checkbox\n glyph that flips outline → fill with the `checked` state, plus an\n optional 16px middle icon between the checkbox and the label. Sizes,\n appearances, and state recipe mirror `button/text` rung-for-rung; the\n structural delta is the always-present checkbox slot and the per-element\n 4px gap (`sys.layout.inline.xs`).\n\n Renders as `<button>` with toggle semantics — `aria-pressed` exposes the\n checked state. Consumers wire `onClick` to flip state; this is NOT a\n form checkbox input. */\nexport const ButtonCheck = forwardRef(function ButtonCheck({\n children,\n state,\n size = 'medium',\n appearance = 'default',\n checked = false,\n disabled = false,\n icon,\n className,\n ...rest\n}, ref) {\n const isDisabled = disabled || state === 'disabled';\n const cls = joinClasses(\n 'chorus-button--check',\n `chorus-button--check--size-${size}`,\n `chorus-button--check--appearance-${appearance}`,\n className,\n );\n const CheckGlyph = checked ? CheckboxFillIcon : CheckboxIcon;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cls}\n data-force-state={state}\n disabled={isDisabled}\n aria-pressed={checked}\n {...rest}\n >\n <span className=\"chorus-button--check__checkbox\" aria-hidden=\"true\">\n <CheckGlyph />\n </span>\n {icon ? (\n <span className=\"chorus-button--check__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"chorus-button--check__label\">{children}</span>\n </button>\n );\n});\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Chip\",\n \"family\": \"chip\",\n \"subcomponent\": \"filter\",\n \"description\": \"Selectable chip. Capsule-shaped toggle. Unselected = transparent fill + hairline outline so the chip adopts whatever surface it sits on; selected = inverse fill.\",\n \"element\": \"button\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"filter\"\n },\n \"selected\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Required, single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Facet glyph before label.\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"trailingIcon\": {\n \"required\": false,\n \"description\": \"Directional / dismiss glyph after label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.400\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"radius\": \"sys.radius.full\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"background\": \"transparent\",\n \"label\": \"sys.color.text.default\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.default\"\n },\n \"note\": \"Transparent fill so the chip adopts whatever surface sits behind it (page, raised card, sheet) without pinning to a fixed neutral step.\"\n },\n \"selected\": {\n \"background\": \"sys.color.background.inverse\",\n \"label\": \"sys.color.text.inverse\",\n \"border\": null\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the chip is in; never via plain mouse click.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"label\": \"sys.color.text.disabled\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.bold\"\n },\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border so the shape reads on any surface, plus disabled label. Overrides the rest/selected appearance.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the chip is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"radius below sys.radius.full — filter chip is always a fully-rounded pill\",\n \"filled gray rest state with no `selected` semantics — rest carries hairline outline + onSurface label; selected carries inverseSurface fill + inverseOnSurface label\",\n \"border declared via `border:` instead of inset box-shadow stroke\",\n \"trailing chevron / icon as a separate hit area — the entire chip is the click target\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Chip\",\n \"family\": \"chip\",\n \"subcomponent\": \"tag\",\n \"description\": \"Informational chip. Square-cornered metadata label. Passive (or dismissable via trailing ×). No leading icon. Two appearances: `default` paints the translucent `sys.color.background.neutral` scrim (~8% inverse-tone overlay — black in light, white in dark) so the tag adopts whatever surface sits behind it; `accent` paints a tonal pale-primary container (`sys.color.background.selected`) with primary label for tags that need to pop against the surface.\",\n \"element\": \"span\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"tag\"\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Dismiss glyph (×); when present, chip becomes interactive.\"\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Required, single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"trailingIcon\": {\n \"required\": false,\n \"description\": \"Dismiss / opt-out glyph after the label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.300\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.xs\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"radius\": \"sys.radius.sm\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"sys.color.background.neutral\",\n \"label\": \"sys.color.text.default\",\n \"border\": null,\n \"default\": true,\n \"note\": \"Background is the translucent inverse-tone scrim (`sys.color.background.neutral` — black 8% in light mode, white 8% in dark) so the tag harmonises with whatever surface sits behind it — body, raised card, BottomSheet — instead of pinning to a fixed neutral step. Same Banner-style fill used by Progress track, StatusTag neutral, and Skeleton; sys-color is theme-aware so a single token resolves correctly in both modes.\"\n },\n \"accent\": {\n \"background\": \"sys.color.background.selected\",\n \"label\": \"sys.color.text.link\",\n \"border\": null,\n \"note\": \"Tonal accent: pale primary container background with primary label. Sys-color tokens are theme-aware, so no separate dark binding is needed — the resolved tokens pick the right values per theme. Use for tags that should pop against the surface (e.g. Popular Tags in compose, highlighted hashtags) where the default overlay is too quiet.\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the chip is in; never via plain mouse click.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"label\": \"sys.color.text.disabled\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.bold\"\n },\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border so the shape reads on any surface, plus disabled label. Overrides the rest/selected appearance.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the chip is in. Applies only when the chip is interactive (a dismiss trailingIcon is present). The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"radius set to sys.radius.full (pill) — tag is a sys.radius.sm square-cornered metadata pill, not a capsule chip\",\n \"tag rendered as a clickable commit — tag is a metadata pill, not an action; the click target lives on the surrounding card / row\",\n \"raw color override on a tag — tone is the surrounding container's secondary text color\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Button\",\n \"family\": \"button\",\n \"subcomponent\": \"toggle\",\n \"description\": \"Toolbar-footprint toggle button. Inactive (urging) = primary fill that invites the commit; active (committed) = transparent fill with hairline outline that records the commit without re-soliciting it. Transparent fill lets the button sit on any host surface tier (page surface, surfaceContainer, surfaceContainerHigh) without re-painting a background that would clash with the host. Follow ↔ Following, Subscribe ↔ Subscribed, Join ↔ Joined.\",\n \"element\": \"button\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"toggle\"\n },\n \"active\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Whether the action has been committed. Maps to aria-pressed.\"\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Required, single line. Swap between the urging verb (\\\"Follow\\\") and the committed participle (\\\"Following\\\") at the consumer.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Context glyph before the label — most often a check appearing on commit.\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"trailingIcon\": {\n \"required\": false,\n \"description\": \"Directional / destination glyph after the label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.400\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"radius\": \"sys.radius.full\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"background\": \"sys.color.background.primary\",\n \"label\": \"sys.color.text.onFill\",\n \"border\": null\n },\n \"selected\": {\n \"background\": \"transparent\",\n \"label\": \"sys.color.text.default\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.default\"\n }\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the button is in; never via plain mouse click.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"containerOpacity\": \"sys.state.disabled\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the button is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"active state painted with sys.color.background.primary fill — active is transparent + hairline outline (the active state recedes, not asserts)\",\n \"active state painted with any opaque surface fill (surface, surfaceContainer, surfaceContainerHigh) — the committed form is transparent so the host surface shows through; do not re-bind to a tier'd fill\",\n \"rest state without an explicit `active={false}` — toggle is a binary contract, never tristate\",\n \"manual width override that breaks the full-card stretch when used inside ProfileCarousel.followAction\"\n ]\n}\n","import filterSpec from '../../../schema/components/chip/filter.spec.json';\nimport tagSpec from '../../../schema/components/chip/tag.spec.json';\nimport toggleButtonSpec from '../../../schema/components/button/toggle.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nconst SPECS = {\n filter: filterSpec,\n tag: tagSpec,\n toggle: toggleButtonSpec,\n};\n\nfunction pickAppearance(spec, appearance) {\n const appearances = spec.appearances || {};\n if (appearance && appearances[appearance]) return appearances[appearance];\n const defaultKey = Object.keys(appearances).find((k) => appearances[k]?.default);\n if (defaultKey) return appearances[defaultKey];\n return appearances.default ?? Object.values(appearances)[0];\n}\n\nfunction visualStyle(spec, selected, appearance) {\n const v = spec.selectionStates\n ? spec.selectionStates[selected ? 'selected' : 'unselected']\n : pickAppearance(spec, appearance);\n const style = {\n '--chip-label': tokenToCss(v.label),\n '--chip-border-width': v.border ? tokenToCss(v.border.width) : '0px',\n '--chip-border-color': v.border ? tokenToCss(v.border.color) : 'transparent',\n };\n // Skip inline `--chip-bg` when the appearance carries a separate dark binding\n // (`backgroundDark`). Inline custom properties always beat CSS class rules,\n // which would otherwise defeat the `[data-theme=\"dark\"]` override. The CSS\n // class is the source of truth for those appearances. For sys-color-driven\n // appearances (single theme-aware token) inline emission is safe.\n if (!v.backgroundDark) {\n style['--chip-bg'] = tokenToCss(v.background);\n }\n return style;\n}\n\nfunction sizingStyle(spec) {\n return {\n '--chip-min-height': tokenToCss(spec.sizing.minHeight),\n '--chip-padding-block': tokenToCss(spec.sizing.paddingBlock),\n '--chip-padding-inline': tokenToCss(spec.sizing.paddingInline),\n '--chip-label-inset': tokenToCss(spec.sizing.labelInset),\n '--chip-slot-gap': tokenToCss(spec.sizing.slotGap),\n '--chip-radius': tokenToCss(spec.sizing.radius),\n '--chip-icon-size': tokenToCss(spec.sizing.iconSize),\n '--chip-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--chip-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--chip-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--chip-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--chip-focus-outer-color': tokenToCss(spec.focusIndicator.ring.color),\n ...typoStyles(spec.sizing.labelTypo),\n };\n}\n\nexport function Chip({\n variant = 'filter',\n appearance,\n selected = false,\n state,\n leadingIcon,\n trailingIcon,\n disabled = false,\n className,\n children,\n style,\n ...rest\n}) {\n const spec = SPECS[variant] ?? filterSpec;\n const isToggle = Boolean(spec.selectionStates);\n const isSelected = isToggle && selected;\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const appearanceClass =\n !isToggle && appearance ? `chorus-chip--${spec.subcomponent}--${appearance}` : null;\n const className_ = joinClasses(\n 'chorus-chip',\n `chorus-chip--${spec.subcomponent}`,\n appearanceClass,\n isSelected && 'is-selected',\n className,\n );\n const composedStyle = { ...sizingStyle(spec), ...visualStyle(spec, isSelected, appearance), ...style };\n\n if (isToggle) {\n const ariaPressed = variant === 'toggle' ? Boolean(selected) : undefined;\n return (\n <button\n type=\"button\"\n className={className_}\n disabled={isDisabled}\n data-force-state={forcedState ?? undefined}\n aria-pressed={ariaPressed}\n style={composedStyle}\n {...rest}\n >\n {leadingIcon ? <span className=\"chorus-chip__icon\" aria-hidden=\"true\">{leadingIcon}</span> : null}\n {children ? <span className=\"chorus-chip__label\">{children}</span> : null}\n {trailingIcon ? <span className=\"chorus-chip__icon\" aria-hidden=\"true\">{trailingIcon}</span> : null}\n </button>\n );\n }\n\n // Tag — interactive only when trailingIcon is present (dismiss).\n const interactive = Boolean(trailingIcon);\n const Tag = interactive ? 'button' : 'span';\n return (\n <Tag\n {...(interactive ? { type: 'button', disabled: isDisabled } : {})}\n className={className_}\n data-force-state={forcedState ?? undefined}\n style={composedStyle}\n {...rest}\n >\n <span className=\"chorus-chip__label\">{children}</span>\n {trailingIcon ? <span className=\"chorus-chip__icon\" aria-hidden=\"true\">{trailingIcon}</span> : null}\n </Tag>\n );\n}\n","import { Chip } from '../Chip.jsx';\nimport { joinClasses } from '../spec-utils.js';\n\n/* Toolbar Button is a one-shot inline action whose `default` appearance\n delegates verbatim to Filter chip's unselected state — same min-height,\n padding, radius, label rung, icon size, hover/pressed/focus overlays,\n and focus ring. The semantic divergence (Toolbar Button fires an\n action; Filter toggles a selection) lives in the consumer's handler,\n not in the rendered DOM, so we let the chip render the chrome.\n\n `appearance=\"accent\"` adds a class modifier that overrides the\n `--chip-bg` / `--chip-label` plumbing vars to a primary fill — for the\n one Toolbar Button on a surface that IS the commit affordance (Page\n bar's \"Save\", sheet's \"Confirm\"). `appearance=\"inverse\"` swaps in the\n inverse-cluster pair (`inverseSurface` / `inverseOnSurface`) so the\n button reads as part of an inverse host (snackbars, coach-marks). The\n size, padding, radius, focus ring, and state overlays still come from\n Filter chip — only the colour pair flips. */\nexport function ButtonToolbar({ appearance = 'default', className, style, ...rest }) {\n const cls = joinClasses(\n appearance !== 'default' && `chorus-button--toolbar--${appearance}`,\n className,\n );\n /* The override goes through `style` (not a CSS class) because Chip\n emits the chip plumbing vars (`--chip-bg`, `--chip-label`,\n `--chip-border-color`) inline at render time, and CSS class rules\n can't beat inline-style specificity. Chip merges this `style` last\n in its `composedStyle`, so our overrides win cleanly. The\n `chorus-button--toolbar--<appearance>` class is kept as a static-\n markup parity hook — see styles.css. */\n let pairStyle = null;\n if (appearance === 'accent') {\n pairStyle = {\n '--chip-bg': 'var(--sys-color-background-primary)',\n '--chip-label': 'var(--sys-color-text-onFill)',\n '--chip-border-color': 'transparent',\n };\n } else if (appearance === 'inverse') {\n pairStyle = {\n '--chip-bg': 'var(--sys-color-background-inverse)',\n '--chip-label': 'var(--sys-color-text-inverse)',\n '--chip-border-color': 'transparent',\n };\n }\n return (\n <Chip\n variant=\"filter\"\n className={cls}\n style={pairStyle ? { ...pairStyle, ...style } : style}\n {...rest}\n />\n );\n}\n","import { Chip } from '../Chip.jsx';\n\n/* Toggle Button is a reversible-commit button whose visual chrome is the\n Toolbar Button / Filter capsule with a different container/label pair\n on each side of the toggle (primary fill when urging, surface+hairline\n when committed). The DOM and CSS-var machinery are identical to Chip's\n selectionStates branch, so we delegate verbatim and just rename the\n public boolean from `selected` (chip selection) to `active` (action\n committed). aria-pressed is set inside Chip when variant === 'toggle'. */\nexport function ButtonToggle({ active = false, ...rest }) {\n return <Chip variant=\"toggle\" selected={active} {...rest} />;\n}\n","import { forwardRef } from 'react';\nimport { ButtonStandard } from './internal/ButtonStandard.jsx';\nimport { ButtonFab } from './internal/ButtonFab.jsx';\nimport { ButtonIcon } from './internal/ButtonIcon.jsx';\nimport { ButtonText } from './internal/ButtonText.jsx';\nimport { ButtonCheck } from './internal/ButtonCheck.jsx';\nimport { ButtonToolbar } from './internal/ButtonToolbar.jsx';\nimport { ButtonToggle } from './internal/ButtonToggle.jsx';\n\nconst VARIANTS = {\n fab: ButtonFab,\n icon: ButtonIcon,\n text: ButtonText,\n check: ButtonCheck,\n toolbar: ButtonToolbar,\n toggle: ButtonToggle,\n};\n\nexport const Button = forwardRef(function Button({ variant, ...rest }, ref) {\n const Impl = (variant && VARIANTS[variant]) || ButtonStandard;\n return <Impl ref={ref} {...rest} />;\n});\n","import { useEffect } from 'react';\n\n/* useFocusTrap — while `active`, keeps Tab / Shift+Tab cycling inside the\n element `ref` points at, so keyboard focus can't escape a modal surface\n into the scrim-occluded page behind it. Part of the locked-primitive\n contract (AGENTS.md design principle 5) for Dialog and BottomSheet, both\n of which already manage initial focus and focus return themselves — this\n hook only owns the wrap, so it composes with that logic instead of\n replacing it.\n\n On each Tab it re-queries the focusable descendants (a modal's contents\n can change while open), filters out anything `disabled` or hidden\n (`offsetParent === null` skips `display:none` and detached subtrees),\n and wraps the edges: Tab off the last lands on the first, Shift+Tab off\n the first lands on the last. When the surface holds no focusable child\n it falls back to the container itself so focus still can't leak out. */\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nexport function useFocusTrap(ref, active) {\n useEffect(() => {\n if (!active) return undefined;\n const onKey = (e) => {\n if (e.key !== 'Tab') return;\n const container = ref.current;\n if (!container) return;\n const focusable = Array.from(\n container.querySelectorAll(FOCUSABLE_SELECTOR),\n ).filter((el) => !el.disabled && el.offsetParent !== null);\n // No focusable child — keep focus on the container so Tab can't reach\n // the page behind the scrim.\n if (focusable.length === 0) {\n e.preventDefault();\n container.focus({ preventScroll: true });\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const activeEl = document.activeElement;\n if (e.shiftKey) {\n if (activeEl === first || !container.contains(activeEl)) {\n e.preventDefault();\n last.focus({ preventScroll: true });\n }\n } else if (activeEl === last || !container.contains(activeEl)) {\n e.preventDefault();\n first.focus({ preventScroll: true });\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [ref, active]);\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\n/* Shared scrim-anchored-interruption hooks. Both Dialog and BottomSheet\n render into a portal at document.body, lock body scroll while open,\n and resolve their portal target on mount (so SSR doesn't reach for\n `document`). The behavior is identical, so it lives here instead of\n being copy-pasted in each component. */\n\nexport function useBodyScrollLock(locked) {\n useEffect(() => {\n if (!locked) return undefined;\n const previous = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => { document.body.style.overflow = previous; };\n }, [locked]);\n}\n\nexport function usePortalTarget() {\n const [target, setTarget] = useState(null);\n useEffect(() => {\n setTarget(typeof document !== 'undefined' ? document.body : null);\n }, []);\n return target;\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from './Button.jsx';\nimport { ChevronLeftIcon } from './icons/index.js';\nimport { useFocusTrap } from './internal/useFocusTrap.js';\nimport { useBodyScrollLock, usePortalTarget } from './internal/scrimPortal.js';\nimport { joinClasses } from './spec-utils.js';\n\nexport function BottomSheet({\n open,\n onClose,\n title,\n body,\n children,\n primaryAction,\n secondaryAction,\n onBack,\n backLabel = 'Back',\n inline = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const target = usePortalTarget();\n const scrimRef = useRef(null);\n const cardRef = useRef(null);\n const contentRef = useRef(null);\n const lastFocusedRef = useRef(null);\n const [overflowing, setOverflowing] = useState(false);\n useBodyScrollLock(open && !inline);\n // Trap Tab/Shift+Tab inside the card while modal so focus can't reach the\n // scrim-occluded page. Inline (docs) renders aren't modal, so no trap.\n useFocusTrap(cardRef, open && !inline);\n\n /* Mirror the virtual-keyboard height to the scrim as a bottom padding\n via --bottom-sheet-keyboard-inset. visualViewport shrinks when the\n keyboard opens; the inset translates the card up because the scrim\n uses align-items: flex-end. */\n useEffect(() => {\n if (!open || inline) return undefined;\n const vv = typeof window !== 'undefined' ? window.visualViewport : null;\n if (!vv) return undefined;\n const apply = () => {\n const inset = Math.max(0, window.innerHeight - vv.height - vv.offsetTop);\n scrimRef.current?.style.setProperty('--bottom-sheet-keyboard-inset', `${inset}px`);\n };\n apply();\n vv.addEventListener('resize', apply);\n vv.addEventListener('scroll', apply);\n return () => {\n vv.removeEventListener('resize', apply);\n vv.removeEventListener('scroll', apply);\n };\n }, [open, inline]);\n\n useEffect(() => {\n if (!open) return undefined;\n const el = contentRef.current;\n if (!el) return undefined;\n const measure = () => setOverflowing(el.scrollHeight > el.clientHeight + 1);\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n for (const child of el.children) ro.observe(child);\n return () => ro.disconnect();\n }, [open, children]);\n\n useEffect(() => {\n if (!open) return undefined;\n lastFocusedRef.current = document.activeElement;\n const primary = cardRef.current?.querySelector('.chorus-bottom-sheet__actions button');\n // preventScroll: focusing must not scroll the page to the button — body is\n // scroll-locked when modal, and inline (docs) renders would jump on mount.\n primary?.focus({ preventScroll: true });\n return () => {\n const last = lastFocusedRef.current;\n // preventScroll here too: restoring focus on close (and on dev\n // StrictMode's mount→cleanup→remount) must not scroll the page to the\n // trigger — stacked inline sheets would otherwise jump on mount.\n if (last && typeof last.focus === 'function') last.focus({ preventScroll: true });\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) return undefined;\n const onKey = (e) => { if (e.key === 'Escape') onClose?.(); };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, onClose]);\n\n if (!open) return null;\n if (!inline && !target) return null;\n\n const tree = (\n <div\n ref={scrimRef}\n className={joinClasses('chorus-bottom-sheet__scrim', inline && 'chorus-bottom-sheet__scrim--inline', className)}\n role=\"presentation\"\n onClick={() => onClose?.()}\n >\n <div\n ref={cardRef}\n className=\"chorus-bottom-sheet__card\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n aria-label={ariaLabel ?? title}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n <div className=\"chorus-bottom-sheet__handle\" aria-hidden=\"true\" />\n <div ref={contentRef} className=\"chorus-bottom-sheet__content\">\n {title ? (\n onBack ? (\n <div className=\"chorus-bottom-sheet__title-row\">\n <Button\n variant=\"icon\"\n icon={<ChevronLeftIcon />}\n aria-label={backLabel}\n onClick={onBack}\n />\n <h2 className=\"chorus-bottom-sheet__title\">{title}</h2>\n </div>\n ) : (\n <h2 className=\"chorus-bottom-sheet__title\">{title}</h2>\n )\n ) : null}\n {body ? <p className=\"chorus-bottom-sheet__body\">{body}</p> : null}\n {children}\n </div>\n {primaryAction || secondaryAction ? (\n <div className={joinClasses('chorus-bottom-sheet__actions', overflowing && 'is-elevated')}>\n {primaryAction ? (\n <Button appearance=\"primary\" size=\"large\" fullWidth onClick={primaryAction.onClick}>\n {primaryAction.label}\n </Button>\n ) : null}\n {secondaryAction ? (\n <Button appearance=\"secondary\" size=\"large\" fullWidth onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n\n return inline ? tree : createPortal(tree, target);\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Bubble — always-on annotation bubble. A small pill-shaped label with\n a caret/tail pointing at an anchor UI element. Distinct from Tooltip\n on three axes: persistent (Tooltip is transient), lower visual\n priority (no elevation, smaller padding, single line), and never\n occludes neighbours (host positions it inline). Ships with a default\n `sys.color.background.primary` / `sys.color.text.onFill` fill — both theme-stable\n so the bubble reads identically in light and dark mode. Operations\n re-tint per campaign by setting `--bubble-fill` and `--bubble-ink`\n on the bubble's inline style; the tail inherits the fill via\n `background: inherit`, so one declaration covers both surfaces.\n See schema/components/bubble/bubble.md. */\n\nexport function Bubble({\n children,\n tailSide = 'top',\n tailAlign = 'center',\n className,\n ...rest\n}) {\n return (\n <div\n className={joinClasses('chorus-bubble', className)}\n data-tail-side={tailSide}\n data-tail-align={tailAlign}\n role=\"note\"\n {...rest}\n >\n <span className=\"chorus-bubble__body\">{children}</span>\n <span className=\"chorus-bubble__tail\" aria-hidden=\"true\" />\n </div>\n );\n}\n","import { joinClasses } from './spec-utils.js';\n\n/* ButtonGroup — lays out two or more Buttons as one composition so consumers\n never hand-roll the wrapper div. Three forms, all sharing the family's 8px\n (`sys.layout.inline.md`) gap:\n\n • inline horizontal (default) — content-sized Buttons in a row\n (outlined left, primary right).\n • inline vertical (`orientation=\"vertical\"`) — full-width Buttons stacked\n (primary top, secondary below).\n • docked (`variant=\"docked\"`) — a footer bar pinned to the bottom of the\n app: full-bleed `sys.color.surface.default` fill, 16px (`sys.layout.container.md`)\n inset, the two Buttons split the row equally, and an upward\n `sys.elevation.sheet` shadow marks it as a layer above the scrolling\n body (the same elevation BottomSheet / SideSheet use). An optional\n `label` sits above the row in `sys.typo.body.md` (16px).\n\n Like the other bars, the docked form renders in flow and must NOT self-pin\n (no position: sticky/fixed) — PageShell owns the pinning. See\n schema/components/button/standard.md → Group / Docked action bar. */\nexport function ButtonGroup({\n variant = 'inline',\n orientation = 'horizontal',\n label,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const docked = variant === 'docked';\n return (\n <div\n className={joinClasses(\n 'chorus-button-group',\n docked && 'chorus-button-group--docked',\n orientation === 'vertical' && 'chorus-button-group--vertical',\n className,\n )}\n role=\"group\"\n aria-label={ariaLabel}\n {...rest}\n >\n {label != null ? (\n <div className=\"chorus-button-group__label\">{label}</div>\n ) : null}\n <div className=\"chorus-button-group__row\">{children}</div>\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Header\",\n \"family\": \"header\",\n \"subcomponent\": \"main\",\n \"description\": \"The loud member of the Header family — a labelled `onSurface` heading + optional trailing 'See all' Text Button. The leading label is rendered as a semantic `<h3>` by default; consumers may override the wrapping element via the `as` prop (e.g. `as=\\\"div\\\"` when the host already owns the heading semantics). Two sizes diverge only on the label typography — anatomy (slot grammar, trailing-button binding, alignment) is identical. Reached as `<Header>` (the family's primary export); its quieter sibling is [Sub](./sub.md) (`<SubHeader>`), a muted 14 group label. Full-bleed (mirrors Sub): a transparent background and its own inline padding — `container.md` (16), the same rail the List rows / Feed items it heads pay — so a bare `<Header>` and the content beneath it land on one shared rail with no host help. Asymmetric block padding (`stack.lg` 24 above, `stack.md` 16 below) carries the heading's own vertical rhythm. Hosts that bundle Header above their content (Carousel, DirectoryList, NavList, SideSheet column) stay full-bleed (they add no inline padding of their own) and absorb only the block padding into their stack rhythm — the 'one gutter, paid once' rule.\",\n \"element\": \"header\",\n \"props\": {\n \"size\": {\n \"type\": \"literal\",\n \"values\": [\"large\", \"medium\"],\n \"default\": \"large\",\n \"description\": \"Label typography rung. `large` (default) — `sys.typo.heading.md` (20 / Semibold) — the canonical section heading used by Section and other top-level page regions. `medium` — `sys.typo.heading.sm` (16 / Semibold) — denser host surfaces (in-sheet sub-section, bounded card, drawer column heading, secondary regions inside an already-headed page).\"\n },\n \"label\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Leading heading text. Single line; the consumer truncates upstream if the host width is too narrow.\"\n },\n \"headerAction\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"Trailing Text Button binding. Object: `{ label, href, onClick }`. Rendered as a Text Button at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`. The link-affordance rule keeps the navigational intent in the accent tone across hosts. Mutually exclusive with `trailingIcon`.\"\n },\n \"trailingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Drill-in [Icon Button](../button/icon.md) mode. Pass `true` to render the canonical chevron-right glyph inside a Button `variant=\\\"icon\\\"` `size=\\\"medium\\\"` (32 × 32 capsule, 16-glyph), or pass any 16px icon node to override the glyph. The trailing Icon Button owns its own tap target via `onClick` / `href`; the surrounding `<header>` element stays non-interactive. Supply an `aria-label` for the icon-only button (defaults to `\\\"Open <label>\\\"` when `label` is a string). Mutually exclusive with `headerAction` and `headerDropdown`.\"\n },\n \"headerDropdown\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"Trailing [Text Button dropdown](../button/text.md#dropdown) binding. Object: `{ label, onClick, open, 'aria-haspopup'?, 'aria-controls'? }`. Rendered as a Text Button at `size=\\\"xsmall\\\"` with the default appearance — label IS the current selected value ('Top', 'Last 7 days', 'All time'), and the trailing chevron flips between `ChevronDownIcon` (when `open` is falsy) and `ChevronUpIcon` (when `open` is true) as a state signal. Consumer owns the menu surface and the `open` state. Mutually exclusive with `headerAction` and `trailingIcon` — priority `trailingIcon` > `headerAction` > `headerDropdown` when more than one is set.\"\n },\n \"onClick\": {\n \"type\": \"function\",\n \"optional\": true,\n \"description\": \"Click handler. Honored when `trailingIcon` is set — wired to the trailing Icon Button's `onClick`.\"\n },\n \"href\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Link href. Honored when `trailingIcon` is set — wired to the trailing Icon Button.\"\n },\n \"as\": {\n \"type\": \"literal\",\n \"values\": [\"header\", \"div\"],\n \"default\": \"header\",\n \"description\": \"Wrapping element. Defaults to `<header>` for top-level / labelled-region hosts; use `as=\\\"div\\\"` when the surrounding host already carries the section semantics. The wrapper itself is never interactive — in `trailingIcon` mode the click target sits on the trailing Icon Button, not the wrapper.\"\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"Outer row. Flex with `space-between` so the label and the trailing action sit on opposite edges, separated by an 8px (`layout.inline.md`) gap. Full-bleed — transparent background and its own padding: `container.md` (16) inline (the shared content rail), `stack.lg` (24) block-start, `stack.md` (16) block-end — so the label lands on the same rail as the rows beneath it with no host help; bundling hosts add no inline padding of their own and absorb only the block padding.\"\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Heading text. `<h3>` by default. Size `large` → `sys.typo.heading.md`; size `medium` → `sys.typo.heading.sm`. Color `sys.color.text.default`.\"\n },\n \"action\": {\n \"required\": false,\n \"description\": \"Trailing Text Button. Fixed at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`. The label string comes from `headerAction.label`. Mutually exclusive with the icon slot below.\"\n },\n \"icon\": {\n \"required\": false,\n \"description\": \"Trailing [Icon Button](../button/icon.md) (Button `variant=\\\"icon\\\"` `size=\\\"medium\\\"`) hosting a 16px glyph (canonical: chevron-right). Its own tap target — clicks land on the Icon Button, not the surrounding header. Mutually exclusive with the action and dropdown slots.\",\n \"accepts\": [\"button\"],\n \"rendersAs\": \"button:icon\"\n },\n \"dropdown\": {\n \"required\": false,\n \"description\": \"Trailing [Text Button dropdown](../button/text.md#dropdown) (`size=\\\"xsmall\\\"`, default appearance) when `headerDropdown` is set. Label is `headerDropdown.label`; trailing chevron flips between `ChevronDownIcon` (closed) and `ChevronUpIcon` (open) tied to `headerDropdown.open`. Owns its own tap target — clicks land on the dropdown trigger, not the surrounding header. Mutually exclusive with the action and icon slots.\",\n \"accepts\": [\"button\"],\n \"rendersAs\": \"button:text (dropdown)\"\n }\n },\n \"sizing\": {\n \"containerGap\": \"sys.layout.inline.md\",\n \"containerAlign\": \"center\",\n \"containerJustify\": \"space-between\",\n \"large\": {\n \"labelTypo\": \"sys.typo.heading.md (20 / Semibold)\"\n },\n \"medium\": {\n \"labelTypo\": \"sys.typo.heading.sm (16 / Semibold)\"\n },\n \"labelColor\": \"sys.color.text.default\",\n \"actionSize\": \"Text Button xsmall, appearance accent\",\n \"iconButtonSize\": \"Button variant=\\\"icon\\\" size=\\\"medium\\\" (32 × 32 capsule, 16-glyph)\",\n \"iconColor\": \"sys.color.text.subtle (glyph inherits via `currentColor` from the Icon Button)\"\n },\n \"appearance\": {\n \"background\": \"transparent\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"paddingBlockStart\": \"sys.layout.stack.lg\",\n \"paddingBlockEnd\": \"sys.layout.stack.md\",\n \"note\": \"Full-bleed: transparent background (Header paints on whatever surface tier hosts it) + its own block & inline padding. Inline `container.md` (16) IS the shared content rail — the same inset the List rows / Feed items beneath the Header pay — so a bare `<Header>` and its content align with no host help. Block is asymmetric — `stack.lg` (24) above to break from the previous region, `stack.md` (16) below to bind the heading to the block it labels. Bundling hosts (Carousel, DirectoryList, NavList, SideSheet column) stay full-bleed — they add no inline padding of their own — and absorb only the block padding into their stack rhythm (Header's 24-above replaces the host's leading inset, its 16-below is the header↔body gap) — the 'one gutter, paid once' rule. NEVER give Header an opaque fill or wrap it in a `padding-inline` div.\"\n },\n \"states\": {\n \"description\": \"Header itself has no lifecycle states. The trailing action carries Text Button's hover / pressed / focus.\"\n },\n \"behavior\": {\n \"rendering\": \"When `label`, `headerAction`, `trailingIcon`, and `headerDropdown` are all omitted, the component renders nothing (no empty container). When only `label` is set the row collapses to a heading-only Header — the canonical 'labelled region without affordance' case.\",\n \"alignment\": \"Label and trailing affordance share the row's centre line; the label never wraps, the affordance keeps intrinsic width and never grows.\",\n \"linkAffordance\": \"In `headerAction` mode, the trailing action is always a Text Button — never a Standard Button, never a raw `<a>`, never an icon. In `trailingIcon` mode, the chevron is rendered as a Button `variant=\\\"icon\\\"` `size=\\\"medium\\\"` that owns its own tap target — the surrounding `<header>` element is decorative and never interactive. In `headerDropdown` mode, the trigger is rendered as a Text Button `size=\\\"xsmall\\\"` with a state-signalling chevron, and the consumer owns the menu surface and the `open` state.\",\n \"modeExclusivity\": \"`headerAction`, `trailingIcon`, and `headerDropdown` are mutually exclusive — priority when more than one is set: `trailingIcon` > `headerAction` > `headerDropdown`. Pick one mode per host.\"\n },\n \"forbidden\": [\n \"non-Text-Button trailing action in `headerAction` mode (Standard Button, Icon Button, raw <a>)\",\n \"label larger than heading-md or smaller than heading-sm — pick the size dial, do not custom-tune the typo\",\n \"headerAction without an href or onClick — the link affordance must commit somewhere\",\n \"trailingIcon without an onClick or href — an icon-only header that is non-interactive is decorative noise; reach for a labelled Section header instead\",\n \"headerDropdown without `label` (the trigger's label IS the current value — empty label is meaningless) or without `onClick` (the trigger must commit somewhere)\",\n \"multiple trailing modes together (headerAction + trailingIcon, headerAction + headerDropdown, trailingIcon + headerDropdown) — pick one\"\n ]\n}\n","'use client';\n\nimport headerSpec from '../../../schema/components/header/main.spec.json';\nimport { Button } from './Button.jsx';\nimport { ChevronDownIcon, ChevronUpIcon } from './icons/index.js';\nimport { tokenToCss, joinClasses } from './spec-utils.js';\n\n/* Header — labelled section heading + an optional trailing affordance.\n Two sizes (label typography axis):\n - large (default): heading-md (20 Semibold) — section heading used\n by Section and other top-level page regions\n - medium: heading-sm (16 Semibold) — denser host surfaces\n (in-sheet sub-section, bounded card, drawer\n column heading)\n\n Three trailing modes (mutually exclusive):\n 1. `headerAction` → Text Button at `size=\"xsmall\"`, `appearance=\"accent\"`\n (\"See all\" / \"+ Create channel\" / etc).\n The label-affordance rule keeps navigational\n intent in the accent tone.\n 2. `trailingIcon` → trailing Icon Button (Button `variant=\"icon\"`,\n `size=\"medium\"` — 32 × 32 around a 16px glyph),\n canonical drill-in chevron. The Icon Button is\n its own tap target — the surrounding `<header>`\n stays non-interactive. Pass `trailingIcon` as\n a boolean to get the default chevron-right\n glyph, or as a node to override.\n Supply `aria-label` (e.g. `\"Open all\"`) so\n the icon-only button has a screen-reader name.\n 3. `headerDropdown` → trailing Text Button dropdown (size=\"xsmall\",\n default appearance) whose label IS the current\n selected value and whose trailing chevron flips\n with `open` as a state signal — the canonical\n \"Sort by\", \"Filter\", \"Range\" disclosure pattern\n described in schema/components/button/text.md\n §Dropdown. Consumer owns the menu surface and\n the `open` state; Header only renders the\n trigger.\n\n When none of label / headerAction / trailingIcon / headerDropdown is\n set the component renders nothing (no empty container). When only\n `label` is set the row collapses to a single heading with no trailing\n slot — the canonical \"labelled region without affordance\" case. */\n/* Self-inset — Header is full-bleed (mirrors SubHeader): a transparent\n background plus its own padding from the spec. The inline inset is\n `container.md` (16) — the same rail the rows beneath it pay — so a bare\n `<Header>` and its content align with no host help; block padding (24\n above / 16 below) carries the heading's own rhythm. Bundling hosts add\n no inline padding of their own and absorb only the block padding via\n CSS (see styles.css). */\nfunction headerPaddingStyle(spec) {\n const a = spec.appearance;\n return {\n '--header-padding-inline': tokenToCss(a.paddingInline),\n '--header-padding-block-start': tokenToCss(a.paddingBlockStart),\n '--header-padding-block-end': tokenToCss(a.paddingBlockEnd),\n };\n}\n\nexport function Header({\n size = 'large',\n label,\n headerAction,\n trailingIcon,\n headerDropdown,\n onClick,\n href,\n as: Tag = 'header',\n className,\n style,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n if (!label && !headerAction && !trailingIcon && !headerDropdown) return null;\n\n const useIconMode = !!trailingIcon;\n const useDropdownMode = !useIconMode && !headerAction && !!headerDropdown;\n const iconNode =\n trailingIcon === true || trailingIcon === undefined ? (\n <ChevronDownIcon size={16} />\n ) : (\n trailingIcon\n );\n const dropdownOpen = !!headerDropdown?.open;\n\n return (\n <Tag\n className={joinClasses('chorus-header', className)}\n data-size={size}\n style={{ ...headerPaddingStyle(headerSpec), ...style }}\n {...rest}\n >\n {label ? <h3 className=\"chorus-header__label\">{label}</h3> : <span />}\n {useIconMode ? (\n <Button\n variant=\"icon\"\n size=\"medium\"\n className=\"chorus-header__icon chorus-header__icon--chevron\"\n icon={iconNode}\n aria-label={ariaLabel ?? (typeof label === 'string' ? `Open ${label}` : 'Open')}\n onClick={onClick}\n {...(href ? { as: 'a', href } : null)}\n />\n ) : headerAction ? (\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"accent\"\n className=\"chorus-header__action\"\n href={headerAction.href ?? '#'}\n onClick={headerAction.onClick}\n leadingIcon={headerAction.leadingIcon}\n trailingIcon={headerAction.trailingIcon}\n >\n {headerAction.label}\n </Button>\n ) : useDropdownMode ? (\n <Button\n variant=\"text\"\n size=\"xsmall\"\n className=\"chorus-header__dropdown\"\n trailingIcon={dropdownOpen ? <ChevronUpIcon /> : <ChevronDownIcon />}\n aria-haspopup={headerDropdown['aria-haspopup'] ?? 'listbox'}\n aria-expanded={dropdownOpen}\n aria-controls={headerDropdown['aria-controls']}\n onClick={headerDropdown.onClick}\n >\n {headerDropdown.label}\n </Button>\n ) : null}\n </Tag>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { joinClasses } from './spec-utils.js';\nimport { Badge } from './Badge.jsx';\n\n/* Thumbnail — small-rung circular image. Pure visual primitive with two\n optional corner badges (updateDot top-right, logoBadge bottom-right).\n The schema spec (schema/components/thumbnail/thumbnail.md) is the\n source of truth for the size ladder and the dot-size break at the 32\n rung. The ladder is exposed as a numeric `size` prop so consumers can\n pass the raw pixel rung directly — there is no t-shirt naming because\n the design language already refers to \"the 48 thumbnail\", \"the 24\n thumbnail\" in product specs.\n\n The component never falls back to text — `image` is the only content\n slot. Consumers pass `src` (and `alt`); when the asset hasn't loaded\n the surface tone alone holds the row's rhythm.\n\n Load-failure handling: a CSS `background-image` placeholder is always\n painted on `.chorus-thumbnail__image`. When `<img>` is present, it\n overlays the placeholder. If the asset 404s or fails to decode, we\n drop the <img> from the tree so the background placeholder becomes\n visible — otherwise the browser paints its broken-image glyph on top\n and the slot looks worse than \"no image at all\". The failed-src\n bookkeeping is keyed by URL so a later prop change to a fresh src\n re-tries the load. */\n\nconst SIZES = [16, 20, 24, 32, 40, 48, 56];\n\nfunction normalizeSize(size) {\n return SIZES.includes(size) ? size : 48;\n}\n\nexport function Thumbnail({\n size = 48,\n src,\n alt = '',\n updateDot = false,\n logoBadge,\n outlined = false,\n className,\n style,\n ...rest\n}) {\n const px = normalizeSize(size);\n /* Update dot picks the matching Badge `dot-*` rung — `dot-md` (8×8)\n at the 32 / 40 / 48 / 56 rungs, `dot-sm` (6×6) below — so the corner\n flag, the rung name, and the Badge family stay in lockstep. */\n const dotSize = px >= 32 ? 'dot-md' : 'dot-sm';\n const [failedSrc, setFailedSrc] = useState(null);\n const [failedBadgeSrc, setFailedBadgeSrc] = useState(null);\n const imgSrc = src && src !== failedSrc ? src : null;\n const badgeSrc = logoBadge?.src && logoBadge.src !== failedBadgeSrc ? logoBadge.src : null;\n return (\n <span\n className={joinClasses(\n 'chorus-thumbnail',\n `chorus-thumbnail--${px}`,\n outlined && 'chorus-thumbnail--outlined',\n className,\n )}\n style={{\n '--thumb-size': `${px}px`,\n ...style,\n }}\n {...rest}\n >\n <span className=\"chorus-thumbnail__image\">\n {imgSrc ? <img src={imgSrc} alt={alt} onError={() => setFailedSrc(src)} /> : null}\n </span>\n {updateDot ? (\n <Badge size={dotSize} className=\"chorus-thumbnail__dot\" />\n ) : null}\n {logoBadge ? (\n <span className=\"chorus-thumbnail__badge\" aria-hidden=\"true\">\n {badgeSrc ? <img src={badgeSrc} alt=\"\" onError={() => setFailedBadgeSrc(logoBadge.src)} /> : null}\n </span>\n ) : null}\n </span>\n );\n}\n","'use client';\n\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { VerifiedFillIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\n\n/* EntryRow — the shared image + label + trailing-action cluster.\n One presentational atom rendered by BOTH:\n - List (variant=\"entry\"): one EntryRow per row, wrapped in the\n list's `chorus-list__row` (which owns padding / divider / state /\n keyboard), and\n - PostCarousel: the card's attribution header.\n It is the single source of truth for the directory-entry combo —\n leading Thumbnail + identity column (optional verified mark + label +\n optional inline count + optional stacked secondary) + optional\n single-line description + optional trailing action. The host owns the\n surrounding chrome; EntryRow owns only the inner cluster geometry. */\n\nexport function EntryRow({\n thumbnail,\n thumbnailSize = 40,\n verified = false,\n label,\n count,\n secondary,\n description,\n trailing,\n className,\n ...rest\n}) {\n return (\n <div className={joinClasses('chorus-entry-row', className)} {...rest}>\n {thumbnail ? (\n <span className=\"chorus-entry-row__leading\">\n <Thumbnail size={thumbnailSize} {...thumbnail} />\n </span>\n ) : null}\n <span className=\"chorus-entry-row__label-col\">\n <span className=\"chorus-entry-row__identity\">\n <span className=\"chorus-entry-row__primary-row\">\n {verified ? (\n <span className=\"chorus-entry-row__verified\" aria-label=\"Verified\">\n <VerifiedFillIcon />\n </span>\n ) : null}\n <span className=\"chorus-entry-row__label\">{label}</span>\n {count != null ? (\n <span className=\"chorus-entry-row__count\">{count}</span>\n ) : null}\n </span>\n {secondary ? (\n <span className=\"chorus-entry-row__secondary\">{secondary}</span>\n ) : null}\n </span>\n {description ? (\n <span className=\"chorus-entry-row__description\">{description}</span>\n ) : null}\n </span>\n {trailing ? (\n <span\n className=\"chorus-entry-row__trailing\"\n data-nested-action=\"\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {trailing}\n </span>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useId, useRef, useState } from 'react';\nimport { ChevronDownIcon, RadioIcon, RadioFillIcon } from './icons/index.js';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { EntryRow } from './EntryRow.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* List — vertical sequence of rows for menus, settings panels, picker\n sheets. One anatomy (row: leading + label column + trailing) drives\n the interaction model via `variant`:\n - standard (default): rows fire `onClick` per item; no selection\n state. A row opts into a leading 40-rung\n Thumbnail (the image type) by passing\n `item.thumbnail` — no separate variant.\n - radio: single-select picker — controlled via `value` +\n `onChange(value)` on the List itself\n\n Any row may opt into a trailing drill-in chevron with `item.nav: true`\n (the former `nav` variant, now a per-item case) — it routes the row to\n another surface. On a radio row it marks a major category that opens a\n second screen. A per-item `trailingIcon` overrides the auto chevron.\n\n A Standard row may also embed a Banner below its text group via\n `item.banner` — the row stacks (text group over a full-width Banner,\n 8px apart) and the Banner is a nested-action region (its controls\n never commit the row).\n\n The whole row is the interactive target in every variant. The leading\n radio indicator is decorative — keyboard focus, hover overlay, and\n click target all sit on the row. */\n\nfunction RadioIndicator({ selected }) {\n const Glyph = selected ? RadioFillIcon : RadioIcon;\n return (\n <span className={joinClasses('chorus-list__radio', selected && 'is-selected')} aria-hidden=\"true\">\n <Glyph size={24} />\n </span>\n );\n}\n\nconst ENTRY_SIZE_TO_PX = { small: 32, medium: 40, large: 48, xlarge: 56 };\n\nexport function List({\n variant = 'standard',\n value,\n onChange,\n items = [],\n embedded = false,\n size = 'medium',\n divider = true,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const isRadio = variant === 'radio';\n const isEntry = variant === 'entry';\n const entryThumbSize = ENTRY_SIZE_TO_PX[size] ?? 40;\n const role = isRadio ? 'radiogroup' : 'list';\n const groupName = useId();\n const rowsRef = useRef([]);\n const containerRef = useRef(null);\n const [focusIndex, setFocusIndex] = useState(0);\n useFullBleedGuard(containerRef, 'List');\n\n const onRowKey = useCallback(\n (e, idx, item) => {\n const last = items.length - 1;\n let next = idx;\n if (e.key === 'ArrowDown') next = idx === last ? 0 : idx + 1;\n else if (e.key === 'ArrowUp') next = idx === 0 ? last : idx - 1;\n else if (e.key === 'Home') next = 0;\n else if (e.key === 'End') next = last;\n else if ((e.key === ' ' || e.key === 'Enter') && isRadio) {\n e.preventDefault();\n if (!item.disabled) onChange?.(item.value);\n return;\n } else {\n return;\n }\n e.preventDefault();\n setFocusIndex(next);\n rowsRef.current[next]?.focus();\n },\n [items, isRadio, onChange],\n );\n\n return (\n <div\n ref={containerRef}\n className={joinClasses('chorus-list', `chorus-list--${variant}`, className)}\n role={role}\n aria-label={ariaLabel}\n data-embedded={embedded ? 'true' : undefined}\n data-size={isEntry ? size : undefined}\n {...rest}\n >\n {items.map((item, idx) => {\n const selected = isRadio && item.value === value;\n const isFocusable = idx === focusIndex;\n const onClick = () => {\n if (item.disabled) return;\n if (isRadio) onChange?.(item.value);\n item.onClick?.();\n };\n // The horizontal row line — leading + text group + trailing.\n // Reused as-is for a plain row, or nested above an embedded\n // Banner inside `chorus-list__row-main` when `item.banner` is set.\n // Skipped for entry rows, which render via <EntryRow> below.\n const rowMain = isEntry ? null : (\n <>\n {isRadio ? (\n <span className=\"chorus-list__leading\">\n <RadioIndicator selected={selected} />\n </span>\n ) : item.thumbnail ? (\n <span className=\"chorus-list__leading chorus-list__leading--image\">\n <Thumbnail size={40} {...item.thumbnail} />\n </span>\n ) : item.icon ? (\n <span className=\"chorus-list__leading chorus-list__leading--icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span className=\"chorus-list__label-col\">\n <span className=\"chorus-list__primary-row\">\n <span className=\"chorus-list__label\">{item.label}</span>\n {item.count != null ? (\n <span className=\"chorus-list__count\">{item.count}</span>\n ) : null}\n </span>\n {item.supportingText ? (\n <span className=\"chorus-list__supporting\">{item.supportingText}</span>\n ) : null}\n </span>\n {item.nav && !item.trailingIcon ? (\n <span className=\"chorus-list__trailing chorus-list__nav-chevron\" aria-hidden=\"true\">\n <ChevronDownIcon size={16} />\n </span>\n ) : item.trailingIcon ? (\n <span\n className=\"chorus-list__trailing\"\n data-nested-action=\"\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {item.trailingIcon}\n </span>\n ) : null}\n </>\n );\n return (\n <div\n key={item.value ?? idx}\n ref={(el) => { rowsRef.current[idx] = el; }}\n role={isRadio ? 'radio' : 'listitem'}\n aria-checked={isRadio ? selected : undefined}\n aria-disabled={item.disabled || undefined}\n tabIndex={item.disabled ? -1 : (isFocusable ? 0 : -1)}\n data-selected={selected || undefined}\n data-strong={item.strong ? 'true' : undefined}\n data-divider={(divider === false || item.divider === false) ? 'false' : undefined}\n data-force-state={item.forcedState ?? undefined}\n className={joinClasses(\n 'chorus-list__row',\n selected && 'is-selected',\n item.disabled && 'is-disabled',\n )}\n onClick={onClick}\n onKeyDown={(e) => onRowKey(e, idx, item)}\n onFocus={() => setFocusIndex(idx)}\n data-group={isRadio ? groupName : undefined}\n >\n {isEntry ? (\n <EntryRow\n thumbnail={item.thumbnail}\n thumbnailSize={entryThumbSize}\n label={item.label}\n count={item.count}\n secondary={item.secondary}\n description={item.description}\n trailing={item.trailingIcon}\n />\n ) : item.banner ? (\n // Embedded-Banner row — the text group stacks over a Banner\n // that spans the row's full content width, 8px (stack.xs)\n // below. The Banner is a nested action region: its own\n // controls never commit the row, and the row's hover/press\n // overlay is suppressed over it (see styles.css).\n <span className=\"chorus-list__stack\">\n <span className=\"chorus-list__row-main\">{rowMain}</span>\n <span\n className=\"chorus-list__banner\"\n data-nested-action=\"\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {item.banner}\n </span>\n </span>\n ) : (\n rowMain\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Header } from './Header.jsx';\nimport { List } from './List.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* SuggestionList — a vertically-stacked block of follow suggestions\n rendered as a swipeable pager. Each page shows exactly three rows\n that follow the [list/entry](../../schema/components/list/entry.md)\n visual contract at the `xlarge` rung (56 Thumbnail + identity group\n of label + secondary follower count flush with line-height-only\n spacing + description with `ref.space.25` (2) separator + trailing\n Toggle Button). The next page peeks at the trailing side of the\n viewport to invite the horizontal swipe. Anatomy is entity-agnostic\n — suggested channels, people, companies, topics all share the same\n shape.\n\n The component is presentation-only for the row body — tapping the\n avatar / text column does not route. The only commit affordance per\n row is the trailing Toggle Button (own hit target, stops click\n propagation); `active` state is owned by the consumer (forwarded\n through each item's `active` + `onToggle`).\n Pages of three are a hard contract: when `items.length` is not a\n multiple of three, the last page is padded with empty placeholders\n so the swipe rhythm holds. */\n\nconst ROWS_PER_PAGE = 3;\n\nfunction chunk(items, size) {\n const out = [];\n for (let i = 0; i < items.length; i += size) {\n out.push(items.slice(i, i + size));\n }\n if (out.length === 0) return out;\n const last = out[out.length - 1];\n while (last.length < size) last.push(null);\n return out;\n}\n\nexport function SuggestionList({\n label,\n headerAction,\n items = [],\n followLabel = 'Follow',\n followingLabel = 'Following',\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const pages = chunk(items, ROWS_PER_PAGE);\n const ref = useRef(null);\n useFullBleedGuard(ref, 'SuggestionList');\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-suggestion-list', className)}\n aria-label={ariaLabel ?? label}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <Header label={label} headerAction={headerAction} />\n <div className=\"chorus-suggestion-list__pager\" role=\"group\" aria-label=\"Suggestion pages\">\n {pages.map((page, pageIdx) => {\n const realItems = page.filter(Boolean);\n const padCount = page.length - realItems.length;\n return (\n <div key={pageIdx} className=\"chorus-suggestion-list__page\">\n <List\n variant=\"entry\"\n size=\"xlarge\"\n embedded\n items={realItems.map((item, rowIdx) => ({\n value: item.value ?? `row-${pageIdx}-${rowIdx}`,\n label: item.name,\n secondary: item.followers,\n description: item.description,\n thumbnail: item.thumbnail ?? { alt: item.name },\n trailingIcon: (\n <Button variant=\"toggle\" active={!!item.active} onClick={item.onToggle}>\n {item.active ? followingLabel : followLabel}\n </Button>\n ),\n }))}\n />\n {padCount > 0\n ? Array.from({ length: padCount }).map((_, padIdx) => (\n <div\n key={`pad-${padIdx}`}\n className=\"chorus-suggestion-list__row--pad\"\n aria-hidden=\"true\"\n />\n ))\n : null}\n </div>\n );\n })}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Header } from './Header.jsx';\nimport { List } from './List.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* DirectoryList — labelled block of follow-able entries rendered as a\n single vertical scroll (no pager). Sits next to SuggestionList in\n the design: SuggestionList is a swipeable peek (3 rows / page at the\n xlarge 56 rung); DirectoryList is the full directory at the\n list/entry `large` (48) rung with no horizontal motion. Reach for\n DirectoryList on browse / \"new channels\" / \"people you may know\"\n surfaces where the full set is meant to be scanned vertically and\n each entry's trailing Toggle Button commits a follow in place. */\nexport function DirectoryList({\n label,\n headerAction,\n items = [],\n followLabel = 'Follow',\n followingLabel = 'Following',\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'DirectoryList');\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-directory-list', className)}\n aria-label={ariaLabel ?? label}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <Header label={label} headerAction={headerAction} />\n <List\n variant=\"entry\"\n size=\"large\"\n embedded\n divider={false}\n items={items.map((item, idx) => ({\n value: item.value ?? `row-${idx}`,\n label: item.name,\n secondary: item.followers,\n description: item.description,\n thumbnail: item.thumbnail ?? { alt: item.name },\n trailingIcon: (\n <Button variant=\"toggle\" active={!!item.active} onClick={item.onToggle}>\n {item.active ? followingLabel : followLabel}\n </Button>\n ),\n }))}\n />\n </section>\n );\n}\n","'use client';\n\nimport { useMemo, useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Header } from './Header.jsx';\nimport { List } from './List.jsx';\nimport { ChevronRightIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* NavList — labelled block of label-only nav rows (each row routes\n via an `href` / `onClick`; trailing slot carries a default chevron\n Icon Button). Reach for it on category indexes, settings menus,\n and any \"pick a sub-page\" surface where each row is purely a route\n target and no leading thumbnail belongs.\n\n Bundles a `<Header>` over `<List variant=\"entry\">` rendered label-\n only — every row drops `thumbnail` so the entry sub's leading\n column collapses and the label sits flush at the 16 inline rail.\n `supportingText` is forwarded to the entry sub's `description`\n slot. The trailing slot is filled with a default Icon Button\n (`variant=\"icon\"`, `size=\"medium\"`, `icon={<ChevronRightIcon />}`)\n that mirrors the row's route; per-item `trailingIcon` overrides. */\nexport function NavList({\n label,\n headerAction,\n items = [],\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'NavList');\n const entryItems = useMemo(\n () =>\n items.map(({ supportingText, trailingIcon, ...item }) => ({\n ...item,\n description: supportingText,\n trailingIcon:\n trailingIcon ?? (\n <Button\n variant=\"icon\"\n size=\"medium\"\n aria-label={item.label}\n icon={<ChevronRightIcon />}\n onClick={item.onClick}\n />\n ),\n })),\n [items],\n );\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-nav-list', className)}\n aria-label={ariaLabel ?? label}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <Header label={label} headerAction={headerAction} />\n <List variant=\"entry\" embedded items={entryItems} />\n </section>\n );\n}\n","import { useEffect } from 'react';\n\n/* useScrollOverflow — toggles `data-overflow-start` / `data-overflow-end`\n on a horizontally-scrolling element so CSS can paint the Edge fade\n affordance only when there's hidden content past the visible edge.\n\n Both attributes resolve to `\"true\"` / `\"false\"` strings so the CSS\n selector reads naturally: `[data-overflow-end=\"true\"]`. The end flag\n means \"more content lies past the right edge\" — paint the trailing\n fade. The start flag means \"the visitor has scrolled past the\n leading edge\" — used by future leading-edge fades, currently unused\n by any variant.\n\n Re-measures on user scroll (passive listener) and on container\n resize (ResizeObserver, covers font load, viewport change, and\n surrounding layout reflow). Shared across the three Tabs variants\n and AvatarRail-style horizontal rows. */\nexport function useScrollOverflow(ref) {\n useEffect(() => {\n const el = ref.current;\n if (!el) return undefined;\n const update = () => {\n const canEnd = el.scrollLeft + el.clientWidth < el.scrollWidth - 1;\n const canStart = el.scrollLeft > 0;\n el.dataset.overflowEnd = canEnd ? 'true' : 'false';\n el.dataset.overflowStart = canStart ? 'true' : 'false';\n };\n update();\n el.addEventListener('scroll', update, { passive: true });\n const ro = new ResizeObserver(update);\n ro.observe(el);\n return () => {\n el.removeEventListener('scroll', update);\n ro.disconnect();\n };\n }, [ref]);\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { useScrollOverflow } from './internal/useScrollOverflow.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport { joinClasses } from './spec-utils.js';\n\n/* AvatarRail — a horizontal strip of avatar entry points. Each item is\n an anchor that routes to an entity (channel, person, brand, topic)\n page; the rail is navigation, not a picker. Items compose a 48-rung\n Thumbnail (with optional updateDot / logoBadge passing through) and\n a single-line label below. An optional trailing action (\"View all\", \"Manage\") lives\n at the end of the row, vertically centred against the avatar so the\n text reads as part of the rail rhythm, not as a second row.\n\n Anchors are wired via standard `<a href>` so right-click / open-in-\n new-tab works. The component does not intercept clicks; routing is\n the host framework's responsibility (Next.js Link, react-router,\n etc.). If the consumer needs framework-level routing, wrap each item\n in their Link primitive and pass `as` (future). */\n\nexport function AvatarRail({\n items = [],\n trailingAction,\n embedded = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n /* Edge fade overflow detection — shared `useScrollOverflow` hook\n toggles `data-overflow-end` / `data-overflow-start` on the track,\n same affordance pattern Tabs uses. CSS gates the trailing-edge\n `mask-image` on `[data-overflow-end=\"true\"]` so the fade paints\n only when content actually lives past the visible edge. */\n const trackRef = useRef(null);\n useScrollOverflow(trackRef);\n const rootRef = useRef(null);\n useFullBleedGuard(rootRef, 'AvatarRail');\n return (\n <nav\n ref={rootRef}\n className={joinClasses('chorus-avatar-rail', className)}\n aria-label={ariaLabel ?? 'Entities'}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n <div\n ref={trackRef}\n className=\"chorus-avatar-rail__track\"\n >\n {items.map((item) => (\n <a\n key={item.value}\n href={item.href ?? '#'}\n className=\"chorus-avatar-rail__item\"\n aria-label={item.ariaLabel ?? item.label}\n onClick={item.href ? undefined : (e) => e.preventDefault()}\n >\n <span className=\"chorus-avatar-rail__avatar\">\n <Thumbnail size={48} {...(item.thumbnail ?? { alt: item.label })} />\n </span>\n <span className=\"chorus-avatar-rail__label\">{item.label}</span>\n </a>\n ))}\n </div>\n {trailingAction ? (\n <Button\n variant=\"text\"\n size=\"small\"\n appearance=\"accent\"\n className=\"chorus-avatar-rail__trailing\"\n href={trailingAction.href ?? '#'}\n onClick={trailingAction.onClick}\n >\n {trailingAction.label}\n </Button>\n ) : null}\n </nav>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from './Button.jsx';\nimport { useFocusTrap } from './internal/useFocusTrap.js';\nimport { useBodyScrollLock, usePortalTarget } from './internal/scrimPortal.js';\nimport { joinClasses } from './spec-utils.js';\n\nexport function Dialog({\n open,\n onClose,\n title,\n body,\n image,\n imageFirst = true,\n primaryAction,\n secondaryAction,\n inline = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const target = usePortalTarget();\n const cardRef = useRef(null);\n const lastFocusedRef = useRef(null);\n useBodyScrollLock(open && !inline);\n // Trap Tab/Shift+Tab inside the card while modal so focus can't reach the\n // scrim-occluded page. Inline (docs) renders aren't modal, so no trap.\n useFocusTrap(cardRef, open && !inline);\n\n useEffect(() => {\n if (!open) return undefined;\n lastFocusedRef.current = document.activeElement;\n const primary = cardRef.current?.querySelector('.chorus-dialog__actions button');\n // preventScroll: focusing must not scroll the page to the button — body is\n // scroll-locked when modal, and inline (docs) renders would jump on mount.\n primary?.focus({ preventScroll: true });\n return () => {\n const last = lastFocusedRef.current;\n // preventScroll here too: restoring focus on close (and on dev\n // StrictMode's mount→cleanup→remount) must not scroll the page back to\n // the trigger.\n if (last && typeof last.focus === 'function') last.focus({ preventScroll: true });\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) return undefined;\n const onKey = (e) => { if (e.key === 'Escape') onClose?.(); };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, onClose]);\n\n if (!open) return null;\n if (!inline && !target) return null;\n\n const imageEl = image ? (\n <img\n className=\"chorus-dialog__image\"\n src={image.src}\n alt={image.alt ?? ''}\n width={image.width}\n height={image.height}\n decoding=\"async\"\n />\n ) : null;\n\n const tree = (\n <div\n className={joinClasses('chorus-dialog__scrim', inline && 'chorus-dialog__scrim--inline', className)}\n role=\"presentation\"\n onClick={() => onClose?.()}\n >\n <div\n ref={cardRef}\n className={joinClasses('chorus-dialog__card', image && 'chorus-dialog__card--with-image')}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n aria-label={ariaLabel ?? title}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n {title ? <h2 className=\"chorus-dialog__title\">{title}</h2> : null}\n {imageFirst ? imageEl : null}\n {body ? <p className=\"chorus-dialog__body\">{body}</p> : null}\n {imageFirst ? null : imageEl}\n {primaryAction || secondaryAction ? (\n <div className=\"chorus-dialog__actions\">\n {primaryAction ? (\n <Button appearance=\"primary\" size=\"large\" fullWidth onClick={primaryAction.onClick}>\n {primaryAction.label}\n </Button>\n ) : null}\n {secondaryAction ? (\n <Button appearance=\"tertiary\" size=\"large\" fullWidth onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n\n return inline ? tree : createPortal(tree, target);\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Divider — heavy section-break band that splits adjacent regions\n whose vertical rhythm alone doesn't read as a boundary. Single\n full-bleed block painted with `sys.color.background.neutral` at a fixed\n `sys.layout.stack.xs` (8) block thickness — the same scrim tier\n used by Banner default, Chip / Tag default, Progress track,\n StatusTag neutral, and Skeleton. No appearance / thickness /\n orientation axis: Divider ships one canonical band. Defaults to\n `aria-hidden=\"true\"` because the band is decorative chrome — screen-\n reader users navigate by headings, not visual breaks. See schema/\n components/divider/divider.md. */\n\nexport function Divider({\n className,\n 'aria-hidden': ariaHidden = true,\n ...rest\n}) {\n return (\n <hr\n aria-hidden={ariaHidden}\n className={joinClasses('chorus-divider', className)}\n {...rest}\n />\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"EmptyState\",\n \"family\": \"empty-state\",\n \"description\": \"The centered composition a surface paints when it holds no data yet — an optional monochrome illustration, a required headline, optional body copy, and an optional primary CTA — stacked and centered inside the space the real content would occupy. Three lines of copy at most: what the surface is for, why it is empty, and the one action that fills it (the CTA). Reach for it whenever a feed, list, inbox, or search result would otherwise paint blank; the system hard-rule forbids leaving a no-data surface empty. Distinct from Skeleton (an in-flight tonal placeholder for data that is loading), this is the durable zero-state surface.\",\n \"element\": \"div\",\n \"props\": {\n \"illustration\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional leading glyph or illustration, centered above the headline. Sized to a `ref.space.600` (48) box — larger than `sys.icon.lg` (24), realizing DESIGN.md's `icon.xl` or larger intent (no `icon.xl` icon-size rung exists; the icon scale stops at `lg`). Painted in `sys.color.text.subtle` via `currentColor` so it reads as quiet, monochrome chrome — illustrations stay monochrome unless they carry deliberate brand-moment intent. Separated from the headline by `sys.layout.stack.sm` (12).\"\n },\n \"headline\": {\n \"type\": \"node\",\n \"required\": true,\n \"description\": \"The required lead line. `sys.typo.heading.sm` in `sys.color.text.default`. Names what the surface is for / why it is empty in one short line (e.g. 'No posts yet').\"\n },\n \"body\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional supporting line below the headline. `sys.typo.body.sm` in `sys.color.text.subtle`, separated from the headline by `sys.layout.stack.2xs` (4). One sentence — the second of the three lines (e.g. 'Conversations you start or join will appear here').\"\n },\n \"action\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"{ label, href?, onClick? } — the primary CTA. Renders a default-size primary `Button` (the surface's primary action — the one thing that fills the empty surface). Placed below the body with a `sys.layout.stack.md` (16) gap. There is NO `cta` slot to fill with a custom button; pass the action object so the primary Button is composed for you.\"\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"Centered flex column holding the whole composition. `align-items: center`, `text-align: center`. Ships no surface fill or chrome of its own — it sits inside the host surface that would otherwise hold the data. `role='status'` so assistive tech announces the empty state without yanking focus.\",\n \"intrinsic\": true\n },\n \"illustration\": {\n \"required\": false,\n \"description\": \"Optional centered glyph / illustration above the headline. `ref.space.600` (48) box, painted in `sys.color.text.subtle` (monochrome). `sys.layout.stack.sm` (12) below it to the headline.\",\n \"accepts\": [\"icon\"]\n },\n \"headline\": {\n \"required\": true,\n \"description\": \"Required headline line. `sys.typo.heading.sm` / `sys.color.text.default`.\",\n \"accepts\": [\"text\"]\n },\n \"body\": {\n \"required\": false,\n \"description\": \"Optional supporting line. `sys.typo.body.sm` / `sys.color.text.subtle`. `sys.layout.stack.2xs` (4) above it from the headline.\",\n \"accepts\": [\"text\"]\n },\n \"action\": {\n \"required\": false,\n \"description\": \"Optional primary CTA. A default-size primary `Button` composed from the `action` object. `sys.layout.stack.md` (16) above it from the body.\",\n \"accepts\": [\"button\"]\n }\n },\n \"sizing\": {\n \"containerAlign\": \"center\",\n \"illustrationSize\": \"ref.space.600\",\n \"illustrationColor\": \"sys.color.text.subtle\",\n \"illustrationGap\": \"sys.layout.stack.sm\",\n \"headlineTypo\": \"sys.typo.heading.sm\",\n \"headlineColor\": \"sys.color.text.default\",\n \"bodyTypo\": \"sys.typo.body.sm\",\n \"bodyColor\": \"sys.color.text.subtle\",\n \"bodyGap\": \"sys.layout.stack.2xs\",\n \"actionGap\": \"sys.layout.stack.md\"\n },\n \"appearance\": {\n \"illustration\": \"sys.color.text.subtle\",\n \"headline\": \"sys.color.text.default\",\n \"body\": \"sys.color.text.subtle\",\n \"note\": \"No emphasis axis — EmptyState has one quiet appearance. The illustration and body sit in the muted `onSurfaceVariant` tone; the headline steps up to `onSurface`. The only chromatic emphasis is the CTA, which is a primary `Button` (its own `sys.color.background.primary` fill) so the single fill-the-surface action reads as primary both in intent and visually.\"\n },\n \"behavior\": {\n \"centered\": \"The whole composition is centered (block + inline) inside the host surface that would otherwise hold the data. EmptyState owns no surface fill — the host supplies the surface tier and the bounding box; EmptyState only centers its column inside it.\",\n \"role\": \"Container carries `role='status'` so the empty state is announced to assistive tech without grabbing focus.\",\n \"ctaComposition\": \"The CTA is not a free slot — pass `action={{ label, href?/onClick? }}` and EmptyState composes a default-size primary Button. This keeps the 'one primary action' rule enforced (one CTA, primary appearance) rather than letting callers drop in an arbitrary control.\"\n },\n \"forbidden\": [\n \"a no-data surface left blank — every empty surface paints an EmptyState (illustration optional, headline + the one fill action required by the copy rule); the system hard-rule forbids an unaddressed empty surface\",\n \"a dead-end empty state with no path forward — when the surface has a fill action, omit neither the body's explanation nor the `action` CTA; do not strand the user on a blank wall with only a headline\",\n \"more than three lines of copy — headline + body must read as at most three lines total (what the surface is for · why it is empty · the one action that fills it); longer prose belongs in a Banner or a help surface\",\n \"the CTA rendered as anything but a default-size primary Button — the fill action is the surface's primary action and must read as primary; do not down-rank it to a text or outlined button, and do not render two competing CTAs\",\n \"EmptyState used as a loading placeholder for data that is still arriving — that is `skeleton` (an in-flight tonal block). EmptyState is the durable no-data surface, not a transient one\",\n \"the illustration painted in a chromatic tone for non-brand empty states — it stays monochrome `sys.color.text.subtle` unless it deliberately carries a brand moment\"\n ]\n}\n","'use client';\n\nimport { Button } from './Button.jsx';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\nimport spec from '../../../schema/components/empty-state/empty-state.spec.json';\n\n/* EmptyState — the centered composition a surface paints when it holds\n no data yet. An optional monochrome illustration, a required headline,\n optional body copy, and an optional primary CTA (the one action that\n fills the surface), stacked and centered inside the space the real\n content would occupy. `layoutInset=\"inline\"` — it ships no surface\n fill or chrome of its own; the host supplies the surface tier and the\n bounding box. Distinct from Skeleton (an in-flight loading placeholder)\n — EmptyState is the durable no-data surface. See schema/components/\n empty-state/empty-state.md. */\n\nconst s = spec.sizing;\n\n/* Bindings emitted once at module scope — every value is a token\n reference resolved through tokenToCss / typoStyles, never a literal. */\nconst CONTAINER_STYLE = {\n '--empty-state-illustration-gap': tokenToCss(s.illustrationGap),\n '--empty-state-body-gap': tokenToCss(s.bodyGap),\n '--empty-state-action-gap': tokenToCss(s.actionGap),\n};\nconst ILLUSTRATION_STYLE = {\n '--empty-state-illustration-size': tokenToCss(s.illustrationSize),\n '--empty-state-illustration-color': tokenToCss(s.illustrationColor),\n};\nconst HEADLINE_STYLE = {\n '--empty-state-headline-color': tokenToCss(s.headlineColor),\n ...typoStyles(s.headlineTypo),\n};\nconst BODY_STYLE = {\n '--empty-state-body-color': tokenToCss(s.bodyColor),\n ...typoStyles(s.bodyTypo),\n};\n\nexport function EmptyState({\n illustration,\n headline,\n body,\n action,\n className,\n style,\n ...rest\n}) {\n return (\n <div\n role=\"status\"\n className={joinClasses('chorus-empty-state', className)}\n style={{ ...CONTAINER_STYLE, ...style }}\n {...rest}\n >\n {illustration ? (\n <span\n className=\"chorus-empty-state__illustration\"\n aria-hidden=\"true\"\n style={ILLUSTRATION_STYLE}\n >\n {illustration}\n </span>\n ) : null}\n <p className=\"chorus-empty-state__headline\" style={HEADLINE_STYLE}>\n {headline}\n </p>\n {body ? (\n <p className=\"chorus-empty-state__body\" style={BODY_STYLE}>\n {body}\n </p>\n ) : null}\n {action ? (\n <div className=\"chorus-empty-state__action\">\n {/* The CTA is a default-size primary Button (Chorus Button is\n an onClick control, not an anchor). When `href` is given,\n route it through onClick so the primary Button still renders\n correctly rather than emitting an invalid <button href>. */}\n <Button\n appearance=\"primary\"\n onClick={\n action.onClick ??\n (action.href\n ? () => {\n window.location.assign(action.href);\n }\n : undefined)\n }\n >\n {action.label}\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const TabsContext = createContext({\n variant: 'underline',\n value: null,\n onChange: () => {},\n registerTab: () => () => {},\n focusValue: null,\n setFocusValue: () => {},\n});\n\nexport function useTabsContext() {\n return useContext(TabsContext);\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Tabs\",\n \"family\": \"tabs\",\n \"subcomponent\": \"underline\",\n \"description\": \"Horizontal tab row with a single 2px (`sys.borderWidth.thin`) `sys.color.border.selected` indicator that slides between the active tab's bottom edge on selection. Default content-section switcher.\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"underline\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The active tab's value.\"\n },\n \"onChange\": {\n \"type\": \"function\",\n \"description\": \"Fired with the next value when a tab is selected.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"description\": \"Accessible name for the tablist.\"\n },\n \"embedded\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Composition mode flag. When `true` (or when Tabs is a direct child of `.chorus-carousel` / `.chorus-feed`), enters **embedded mode**: zeroes its own `background` + `padding` so chrome defers to the host. Pass explicitly inside `<Carousel>` / `<Feed>` for the contract to be visible in JSX; the DOM-ancestry safety net in styles.css also activates the mode when omitted. See `compositionModes` in `tabs.family.json`.\"\n }\n },\n \"behavior\": {\n \"adaptiveWidth\": {\n \"description\": \"Row measures Σ(tab.intrinsicWidth) vs container.clientWidth on every layout pass. Fits → tabs stretch (flex: 1 1 0); exceeds → tabs hold content width (flex: 0 0 auto) and the row scrolls horizontally with a trailing Edge fade. Re-evaluated via ResizeObserver on container + tab row. Not a caller-supplied prop.\"\n }\n },\n \"tabProps\": {\n \"value\": {\n \"type\": \"string\",\n \"required\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Tab's accessible name. Single line.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Context glyph before label.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"containerPaddingInline\": \"sys.layout.container.md\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"interTabGap\": \"0\",\n \"slotGap\": \"sys.layout.inline.sm\",\n \"indicatorHeight\": \"sys.borderWidth.thin\",\n \"dividerWidth\": \"sys.borderWidth.hairline\",\n \"dividerColor\": \"sys.color.border.default\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"iconSize\": \"sys.icon.md\",\n \"fadeWidth\": \"ref.space.600\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"label\": \"sys.color.text.subtle\",\n \"indicator\": null\n },\n \"selected\": {\n \"label\": \"sys.color.text.default\",\n \"indicator\": \"sys.color.border.selected\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"inward\",\n \"layer\": \"::after/::before overlay — position:absolute, inset:0, inset box-shadow, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the tab is in; never via plain mouse click.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"label\": \"sys.color.text.disabled\",\n \"indicator\": null,\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): label drops to text.disabled, no indicator. Sits on a neutral surface so the disabled text token reads directly.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the tab is in.\",\n \"composition\": \"inward\",\n \"compositionReason\": \"The Tabs row is a horizontal scroller (`overflow-x: auto`, which coerces `overflow-y: auto`), so an outward ring would clip at the row's top/bottom edges. Segmented and Rounded re-anchor the chip's ring the same way — their rows are scrollers too.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\",\n \"implementation\": \"inset box-shadow on the tab's `::after` overlay (sits above the state-overlay `::before`, the label/icon, and the underline indicator). Constrained strictly inside the tab's footprint and never exceeds it.\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"underline tabs given raw <button>/<a> or bare-text children instead of <Tab value=…> elements — the sliding indicator (.chorus-tabs__indicator), the useAdaptiveFit measurement that sets data-fit, the aria-selected/data-value binding, and the active label styling all live on <Tab>; raw children render as unstyled run-together text with no indicator and a broken scroll/stretch layout\",\n \"active indicator painted with sys.color.text.brand — underline uses sys.color.border.selected for the indicator\",\n \"tabs wrapped in extra horizontal padding — tabs is full-bleed by family declaration\",\n \"tab label sizing below sys.typo.label.md (14px) — smaller text breaks Korean / CJK hierarchy\",\n \"manual underline drawn via `border-bottom:` — indicator is the `::after` overlay, not a real border\"\n ]\n}\n","'use client';\n\nimport { useLayoutEffect, useRef } from 'react';\nimport spec from '../../../../schema/components/tabs/underline.spec.json';\nimport { useTabsContext } from './TabsContext.js';\nimport { useScrollOverflow } from './useScrollOverflow.js';\nimport { useFullBleedGuard } from './useFullBleedGuard.js';\nimport { tokenToCss, typoStyles, joinClasses } from '../spec-utils.js';\n\n/* Drive the single sliding indicator element. The indicator is a\n `position: absolute` span pinned to the bottom of the tab row; its\n `transform` (left offset) and `width` are updated to match the\n currently-selected tab's `offsetLeft` / `offsetWidth`. CSS handles\n the easing — selection change becomes a slide, not a snap.\n\n On the very first measurement we suppress the transition so the\n indicator doesn't fly in from `{0, 0}` to its initial position; once\n placed, transitions are re-enabled for subsequent value changes.\n ResizeObserver covers layout shifts (font load, container resize,\n sibling re-flow) so the indicator stays aligned without a controlled\n trigger. */\nfunction useSlidingIndicator(containerRef, indicatorRef, value) {\n useLayoutEffect(() => {\n const container = containerRef.current;\n const indicator = indicatorRef.current;\n if (!container || !indicator) return undefined;\n\n let firstPlacement = !indicator.dataset.placed;\n const place = () => {\n const selected = container.querySelector('.chorus-tab--underline.is-selected');\n if (!selected) {\n indicator.style.opacity = '0';\n return;\n }\n if (firstPlacement) indicator.style.transition = 'none';\n indicator.style.transform = `translateX(${selected.offsetLeft}px)`;\n indicator.style.width = `${selected.offsetWidth}px`;\n indicator.style.opacity = '1';\n if (firstPlacement) {\n // Force a reflow then re-enable the transition so subsequent\n // value changes animate.\n void indicator.offsetWidth;\n indicator.style.transition = '';\n indicator.dataset.placed = 'true';\n firstPlacement = false;\n }\n };\n\n place();\n /* Re-place on container resize (layout reflow, font load, viewport\n change). We avoid observing individual tabs because their box\n changes during transitions and would re-fire `place()` mid-slide,\n restarting the transition from time 0 on every frame. */\n const ro = new ResizeObserver(place);\n ro.observe(container);\n return () => ro.disconnect();\n }, [containerRef, indicatorRef, value]);\n}\n\n/* Adaptive width — Underline has one width mode that resolves to one of\n two terminal layouts on every layout pass:\n\n • Fit — Σ(tab.intrinsicWidth) ≤ container.clientWidth.\n Tabs stretch (`flex: 1 1 0`); row overflow: visible.\n • Scroll — Σ(tab.intrinsicWidth) > container.clientWidth.\n Tabs hold content width (`flex: 0 0 auto`); row scrolls.\n\n We measure by temporarily resetting `data-fit` to the intrinsic\n (\"scroll\") layout — that's the layout where each tab's box equals its\n content — read the row's `scrollWidth`, compare to `clientWidth`, and\n commit Fit or Scroll. The reset/measure/commit happens inside one\n `useLayoutEffect` tick, so the browser never paints the intermediate\n state. A `ResizeObserver` on the row covers container width changes\n (a window resize, a parent column resizing); a `MutationObserver` on\n the row's child list covers tab add/remove. */\nfunction useAdaptiveFit(containerRef) {\n useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return undefined;\n const measure = () => {\n const prev = el.dataset.fit;\n el.dataset.fit = 'scroll';\n // Read after the reset so scrollWidth reflects the intrinsic sum.\n const fits = el.scrollWidth <= el.clientWidth + 1;\n const next = fits ? 'stretch' : 'scroll';\n if (next !== prev) el.dataset.fit = next;\n else el.dataset.fit = prev;\n };\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n const mo = new MutationObserver(measure);\n mo.observe(el, { childList: true });\n return () => {\n ro.disconnect();\n mo.disconnect();\n };\n }, [containerRef]);\n}\n\nexport function TabsUnderline({ className, style, children, ...rest }) {\n const ref = useRef(null);\n const indicatorRef = useRef(null);\n const { value } = useTabsContext();\n useAdaptiveFit(ref);\n useScrollOverflow(ref);\n useSlidingIndicator(ref, indicatorRef, value);\n useFullBleedGuard(ref, 'Tabs');\n\n const s = spec.sizing;\n const composedStyle = {\n '--tabs-container-padding-inline': tokenToCss(s.containerPaddingInline),\n '--tabs-tab-min-height': tokenToCss(s.minHeight),\n '--tabs-tab-padding-block': tokenToCss(s.paddingBlock),\n '--tabs-tab-padding-inline': tokenToCss(s.paddingInline),\n '--tabs-inter-tab-gap': tokenToCss(s.interTabGap),\n '--tabs-slot-gap': tokenToCss(s.slotGap),\n '--tabs-icon-size': tokenToCss(s.iconSize),\n '--tabs-indicator-height': tokenToCss(s.indicatorHeight),\n '--tabs-divider-width': tokenToCss(s.dividerWidth),\n '--tabs-divider-color': tokenToCss(s.dividerColor),\n '--tabs-fade-width': tokenToCss(s.fadeWidth),\n '--tabs-label-unselected': tokenToCss(spec.selectionStates.unselected.label),\n '--tabs-label-selected': tokenToCss(spec.selectionStates.selected.label),\n '--tabs-indicator-color': tokenToCss(spec.selectionStates.selected.indicator),\n '--tabs-overlay-hover': tokenToCss(spec.states.hovered.overlay.opacity),\n '--tabs-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--tabs-overlay-focus': tokenToCss(spec.focusIndicator.overlay.opacity),\n '--tabs-disabled-opacity': tokenToCss(spec.states.disabled.containerOpacity),\n '--tabs-focus-outer-color': tokenToCss(spec.focusIndicator.ring.color),\n ...typoStyles(s.labelTypo),\n ...style,\n };\n return (\n <div\n ref={ref}\n data-fit=\"scroll\"\n className={joinClasses('chorus-tabs', 'chorus-tabs--underline', className)}\n style={composedStyle}\n {...rest}\n >\n {children}\n <span ref={indicatorRef} className=\"chorus-tabs__indicator\" aria-hidden=\"true\" />\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Tabs\",\n \"family\": \"tabs\",\n \"subcomponent\": \"rounded\",\n \"description\": \"Rounded-rectangle tab row — each tab is a self-contained chip carrying a required leading icon and a label, sharing the Segmented geometry verbatim but swapping the capsule radius for sys.radius.md (8) so the tabs read as soft rounded rectangles instead of pills. Reach for this on feed / list headers where the row of choices should sit as standalone chips with a more contained, card-adjacent silhouette.\",\n \"delegatesTo\": \"chip/filter\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"rounded\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The active tab's value.\"\n },\n \"onChange\": {\n \"type\": \"function\",\n \"description\": \"Fired with the next value when a tab is selected.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"description\": \"Accessible name for the tablist.\"\n },\n \"embedded\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Composition mode flag. When `true` (or when Tabs is a direct child of `.chorus-carousel` / `.chorus-feed`), enters **embedded mode**: zeroes its own `background` + `padding` so chrome defers to the host. Pass explicitly inside `<Carousel>` / `<Feed>` for the contract to be visible in JSX; the DOM-ancestry safety net in styles.css also activates the mode when omitted. See `compositionModes` in `tabs.family.json`.\"\n }\n },\n \"tabProps\": {\n \"value\": {\n \"type\": \"string\",\n \"required\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional 16px (sys.icon.md) context glyph rendered before the label. May carry its own brand / category color independent of the label.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": false,\n \"description\": \"Tab's accessible name. Single line. Omit only when the tab is icon-only (pair with an `aria-label` for assistive tech). At least one of label / leadingIcon must be present.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"16px (sys.icon.md) context glyph before the label. At least one of label / leadingIcon must be present.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.400\",\n \"containerPaddingBlock\": \"sys.layout.container.md\",\n \"containerPaddingInline\": \"sys.layout.container.md\",\n \"paddingBlock\": \"sys.layout.container.2xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"labelInset\": \"sys.layout.container.2xs\",\n \"slotGap\": \"0\",\n \"interTabGap\": \"sys.layout.inline.sm\",\n \"radius\": \"sys.radius.md\",\n \"labelTypo\": \"sys.typo.label.sm\",\n \"iconSize\": \"sys.icon.md\",\n \"fadeWidth\": \"ref.space.600\"\n },\n \"selectionStates\": {\n \"unselected\": {\n \"background\": \"transparent\",\n \"label\": \"sys.color.text.default\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.default\"\n },\n \"note\": \"Transparent fill so the tab adopts whatever surface sits behind it — page, raised card, sheet — without pinning to a fixed neutral step. Inherited from Filter chip's unselected recipe.\"\n },\n \"selected\": {\n \"background\": \"sys.color.background.inverse\",\n \"label\": \"sys.color.text.inverse\",\n \"border\": null\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null\n },\n \"hovered\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.hover\"\n }\n },\n \"pressed\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"focused\": {\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"focusRing\": {\n \"composition\": \"inward\",\n \"layer\": \"::after/::before overlay — position:absolute, inset:0, inset box-shadow, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"outerRing\": {\n \"width\": \"sys.borderWidth.thin\",\n \"color\": \"sys.color.border.focused\"\n }\n },\n \"note\": \"Keyboard-focus (:focus-visible) visual. Mirrors the `focusIndicator` block (the external-reader contract); kept here so spec-only renderers see focus in the states map. Composes over the lifecycle state the tab is in; never via plain mouse click.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"label\": \"sys.color.text.disabled\",\n \"border\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.bold\"\n },\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border so the shape reads on any surface, plus disabled label. Overrides the rest/selected appearance.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the tab is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"inward\",\n \"compositionReason\": \"The Tabs row is a horizontal scroller; an outward ring would clip at the row's top/bottom edges.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\",\n \"implementation\": \"inset box-shadow on the tab's `::after` overlay. Constrained strictly inside the tab's footprint and never exceeds it.\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"rounded tabs given raw <button>/<a> or bare-text children instead of <Tab value=…> elements — the chip chrome (chorus-chip--filter + chorus-chip--rounded), the selected state, and the aria-selected/data-value binding all live on <Tab>; raw children render unstyled with no selected state\",\n \"rounded tab radius set to sys.radius.full (pill) — the rounded variant is the sys.radius.md (8) soft-rectangle; reach for Segmented when a capsule row is needed\",\n \"active state painted with sys.color.text.brand — rounded tabs use sys.color.background.inverse fill + sys.color.text.inverse label in selected state\"\n ]\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport spec from '../../../../schema/components/tabs/rounded.spec.json';\nimport { useScrollOverflow } from './useScrollOverflow.js';\nimport { useFullBleedGuard } from './useFullBleedGuard.js';\nimport { tokenToCss, joinClasses } from '../spec-utils.js';\n\n/* Rounded Tabs container. Geometry is identical to Segmented (delegates\n to Filter chip's chrome via `Tab.jsx`) — the single divergence is the\n per-tab corner radius, which steps from `sys.radius.full` (capsule)\n to `sys.radius.md` (8). The radius override lives on `.chorus-chip--rounded`\n in styles.css; the row container itself just sets the inter-tab gap.\n\n Carries the Edge fade affordance via `useScrollOverflow`, which\n toggles `data-overflow-end` whenever the row's scroll width exceeds\n its visible width — the mask rule in styles.css keys off that\n attribute. */\nexport function TabsRounded({ className, style, children, ...rest }) {\n const ref = useRef(null);\n useScrollOverflow(ref);\n useFullBleedGuard(ref, 'Tabs');\n const composedStyle = {\n '--tabs-container-padding-block': tokenToCss(spec.sizing.containerPaddingBlock),\n '--tabs-container-padding-inline': tokenToCss(spec.sizing.containerPaddingInline),\n '--tabs-inter-segment-gap': tokenToCss(spec.sizing.interTabGap),\n '--tabs-fade-width': tokenToCss(spec.sizing.fadeWidth),\n ...style,\n };\n return (\n <div\n ref={ref}\n className={joinClasses('chorus-tabs', 'chorus-tabs--segmented', 'chorus-tabs--rounded', className)}\n style={composedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Tabs\",\n \"family\": \"tabs\",\n \"subcomponent\": \"segmented\",\n \"description\": \"Inline mutually-exclusive selector. Visual chrome delegated to Filter chip — each segment renders with `chorus-chip chorus-chip--filter` classes and inherits the chip's container/label/border/state recipes verbatim. This sub adds only the row container (transparent, horizontal padding, fixed inter-segment gap) and the single-select semantics enforced via Tabs context.\",\n \"delegatesTo\": \"chip/filter\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"segmented\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The active segment's value.\"\n },\n \"onChange\": {\n \"type\": \"function\",\n \"description\": \"Fired with the next value when a segment is selected.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"description\": \"Accessible name for the tablist.\"\n },\n \"embedded\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Composition mode flag. When `true` (or when Tabs is a direct child of `.chorus-carousel` / `.chorus-feed`), enters **embedded mode**: zeroes its own `background` + `padding` so chrome defers to the host. Pass explicitly inside `<Carousel>` / `<Feed>` for the contract to be visible in JSX; the DOM-ancestry safety net in styles.css also activates the mode when omitted. See `compositionModes` in `tabs.family.json`.\"\n }\n },\n \"tabProps\": {\n \"value\": {\n \"type\": \"string\",\n \"required\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"label\": {\n \"required\": true,\n \"description\": \"Same contract as Filter chip's label slot.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"leadingIcon\": {\n \"required\": false,\n \"description\": \"Same contract as Filter chip's leadingIcon slot.\",\n \"accepts\": [\n \"icon\"\n ]\n }\n },\n \"sizing\": {\n \"containerPaddingBlock\": \"sys.layout.container.md\",\n \"containerPaddingInline\": \"sys.layout.container.md\",\n \"interSegmentGap\": \"sys.layout.inline.sm\",\n \"fadeWidth\": \"ref.space.600\"\n },\n \"selectionStates\": {\n \"$ref\": \"../chip/filter.spec.json#/selectionStates\",\n \"note\": \"Each segment swaps between Filter chip's unselected (surfaceContainerHigh + border.default border) and selected (inverseSurface + inverseOnSurface) recipes.\"\n },\n \"states\": {\n \"$ref\": \"../chip/filter.spec.json#/states\",\n \"note\": \"Hover / pressed / focus overlays and the disabled treatment are inherited from Filter chip; same opacities, same focus ring composition.\"\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the segment is in. Re-anchored inside the segment from Filter chip's default outward composition because the Segmented row is a horizontal scroller.\",\n \"composition\": \"inward\",\n \"compositionReason\": \"The Tabs row is a horizontal scroller; an outward ring would clip at the row's top/bottom edges.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\",\n \"implementation\": \"inset box-shadow on the segment's `::after` overlay. Constrained strictly inside the segment's footprint and never exceeds it.\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"segmented control given raw <button>/<a> or bare-text children instead of <Tab value=…> elements — the chip chrome, the selected pill state, and the aria-selected/data-value binding all live on <Tab>; raw children render unstyled with no selected state\",\n \"active item painted with sys.color.background.primary fill — segmented active uses sys.color.surface.default fill on the selected pill (the rest of the row is surfaceContainer)\",\n \"segmented row reflowing on selection — anatomy is no-layout\"\n ]\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport spec from '../../../../schema/components/tabs/segmented.spec.json';\nimport { useScrollOverflow } from './useScrollOverflow.js';\nimport { useFullBleedGuard } from './useFullBleedGuard.js';\nimport { tokenToCss, joinClasses } from '../spec-utils.js';\n\n/* Segmented Tabs container. Visual chrome of the segments themselves is\n delegated to Filter chip (see `Tab.jsx` — segmented variant renders\n with `chorus-chip chorus-chip--filter` classes). This container only\n provides the row-level layout: transparent background, horizontal\n padding, fixed inter-segment gap, and `overflow-x: auto` so a row\n that exceeds its surrounding column scrolls instead of compressing\n the segments.\n\n Carries the Edge fade affordance via `useScrollOverflow`, which\n toggles `data-overflow-end` whenever the row's scroll width exceeds\n its visible width — the mask rule in styles.css keys off that\n attribute. */\nexport function TabsSegmented({ className, style, children, ...rest }) {\n const ref = useRef(null);\n useScrollOverflow(ref);\n useFullBleedGuard(ref, 'Tabs');\n const s = spec.sizing;\n const composedStyle = {\n '--tabs-container-padding-block': tokenToCss(s.containerPaddingBlock),\n '--tabs-container-padding-inline': tokenToCss(s.containerPaddingInline),\n '--tabs-inter-segment-gap': tokenToCss(s.interSegmentGap),\n '--tabs-fade-width': tokenToCss(s.fadeWidth),\n ...style,\n };\n return (\n <div\n ref={ref}\n className={joinClasses('chorus-tabs', 'chorus-tabs--segmented', className)}\n style={composedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Children, Fragment, isValidElement, useCallback, useMemo, useRef } from 'react';\nimport { TabsContext } from './internal/TabsContext.js';\nimport { TabsUnderline } from './internal/TabsUnderline.jsx';\nimport { TabsRounded } from './internal/TabsRounded.jsx';\nimport { TabsSegmented } from './internal/TabsSegmented.jsx';\n\nconst VARIANTS = {\n underline: TabsUnderline,\n rounded: TabsRounded,\n segmented: TabsSegmented,\n};\n\nconst isDev =\n typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production';\nconst warned = new Set();\n\nfunction warnOnce(key, message) {\n if (warned.has(key)) return;\n warned.add(key);\n // eslint-disable-next-line no-console\n console.error(`[chorus] <Tabs>: ${message}`);\n}\n\n/* Dev-only guardrail. <Tabs> is a compound component: every child MUST be a\n <Tab> (the sliding indicator, adaptive-fit measurement, aria-selected\n binding, and active styling all live on <Tab>). Raw <button>/<a> or bare\n text children render unstyled with no indicator. The spec.json `forbidden`\n array states this for agents; this surfaces the same rule at runtime so the\n silent failure becomes a visible signal during development. <Tab> is\n identified by its `__chorusTab` marker (robust across HMR / bundler dedupe). */\nfunction assertTabChildren(children) {\n if (!isDev) return;\n Children.forEach(children, (child) => {\n if (child == null || child === false || child === true) return;\n if (!isValidElement(child)) {\n if (typeof child === 'string' && child.trim() === '') return;\n warnOnce(\n 'text',\n `received bare text child ${JSON.stringify(String(child))}. Wrap each label in <Tab value=\"…\">…</Tab> — bare text renders as unstyled run-together text with no tab buttons or indicator.`,\n );\n return;\n }\n const type = child.type;\n if (type === Fragment) {\n assertTabChildren(child.props?.children);\n return;\n }\n if (type?.__chorusTab === true) return;\n const name =\n typeof type === 'string' ? `<${type}>` : type?.displayName || type?.name || 'a non-<Tab> element';\n warnOnce(\n name,\n `received ${name} as a child. <Tabs> children must be <Tab value=\"…\"> — ${name} has no .chorus-tab/.chorus-chip chrome, so the sliding indicator, data-fit measurement, and active styling will not work.`,\n );\n });\n}\n\nexport function Tabs({\n variant = 'underline',\n value,\n onChange,\n embedded = false,\n children,\n ...rest\n}) {\n const Impl = VARIANTS[variant] ?? TabsUnderline;\n if (isDev) assertTabChildren(children);\n const tabValuesRef = useRef([]);\n\n const registerTab = useCallback((tabValue) => {\n if (!tabValuesRef.current.includes(tabValue)) {\n tabValuesRef.current.push(tabValue);\n }\n return () => {\n tabValuesRef.current = tabValuesRef.current.filter((v) => v !== tabValue);\n };\n }, []);\n\n const handleKeyDown = useCallback((e) => {\n const order = tabValuesRef.current;\n if (!order.length) return;\n const currentIdx = order.indexOf(value);\n let nextIdx = currentIdx;\n if (e.key === 'ArrowRight') nextIdx = (currentIdx + 1) % order.length;\n else if (e.key === 'ArrowLeft') nextIdx = (currentIdx - 1 + order.length) % order.length;\n else if (e.key === 'Home') nextIdx = 0;\n else if (e.key === 'End') nextIdx = order.length - 1;\n else return;\n e.preventDefault();\n onChange?.(order[nextIdx]);\n }, [value, onChange]);\n\n const ctx = useMemo(() => ({\n variant,\n value,\n onChange: (v) => onChange?.(v),\n registerTab,\n }), [variant, value, onChange, registerTab]);\n\n return (\n <TabsContext.Provider value={ctx}>\n <Impl\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n data-embedded={embedded ? 'true' : undefined}\n {...rest}\n >\n {children}\n </Impl>\n </TabsContext.Provider>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useTabsContext } from './internal/TabsContext.js';\nimport { joinClasses } from './spec-utils.js';\n\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'focused']);\n\nexport function Tab({\n value: tabValue,\n state,\n leadingIcon,\n disabled = false,\n className,\n children,\n onClick,\n ...rest\n}) {\n const { variant, value: activeValue, onChange, registerTab } = useTabsContext();\n const selected = activeValue === tabValue;\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n\n useEffect(() => {\n if (tabValue == null) return undefined;\n return registerTab(tabValue);\n }, [tabValue, registerTab]);\n\n const handleClick = (e) => {\n onClick?.(e);\n if (!e.defaultPrevented && !isDisabled) onChange(tabValue);\n };\n\n /* Segmented and Rounded tabs delegate their visual chrome to Filter\n chip — same `chorus-chip chorus-chip--filter` classes, same selected\n state CSS, same hover/pressed/focus overlays. Rounded additionally\n carries `chorus-chip--rounded` which overrides only `--chip-radius`\n (from full → md). Single-select is enforced by the Tabs context\n (only the segment whose `value` matches the active one gets\n `is-selected`), not by a chip-level toggle. Underline tabs keep\n their own `chorus-tab--underline` chrome and the sliding indicator. */\n const isChipBased = variant === 'segmented' || variant === 'rounded';\n const baseClass = isChipBased ? 'chorus-chip' : 'chorus-tab';\n const subClass = isChipBased ? 'chorus-chip--filter' : `chorus-tab--${variant}`;\n const radiusModClass = variant === 'rounded' ? 'chorus-chip--rounded' : null;\n const labelClass = isChipBased ? 'chorus-chip__label' : 'chorus-tab__label';\n const iconClass = isChipBased ? 'chorus-chip__icon' : 'chorus-tab__icon';\n\n const className_ = joinClasses(\n baseClass,\n subClass,\n radiusModClass,\n selected && 'is-selected',\n className,\n );\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n tabIndex={selected ? 0 : -1}\n className={className_}\n disabled={isDisabled}\n data-force-state={forcedState ?? undefined}\n onClick={handleClick}\n {...rest}\n >\n {leadingIcon ? (\n <span className={iconClass} aria-hidden=\"true\">{leadingIcon}</span>\n ) : null}\n {children ? <span className={labelClass}>{children}</span> : null}\n </button>\n );\n}\n\n/* Identity marker so <Tabs> can detect non-<Tab> children in development\n even across duplicate module instances (HMR / bundler dedupe), where a\n plain `child.type === Tab` reference check would give false negatives. */\nTab.displayName = 'Tab';\nTab.__chorusTab = true;\n","'use client';\n\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { joinClasses } from './spec-utils.js';\n\n/* Metadata — standalone family (renamed from Byline; previously lived\n as Row family's metadata sub). Author / brand attribution cluster\n used by Feed Post and Feed Ad. Renders a 32-rung Thumbnail, a\n primary text line (entity name + optional inline timestamp +\n optional follow toggle), and an optional secondary line (`subtitle`\n plain text OR `meta` link row). Optional trailing slot hosts an\n action like the Feed Ad dismiss button.\n\n The middot separator's CSS sets `line-height: 1` so its line-box\n equals its font-size — keeps the row's text-line tight even when\n the inherited line-height would otherwise allow extra space around\n the bullet glyph.\n\n The `compact` variant (schema/components/metadata/compact.md) is the\n one-line channel-detail attribution: a leading 32-rung Thumbnail\n (same `avatar` prop as standard) plus the secondary meta-link row —\n company name · nickname (optional badge) — with a plain trailing\n timestamp. The primary name line, follow toggle, and subtitle are\n the \"unnecessary\" info compact drops; the avatar stays.\n\n See schema/components/metadata/ — standard.md for the two-line\n head, compact.md for the one-line shape. */\n\n/* Shared meta-row grammar — independent <a> per item, middot between\n siblings, optional single badge node rendered OUTSIDE the <a>\n (canonically Badge variant=\"role\" on the trailing nickname item;\n a presentational mark must not become link content). */\nfunction metaParts(meta) {\n return meta.map((part, i) => {\n const isObj = part && typeof part === 'object' && 'label' in part;\n const label = isObj ? part.label : part;\n const href = isObj ? part.href ?? '#' : '#';\n const badge = isObj ? part.badge : undefined;\n return (\n <span key={i} className=\"chorus-metadata__meta-part\">\n {i > 0 ? <span className=\"chorus-metadata__dot\" aria-hidden=\"true\">·</span> : null}\n <a\n className=\"chorus-metadata__meta-link\"\n href={href}\n onClick={href === '#' ? (e) => e.preventDefault() : undefined}\n >\n {label}\n </a>\n {badge ? (\n <span className=\"chorus-metadata__meta-badge\">{badge}</span>\n ) : null}\n </span>\n );\n });\n}\n\nexport function Metadata({\n variant,\n avatar,\n name,\n nameHref,\n timestamp,\n followAction = false,\n followed = false,\n onFollowChange,\n subtitle,\n meta,\n trailing,\n className,\n ...rest\n}) {\n const hasMeta = Array.isArray(meta) && meta.length > 0;\n const hasSubtitle = !hasMeta && subtitle != null && subtitle !== '';\n\n if (variant === 'compact') {\n return (\n <div className={joinClasses('chorus-metadata', 'chorus-metadata--compact', className)} {...rest}>\n {avatar ? <Thumbnail size={32} {...avatar} /> : null}\n <div className=\"chorus-metadata__meta\">\n {hasMeta ? metaParts(meta) : null}\n {/* Timestamp carries no leading middot — separated from the\n identity cluster by a gap so the time reads as a distinct\n trailing element, mirroring the Standard head's name↔time gap. */}\n {timestamp ? (\n <span className=\"chorus-metadata__timestamp\">{timestamp}</span>\n ) : null}\n </div>\n </div>\n );\n }\n\n return (\n <div className={joinClasses('chorus-metadata', className)} {...rest}>\n <Thumbnail size={32} {...(avatar ?? { alt: typeof name === 'string' ? name : '' })} />\n <div className=\"chorus-metadata__text\">\n <div className=\"chorus-metadata__primary\">\n {nameHref ? (\n <a\n className=\"chorus-metadata__name\"\n href={nameHref}\n onClick={nameHref === '#' ? (e) => e.preventDefault() : undefined}\n >\n {name}\n </a>\n ) : (\n <span className=\"chorus-metadata__name\">{name}</span>\n )}\n {timestamp ? (\n <span className=\"chorus-metadata__timestamp\">{timestamp}</span>\n ) : null}\n {followAction ? (\n <>\n <span className=\"chorus-metadata__dot\" aria-hidden=\"true\">·</span>\n <button\n type=\"button\"\n className=\"chorus-metadata__follow\"\n aria-pressed={followed ? 'true' : 'false'}\n onClick={() => onFollowChange?.(!followed)}\n >\n {followed ? 'Following' : 'Follow'}\n </button>\n </>\n ) : null}\n </div>\n {hasMeta ? (\n <div className=\"chorus-metadata__meta\">{metaParts(meta)}</div>\n ) : hasSubtitle ? (\n <span className=\"chorus-metadata__subtitle\">{subtitle}</span>\n ) : null}\n </div>\n {trailing ? (\n <div\n className=\"chorus-metadata__trailing\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {trailing}\n </div>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { useRef, useState } from 'react';\nimport { Button } from './Button.jsx';\nimport { Metadata } from './Metadata.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport {\n CompensationFillIcon,\n HeartFillIcon,\n HeartIcon,\n SquareStackIcon,\n PollFillIcon,\n ReplyIcon,\n EyeIcon,\n} from './icons/index.js';\n\n/* Feed — a vertically-stacked content card. The Feed primitive is pure\n composition: it owns the slot order and the surface chrome, but every\n sub-affordance (Follow toggle, citation link, engagement counters)\n threads through props rather than children, so consumers data-bind to a\n single object instead of assembling JSX. The schema spec\n (schema/components/feed/feed.md) is the source of truth for which slots\n are optional and how they collapse — this component implements those\n rules. */\n\nfunction CoverThumbnail({ alt, src, stacked }) {\n return (\n <div className=\"chorus-feed__thumbnail\">\n {src ? (\n <img src={src} alt={alt ?? ''} />\n ) : (\n <span className=\"chorus-feed__thumbnail-fallback\" aria-label={alt ?? ''} role=\"img\" />\n )}\n {stacked ? (\n <span className=\"chorus-feed__thumbnail-stack\" aria-label=\"Multiple images\" role=\"img\">\n <SquareStackIcon size={16} />\n </span>\n ) : null}\n </div>\n );\n}\n\n/* TagBanner renders both the poll module and the offer-evaluation module.\n The two share the same chrome (surfaceVariant slab, leading icon + label\n on the editorial tone, divider, trailing participant count) and differ\n only on glyph + tone. The label string is constrained by the spec to\n \"Poll\" or \"Offer\" — those are the two editorial categories the banner\n surfaces. Consumers should not pass a free-form label. */\nfunction TagBanner({ kind, label, participants }) {\n const Icon = kind === 'offer' ? CompensationFillIcon : PollFillIcon;\n const resolvedLabel = label ?? (kind === 'offer' ? 'Offer' : 'Poll');\n return (\n <div\n className={joinClasses('chorus-feed__poll', kind === 'offer' && 'chorus-feed__poll--offer')}\n role=\"group\"\n >\n <span className=\"chorus-feed__poll-title\">\n <span className=\"chorus-feed__poll-glyph\"><Icon /></span>\n <span className=\"chorus-feed__poll-label\">{resolvedLabel}</span>\n </span>\n <span className=\"chorus-feed__poll-divider\" aria-hidden=\"true\" />\n <span className=\"chorus-feed__poll-participants\">\n <strong>{participants}</strong> Participants\n </span>\n </div>\n );\n}\n\nfunction CitationCard({ title, source, sourceIcon, hero }) {\n return (\n <a className=\"chorus-feed__citation\" href=\"#\" onClick={(e) => e.preventDefault()}>\n <span className=\"chorus-feed__citation-hero\" role=\"img\" aria-label={hero?.alt ?? ''}>\n {hero?.src ? <img src={hero.src} alt=\"\" /> : null}\n </span>\n <span className=\"chorus-feed__citation-body\">\n <span className=\"chorus-feed__citation-title\">{title}</span>\n <span className=\"chorus-feed__citation-source\">\n <span className=\"chorus-feed__citation-source-icon\" aria-hidden=\"true\">\n {sourceIcon ?? null}\n </span>\n <span className=\"chorus-feed__citation-source-name\">{source}</span>\n </span>\n </span>\n </a>\n );\n}\n\n/* Engagement footer — three counters laid out as an `xsmall` Text\n Button group (4px gap, per the Text Button group rule for the\n 24-tall rung). Likes and Comments are real Text Buttons; Views\n renders as a non-interactive `<span>` styled to match the same\n rhythm, so the row reads as one visual unit even though only the\n first two affordances commit. The Like button toggles between an\n `onSurfaceVariant` outline rest state (`HeartIcon`, `secondary`\n appearance) and a brand-filled state (`HeartFillIcon`, secondary\n appearance + `--button-text-label` override to `sys.color.text.brand`)\n with the count incrementing in lockstep. Pattern mirrors\n `followAction`: pass `liked` + `onLikeChange` for controlled\n state, or omit both for an uncontrolled fallback (the previews\n and docs Stage use the uncontrolled path so the demo is tappable\n without wiring). */\nfunction Engagement({ likes, comments, views, liked, onLikeChange }) {\n const isControlled = liked !== undefined;\n const [uLiked, setULiked] = useState(false);\n const [delta, setDelta] = useState(0);\n const active = isControlled ? liked : uLiked;\n const count = (likes ?? 0) + (isControlled ? 0 : delta);\n\n const handleLike = () => {\n if (isControlled) {\n onLikeChange?.(!liked);\n return;\n }\n setULiked((prev) => {\n const next = !prev;\n setDelta((d) => d + (next ? 1 : -1));\n return next;\n });\n };\n\n return (\n <div className=\"chorus-feed__engagement\" role=\"group\">\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"secondary\"\n className={joinClasses('chorus-feed__like', active && 'chorus-feed__like--active')}\n leadingIcon={active ? <HeartFillIcon /> : <HeartIcon />}\n aria-pressed={active}\n aria-label={`Like — ${count}`}\n onClick={handleLike}\n >\n {count}\n </Button>\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"secondary\"\n leadingIcon={<ReplyIcon />}\n aria-label={`Comments — ${comments}`}\n >\n {comments}\n </Button>\n {/* Views — display only. Same `xsmall`/16-glyph/12-label rhythm\n as the Text Buttons next to it, but renders as a `<span>` so\n there is no hover / focus / pressed treatment — `aria-disabled`\n is the wrong shape because views isn't an action that has been\n turned off; it simply isn't an action. */}\n <span className=\"chorus-feed__views\" role=\"status\" aria-label={`Views — ${views}`}>\n <span className=\"chorus-feed__views-icon\" aria-hidden=\"true\"><EyeIcon /></span>\n <span>{views}</span>\n </span>\n </div>\n );\n}\n\nexport function Feed({\n flag,\n avatar,\n channel,\n channelHref = '#',\n timestamp,\n followAction = false,\n followed = false,\n onFollowChange,\n meta,\n title,\n body,\n thumbnail,\n poll,\n offer,\n citation,\n mention,\n engagement,\n onClick,\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'Feed');\n\n /* Whole-card navigation — mirrors the Carousel post card's click model.\n Pass `onClick` and the card surface becomes the navigation target;\n interior affordances (channel link, Follow, Like, Comments, citation,\n mention) route independently because a click that originates on any\n <a>/<button> inside the card is ignored here and fires its own handler.\n The card stays an <article role=\"button\"> rather than wrapping content\n in a <button>/<a>: Feed contains anchors, and an interactive wrapper\n would nest interactive elements (invalid; for anchors the parser breaks\n the DOM). This is the in-contract way to make a post navigable, so there\n is no reason to add an external <Link> wrapper — which would re-pay the\n page rail as a gutter and misalign the card with NavigationBar / TabBar. */\n const clickable = typeof onClick === 'function';\n const clickProps = clickable\n ? {\n role: 'button',\n tabIndex: 0,\n onClick: (e) => {\n if (e.target.closest('a, button, [role=\"button\"], input, select, textarea, label')) return;\n onClick(e);\n },\n onKeyDown: (e) => {\n if (e.target !== e.currentTarget) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick(e);\n }\n },\n }\n : null;\n\n return (\n <article\n ref={ref}\n className={joinClasses('chorus-feed', clickable && 'chorus-feed--clickable', className)}\n {...clickProps}\n {...rest}\n >\n {flag ? <div className=\"chorus-feed__flag\">{flag}</div> : null}\n\n <Metadata\n className=\"chorus-feed__metadata\"\n avatar={avatar ?? { alt: channel }}\n name={channel}\n nameHref={channelHref}\n timestamp={timestamp}\n followAction={followAction}\n followed={followed}\n onFollowChange={onFollowChange}\n meta={meta}\n />\n\n {(title || body || thumbnail) ? (\n <div className=\"chorus-feed__post\">\n <div className=\"chorus-feed__post-text\">\n {title ? <h3 className=\"chorus-feed__title\">{title}</h3> : null}\n {body ? <p className=\"chorus-feed__body\">{body}</p> : null}\n </div>\n {thumbnail ? <CoverThumbnail {...thumbnail} /> : null}\n </div>\n ) : null}\n\n {poll ? <TagBanner kind=\"poll\" {...poll} /> : null}\n {offer ? <TagBanner kind=\"offer\" {...offer} /> : null}\n {citation ? <CitationCard {...citation} /> : null}\n\n {mention ? (\n <a className=\"chorus-feed__mention\" href=\"#\" onClick={(e) => e.preventDefault()}>\n {mention}\n </a>\n ) : null}\n\n {engagement ? <Engagement {...engagement} /> : null}\n </article>\n );\n}\n\n/* FeedGroup — semantic wrapper that bundles consecutive Feed Posts\n (canonical case: 3 stacked) into one thread-grouped or topic-bundled\n sub-stream. The group adds no surface chrome — each inner Post keeps\n its own padding + hairline bottom divider — so the bundle reads as a\n continuous slice of the stream while the wrapper carries intent via\n role=\"region\" + an optional aria-label. */\nexport function FeedGroup({ label, className, children, ...rest }) {\n return (\n <section\n className={joinClasses('chorus-feed-group', className)}\n role=\"region\"\n aria-label={label}\n {...rest}\n >\n {children}\n </section>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { Metadata } from './Metadata.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { XIcon } from './icons/index.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* FeedAd — the `ad` sub-component of the Feed family. In-feed sponsored\n placement that rides the same column as the default Feed card. The\n brand row composes the shared Metadata component (avatar + name +\n \"Sponsored\" subtitle + optional dismiss trailing). The schema spec\n (schema/components/feed/ad.md) is the source of truth for which\n slots are optional and how they collapse. */\n\nfunction BrandRow({ brand, onDismiss, dismissLabel }) {\n /* Subtitle defaults to \"Sponsored\" — every FeedAd placement must read\n as sponsored content. Consumers may override but cannot drop it. */\n const subtitle = brand.subtitle ?? 'Sponsored';\n const trailing = onDismiss ? (\n <button\n type=\"button\"\n className=\"chorus-feed-ad__dismiss\"\n onClick={onDismiss}\n aria-label={dismissLabel ?? 'Dismiss ad'}\n >\n <XIcon size={16} />\n </button>\n ) : null;\n return (\n <Metadata\n className=\"chorus-feed-ad__brand\"\n avatar={brand.avatar ?? { alt: brand.name }}\n name={brand.name}\n subtitle={subtitle}\n trailing={trailing}\n />\n );\n}\n\nfunction Media({ src, alt }) {\n return (\n <div className=\"chorus-feed-ad__media\">\n {src ? (\n <img src={src} alt={alt ?? ''} />\n ) : (\n <span className=\"chorus-feed-ad__media-fallback\" aria-label={alt ?? ''} role=\"img\" />\n )}\n </div>\n );\n}\n\nexport function FeedAd({\n brand,\n onDismiss,\n dismissLabel,\n title,\n body,\n media,\n cta,\n className,\n ...rest\n}) {\n /* `cta.color` plumbs an ad-client-supplied Hex through to the button\n surface. Only the fill and border swap; every other Standard Button\n token binding stays intact. */\n const ctaStyle = cta?.color ? { background: cta.color, borderColor: cta.color } : undefined;\n const ref = useRef(null);\n useFullBleedGuard(ref, 'FeedAd');\n\n return (\n <article ref={ref} className={joinClasses('chorus-feed-ad', className)} {...rest}>\n <BrandRow brand={brand} onDismiss={onDismiss} dismissLabel={dismissLabel} />\n\n {(title || body) ? (\n <div className=\"chorus-feed-ad__post-text\">\n {title ? <h3 className=\"chorus-feed-ad__title\">{title}</h3> : null}\n {body ? <p className=\"chorus-feed-ad__body\">{body}</p> : null}\n </div>\n ) : null}\n\n {(media || cta) ? (\n /* Hero media + CTA share a single `radius.md` clip with no\n internal gap; the group's overflow:hidden makes the squared\n button corners merge into the hero's bottom edge. */\n <div className=\"chorus-feed-ad__cta-group\">\n {media ? <Media {...media} /> : null}\n {cta ? (\n <Button\n appearance=\"primary\"\n size=\"medium\"\n fullWidth\n onClick={cta.onClick}\n className=\"chorus-feed-ad__cta\"\n style={ctaStyle}\n >\n {cta.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </article>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Pagination — decorative dot-position indicator for one-page-at-a-time\n pagers (PostCarousel / ProfileCarousel, media galleries). One dot per\n page; the active dot paints `sys.color.text.default`, the rest\n `sys.color.border.default`. An inline element (`span` / inline-flex)\n sized to its dots — the host owns horizontal placement, scroll\n position, active-index tracking, and keyboard reach; tapping a dot\n does not navigate. Renders nothing below two pages.\n See schema/components/pagination/pagination.md. */\n\nexport function Pagination({\n count = 0,\n activeIndex = 0,\n className,\n ...rest\n}) {\n if (count < 2) return null;\n const active = Math.max(0, Math.min(count - 1, activeIndex));\n\n return (\n <span\n className={joinClasses('chorus-pagination', className)}\n aria-hidden=\"true\"\n {...rest}\n >\n {Array.from({ length: count }, (_, idx) => (\n <span\n key={idx}\n className={joinClasses(\n 'chorus-pagination__dot',\n idx === active && 'chorus-pagination__dot--active',\n )}\n />\n ))}\n </span>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from './Button.jsx';\nimport { EntryRow } from './EntryRow.jsx';\nimport { Pagination } from './Pagination.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { EyeIcon } from './icons/index.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* PostCarousel — the `post` sub-component of the Carousel family. A\n horizontally-scrolling pager of up to 5 compact post cards. The\n schema spec (schema/components/carousel/post.md) is the source of\n truth for the 5-card hard cap and the next-card peek geometry.\n\n PostCarousel is the *content* — the section heading + trailing\n `See all` link live on the [Carousel](./Carousel.jsx) wrapper,\n not here. Compose `<Carousel label=\"…\"><PostCarousel items={…} /></Carousel>`. */\n\nconst MAX_CARDS = 5;\n\nexport function PostCarousel({\n items = [],\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n /* Hard cap — editorial / ops mistakes never blow out the section. */\n const cards = items.slice(0, MAX_CARDS);\n const pagerRef = useRef(null);\n const cardRefs = useRef([]);\n const rootRef = useRef(null);\n useFullBleedGuard(rootRef, 'PostCarousel');\n const [activeIndex, setActiveIndex] = useState(0);\n\n /* Pagination dots are decorative; the active dot reflects the current\n snap target. IntersectionObserver fires when a card crosses ~60% of\n the pager viewport, so the dot snaps in lockstep with the swipe. */\n useEffect(() => {\n const pager = pagerRef.current;\n if (!pager || cards.length === 0) return;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting && entry.intersectionRatio >= 0.6) {\n const idx = Number(entry.target.dataset.index);\n if (!Number.isNaN(idx)) setActiveIndex(idx);\n }\n }\n },\n { root: pager, threshold: [0.6] },\n );\n for (const node of cardRefs.current) {\n if (node) observer.observe(node);\n }\n return () => observer.disconnect();\n }, [cards.length]);\n\n return (\n <div\n ref={rootRef}\n className={joinClasses('chorus-post-carousel', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <div\n ref={pagerRef}\n className=\"chorus-post-carousel__pager\"\n role=\"group\"\n aria-label=\"Carousel cards\"\n >\n {cards.map((item, idx) => (\n <Card\n key={item.id ?? idx}\n item={item}\n innerRef={(node) => { cardRefs.current[idx] = node; }}\n index={idx}\n />\n ))}\n </div>\n\n <Pagination count={cards.length} activeIndex={activeIndex} />\n </div>\n );\n}\n\nfunction Card({ item, innerRef, index }) {\n const {\n avatar,\n channel,\n verified,\n followAction,\n followed,\n onFollowChange,\n title,\n body,\n mention,\n views,\n moreLabel,\n onClick,\n } = item;\n const Tag = onClick ? 'button' : 'article';\n const extraProps = onClick ? { type: 'button', onClick } : {};\n return (\n <Tag\n ref={innerRef}\n data-index={index}\n className={joinClasses(\n 'chorus-post-carousel__card',\n onClick && 'chorus-post-carousel__card--clickable',\n )}\n {...extraProps}\n >\n <header className=\"chorus-post-carousel__card-header\">\n <EntryRow\n thumbnail={avatar ?? { alt: channel }}\n thumbnailSize={40}\n verified={verified}\n label={channel}\n trailing={\n followAction ? (\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance={followed ? 'default' : 'accent'}\n aria-pressed={!!followed}\n onClick={(e) => {\n e.stopPropagation();\n onFollowChange?.(!followed);\n }}\n >\n {followed ? 'Following' : 'Follow'}\n </Button>\n ) : null\n }\n />\n </header>\n\n <div className=\"chorus-post-carousel__card-body\">\n <h4 className=\"chorus-post-carousel__card-title\">{title}</h4>\n <p className=\"chorus-post-carousel__card-text\">{body}</p>\n {mention ? (\n <span className=\"chorus-post-carousel__card-mention\">{mention}</span>\n ) : null}\n </div>\n\n <footer className=\"chorus-post-carousel__card-footer\">\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"secondary\"\n className=\"chorus-post-carousel__card-more\"\n onClick={(e) => { e.stopPropagation(); onClick?.(); }}\n >\n {moreLabel ?? 'See more'}\n </Button>\n <span className=\"chorus-post-carousel__card-views\" role=\"status\" aria-label={`Views — ${views}`}>\n <EyeIcon />\n <span>{views}</span>\n </span>\n </footer>\n </Tag>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from './Button.jsx';\nimport { Pagination } from './Pagination.jsx';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { HeartFillIcon, PulseFillIcon, StarFillIcon } from './icons/index.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* ProfileCarousel — horizontally-scrolling rail of profile-style cards\n (channels / user profiles / company channels). Sibling to PostCarousel:\n the pager geometry is identical, the card shape is different. Each\n card has a fixed 176px width and renders Toggle Button as the follow\n affordance. The section heading and the optional 'See all' link live\n on the Section wrapper. See\n schema/components/section/profile-carousel.md for the contract. */\n\nconst MAX_CARDS = 5;\n\nconst METRIC_KINDS = {\n star: { Icon: StarFillIcon, tone: 'var(--sys-color-icon-accent-yellow-default)' },\n pulse: { Icon: PulseFillIcon, tone: 'var(--sys-color-icon-success)' },\n heart: { Icon: HeartFillIcon, tone: 'var(--sys-color-icon-accent-red-default)' },\n};\n\n// Universal Chorus image-area placeholder — shared across every empty\n// image slot (Thumbnail, FeedAd media, ProfileCarousel cover). Consumers\n// expose this file at `/placeholder.png` in their public/ directory.\nconst PLACEHOLDER_IMAGE = '/placeholder.png';\n\nexport function ProfileCarousel({\n items = [],\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const cards = items.slice(0, MAX_CARDS);\n const pagerRef = useRef(null);\n const cardRefs = useRef([]);\n const rootRef = useRef(null);\n useFullBleedGuard(rootRef, 'ProfileCarousel');\n const [activeIndex, setActiveIndex] = useState(0);\n\n useEffect(() => {\n const pager = pagerRef.current;\n if (!pager || cards.length === 0) return;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting && entry.intersectionRatio >= 0.6) {\n const idx = Number(entry.target.dataset.index);\n if (!Number.isNaN(idx)) setActiveIndex(idx);\n }\n }\n },\n { root: pager, threshold: [0.6] },\n );\n for (const node of cardRefs.current) {\n if (node) observer.observe(node);\n }\n return () => observer.disconnect();\n }, [cards.length]);\n\n return (\n <div\n ref={rootRef}\n className={joinClasses('chorus-profile-carousel', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <div\n ref={pagerRef}\n className=\"chorus-profile-carousel__pager\"\n role=\"group\"\n aria-label=\"Carousel cards\"\n >\n {cards.map((item, idx) => (\n <Card\n key={item.id ?? idx}\n item={item}\n innerRef={(node) => { cardRefs.current[idx] = node; }}\n index={idx}\n />\n ))}\n </div>\n\n <Pagination count={cards.length} activeIndex={activeIndex} />\n </div>\n );\n}\n\nfunction Card({ item, innerRef, index }) {\n const {\n avatar,\n cover,\n name,\n followers,\n metrics = [],\n description,\n followed,\n onFollowChange,\n followLabel = 'Follow',\n followingLabel = 'Following',\n onClick,\n } = item;\n const hasDescription = typeof description === 'string' && description.length > 0;\n const Tag = onClick ? 'button' : 'article';\n const extraProps = onClick ? { type: 'button', onClick } : {};\n return (\n <Tag\n ref={innerRef}\n data-index={index}\n className={joinClasses(\n 'chorus-profile-carousel__card',\n onClick && 'chorus-profile-carousel__card--clickable',\n )}\n {...extraProps}\n >\n <div className=\"chorus-profile-carousel__cover\" aria-hidden=\"true\">\n <img\n className=\"chorus-profile-carousel__cover-image\"\n src={cover?.src ?? PLACEHOLDER_IMAGE}\n alt={cover?.alt ?? ''}\n />\n </div>\n\n <div className=\"chorus-profile-carousel__avatar-wrap\">\n {/* outlined paints the 2-token surface halo that separates the\n circle from the cover image underneath — same contract\n ProfileHeader's avatar uses. See thumbnail.md#with-surface-outline. */}\n <Thumbnail size={64} outlined {...(avatar ?? { alt: name })} />\n </div>\n\n <div className=\"chorus-profile-carousel__identity\">\n <h4 className=\"chorus-profile-carousel__name\">{name}</h4>\n <span className=\"chorus-profile-carousel__followers\">{followers}</span>\n </div>\n\n {hasDescription ? (\n <div className=\"chorus-profile-carousel__description\">\n <p className=\"chorus-profile-carousel__description-text\">{description}</p>\n </div>\n ) : (\n <div className=\"chorus-profile-carousel__metrics\" role=\"group\" aria-label={`${name} metrics`}>\n {metrics.map((metric, i) => {\n const kind = typeof metric.icon === 'string' ? METRIC_KINDS[metric.icon] : null;\n const Icon = kind?.Icon;\n return (\n <span key={i} className=\"chorus-profile-carousel__metric\">\n <span\n className=\"chorus-profile-carousel__metric-icon\"\n style={{ color: metric.color ?? kind?.tone }}\n aria-hidden=\"true\"\n >\n {Icon ? <Icon /> : metric.icon}\n </span>\n <span className=\"chorus-profile-carousel__metric-value\">{metric.value}</span>\n </span>\n );\n })}\n </div>\n )}\n\n <div className=\"chorus-profile-carousel__action\">\n <Button\n variant=\"toggle\"\n active={!!followed}\n onClick={(e) => {\n e.stopPropagation();\n onFollowChange?.(!followed);\n }}\n >\n {followed ? followingLabel : followLabel}\n </Button>\n </div>\n </Tag>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\n// Dev-only sanity check for NavigationBar / TabBar. These bars render IN FLOW\n// and rely on a page shell to pin them (a full-height flex column where only\n// <main> scrolls — see PageShell / patterns/layout.md). The most common bug is\n// shipping them inside the scrolling region (window-scroll + paddingBottom, or\n// a tall scrolling div) so they drift off-screen on long content. This walks up\n// to the bar's nearest scroll container and warns when the bar is INSIDE it\n// (and would scroll away) instead of pinned outside it.\n//\n// Silent in production builds. Heuristic and conservative: only warns when a\n// scrolling region is actually present, so a short page that does not yet\n// scroll never false-positives. A ResizeObserver re-checks as content grows\n// (short → tall), which is exactly when the drift becomes visible.\n\nconst WARNED = new WeakSet();\n\nfunction isDev() {\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV) {\n return process.env.NODE_ENV !== 'production';\n }\n return true;\n}\n\nfunction scrolls(el) {\n return el.scrollHeight > el.clientHeight + 4;\n}\n\n// The nearest ancestor that is an actual scroll container, or null when the\n// page itself (document) is the scroll root.\nfunction nearestScrollContainer(node) {\n let n = node.parentElement;\n while (n && n !== document.body && n !== document.documentElement) {\n const oy = getComputedStyle(n).overflowY;\n if (/(auto|scroll|overlay)/.test(oy) && scrolls(n)) return n;\n n = n.parentElement;\n }\n return null;\n}\n\nfunction checkOnce(el, name) {\n if (!el || WARNED.has(el)) return;\n\n // A self-pinned bar (sticky/fixed) won't drift — Chorus doesn't recommend it\n // (double safe-area insets), but it's not the bug this guard targets.\n const pos = getComputedStyle(el).position;\n if (pos === 'fixed' || pos === 'sticky') return;\n\n const container = nearestScrollContainer(el);\n let drifts = false;\n if (container) {\n // An inner scroll region exists; the bar drifts if it lives inside it\n // instead of being pinned as a sibling outside it.\n drifts = container.contains(el);\n } else {\n // No inner scroll container → the document scrolls as one piece. If it\n // actually scrolls, an in-flow bar drifts with the content.\n const doc = document.scrollingElement || document.documentElement;\n drifts = doc ? scrolls(doc) : false;\n }\n if (!drifts) return;\n\n WARNED.add(el);\n // eslint-disable-next-line no-console\n console.warn(\n `[Chorus] <${name}> is rendered inside the scrolling region, so it will drift off-screen on long content. ` +\n `Chorus bars render in flow and do NOT self-pin — pinning is the page shell's job. ` +\n `Wrap the screen in <PageShell nav={…} tabBar={…}> (or a full-height flex column where only <main> scrolls: ` +\n `\\`.page-shell { display:flex; flex-direction:column; height:100dvh } .page-shell > main { flex:1 1 auto; min-height:0; overflow-y:auto }\\`). ` +\n `Do NOT add position:sticky/fixed to the bar — that double-applies its safe-area inset. See patterns/layout.md.`,\n el,\n );\n}\n\n// `enabled` lets callers opt out for bars that are intentionally in-flow and\n// meant to scroll with content — e.g. the overlay NavigationBar floating over a\n// ProfileHeader cover, which drifts WITH the hero by design.\nexport function usePinnedBarGuard(ref, name, enabled = true) {\n useEffect(() => {\n if (!enabled) return;\n if (typeof window === 'undefined') return;\n if (!isDev()) return;\n const el = ref.current;\n if (!el) return;\n\n checkOnce(el, name);\n\n // Re-check as content grows (short page → tall page is when drift appears).\n const ro = new ResizeObserver(() => checkOnce(el, name));\n ro.observe(el);\n if (document.body) ro.observe(document.body);\n return () => ro.disconnect();\n }, [ref, name, enabled]);\n}\n","'use client';\n\nimport { isValidElement, useState, useRef, useEffect } from 'react';\nimport { Button } from './Button.jsx';\nimport { ChevronLeftIcon, XCircleFillIcon, MenuIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport { usePinnedBarGuard } from './internal/usePinnedBarGuard.js';\n\n/* NavigationBar — the top app bar. Sub-flavors share one component\n (`variant=\"main\" | \"sub\" | \"search\"`), each rendering a single horizontal\n strip with 16px inline + 8px block padding and a 56px min-height over\n `sys.color.surface.default`.\n\n Main — left-aligned page title (typo.heading.lg, 24/Semibold) with a\n leading menu icon and up to four trailing action icons. On a drill-in\n (content-detail) screen, pass `onBack` instead of `onMenuClick` and the\n leading glyph swaps to a back chevron — same row, different entry point.\n Sub — three-column grid (leading / centred title / trailing) with a\n smaller title (typo.heading.sm, 16/Semibold) and a single trailing\n slot that takes an icon, a labelled button, or an inline text link.\n\n Icon slots render as a plain `<button>` with a 24px glyph, a\n transparent rest fill, and the system's hover / pressed / focus\n overlays painted via the same `state.*` rule every other control\n uses. Not delegated to Toolbar Button — Toolbar Button is the Filter\n chip chrome (32px capsule, 16px icon) and shrinks the nav bar's\n glyphs out of the 24-rung the spec calls for. */\n\nfunction isIconDescriptor(value) {\n return value && typeof value === 'object' && !isValidElement(value) && 'icon' in value;\n}\nfunction isLinkDescriptor(value) {\n return value && typeof value === 'object' && !isValidElement(value) && 'label' in value && !('icon' in value);\n}\n\n/* Every icon slot in the bar renders as the canonical Icon Button\n sub-component (`Button variant=\"icon\"`) so the bar's hit\n target, hover overlay, and focus ring stay aligned with every other\n icon-only surface in the system without duplicating chrome. */\nfunction IconSlot({ icon, 'aria-label': ariaLabel, onClick, size = 'large', ...rest }) {\n return (\n <Button variant=\"icon\" size={size} icon={icon} aria-label={ariaLabel} onClick={onClick} {...rest} />\n );\n}\n\nfunction renderSlot(slot) {\n if (slot == null) return null;\n if (isValidElement(slot)) return slot;\n if (isIconDescriptor(slot)) return <IconSlot {...slot} />;\n if (isLinkDescriptor(slot)) {\n const { label, href, onClick } = slot;\n return (\n <Button variant=\"text\" href={href} onClick={onClick}>{label}</Button>\n );\n }\n return null;\n}\n\nexport function NavigationBar({\n variant = 'main',\n /* Sub variant — `surface` (default, opaque page chrome) or `overlay`\n (transparent + fixed-white icons, for floating over a hero / cover\n image such as inside ProfileHeader). Ignored on main / search. */\n appearance = 'surface',\n title,\n /* Main variant (tab root) — drawer trigger. The glyph is fixed (the menu /\n hamburger); consumers only wire onClick + the a11y label. */\n onMenuClick,\n menuLabel = 'Open menu',\n /* Sub variant — leading slot accepts a node or `{ icon, ... }`. */\n leading,\n leadingLabel,\n /* Main variant — up to four trailing icon descriptors. */\n trailingActions,\n /* Sub variant — single trailing slot (icon / button / link / node). */\n trailing,\n /* Search variant — bare-input bar with leading back + conditional clear. */\n value,\n defaultValue,\n placeholder,\n onChange,\n onSubmit,\n /* Back affordance — search / sub leading back, and the Main drill-in\n (content-detail) case: passing onBack swaps Main's menu glyph for a back\n chevron wired to it. */\n onBack,\n backLabel = 'Back',\n clearLabel = 'Clear search',\n autoFocus = true,\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'NavigationBar');\n // Overlay nav floats over a hero cover and scrolls with it by design — skip.\n usePinnedBarGuard(ref, 'NavigationBar', appearance !== 'overlay');\n if (variant === 'search') {\n return (\n <SearchBar\n forwardRef={ref}\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder ?? 'Search by keyword'}\n onChange={onChange}\n onSubmit={onSubmit}\n onBack={onBack}\n backLabel={backLabel}\n clearLabel={clearLabel}\n autoFocus={autoFocus}\n className={className}\n {...rest}\n />\n );\n }\n\n if (variant === 'sub') {\n const leadingEl = leading\n ? renderSlot(isIconDescriptor(leading) || isLinkDescriptor(leading) || isValidElement(leading)\n ? leading\n : { icon: leading, 'aria-label': leadingLabel })\n : null;\n const trailingEl = renderSlot(trailing);\n return (\n <header\n ref={ref}\n className={joinClasses(\n 'chorus-navigation-bar',\n 'chorus-navigation-bar--sub',\n appearance === 'overlay' && 'chorus-navigation-bar--overlay',\n className,\n )}\n data-appearance={appearance}\n {...rest}\n >\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--leading\">{leadingEl}</div>\n {/* Title is optional (composer bars omit it; overlay bars keep the\n identity below the bar). The middle grid cell must always exist —\n the 1fr/auto/1fr columns map by order — so a title-less bar\n renders a non-heading placeholder instead of an empty <h1>. */}\n {title != null && title !== '' ? (\n <h1 className=\"chorus-navigation-bar__title\">{title}</h1>\n ) : (\n <span className=\"chorus-navigation-bar__title\" aria-hidden=\"true\" />\n )}\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--trailing\">{trailingEl}</div>\n </header>\n );\n }\n\n /* Main — left-aligned title + trailing icon cluster (0..4). The leading\n glyph is the menu / hamburger on a tab root (wired to `onMenuClick`), or\n a back chevron on a drill-in / content-detail screen (wired to `onBack`).\n `onBack` wins when both are passed; with neither, the menu is the default. */\n const actions = Array.isArray(trailingActions) ? trailingActions : [];\n const isDrillIn = typeof onBack === 'function';\n return (\n <header\n ref={ref}\n className={joinClasses('chorus-navigation-bar', 'chorus-navigation-bar--main', className)}\n {...rest}\n >\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--leading\">\n {isDrillIn\n ? <IconSlot icon={<ChevronLeftIcon />} aria-label={backLabel} onClick={onBack} />\n : <IconSlot icon={<MenuIcon />} aria-label={menuLabel} onClick={onMenuClick} />}\n </div>\n <h1 className=\"chorus-navigation-bar__title\">{title}</h1>\n {actions.length > 0 ? (\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--trailing\">\n {actions.slice(0, 4).map((action, i) => {\n const el = renderSlot(action);\n return el ? <span key={i} className=\"chorus-navigation-bar__action\">{el}</span> : null;\n })}\n </div>\n ) : null}\n </header>\n );\n}\n\n/* Search — three-column grid like Sub, but the centre slot is a bare\n single-line input (no border, no fill — the bar carries the search\n affordance via the placeholder + page context, not via a pill chrome).\n The trailing column hosts a clear (×) Icon Button only when the value\n is non-empty; the input column expands to fill the freed space when\n the clear collapses, but never reflows its leading edge so the caret\n stays pixel-stable. The variant has no `disabled` state — gating\n belongs on the trigger that routes here, never on the bar itself. */\nfunction SearchBar({\n forwardRef,\n value,\n defaultValue,\n placeholder,\n onChange,\n onSubmit,\n onBack,\n backLabel,\n clearLabel,\n autoFocus,\n className,\n ...rest\n}) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const current = isControlled ? value : internalValue;\n const inputRef = useRef(null);\n\n useEffect(() => {\n if (autoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n }, [autoFocus]);\n\n function commit(next) {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n }\n\n function handleKeyDown(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n onSubmit?.(current);\n return;\n }\n if (event.key === 'Escape') {\n if (current !== '') {\n event.preventDefault();\n commit('');\n return;\n }\n event.preventDefault();\n onBack?.();\n }\n }\n\n function handleClear() {\n commit('');\n inputRef.current?.focus();\n }\n\n const showClear = current !== '';\n\n return (\n <header\n ref={forwardRef}\n className={joinClasses('chorus-navigation-bar', 'chorus-navigation-bar--search', className)}\n {...rest}\n >\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--leading\">\n <IconSlot icon={<ChevronLeftIcon />} aria-label={backLabel} onClick={onBack} />\n </div>\n <input\n ref={inputRef}\n type=\"search\"\n className=\"chorus-navigation-bar__search-input\"\n value={current}\n placeholder={placeholder}\n onChange={(e) => commit(e.target.value)}\n onKeyDown={handleKeyDown}\n />\n {showClear ? (\n <div className=\"chorus-navigation-bar__slot chorus-navigation-bar__slot--trailing\">\n {/* size=\"medium\" → 32 × 32 / 16-glyph Icon Button. The clear is a\n secondary affordance (the user's primary act on this bar is\n typing); a 40 × 40 / 24-glyph capsule would over-claim weight\n against the bare input next to it. */}\n <IconSlot icon={<XCircleFillIcon />} aria-label={clearLabel} onClick={handleClear} size=\"medium\" />\n </div>\n ) : null}\n </header>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { Button } from './Button.jsx';\nimport { NavigationBar } from './NavigationBar.jsx';\nimport { Thumbnail } from './Thumbnail.jsx';\nimport { ChevronLeftIcon, GlobeIcon, LockIcon, SearchIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\nconst PLACEHOLDER_IMAGE = '/placeholder.png';\n\nconst VISIBILITY = {\n public: { Icon: GlobeIcon, defaultLabel: 'Public' },\n private: { Icon: LockIcon, defaultLabel: 'Private' },\n};\n\n/* App status-bar mock — iOS-style OS chrome (time + cellular / Wi-Fi /\n battery glyphs) painted at the very top of the cover, above the overlay\n NavigationBar. Transparent fill, fixed-white glyphs so the cover image\n shows through behind it — same \"image provides the contrast\" contract\n as the overlay nav. Purely decorative OS-chrome mimicry: intentionally\n off-token (raw px + -apple-system font, like the docs IOSKeyboard\n mock), so the whole region is aria-hidden. iOS's canonical 9:41 time\n by default. */\nfunction AppStatusBar({ time = '9:41' }) {\n return (\n <div className=\"chorus-profile-header__status-bar\" aria-hidden=\"true\">\n <span className=\"chorus-profile-header__status-bar-time\">{time}</span>\n <span className=\"chorus-profile-header__status-bar-glyphs\">\n <svg width=\"18\" height=\"12\" viewBox=\"0 0 18 12\" fill=\"currentColor\" focusable=\"false\" aria-hidden=\"true\">\n <rect x=\"0\" y=\"7.5\" width=\"3\" height=\"4.5\" rx=\"1\" />\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"7\" rx=\"1\" />\n <rect x=\"10\" y=\"2.5\" width=\"3\" height=\"9.5\" rx=\"1\" />\n <rect x=\"15\" y=\"0\" width=\"3\" height=\"12\" rx=\"1\" />\n </svg>\n <svg width=\"16\" height=\"12\" viewBox=\"0 0 24 18\" fill=\"currentColor\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M1 5l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93-1.07 7.08-1.07 1 5zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 5.14 8.87 5.14 5 9z\" />\n </svg>\n <svg width=\"25\" height=\"12\" viewBox=\"0 0 25 12\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\">\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"11\" rx=\"3.2\" stroke=\"currentColor\" strokeOpacity=\"0.4\" />\n <rect x=\"2\" y=\"2\" width=\"18\" height=\"8\" rx=\"1.8\" fill=\"currentColor\" />\n <path d=\"M23 4.2c.85.35 1.4 1 1.4 1.8s-.55 1.45-1.4 1.8V4.2z\" fill=\"currentColor\" fillOpacity=\"0.4\" />\n </svg>\n </span>\n </div>\n );\n}\n\n/* ProfileHeader — identity block at the top of a profile detail screen.\n Anatomy (top to bottom):\n - Overlay app status bar (optional, `statusBar`) — iOS-style time +\n cellular / Wi-Fi / battery glyphs, transparent fill, fixed-white,\n so the cover image shows through the OS-chrome zone\n - Overlay NavigationBar (sub variant, appearance=\"overlay\") —\n transparent, fixed-white icons, floating over the cover\n - Cover band (200px tall, full-bleed, image-area fallback)\n - Action row: avatar (Thumbnail 56, overlapping cover) + follow\n Toggle Button (positioned 16px below cover bottom)\n - Heading: name (<h1>, heading.lg) + meta row (visibility · followers)\n The cover bleeds edge-to-edge inside the page-shell content box; the\n identity column pays its own 16px inline / block padding. The\n NavigationBar is absolutely positioned over the cover so the cover\n image fills the same 200px height regardless of the bar's presence.\n See schema/components/profile-header/profile-header.md. */\nexport function ProfileHeader({\n name,\n avatar,\n cover,\n visibility = 'public',\n visibilityLabel,\n followers,\n followed = false,\n onFollowChange,\n followLabel = 'Follow',\n followingLabel = 'Following',\n /* App status bar. Pass `statusBar` (or `statusBar={{ time }}`) to paint\n an iOS-style OS status bar at the cover's top edge — transparent fill,\n fixed-white glyphs, the cover image showing through. Off by default. */\n statusBar = false,\n /* Overlay nav controls. Defaults to a back-arrow leading + search\n trailing. Pass `nav={false}` to opt out of the overlay bar. */\n nav,\n onBack,\n onSearch,\n backLabel = 'Back',\n searchLabel = 'Search',\n className,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'ProfileHeader');\n\n const visibilityKind = VISIBILITY[visibility] ?? VISIBILITY.public;\n const VisibilityIcon = visibilityKind.Icon;\n const visibilityText = visibilityLabel ?? visibilityKind.defaultLabel;\n\n const handleFollowClick = () => {\n if (onFollowChange) onFollowChange(!followed);\n };\n\n const showNav = nav !== false;\n const showStatusBar = statusBar !== false && statusBar != null;\n const statusBarTime = typeof statusBar === 'object' ? statusBar.time : undefined;\n\n return (\n <section\n ref={ref}\n className={joinClasses(\n 'chorus-profile-header',\n showStatusBar && 'chorus-profile-header--with-status-bar',\n className,\n )}\n {...rest}\n >\n <div className=\"chorus-profile-header__cover\" aria-hidden=\"true\">\n <img\n className=\"chorus-profile-header__cover-image\"\n src={cover?.src ?? PLACEHOLDER_IMAGE}\n alt={cover?.alt ?? ''}\n />\n {showStatusBar || showNav ? (\n <div className=\"chorus-profile-header__overlay\">\n {showStatusBar ? <AppStatusBar time={statusBarTime} /> : null}\n {showNav ? (\n <div className=\"chorus-profile-header__nav\">\n <NavigationBar\n variant=\"sub\"\n appearance=\"overlay\"\n title=\"\"\n leading={{ icon: <ChevronLeftIcon />, 'aria-label': backLabel, onClick: onBack }}\n trailing={{ icon: <SearchIcon />, 'aria-label': searchLabel, onClick: onSearch }}\n />\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n\n <div className=\"chorus-profile-header__identity\">\n <div className=\"chorus-profile-header__action-row\">\n <div className=\"chorus-profile-header__avatar-wrap\">\n <Thumbnail\n size={56}\n outlined\n {...(avatar ?? { alt: name })}\n />\n </div>\n <Button\n variant=\"toggle\"\n active={followed}\n onClick={handleFollowClick}\n >\n {followed ? followingLabel : followLabel}\n </Button>\n </div>\n\n <div className=\"chorus-profile-header__heading\">\n <h1 className=\"chorus-profile-header__name\">{name}</h1>\n <div className=\"chorus-profile-header__meta\">\n <VisibilityIcon size={16} className=\"chorus-profile-header__meta-icon\" aria-hidden=\"true\" />\n <span className=\"chorus-profile-header__meta-visibility\">{visibilityText}</span>\n <span className=\"chorus-profile-header__meta-sep\" aria-hidden=\"true\">·</span>\n <span className=\"chorus-profile-header__meta-followers\">{followers}</span>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"input\",\n \"exportAlias\": \"Input\",\n \"description\": \"Single-line text field. Transparent-fill box (so it adopts whatever surface it sits on — a bottom sheet, a card, the page) whose visible stroke is an inset box-shadow, never a `border`, so it costs zero layout in every state — the field's height is exactly content + padding (a 24px line-box + 2 × 8px = 40px). Rest/hover stroke is 1px `hairline`, the active stroke steps to 2px `thin`; going active never moves the field's footprint or caret. The placeholder shows in a faint `placeholder` colour while the field is empty and the value in `text` colour once it isn't (value-driven). A trailing clear button appears only while the field is active and holds text. An optional `label` above and `helper` text or `maxLength` character count below (the two are mutually exclusive) wrap the box in a field group. The Chorus focus ring is a position:absolute overlay layer; an error appearance re-tones the whole container.\",\n \"element\": \"input\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"input\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"default\",\n \"error\"\n ],\n \"default\": \"default\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Visible label rendered above the field box and associated with it (`<label htmlFor>`).\"\n },\n \"helper\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Assistive text rendered below the field box, left-aligned. **Optional on every appearance** — omit the prop to render the field without an assistive rung; the box and label keep their footprint. On the `error` appearance the helper re-tones to `sys.color.text.danger` so the message reads as the error caption; an error field may still be shown without a helper, in which case only the field box re-tones. Mutually exclusive with `maxLength` — if both are given, the character count is shown and `helper` is ignored.\"\n },\n \"maxLength\": {\n \"type\": \"number\",\n \"optional\": true,\n \"description\": \"Caps the input length and renders a `current/max` character count below the field box, right-aligned. Mutually exclusive with `helper`.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"group\": {\n \"required\": false,\n \"description\": \"Wrapper around the label + box + helper/count, present only when at least one of `label` / `helper` / `maxLength` is supplied. A `display: flex` column at `groupGap` between rungs.\",\n \"intrinsic\": true\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Visible label above the box. `sys.typo.label.md`, `sys.color.text.default`. Associated with the input via `htmlFor`.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"container\": {\n \"required\": true,\n \"description\": \"The box — owns the transparent fill, the stroke (an inset box-shadow, not a `border`, so it never affects layout), radius, padding, focus ring.\",\n \"intrinsic\": true\n },\n \"input\": {\n \"required\": true,\n \"description\": \"The editable single-line text. Renders the value in the appearance's `text` colour when present, or the appearance's faint `placeholder` colour when empty — value-driven, not focus-driven. Carries `aria-describedby` pointing at the helper / count when present.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"clear\": {\n \"required\": false,\n \"description\": \"Trailing '×' button (XCircleFillIcon) that wipes the value and returns focus to the input. Rendered into the DOM whenever the value is non-empty and the field isn't disabled, but **shown only while the box is focused** — so it appears only in the active state with text to clear; hidden on an empty / blurred / disabled field.\",\n \"intrinsic\": true\n },\n \"helper\": {\n \"required\": false,\n \"description\": \"Assistive text below the box, left-aligned. `sys.typo.body.sm`, `sys.color.text.subtle`; on the `error` appearance the colour re-tones to `sys.color.text.danger` so the message reads as the error caption. Referenced by the input's `aria-describedby`. Not rendered when a `maxLength` count is present, and intentionally omittable on every appearance (including `error`) — pass nothing and the field renders without an assistive rung.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"count\": {\n \"required\": false,\n \"description\": \"`current/max` character count below the box, right-aligned, present when `maxLength` is set. `sys.typo.body.sm`, `sys.color.text.subtle`; the current-count number is `sys.typo.label.md` weight in `sys.color.text.default`. Referenced by the input's `aria-describedby`; updates `aria-live=\\\"polite\\\"`.\",\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.md\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.hairline\",\n \"groupGap\": \"sys.layout.stack.xs\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"helperTypo\": \"sys.typo.body.sm\",\n \"countTypo\": \"sys.typo.body.sm\",\n \"countCurrentTypo\": \"sys.typo.label.md\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"groupColors\": {\n \"label\": \"sys.color.text.default\",\n \"helper\": \"sys.color.text.subtle\",\n \"helperError\": \"sys.color.text.danger\",\n \"count\": \"sys.color.text.subtle\",\n \"countCurrent\": \"sys.color.text.default\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.text.default\",\n \"placeholder\": \"sys.color.border.boldest\",\n \"borderRest\": \"sys.color.border.default\",\n \"borderHover\": \"sys.color.border.boldest\",\n \"borderActive\": \"sys.color.border.focused\"\n },\n \"error\": {\n \"background\": \"sys.color.background.danger\",\n \"text\": \"sys.color.text.danger\",\n \"placeholder\": \"sys.color.text.danger\",\n \"borderRest\": \"sys.color.border.danger\",\n \"borderHover\": \"sys.color.border.danger\",\n \"borderActive\": \"sys.color.border.danger\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null,\n \"border\": \"borderRest\"\n },\n \"hovered\": {\n \"overlay\": null,\n \"border\": \"borderHover\"\n },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": {\n \"color\": \"text\",\n \"opacity\": \"sys.state.pressed\"\n },\n \"nestedActionScope\": \"The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button — that '×' 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.\"\n },\n \"active\": {\n \"isFocusState\": true,\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"caret\": \"visible\",\n \"showsClearWhenValue\": true,\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": { \"width\": \"sys.borderWidth.hairline\", \"color\": \"sys.color.border.focused\" },\n \"outerRing\": { \"width\": \"sys.borderWidth.thin\", \"color\": \"sys.color.border.focused\" }\n },\n \"note\": \"This IS the field's keyboard/input-focus state — `active` (caret visible, input engaged) and `:focus-visible` coincide for a text field, so there is no separate `focused` state; the focus ring described here (and in the parallel `focusIndicator` block) is the focus affordance. The stroke stays at `hairline` (1px) and re-tones to `borderActive` on active (no thickening) — but it is an inset `box-shadow`, not a `border`, so the box model is untouched: the field's footprint, caret, and text position are pixel-stable as it goes active. Nothing reflows. The clear button is shown only in this state (and only when the value is non-empty).\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"text\": \"sys.color.text.disabled\",\n \"placeholder\": \"sys.color.text.disabled\",\n \"border\": \"sys.color.border.bold\",\n \"suppressClear\": true,\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border + disabled text/placeholder.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the field is in (most commonly `active` since focus implies the caret is in the box). The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"accessibility\": {\n \"labelling\": \"The visible label associates with the input via `<label htmlFor>`. When no visible label is composed, the consumer supplies an aria-label.\",\n \"describedby\": \"The input's aria-describedby points at the helper id (when a helper is rendered) or the count id (when a maxLength count is rendered) — the two are mutually exclusive.\",\n \"invalid\": \"On the `error` appearance the input carries aria-invalid='true' — color alone does not expose invalidity to assistive tech. aria-invalid clears when the appearance returns to default.\",\n \"errorAnnouncement\": \"When the helper is carrying an error message (error appearance), its container is a polite live region (role='alert' / aria-live='polite') so the message is announced when it appears without yanking focus. The neutral (non-error) helper is not a live region.\",\n \"count\": \"The character count updates aria-live='polite' (see the count slot).\"\n },\n \"forbidden\": [\n \"raw <input> styled with Tailwind / inline color — the input is wrapped in the chorus-field chrome that owns the stroke\",\n \"active-state stroke painted with sys.color.background.primary / a container tier — the active stroke is sys.color.text.default (default appearance) or sys.color.text.danger (error appearance), never primary or a container tier\",\n \"stroke painted via `border:` — stroke is an inset box-shadow on the field\",\n \"helper text rendered outside the helperText slot\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"textarea\",\n \"exportAlias\": \"Textarea\",\n \"description\": \"Multi-line text field. Identical chrome contract to [input](./input.md) — transparent-fill box whose visible stroke is an inset box-shadow (never a `border`, so the field's footprint is pixel-stable across every state), 16px text in `body.md`, optional `label` above and `helper` / `maxLength` below. Diverges only on the inner element: a `<textarea>` instead of a single-line `<input>`, with a configurable `rows` rung (default 4) and a vertical-only resize handle. Same `label` / `helper` / `maxLength` group rules as input — multi-line + character count is the canonical Chorus pairing for any composition field that bounds the message length.\",\n \"element\": \"textarea\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"textarea\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\"default\", \"error\"],\n \"default\": \"default\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Visible label rendered above the field box and associated with it (`<label htmlFor>`).\"\n },\n \"helper\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Assistive text rendered below the field box, left-aligned. Same rules as [input.helper](./input.md): mutually exclusive with `maxLength`, optional on every appearance, re-tones to `sys.color.text.danger` on the error appearance.\"\n },\n \"maxLength\": {\n \"type\": \"number\",\n \"optional\": true,\n \"description\": \"Caps the value length and renders a `current/max` character count below the box, right-aligned. Mutually exclusive with `helper`.\"\n },\n \"rows\": {\n \"type\": \"number\",\n \"default\": 4,\n \"description\": \"Minimum visible rows. The textarea is `resize: vertical` so the user can pull it taller; the value never shrinks below `rows`.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"group\": {\n \"required\": false,\n \"description\": \"Wrapper around the label + box + helper/count, present only when at least one of `label` / `helper` / `maxLength` is supplied. Delegates to the input/textarea-shared group spec.\",\n \"intrinsic\": true\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Visible label above the box. `sys.typo.label.md`, `sys.color.text.default`. Associated with the textarea via `htmlFor`.\",\n \"accepts\": [\"text\"]\n },\n \"container\": {\n \"required\": true,\n \"description\": \"The box — owns the transparent fill, the stroke (an inset box-shadow), radius, padding, focus ring. Same chrome as input; differs only in `align-items: stretch` so the inner textarea fills the box height.\",\n \"intrinsic\": true\n },\n \"textarea\": {\n \"required\": true,\n \"description\": \"The editable multi-line text. `body.md` typo, `resize: vertical`, `rows` minimum. Carries `aria-describedby` pointing at the helper / count when present. No trailing clear button — the value can be long enough that wiping it via a single click is hostile; the user clears multi-line content by selecting text.\",\n \"accepts\": [\"text\"]\n },\n \"helper\": {\n \"required\": false,\n \"description\": \"Assistive text below the box. Same rules as input.helper.\",\n \"accepts\": [\"text\"]\n },\n \"count\": {\n \"required\": false,\n \"description\": \"`current/max` character count below the box, right-aligned. Same rules as input.count.\",\n \"accepts\": [\"text\"]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.md\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.hairline\",\n \"groupGap\": \"sys.layout.stack.xs\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"helperTypo\": \"sys.typo.body.sm\",\n \"countTypo\": \"sys.typo.body.sm\",\n \"countCurrentTypo\": \"sys.typo.label.md\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\",\n \"rowsDefault\": 4,\n \"resize\": \"vertical\"\n },\n \"groupColors\": {\n \"label\": \"sys.color.text.default\",\n \"helper\": \"sys.color.text.subtle\",\n \"helperError\": \"sys.color.text.danger\",\n \"count\": \"sys.color.text.subtle\",\n \"countCurrent\": \"sys.color.text.default\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.text.default\",\n \"placeholder\": \"sys.color.border.boldest\",\n \"borderRest\": \"sys.color.border.default\",\n \"borderHover\": \"sys.color.border.boldest\",\n \"borderActive\": \"sys.color.border.focused\"\n },\n \"error\": {\n \"background\": \"sys.color.background.danger\",\n \"text\": \"sys.color.text.danger\",\n \"placeholder\": \"sys.color.text.danger\",\n \"borderRest\": \"sys.color.border.danger\",\n \"borderHover\": \"sys.color.border.danger\",\n \"borderActive\": \"sys.color.border.danger\"\n }\n },\n \"states\": {\n \"default\": { \"overlay\": null, \"border\": \"borderRest\" },\n \"hovered\": { \"overlay\": null, \"border\": \"borderHover\" },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": { \"color\": \"text\", \"opacity\": \"sys.state.pressed\" },\n \"nestedActionScope\": \"The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button — that '×' 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.\"\n },\n \"active\": {\n \"isFocusState\": true,\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"caret\": \"visible\",\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": { \"width\": \"sys.borderWidth.hairline\", \"color\": \"sys.color.border.focused\" },\n \"outerRing\": { \"width\": \"sys.borderWidth.thin\", \"color\": \"sys.color.border.focused\" }\n },\n \"note\": \"This IS the field's keyboard/input-focus state — `active` (caret visible, input engaged) and `:focus-visible` coincide for a text field, so there is no separate `focused` state; the focus ring described here (and in the parallel `focusIndicator` block) is the focus affordance. Stroke stays at `hairline` (1px), re-toning to `borderActive` as an inset box-shadow (no thickening) — same pixel-stable contract as input.\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"text\": \"sys.color.text.disabled\",\n \"placeholder\": \"sys.color.text.disabled\",\n \"border\": \"sys.color.border.bold\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border + disabled text/placeholder.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Same outward single ring as input.focusIndicator.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"raw <textarea> styled with Tailwind / inline color — the textarea is wrapped in the chorus-field chrome that owns the stroke\",\n \"auto-grow without bounds — the textarea has a `rows` floor; tall content is reachable by the user via the resize handle, not by an uncapped programmatic grow\",\n \"horizontal resize handle — only the vertical handle is allowed (`resize: vertical`); horizontal resize breaks the parent column's rhythm\",\n \"trailing clear button — multi-line content is too costly to wipe in one click\",\n \"stroke painted via `border:` — stroke is an inset box-shadow on the field\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"search\",\n \"exportAlias\": \"SearchBar\",\n \"description\": \"Single-line search field — a search-shaped sibling of Input. Same transparent-fill box, same hairline-at-rest / thin-at-active inset box-shadow stroke (so the box model is untouched in every state), same placeholder-vs-value colour rules, same focus ring, same trailing clear button. Two anatomy differences from Input — a leading `SearchIcon` glyph pinned at the box's inner-left edge so the field reads as a search affordance before the user types, and the corner radius steps from `sys.radius.md` to `sys.radius.full` (pill). **Search Bar is a bare box only — it does not accept a `label`, `helper`, or `maxLength`**, and so never renders the field-group wrapper; it also carries no `error` appearance — error reporting belongs to a labelled field. A search rung sits in chrome (a header bar, a list filter, a sheet's top) where the affordance is carried by the leading glyph and the placeholder; stacking a visible label or a `current/max` count on top of that competes with the search affordance instead of reinforcing it. Reach for [Input](./input.md) when the rung needs a labelled / counted form field or an error treatment.\",\n \"element\": \"input\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"search\"\n },\n \"appearance\": {\n \"type\": \"literal\",\n \"value\": \"default\",\n \"description\": \"Search Bar carries only the `default` appearance — there is no `error` form (error reporting belongs to a labelled Input).\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"The pill box — owns the transparent fill, the stroke (an inset box-shadow, not a `border`, so it never affects layout), full radius, padding, focus ring.\",\n \"intrinsic\": true\n },\n \"leading\": {\n \"required\": true,\n \"description\": \"The leading `SearchIcon` glyph pinned at the box's inner-left edge. Inherits the field's text colour (`sys.color.text.default`); decorative — not a real button, has `aria-hidden`. 16px (`sys.icon.md`), matching the clear button's footprint so the two affixes balance.\",\n \"intrinsic\": true\n },\n \"input\": {\n \"required\": true,\n \"description\": \"The editable single-line text. Renders the value in the appearance's `text` colour when present, or the appearance's faint `placeholder` colour when empty — value-driven, not focus-driven.\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"clear\": {\n \"required\": false,\n \"description\": \"Trailing '×' button (XCircleFillIcon) that wipes the value and returns focus to the input. Rendered into the DOM whenever the value is non-empty and the field isn't disabled, but **shown only while the box is focused** — so it appears only in the active state with text to clear; hidden on an empty / blurred / disabled field.\",\n \"intrinsic\": true\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.full\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.hairline\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.text.default\",\n \"placeholder\": \"sys.color.border.boldest\",\n \"borderRest\": \"sys.color.border.default\",\n \"borderHover\": \"sys.color.border.boldest\",\n \"borderActive\": \"sys.color.border.focused\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null,\n \"border\": \"borderRest\"\n },\n \"hovered\": {\n \"overlay\": null,\n \"border\": \"borderHover\"\n },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": {\n \"color\": \"text\",\n \"opacity\": \"sys.state.pressed\"\n },\n \"nestedActionScope\": \"The pressed overlay (and hover stroke) is suppressed while the pointer presses / hovers the trailing clear button — that '×' 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.\"\n },\n \"active\": {\n \"isFocusState\": true,\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"caret\": \"visible\",\n \"showsClearWhenValue\": true,\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": { \"width\": \"sys.borderWidth.hairline\", \"color\": \"sys.color.border.focused\" },\n \"outerRing\": { \"width\": \"sys.borderWidth.thin\", \"color\": \"sys.color.border.focused\" }\n },\n \"note\": \"This IS the field's keyboard/input-focus state — `active` (caret visible, input engaged) and `:focus-visible` coincide for a text field, so there is no separate `focused` state; the focus ring described here (and in the parallel `focusIndicator` block) is the focus affordance. The stroke stays at `hairline` (1px) and re-tones to `borderActive` on active (no thickening) — but it is an inset `box-shadow`, not a `border`, so the box model is untouched: the field's footprint, caret, and text position are pixel-stable as it goes active. Nothing reflows. The clear button is shown only in this state (and only when the value is non-empty).\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"text\": \"sys.color.text.disabled\",\n \"placeholder\": \"sys.color.text.disabled\",\n \"border\": \"sys.color.border.bold\",\n \"suppressClear\": true,\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border + disabled text/placeholder.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Keyboard-focus visual — an accessibility indicator, not a lifecycle state. Composes over whichever lifecycle state the field is in. The `states.focused` block above is kept for JSX runtime consumers; this block is the parallel external-reader contract.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it; the 1px outward ring is reserved by the surrounding layout.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible (keyboard / programmatic focus, never plain mouse click)\"\n },\n \"forbidden\": [\n \"leading search glyph as a separate hit area — the entire field is the click / focus target\",\n \"clear glyph rendered when value is empty — the clear affordance only appears with content\",\n \"search field stacked under a navigation-bar/search — the bar variant already embeds the search input\"\n ]\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"FormField\",\n \"family\": \"form-field\",\n \"subcomponent\": \"select\",\n \"exportAlias\": \"Select\",\n \"description\": \"Input-shaped picker — the same transparent-fill box, hairline-at-rest / thin-at-active inset box-shadow stroke, label / helper rungs and `error` re-tone as Input, but the field is read-only and the trailing slot carries a `ArrowDownIcon` chevron (16px / `sys.icon.md`). Clicking anywhere in the box fires `onOpen`, and the consumer raises a `BottomSheet` (or other surface) with the option list. The chosen value is echoed back through `value`. Supports an optional leading icon, sized to `sys.icon.md`, that pins at the inner-left edge — same affordance as Search bar's glyph.\",\n \"element\": \"div\",\n \"props\": {\n \"variant\": {\n \"type\": \"literal\",\n \"value\": \"select\"\n },\n \"appearance\": {\n \"type\": \"enum\",\n \"values\": [\n \"default\",\n \"error\"\n ],\n \"default\": \"default\"\n },\n \"value\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"defaultValue\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"optional\": true\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"helper\": {\n \"type\": \"node\",\n \"optional\": true\n },\n \"leadingIcon\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional 16px (`sys.icon.md`) decorative glyph pinned at the inner-left edge of the field. Tracks the field's active text colour (`sys.color.text.default` on the default appearance, `sys.color.text.danger` on `error`) so the glyph reads as part of the typed content.\"\n },\n \"onOpen\": {\n \"type\": \"function\",\n \"optional\": true,\n \"description\": \"Fired when the field box or the trailing chevron is clicked. Consumers use this to raise a `BottomSheet` with the option list.\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"intrinsic\": true,\n \"description\": \"The box — same as Input.\"\n },\n \"leading\": {\n \"required\": false,\n \"description\": \"Optional 16px glyph at the inner-left edge. Decorative (`aria-hidden`).\",\n \"accepts\": [\n \"icon\"\n ]\n },\n \"input\": {\n \"required\": true,\n \"description\": \"Read-only echo of the selected value (or the placeholder when empty).\",\n \"accepts\": [\n \"text\"\n ]\n },\n \"dropdown\": {\n \"required\": true,\n \"intrinsic\": true,\n \"description\": \"Trailing chevron button (`ArrowDownIcon`, 16px). Always present, fires `onOpen`.\"\n },\n \"label\": {\n \"required\": false,\n \"accepts\": [\n \"text\"\n ]\n },\n \"helper\": {\n \"required\": false,\n \"accepts\": [\n \"text\"\n ]\n }\n },\n \"sizing\": {\n \"minHeight\": \"ref.space.500\",\n \"paddingBlock\": \"sys.layout.container.xs\",\n \"paddingInline\": \"sys.layout.container.sm\",\n \"slotGap\": \"sys.layout.inline.md\",\n \"radius\": \"sys.radius.md\",\n \"borderWidth\": \"sys.borderWidth.hairline\",\n \"activeStrokeWeight\": \"sys.borderWidth.hairline\",\n \"groupGap\": \"sys.layout.stack.xs\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"helperTypo\": \"sys.typo.body.sm\",\n \"countTypo\": \"sys.typo.body.sm\",\n \"countCurrentTypo\": \"sys.typo.label.md\",\n \"textTypo\": \"sys.typo.body.md\",\n \"iconSize\": \"sys.icon.md\"\n },\n \"groupColors\": {\n \"label\": \"sys.color.text.default\",\n \"helper\": \"sys.color.text.subtle\",\n \"helperError\": \"sys.color.text.danger\",\n \"count\": \"sys.color.text.subtle\",\n \"countCurrent\": \"sys.color.text.default\"\n },\n \"appearances\": {\n \"default\": {\n \"background\": \"transparent\",\n \"text\": \"sys.color.text.default\",\n \"placeholder\": \"sys.color.border.boldest\",\n \"borderRest\": \"sys.color.border.default\",\n \"borderHover\": \"sys.color.border.boldest\",\n \"borderActive\": \"sys.color.border.focused\"\n },\n \"error\": {\n \"background\": \"sys.color.background.danger\",\n \"text\": \"sys.color.text.danger\",\n \"placeholder\": \"sys.color.text.danger\",\n \"borderRest\": \"sys.color.border.danger\",\n \"borderHover\": \"sys.color.border.danger\",\n \"borderActive\": \"sys.color.border.danger\"\n }\n },\n \"states\": {\n \"default\": {\n \"overlay\": null,\n \"border\": \"borderRest\"\n },\n \"hovered\": {\n \"overlay\": null,\n \"border\": \"borderHover\"\n },\n \"pressed\": {\n \"border\": \"borderHover\",\n \"overlay\": {\n \"color\": \"text\",\n \"opacity\": \"sys.state.pressed\"\n }\n },\n \"active\": {\n \"isFocusState\": true,\n \"overlay\": null,\n \"border\": \"borderActive\",\n \"strokeWeight\": \"activeStrokeWeight\",\n \"focusRing\": {\n \"composition\": \"outward\",\n \"layer\": \"::after overlay — position:absolute, inset:0, no reflow (DESIGN.md Focus ring composition)\",\n \"innerCounterRing\": { \"width\": \"sys.borderWidth.hairline\", \"color\": \"sys.color.border.focused\" },\n \"outerRing\": { \"width\": \"sys.borderWidth.thin\", \"color\": \"sys.color.border.focused\" }\n },\n \"note\": \"This IS the trigger's keyboard-focus / open state — `:focus-visible` and the engaged (open) state coincide for the select trigger, so there is no separate `focused` state; the focus ring described here (and in the parallel `focusIndicator` block) is the focus affordance. The stroke re-tones to `borderActive` at `activeStrokeWeight` (1px, = rest) as an inset box-shadow, pixel-stable (no reflow).\"\n },\n \"disabled\": {\n \"overlay\": null,\n \"background\": \"sys.color.background.disabled\",\n \"text\": \"sys.color.text.disabled\",\n \"placeholder\": \"sys.color.text.disabled\",\n \"border\": \"sys.color.border.bold\",\n \"suppressFocusRing\": true,\n \"cursor\": \"not-allowed\",\n \"note\": \"Explicit disabled (no opacity): neutral disabled fill + bold border + disabled text/placeholder.\"\n }\n },\n \"focusIndicator\": {\n \"description\": \"Same keyboard-focus indicator as Input — outward single ring composed over the active stroke.\",\n \"composition\": \"outward\",\n \"compositionReason\": \"Action affordance with breathing room around it.\",\n \"overlay\": {\n \"color\": \"label\",\n \"opacity\": \"sys.state.focus\"\n },\n \"ring\": {\n \"width\": \"sys.borderWidth.hairline\",\n \"color\": \"sys.color.border.focused\"\n },\n \"trigger\": \":focus-visible\"\n },\n \"accessibility\": {\n \"role\": \"the field box is the combobox trigger: role='combobox' with aria-haspopup='listbox' (the raised BottomSheet hosts the option list as a listbox) and aria-expanded reflecting whether the popup is open. aria-controls points at the popup list's id while open. Mirrors the dropdown-trigger contract already defined on button/text (aria-haspopup / aria-expanded / aria-controls).\",\n \"focusable\": \"Because the element is a `div`, it MUST carry tabindex='0' so it is reachable in the tab order — without it the picker is keyboard-inoperable.\",\n \"keyboard\": \"Enter, Space, and ArrowDown all fire onOpen (open the option surface) when the field is focused — a keyboard user must be able to open the picker without a pointer. Esc closes the raised surface (owned by the BottomSheet).\",\n \"labelling\": \"aria-labelledby points at the label when one is composed; otherwise the consumer supplies an aria-label. aria-describedby points at the helper when rendered.\",\n \"invalid\": \"On the `error` appearance the trigger carries aria-invalid='true', cleared when the appearance returns to default — same contract as Input.\",\n \"leadingIconDecorative\": \"The leading glyph is aria-hidden (see the leading slot).\"\n },\n \"forbidden\": [\n \"select rendered as a raw <select> — select variant wraps the native control with the chorus-field chrome\",\n \"trailing chevron omitted — select always carries the trailing chevron in the rest state\",\n \"select trigger that is not keyboard-focusable / openable — the div MUST carry tabindex='0' and open on Enter / Space / ArrowDown; a pointer-only picker is forbidden\"\n ]\n}\n","'use client';\n\nimport { Children, isValidElement, useId, useRef, useState } from 'react';\nimport inputSpec from '../../../schema/components/form-field/input.spec.json';\nimport textareaSpec from '../../../schema/components/form-field/textarea.spec.json';\nimport searchBarSpec from '../../../schema/components/form-field/search.spec.json';\nimport selectSpec from '../../../schema/components/form-field/select.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\nimport { XCircleFillIcon, ArrowDownIcon, SearchIcon } from './icons/index.js';\n\n/* `hovered` / `pressed` / `active` are the field's interactive feedback\n states (pointer-driven in the real component). `focused` is the\n accessibility focus ring — not part of that feedback set, and in the\n docs preview it shows only when forced from the State control. All are\n reproduced via `data-force-state` on the field box. `disabled` is a\n real prop, not a forced state. */\nconst FORCEABLE_STATES = new Set(['hovered', 'pressed', 'active', 'focused']);\n\n/* Internal field renderer shared by every Form field sub-component. The\n `.chorus-field` <div> is the bordered box (stroke = inset box-shadow,\n never a `border`; transparent fill); the chromeless <input> inside\n supplies the editable text, an optional **leading** decorative slot\n (Search bar's magnifier glyph), and an optional trailing clear button.\n When a `label`, `helper`, or `maxLength` is supplied the box is wrapped\n in a `.chorus-field-group` that also renders the label above and the\n assistive text / character count below — `helper` and `maxLength` are\n mutually exclusive (if both are passed, the count wins). Value can be\n controlled (`value` + `onChange`) or uncontrolled (`defaultValue`).\n The clear button is rendered whenever the value is non-empty; CSS keeps\n it hidden unless the box is focused, so it only ever shows in the\n active state with text to wipe. */\nfunction FormFieldBox({\n spec,\n subcomponent,\n leadingSlot = null,\n leadingIcon = null,\n trailingSlot = null,\n readOnly = false,\n onClick,\n appearance = spec.props.appearance.default,\n value,\n defaultValue = '',\n placeholder,\n label,\n helper,\n maxLength,\n rows,\n disabled = false,\n state,\n className,\n style,\n onChange,\n onClear,\n ...rest\n}) {\n const isTextarea = subcomponent === 'textarea';\n const resolvedLeading = leadingSlot ?? leadingIcon ?? null;\n const app = spec.appearances[appearance] ?? spec.appearances[spec.props.appearance.default];\n const controlled = value !== undefined;\n const [inner, setInner] = useState(defaultValue);\n const current = controlled ? value : inner;\n const valueLen = current == null ? 0 : String(current).length;\n const isDisabled = disabled || state === 'disabled';\n const forcedState = FORCEABLE_STATES.has(state) ? state : null;\n const showClear = !isDisabled && valueLen > 0 && !readOnly && trailingSlot == null && !isTextarea;\n\n const showCount = maxLength != null;\n const showHelper = helper != null && !showCount;\n const hasGroup = label != null || showHelper || showCount;\n\n const inputRef = useRef(null);\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const descId = `${reactId}-desc`;\n const describedBy = hasGroup && (showHelper || showCount) ? descId : undefined;\n const textareaRows = rows ?? spec.sizing?.rowsDefault ?? 4;\n\n const composedStyle = {\n '--field-min-height': tokenToCss(spec.sizing.minHeight),\n '--field-padding-block': tokenToCss(spec.sizing.paddingBlock),\n '--field-padding-inline': tokenToCss(spec.sizing.paddingInline),\n '--field-slot-gap': tokenToCss(spec.sizing.slotGap),\n '--field-radius': tokenToCss(spec.sizing.radius),\n '--field-border-width': tokenToCss(spec.sizing.borderWidth),\n '--field-active-stroke': tokenToCss(spec.sizing.activeStrokeWeight),\n '--field-icon-size': tokenToCss(spec.sizing.iconSize),\n '--field-group-gap': tokenToCss(spec.sizing.groupGap),\n '--field-bg': tokenToCss(app.background),\n '--field-bg-disabled': tokenToCss(spec.states.disabled.background),\n // Disabled swaps text / placeholder / border to the explicit disabled\n // tokens (no opacity) — the field box paints them via these vars.\n '--field-text': tokenToCss(isDisabled ? spec.states.disabled.text : app.text),\n '--field-placeholder': tokenToCss(\n isDisabled ? spec.states.disabled.placeholder : app.placeholder,\n ),\n '--field-border': tokenToCss(isDisabled ? spec.states.disabled.border : app.borderRest),\n '--field-border-hover': tokenToCss(app.borderHover),\n '--field-border-active': tokenToCss(app.borderActive),\n '--field-overlay-pressed': tokenToCss(spec.states.pressed.overlay.opacity),\n '--field-focus-outer-color': tokenToCss(spec.focusIndicator.ring.color),\n ...typoStyles(spec.sizing.textTypo),\n };\n\n const handleChange = (event) => {\n if (!controlled) setInner(event.target.value);\n onChange?.(event);\n };\n\n const handleClear = () => {\n if (!controlled) setInner('');\n onClear?.();\n inputRef.current?.focus();\n };\n\n const fieldBox = (\n <div\n className={joinClasses(\n 'chorus-field',\n `chorus-field--${subcomponent}`,\n `chorus-field--${appearance}`,\n isDisabled && 'is-disabled',\n !hasGroup && className,\n )}\n data-force-state={forcedState ?? undefined}\n style={hasGroup ? undefined : { ...composedStyle, ...style }}\n >\n {resolvedLeading != null ? (\n <span className=\"chorus-field__leading\" aria-hidden=\"true\">\n {resolvedLeading}\n </span>\n ) : null}\n {isTextarea ? (\n <textarea\n ref={inputRef}\n id={hasGroup && label != null ? inputId : undefined}\n className=\"chorus-field__textarea\"\n value={current}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={readOnly}\n rows={textareaRows}\n maxLength={showCount ? maxLength : undefined}\n aria-describedby={describedBy}\n onChange={handleChange}\n onClick={onClick}\n {...(hasGroup ? {} : rest)}\n />\n ) : (\n <input\n ref={inputRef}\n id={hasGroup && label != null ? inputId : undefined}\n type=\"text\"\n className=\"chorus-field__input\"\n value={current}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={readOnly}\n maxLength={showCount ? maxLength : undefined}\n aria-describedby={describedBy}\n onChange={handleChange}\n onClick={onClick}\n {...(hasGroup ? {} : rest)}\n />\n )}\n {showClear ? (\n <button\n type=\"button\"\n className=\"chorus-field__clear\"\n data-nested-action=\"\"\n aria-label=\"Clear\"\n onClick={handleClear}\n >\n <XCircleFillIcon />\n </button>\n ) : null}\n {trailingSlot != null ? (\n <span className=\"chorus-field__trailing\" aria-hidden=\"true\">\n {trailingSlot}\n </span>\n ) : null}\n </div>\n );\n\n if (!hasGroup) return fieldBox;\n\n return (\n <div\n className={joinClasses(\n 'chorus-field-group',\n `chorus-field-group--${appearance}`,\n isDisabled && 'is-disabled',\n className,\n )}\n style={{ ...composedStyle, ...style }}\n {...rest}\n >\n {label != null ? (\n <label className=\"chorus-field-group__label\" htmlFor={inputId}>\n {label}\n </label>\n ) : null}\n {fieldBox}\n {showHelper ? (\n <span id={descId} className=\"chorus-field-group__helper\">\n {helper}\n </span>\n ) : null}\n {showCount ? (\n <span id={descId} className=\"chorus-field-group__count\" aria-live=\"polite\">\n <strong className=\"chorus-field-group__count-current\">{valueLen}</strong>/{maxLength}\n </span>\n ) : null}\n </div>\n );\n}\n\n/* Input — the labelled `variant=\"input\"` shape, exported as its own\n * runtime name so consumers can write `<Input label=… />` instead of\n * `<FormField variant=\"input\" label=… />`. Same props, same render. */\nexport function Input(props) {\n return <FormFieldBox spec={inputSpec} subcomponent=\"input\" {...props} />;\n}\nconst FormFieldInput = Input;\n\n/* Textarea — the multi-line cousin of Input. Identical chrome, but the\n inner element is a `<textarea>` with a `rows` floor (default 4) and\n a vertical-only resize handle. No trailing clear button — multi-line\n content is too costly to wipe in one click. */\nexport function Textarea(props) {\n return <FormFieldBox spec={textareaSpec} subcomponent=\"textarea\" {...props} />;\n}\nconst FormFieldTextarea = Textarea;\n\n/* Search bar — same field as Input with a leading `SearchIcon` pinned at\n the inner-left edge and a `sys.radius.full` pill corner. The glyph is\n decorative (`aria-hidden`); the search action is performed by the input\n itself (Enter / `onChange`). Bare box only — `label`, `helper`, and\n `maxLength` are intentionally not supported (see search.spec.json /\n .md); the affordance is the leading glyph + the placeholder, and a\n visible label / count rung competes with that rather than reinforcing\n it. The props are stripped here so a stray pass at the call site can't\n re-introduce the field-group wrapper. */\nexport function SearchBar({\n label: _label,\n helper: _helper,\n maxLength: _maxLength,\n appearance: _appearance,\n ...rest\n}) {\n return (\n <FormFieldBox\n spec={searchBarSpec}\n subcomponent=\"search\"\n appearance=\"default\"\n leadingSlot={<SearchIcon />}\n {...rest}\n />\n );\n}\nconst FormFieldSearchBar = SearchBar;\n\n/* Select — Input-shaped sibling that opens a bottom sheet instead of\n accepting keystrokes. Visually the same box as `input` (label, helper,\n error appearance, focus ring, optional leading icon), but the trailing\n slot is a chevron-down glyph and the field is read-only — clicking\n anywhere on the box (or the chevron) fires `onOpen`, and the consumer\n raises a `BottomSheet` with the option list. The chosen value is\n echoed back through `value`. */\nexport function Select({ onOpen, value, defaultValue, placeholder, ...rest }) {\n const handleOpen = () => onOpen?.();\n return (\n <FormFieldBox\n spec={selectSpec}\n subcomponent=\"select\"\n readOnly\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder}\n onClick={handleOpen}\n trailingSlot={\n <button\n type=\"button\"\n className=\"chorus-field__dropdown\"\n aria-label=\"Open options\"\n onClick={(e) => { e.stopPropagation(); handleOpen(); }}\n >\n <ArrowDownIcon />\n </button>\n }\n {...rest}\n />\n );\n}\n\nconst FormFieldSelect = Select;\nconst VARIANTS = {\n input: FormFieldInput,\n textarea: FormFieldTextarea,\n search: FormFieldSearchBar,\n select: FormFieldSelect,\n};\n\nexport function FormField({ variant = 'input', ...rest }) {\n const Impl = VARIANTS[variant] ?? FormFieldInput;\n return <Impl {...rest} />;\n}\n\n/* Form field group — composes multiple FormField rungs.\n\n `vertical` (default): stacks each child at `sys.layout.stack.md` (16px)\n gap. Each child keeps its own label / helper / count.\n\n `horizontal`: joins children side-by-side inside one shared\n `.chorus-field-group` shell. The group owns a single label above and\n helper / count below; the children render as bare boxes (their own\n label / helper props are stripped) and sit in a flex row at\n `sys.layout.inline.md` gap. Use for a leading \"select\"-style field\n (country code, currency) + trailing real input. */\nexport function FormFieldGroup({\n direction = 'vertical',\n label,\n helper,\n appearance = 'default',\n disabled = false,\n className,\n style,\n children,\n ...rest\n}) {\n const reactId = useId();\n const helperId = `${reactId}-helper`;\n\n if (direction === 'vertical') {\n return (\n <div\n className={joinClasses('chorus-field-stack', className)}\n style={style}\n {...rest}\n >\n {children}\n </div>\n );\n }\n\n const bare = Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const { label: _l, helper: _h, maxLength: _m, ...passthrough } = child.props;\n return { ...child, props: passthrough };\n });\n\n return (\n <div\n className={joinClasses(\n 'chorus-field-group',\n 'chorus-field-group--row',\n `chorus-field-group--${appearance}`,\n disabled && 'is-disabled',\n className,\n )}\n style={style}\n {...rest}\n >\n {label != null ? (\n <span className=\"chorus-field-group__label\">{label}</span>\n ) : null}\n <div className=\"chorus-field-row\" aria-describedby={helper ? helperId : undefined}>\n {bare}\n </div>\n {helper != null ? (\n <span id={helperId} className=\"chorus-field-group__helper\">\n {helper}\n </span>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* PageShell — the canonical app scaffold that PINS NavigationBar (top) and\n TabBar (bottom) while only the body scrolls. Chorus bars render in flow and\n do NOT self-pin (and must not be given position: sticky/fixed — that\n double-applies their safe-area insets). The shell is the pinning mechanism:\n a full-height flex column whose middle <main> is the sole scroll region.\n\n Compose:\n <PageShell\n nav={<NavigationBar variant=\"main\" … />}\n tabBar={<TabBar … />}\n >\n … screen content (the only part that scrolls) …\n </PageShell>\n\n `nav` and `tabBar` are flow children at their natural height; `<main>` takes\n the remaining space and is the only scroll container, so the bars stay put on\n long lists. The shell deliberately owns ONLY the pin/scroll mechanics — it\n does not impose a content gutter, so the body honors the normal full-bleed /\n inline padding contract. Pass `bodyProps` to add the page gutter or other\n layout to <main> (e.g. bodyProps={{ style: { paddingInline: 'var(--sys-layout-page-md)' } }}). */\nexport function PageShell({ nav, tabBar, children, className, bodyProps, ...rest }) {\n const { className: bodyClassName, ...bodyRest } = bodyProps ?? {};\n return (\n <div className={joinClasses('chorus-page-shell', className)} {...rest}>\n {nav}\n <main className={joinClasses('chorus-page-shell__body', bodyClassName)} {...bodyRest}>\n {children}\n </main>\n {tabBar}\n </div>\n );\n}\n","'use client';\n\nimport { useRef } from 'react';\nimport { ChevronDownIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* NavCard — a single bounded drill-in navigation card. Outlined rounded\n surface with leading label, optional supporting line, and an auto-rendered\n trailing chevron. Whole card is the tap target. Renders <button> by default,\n <a href> when `href` is set. See schema/components/nav-card/nav-card.md. */\n\nexport function NavCard({\n label,\n supportingText,\n leading,\n trailingIcon,\n variant = 'default',\n appearance = 'default',\n href,\n onClick,\n disabled = false,\n forcedState,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n useFullBleedGuard(ref, 'NavCard');\n\n /* `default` ships no trailing affordance — the card is a labelled\n surface with an optional leading slot. `nav` auto-renders the\n drill-in chevron. A consumer-supplied `trailingIcon` overrides on\n either variant (e.g. an external-link glyph or expand-down arrow). */\n const trailing = trailingIcon ?? (variant === 'nav' ? <ChevronRightGlyph /> : null);\n const sharedProps = {\n ref,\n className: joinClasses(\n 'chorus-nav-card',\n variant !== 'default' && `chorus-nav-card--variant-${variant}`,\n appearance !== 'default' && `chorus-nav-card--${appearance}`,\n className,\n ),\n 'aria-label': ariaLabel ?? label,\n 'data-force-state': forcedState ?? undefined,\n 'data-disabled': disabled ? 'true' : undefined,\n ...rest,\n };\n\n const body = (\n <>\n {leading ? <span className=\"chorus-nav-card__leading\">{leading}</span> : null}\n <span className=\"chorus-nav-card__label-col\">\n <span className=\"chorus-nav-card__label\">{label}</span>\n {supportingText ? (\n <span className=\"chorus-nav-card__supporting\">{supportingText}</span>\n ) : null}\n </span>\n {trailing ? (\n <span className=\"chorus-nav-card__trailing\" aria-hidden=\"true\">\n {trailing}\n </span>\n ) : null}\n </>\n );\n\n if (href) {\n return (\n <a\n {...sharedProps}\n href={disabled ? undefined : href}\n onClick={disabled ? (e) => e.preventDefault() : onClick}\n aria-disabled={disabled || undefined}\n >\n {body}\n </a>\n );\n }\n return (\n <button\n type=\"button\"\n {...sharedProps}\n onClick={onClick}\n disabled={disabled}\n >\n {body}\n </button>\n );\n}\n\n/* Right-pointing chevron, derived from the down-chevron glyph rotated 270°.\n Re-using the existing icon avoids shipping a duplicate ChevronRight SVG\n (it's also how list/nav renders its trailing chevron). The rotation is\n scoped to the trailing slot via the .chorus-nav-card__trailing class\n so it never affects a consumer-supplied custom trailingIcon. */\nfunction ChevronRightGlyph() {\n return (\n <span\n className=\"chorus-nav-card__chevron\"\n style={{ display: 'inline-flex', transform: 'rotate(-90deg)' }}\n >\n <ChevronDownIcon size={16} />\n </span>\n );\n}\n\n/* NavCardGroup — vertical stack of NavCards with a fixed `sys.layout.stack.xs`\n (8px) gap. Owns no padding of its own and never paints chrome — each child\n NavCard stays its own outlined surface. Reach for it when several drill-in\n cards belong to one logical section but should read as discrete cards (vs\n a list/nav rail where rows tile flush with hairline dividers). */\nexport function NavCardGroup({\n className,\n children,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n return (\n <div\n className={joinClasses('chorus-nav-card-group', className)}\n role=\"group\"\n aria-label={ariaLabel}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Progress — linear (determinate) progress bar. Pass `value` 0..1 (or a\n raw count together with `max`); a filled segment shows the completion\n ratio. Single visual rung — 8px tall, radius.full, `inverseSurface`\n indicator on a `sys.color.background.neutral` track scrim (~8% black light /\n ~8% white dark) so the bar reads on any host surface.\n See schema/components/progress/progress.md. */\n\nexport function Progress({\n value = 0,\n max = 1,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ratio = Math.max(0, Math.min(1, value / max));\n const percent = Math.round(ratio * 100);\n\n return (\n <div\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={percent}\n className={joinClasses('chorus-progress', className)}\n {...rest}\n >\n <span\n className=\"chorus-progress__indicator\"\n style={{ transform: `translateX(${-100 + percent}%)` }}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { Header } from './Header.jsx';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* Carousel — a labelled page region (renamed from Section). Wraps an\n optional Header (size=\"large\") and a horizontal-pager body slot. The\n header anatomy is owned by the Header component so other hosts\n (in-sheet sub-sections, bounded cards) can reuse the same shape via\n `<Header />` directly.\n\n When both `label` and `headerAction` are omitted, the header row is\n suppressed entirely and the body sits flush against the surface's\n block padding — useful when the surrounding screen already provides\n a heading or the carousel is purely visual chrome.\n\n Link-affordance rule: the trailing headerAction is a Text Button\n `appearance=\"accent\"` — enforced by Header itself. */\n\nconst HEADING_TAGS = new Set(['H1', 'H2', 'H3', 'H4', 'H5', 'H6']);\nconst HEADER_WARNED = new WeakSet();\n\n/* Dev-time guard: Carousel's `label` prop forwards into a Header at\n the top of the surface — Header owns the chrome, the typo, and the\n spacing. When a caller renders their own <h*> heading as a Carousel\n body child the chrome duplicates: Header sits at the top + the\n caller's <h*> re-indents the body, which is the canonical cause of\n the double-paid block padding inside Carousel we keep seeing in\n generated UIs. Warn once per element, dev only. Silent in\n production builds (NODE_ENV gate). */\nfunction useCarouselLabelGuard(bodyRef) {\n useEffect(() => {\n if (typeof window === 'undefined') return;\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production') return;\n const body = bodyRef.current;\n if (!body || HEADER_WARNED.has(body)) return;\n const heading = Array.from(body.children).find((child) => HEADING_TAGS.has(child.tagName));\n if (!heading) return;\n HEADER_WARNED.add(body);\n // eslint-disable-next-line no-console\n console.warn(\n `[Chorus] <Carousel> direct child is a <${heading.tagName.toLowerCase()}> — Carousel already renders a labelled <Header> via its \\`label\\` prop. ` +\n `The sibling heading duplicates the chrome (Header at the top + your heading re-indents the body), which is the canonical cause of double-paid block padding inside Carousel. ` +\n `Fix: drop the heading from the body and pass the label through Carousel's prop — <Carousel label=\"…\" headerAction={…}>{body}</Carousel>.`,\n heading,\n );\n });\n}\n\nexport function Carousel({\n label,\n headerAction,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const ref = useRef(null);\n const bodyRef = useRef(null);\n useFullBleedGuard(ref, 'Carousel');\n useCarouselLabelGuard(bodyRef);\n const hasHeader = (label != null && label !== '') || headerAction != null;\n return (\n <section\n ref={ref}\n className={joinClasses('chorus-carousel', className)}\n data-headless={hasHeader ? undefined : 'true'}\n aria-label={ariaLabel ?? label}\n {...rest}\n >\n {hasHeader ? (\n <Header size=\"large\" label={label} headerAction={headerAction} />\n ) : null}\n <div ref={bodyRef} className=\"chorus-carousel__body\">{children}</div>\n </section>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useBodyScrollLock, usePortalTarget } from './internal/scrimPortal.js';\nimport { joinClasses } from './spec-utils.js';\n\n/* SideSheet — off-canvas content column anchored to the leading or\n trailing edge of the viewport. Pairs with BottomSheet as the \"Sheet\"\n family's other anchor: BottomSheet for committed-sheet flows, SideSheet\n for off-canvas navigation columns, settings panes, channel directories.\n\n Composition is free-form via `children` — the canonical fill is a\n Header (size=\"medium\") column heading + an embedded `<List\n variant=\"entry\">` directory stack (40 avatar + label + inline count\n Badge + optional trailing icon toggle), optionally followed by\n another Header + List(entry) pair and a pinned footer action.\n\n Like BottomSheet: renders into a body portal when open, locks body\n scroll, returns focus to the trigger on close, and dismisses on\n Escape / backdrop tap.\n\n `inline` mode renders the sheet inside its parent layout (no portal,\n no fixed positioning, no body lock) — for docs previews that need to\n show the sheet card without occluding the page. */\nexport function SideSheet({\n open,\n onClose,\n anchor = 'left',\n width = 320,\n footer,\n children,\n inline = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const target = usePortalTarget();\n const scrimRef = useRef(null);\n const cardRef = useRef(null);\n const lastFocusedRef = useRef(null);\n useBodyScrollLock(open && !inline);\n\n useEffect(() => {\n if (!open || inline) return undefined;\n lastFocusedRef.current = document.activeElement;\n const focusable = cardRef.current?.querySelector(\n 'button, a[href], [tabindex]:not([tabindex=\"-1\"]), input:not([disabled])',\n );\n focusable?.focus?.({ preventScroll: true });\n return () => {\n const last = lastFocusedRef.current;\n // preventScroll: restoring focus on close must not scroll the page back\n // to the trigger (consistent with Dialog/BottomSheet).\n if (last && typeof last.focus === 'function') last.focus({ preventScroll: true });\n };\n }, [open, inline]);\n\n useEffect(() => {\n if (!open || inline) return undefined;\n const onKey = (e) => { if (e.key === 'Escape') onClose?.(); };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, inline, onClose]);\n\n if (!open) return null;\n if (!inline && !target) return null;\n\n const onScrimClick = (e) => {\n if (e.target === scrimRef.current) onClose?.();\n };\n\n const tree = (\n <div\n ref={scrimRef}\n className={joinClasses(\n 'chorus-side-sheet__scrim',\n inline && 'chorus-side-sheet__scrim--inline',\n className,\n )}\n data-anchor={anchor}\n onClick={inline ? undefined : onScrimClick}\n {...rest}\n >\n <aside\n ref={cardRef}\n className=\"chorus-side-sheet__card\"\n role=\"dialog\"\n aria-modal={inline ? undefined : 'true'}\n aria-label={ariaLabel}\n style={{ '--side-sheet-width': typeof width === 'number' ? `${width}px` : width }}\n >\n <div className=\"chorus-side-sheet__body\">{children}</div>\n {footer ? (\n <footer className=\"chorus-side-sheet__footer\">{footer}</footer>\n ) : null}\n </aside>\n </div>\n );\n\n return inline ? tree : createPortal(tree, target);\n}\n\n/* SideSheetGroup — Header + List bundling primitive. The Header is\n full-bleed and drives the rhythm: its 16px (`stack.md`) block-end is\n the header↔list gap, and its 24px (`stack.lg`) block-start is both the\n 24 between groups and the body's top inset for the first group. The\n group adds no sibling margin of its own. Lead each group with a Header\n so \"header + items\" reads as one unit and the inter-group rhythm reads\n as a divider. */\nexport function SideSheetGroup({ children, className, ...rest }) {\n return (\n <div className={joinClasses('chorus-side-sheet__group', className)} {...rest}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* Skeleton — placeholder shape that previews where real content will\n render. A single tonal block on `surfaceContainerHighest` with a\n slow opacity pulse. Three shapes: `text` (default, 16px-line block),\n `block` (rectangular, taller fill — image / card body), `circle`\n (Thumbnail-equivalent avatar placeholder). Consumer-supplied width /\n height override the default footprint. `layoutInset=\"inline\"` — the\n placeholder sits as a leaf inside whichever surface it stands in\n for; no full-bleed gutter responsibility. See schema/components/\n skeleton/skeleton.md. */\n\nexport function Skeleton({\n shape = 'text',\n width,\n height,\n className,\n style,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n return (\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-label={ariaLabel ?? 'Loading'}\n className={joinClasses(\n 'chorus-skeleton',\n `chorus-skeleton--${shape}`,\n className,\n )}\n style={{\n ...(width != null ? { width: typeof width === 'number' ? `${width}px` : width } : null),\n ...(height != null ? { height: typeof height === 'number' ? `${height}px` : height } : null),\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n/* SkeletonGroup — vertical stack of Skeletons that mirrors the rhythm\n of the content it replaces. Owns no chrome of its own; only enforces\n `sys.layout.stack.xs` (8px) between children so a multi-line text\n placeholder reads as one block. */\nexport function SkeletonGroup({\n className,\n children,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={ariaLabel ?? 'Loading'}\n className={joinClasses('chorus-skeleton-group', className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"Spinner\",\n \"family\": \"spinner\",\n \"description\": \"A rotating arc that signals an indeterminate, sub-second wait on a neutral host surface. The arc paints in `sys.color.background.primary` as the foreground motion and spins continuously over a faint `sys.color.background.neutral` ring so the rotation reads on any surface tier. Two rungs ride the `icon.*` ladder — `medium` (`sys.icon.lg` / 24px, default) and `small` (`sys.icon.md` / 16px). An optional `label` slot places a single line of loading copy beside the arc. `role='status'` + an accessible name (`aria-label`, default `'Loading'`) announce the loading state. Indeterminate only — for a known ratio use Progress; for content-shaped waits use Skeleton.\",\n \"element\": \"span\",\n \"props\": {\n \"size\": {\n \"type\": \"enum\",\n \"values\": [\"medium\", \"small\"],\n \"default\": \"medium\",\n \"description\": \"Selects the arc diameter off the `icon.*` ladder. `medium` paints at `sys.icon.lg` (24px); `small` at `sys.icon.md` (16px).\"\n },\n \"label\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Optional loading copy rendered beside the arc in `sys.typo.body.sm` / `sys.color.text.subtle`. When present it also supplies the accessible name, so `aria-label` is not required.\"\n },\n \"aria-label\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Accessible label announced by screen readers. Defaults to `'Loading'`. Supply a more specific name (e.g. `'Signing in'`) when the wait scope is meaningful. Redundant when a visible `label` is passed.\"\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"Inline-flex wrapper carrying `role='status'` and the accessible name. Holds the arc and the optional label, separated by `sys.layout.inline.sm`.\",\n \"intrinsic\": true\n },\n \"arc\": {\n \"required\": true,\n \"description\": \"The rotating ring. `sys.color.background.primary` foreground arc over a `sys.color.background.neutral` track ring, fully rounded, no stroke border. Carries the continuous spin animation. Decorative — `aria-hidden`.\",\n \"intrinsic\": true\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Optional single line of loading copy beside the arc. `sys.typo.body.sm`, `sys.color.text.subtle`.\",\n \"omittedBehavior\": \"collapse\"\n }\n },\n \"sizes\": {\n \"medium\": {\n \"diameter\": \"sys.icon.lg\",\n \"labelTypo\": \"sys.typo.body.sm\",\n \"gap\": \"sys.layout.inline.sm\"\n },\n \"small\": {\n \"diameter\": \"sys.icon.md\",\n \"labelTypo\": \"sys.typo.body.sm\",\n \"gap\": \"sys.layout.inline.sm\"\n }\n },\n \"appearances\": {\n \"default\": {\n \"arc\": \"sys.color.border.primary\",\n \"track\": \"sys.color.background.neutral\",\n \"label\": \"sys.color.text.subtle\",\n \"note\": \"The only appearance. The foreground arc paints `sys.color.background.primary` for the motion accent; the track ring paints `sys.color.background.neutral` (a faint inverse-tone scrim — ~8% black light / ~8% white dark) so the rotation reads on any host surface tier. Spinner has no emphasis axis — for a higher-attention loading mark the emphasis belongs in adjacent copy, not in a chromatic arc swap.\"\n }\n },\n \"states\": {\n \"default\": {\n \"animation\": \"chorus-spinner-rotate 0.8s linear infinite\",\n \"note\": \"The arc rotates continuously at 0.8s per turn (well below the WCAG flash threshold — rotation modulates position, not luminance). Indeterminate: the rotation never reflects a value. The animation respects `prefers-reduced-motion: reduce` — the spin halts and the full ring is shown statically as a quiet loading mark.\"\n }\n },\n \"behavior\": {\n \"ariaStatus\": \"Container carries `role='status'` and the accessible name (visible `label` or `aria-label`, default `'Loading'`) so screen readers announce the loading state without yanking focus. The arc is decorative (`aria-hidden`).\",\n \"reducedMotion\": \"Under `@media (prefers-reduced-motion: reduce)` the spin is suppressed; the full ring shows statically as a quiet loading mark.\",\n \"singleInstance\": \"Reserve one Spinner per view. Concurrent regional waits stack visual noise — lift to a single screen-level Spinner or switch the inner waits to Skeleton.\",\n \"labelComposition\": \"Pass `label` for visible loading copy beside the arc; it doubles as the accessible name. Without a label, `aria-label` (default `'Loading'`) carries the announcement.\"\n },\n \"forbidden\": [\n \"Spinner bound to a known progress ratio / percentage — indeterminate only; a determinate value belongs to `progress`\",\n \"more than one Spinner visible in a single view — reserve to one per view; concurrent regional waits use `skeleton` or lift to a single screen-level Spinner\",\n \"Spinner used as a content-shaped placeholder (list row, feed card, avatar) — that role is `skeleton`, which mirrors the footprint of the data being fetched\",\n \"arc painted with a non-token hex / raw px diameter — the arc tone is `sys.color.background.primary` and the diameter rides the `icon.*` ladder (`sys.icon.md` / `sys.icon.lg`)\",\n \"shimmer / gradient sweep on the arc — Spinner modulates rotation only (one motion axis keeps it readable under the reduced-motion fallback)\",\n \"arc track or ring drawn with a `border:` — the ring draws as a `box-shadow` / conic fill, not a layout stroke\"\n ]\n}\n","'use client';\n\nimport spinnerSpec from '../../../schema/components/spinner/spinner.spec.json';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\n/* Spinner — indeterminate loading indicator. A rotating arc in\n `sys.color.background.primary` over a faint `sys.color.background.neutral` track ring,\n for short, progress-unknown waits (under ~1s) on a neutral host\n surface. Two rungs ride the icon.* ladder: `medium` (sys.icon.lg /\n 24px, default) and `small` (sys.icon.md / 16px). Pass `label` for a\n line of loading copy beside the arc; it doubles as the accessible\n name. `role='status'` + `aria-label` (default 'Loading') announce the\n loading state; the arc itself is decorative. Reserve one Spinner per\n view — for content-shaped waits use Skeleton, for a known ratio use\n Progress. `layoutInset=\"inline\"`. See\n schema/components/spinner/spinner.md. */\n\nfunction sizingStyle(spec, size) {\n const s = spec.sizes[size] ?? spec.sizes.medium;\n return {\n '--spinner-diameter': tokenToCss(s.diameter),\n '--spinner-gap': tokenToCss(s.gap),\n };\n}\n\nexport function Spinner({\n size = 'medium',\n label,\n className,\n style,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const labelTypo = spinnerSpec.sizes[size]?.labelTypo ?? spinnerSpec.sizes.medium.labelTypo;\n // A visible label supplies the accessible name; otherwise fall back to\n // aria-label (default 'Loading'). Never emit both an aria-label and a\n // visible label that would double-announce.\n const a11yLabel = label != null ? undefined : (ariaLabel ?? 'Loading');\n\n return (\n <span\n role=\"status\"\n aria-label={a11yLabel}\n className={joinClasses(\n 'chorus-spinner',\n `chorus-spinner--${size}`,\n className,\n )}\n style={{ ...sizingStyle(spinnerSpec, size), ...style }}\n {...rest}\n >\n <span className=\"chorus-spinner__arc\" aria-hidden=\"true\" />\n {label != null ? (\n <span className=\"chorus-spinner__label\" style={typoStyles(labelTypo)}>\n {label}\n </span>\n ) : null}\n </span>\n );\n}\n","'use client';\n\nimport { joinClasses } from './spec-utils.js';\n\n/* StatusTag — small inline status pill. Tonal label-style chrome at\n 10px text, 4px inline / 2px block padding, `sys.radius.xs` corners.\n Two appearances:\n - neutral : `surfaceContainerHighest` fill + `onSurfaceVariant`\n foreground — the quiet, informational default\n (\"pending\", \"draft\", \"queued\").\n - error : `errorContainer` fill + `onErrorContainer` foreground\n — the rejection / blocked state (\"rejected\", \"failed\").\n Decorative (`<span role=\"status\">`) — never an interactive element.\n See schema/components/status-tag/status-tag.md. */\n\nexport function StatusTag({\n appearance = 'neutral',\n children,\n className,\n ...rest\n}) {\n return (\n <span\n role=\"status\"\n className={joinClasses(\n 'chorus-status-tag',\n `chorus-status-tag--${appearance}`,\n className,\n )}\n {...rest}\n >\n {children}\n </span>\n );\n}\n","{\n \"$schema\": \"../../spec.schema.json\",\n \"name\": \"SubHeader\",\n \"family\": \"header\",\n \"subcomponent\": \"sub\",\n \"description\": \"The quiet member of the Header family — a section-dividing label. A single line of 14px (`sys.typo.label.md`, 14 / Semibold) text in the muted `sys.color.text.subtle` tone that names the group of rows beneath it (\\\"Following\\\", \\\"More Topics to follow\\\"). No size axis — the muted tone is the dividing device, and the label-weight typo keeps it reading as a section label rather than body copy. Reached as `<SubHeader>`; its louder sibling is [Main](./main.md) (`<Header>`), an `onSurface` heading at 16 / 20. Optionally carries a single trailing `action` Text Button (`size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`) for a quiet region-level commit (\\\"See all\\\", \\\"Edit\\\", \\\"Manage\\\"); icon drill-in and dropdown disclosure stay Main's territory, where the louder `onSurface` heading tone belongs. Rendered as a semantic `<h3>` by default so screen-reader heading navigation lands on the group label; consumers may override the wrapping element via the `as` prop (e.g. `as=\\\"div\\\"` when the host already owns the heading semantics). Full-bleed: pays the same 16 (`sys.layout.container.md`) inline inset as the List rows it labels, with asymmetric block padding (24 above to break from the previous region, 8 below to bind the label to its group).\",\n \"element\": \"h3\",\n \"props\": {\n \"label\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"The section label text (\\\"Following\\\", \\\"More Topics to follow\\\"). Single line; the consumer keeps it short. `children` may be passed instead and takes precedence — `label` is the canonical string form.\"\n },\n \"action\": {\n \"type\": \"object\",\n \"optional\": true,\n \"description\": \"Trailing Text Button binding. Object: `{ label, href, onClick }`. Rendered as a Text Button at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"` — the one trailing affordance SubHeader carries, for a quiet region-level commit (\\\"See all\\\", \\\"Edit\\\", \\\"Manage\\\"). When set, the wrapper becomes a full-bleed flex row and the label is nested as the heading (`as`) on the leading edge so the heading's accessible name never absorbs the button. Mirrors Header's `headerAction` binding; SubHeader supports no icon or dropdown mode (those stay Header's, where the louder heading tone belongs).\"\n },\n \"as\": {\n \"type\": \"literal\",\n \"values\": [\"h2\", \"h3\", \"h4\", \"div\"],\n \"default\": \"h3\",\n \"description\": \"Wrapping element for the label. Defaults to `<h3>` so the muted label still registers as a heading for the group beneath it; use a different heading level to fit the host's document outline, or `as=\\\"div\\\"` when the surrounding host already carries the section semantics. The label element is never interactive — in `action` mode the click target sits on the trailing Text Button, and the flex-row wrapper that holds both is a non-semantic `<div>`.\"\n },\n \"children\": {\n \"type\": \"node\",\n \"optional\": true,\n \"description\": \"Label content — overrides `label` when both are set. Use the `label` string for the canonical case; `children` is the escape hatch for inline composition.\"\n },\n \"className\": {\n \"type\": \"string\",\n \"optional\": true,\n \"description\": \"Composes with the component's own class. Use sparingly — SubHeader exposes its tone and inset through the spec; overriding them breaks the alignment-with-rows and muted-divider contracts.\"\n }\n },\n \"slots\": {\n \"container\": {\n \"required\": true,\n \"description\": \"The full-bleed label line. Pays `sys.layout.container.md` (16) inline inset to align with the List rows beneath, `sys.layout.stack.lg` (24) block padding above and `sys.layout.stack.xs` (8) below. Non-interactive. Without `action` the container IS the heading element (`as`); with `action` it is a non-semantic flex `<div>` (`space-between`, `sys.layout.inline.md` gap) holding the nested label and the trailing action on opposite edges.\"\n },\n \"label\": {\n \"required\": false,\n \"description\": \"Section label text. `<h3>` by default (overridable via `as`). Typo `sys.typo.label.md` (14 / Semibold); color `sys.color.text.subtle`. Single line.\",\n \"accepts\": [\"text\"]\n },\n \"action\": {\n \"required\": false,\n \"description\": \"Optional trailing Text Button. Fixed at `size=\\\"xsmall\\\"`, `appearance=\\\"accent\\\"`; label comes from `action.label`. Owns its own tap target — clicks land on the button, not the surrounding row. Present only when `action` is set.\",\n \"accepts\": [\"button\"],\n \"rendersAs\": \"button:text\"\n }\n },\n \"appearance\": {\n \"containerFill\": \"transparent\",\n \"labelTypo\": \"sys.typo.label.md\",\n \"labelColor\": \"sys.color.text.subtle\",\n \"paddingInline\": \"sys.layout.container.md\",\n \"paddingBlockStart\": \"sys.layout.stack.lg\",\n \"paddingBlockEnd\": \"sys.layout.stack.xs\",\n \"note\": \"The container paints NO fill — `transparent` — so the muted label composes directly on whatever surface tier it sits on (surface, surfaceContainer, a tonal band, a Sheet body) and stays harmonious on any host. The dividing device is the tone, not a painted background. The muted `onSurfaceVariant` tone is a tone down from Header's `onSurface` heading so the label reads as a region marker, not a competing title. The 14 / Semibold `label.md` rung is the section-label weight: smaller than any Header heading (16 / 20) but emphatic enough to read as a label over the rows beneath it. Asymmetric block padding (24 above / 8 below) breaks the label from the previous region and binds it to the group below.\"\n },\n \"behavior\": {\n \"rendering\": \"When neither `label` nor `children` is set, SubHeader renders nothing (no empty container) — even when `action` is set, since a trailing button with no label is meaningless.\",\n \"singleAction\": \"SubHeader carries at most one trailing affordance, and only a Text Button (`action`). It supports no icon drill-in and no dropdown disclosure — those stay Header's, where the louder `onSurface` heading tone reads as a heading-with-affordance rather than a quiet labelled region. The distinction from Header is the tone/weight axis (muted `onSurfaceVariant` label at 14 vs `onSurface` heading at 16/20), not the presence of a trailing commit.\",\n \"actionSemantics\": \"In `action` mode the wrapper is a non-semantic flex `<div>` and the label keeps its heading element (`as`) nested on the leading edge, so the trailing Text Button never folds into the heading's accessible name. The button owns its own tap target; the row chrome is non-interactive.\",\n \"fullBleed\": \"Pays its own 16 (`container.md`) inline inset so the label aligns with the full-bleed List rows it heads. Must not be wrapped in a padding-inline container, or the label drifts off the row inset.\"\n },\n \"states\": {\n \"description\": \"SubHeader itself has no lifecycle states — the label is a static, non-interactive marker. When `action` is set, the trailing Text Button carries its own hover / pressed / focus.\"\n },\n \"forbidden\": [\n \"SubHeader painted in `onSurface` or any non-muted tone — the muted `onSurfaceVariant` IS the dividing device; a full-strength tone makes it compete with the page heading (reach for Header instead)\",\n \"SubHeader given an opaque container fill (`surface`, `surfaceContainer`, any background) — the container is `transparent` so the label harmonizes on any host surface tier; a painted fill clashes the moment it sits on a non-surface band\",\n \"SubHeader given a trailing icon drill-in or dropdown disclosure — only a single Text Button `action` is allowed; an icon/dropdown affordance belongs on Header\",\n \"SubHeader given more than one trailing action — the row carries a single quiet commit, not a button cluster\",\n \"SubHeader `action` rendered as anything but a Text Button (Standard Button, Icon Button, raw <a>) — the link affordance keeps the navigational intent in the accent tone, mirroring Header\",\n \"SubHeader typo dialled above `label.md` (14 / Semibold) — a larger or louder rung is a Header heading, not a quiet group label\",\n \"SubHeader wrapped in a padding-inline div or `style={{ paddingInline }}` — it is full-bleed and pays its own 16 inset to align with the rows beneath\",\n \"SubHeader rendered as a raw <p> / <span> with Tailwind — the label owns its tone, inset, and block rhythm through the spec\"\n ]\n}\n","'use client';\n\nimport subHeaderSpec from '../../../schema/components/header/sub.spec.json';\nimport { Button } from './Button.jsx';\nimport { tokenToCss, typoStyles, joinClasses } from './spec-utils.js';\n\n/* SubHeader — quiet section-dividing label. A 14px (`label.md`,\n 14 / Semibold) line in the muted `onSurfaceVariant` tone that\n names the group of\n rows beneath it (\"Following\", \"More Topics to follow\"). The muted\n tone is the whole dividing device — a tone down from Header's\n `onSurface` heading so the label reads as a region marker, not a\n competing title. Full-bleed: pays the same 16 (`container.md`)\n inline inset as the List rows it heads, with asymmetric block\n padding (24 above to break from the previous region, 8 below to\n bind the label to its group). Renders as a semantic <h3> by default\n so screen-reader heading navigation lands on the group label; pass\n `as=\"div\"` when the host already owns the section semantics.\n\n Optional trailing `action` — a single Text Button (`size=\"xsmall\"`,\n `appearance=\"accent\"`) for a quiet region-level commit (\"See all\",\n \"Edit\", \"Manage\"). When set, the wrapper becomes a full-bleed flex\n row: the label is nested as the heading (`as`) on the leading edge\n and the action sits on the trailing edge, so the heading text never\n absorbs the button into its accessible name. This is the one\n trailing affordance SubHeader carries — icon drill-in and dropdown\n disclosure stay Header's territory, where the louder `onSurface`\n heading tone belongs. See schema/components/header/sub.md. */\n\nfunction subHeaderStyle(spec) {\n const a = spec.appearance;\n return {\n '--sub-header-color': tokenToCss(a.labelColor),\n '--sub-header-padding-inline': tokenToCss(a.paddingInline),\n '--sub-header-padding-block-start': tokenToCss(a.paddingBlockStart),\n '--sub-header-padding-block-end': tokenToCss(a.paddingBlockEnd),\n ...typoStyles(a.labelTypo),\n };\n}\n\nexport function SubHeader({\n label,\n action,\n as: As = 'h3',\n className,\n children,\n style,\n ...rest\n}) {\n const content = children ?? label;\n if (content == null || content === '') return null;\n\n const mergedStyle = { ...subHeaderStyle(subHeaderSpec), ...style };\n\n /* No action — the wrapper IS the heading and carries the label text\n directly (the canonical quiet group label, unchanged). */\n if (!action) {\n return (\n <As\n className={joinClasses('chorus-sub-header', className)}\n style={mergedStyle}\n {...rest}\n >\n {content}\n </As>\n );\n }\n\n /* Action mode — a full-bleed flex row. The wrapper is a non-semantic\n <div> that pays the inset; the label keeps its heading element\n (`as`) nested on the leading edge so the trailing Text Button stays\n out of the heading's accessible name. */\n return (\n <div\n className={joinClasses('chorus-sub-header', 'chorus-sub-header--action', className)}\n style={mergedStyle}\n {...rest}\n >\n <As className=\"chorus-sub-header__label\">{content}</As>\n <Button\n variant=\"text\"\n size=\"xsmall\"\n appearance=\"accent\"\n className=\"chorus-sub-header__action\"\n href={action.href ?? '#'}\n onClick={action.onClick}\n leadingIcon={action.leadingIcon}\n trailingIcon={action.trailingIcon}\n >\n {action.label}\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport { useRef, useState } from 'react';\nimport { joinClasses } from './spec-utils.js';\n\n/* Switch — binary active/inactive control. Pill-shaped track with a\n circular thumb that translates between the two ends. The active state\n paints the track in `primary` so the contract reads chromatically\n without a label; inactive shows a transparent track with a hairline\n outline and a white thumb. See schema/components/switch/switch.md. */\n\nexport function Switch({\n checked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n forcedState,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}) {\n const isControlled = checked != null;\n const [internal, setInternal] = useState(defaultChecked);\n const value = isControlled ? checked : internal;\n const ref = useRef(null);\n\n const handleClick = (e) => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInternal(next);\n onCheckedChange?.(next, e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-state={value ? 'active' : 'inactive'}\n data-force-state={forcedState ?? undefined}\n data-disabled={disabled ? 'true' : undefined}\n disabled={disabled}\n className={joinClasses('chorus-switch', className)}\n onClick={handleClick}\n {...rest}\n >\n <span className=\"chorus-switch__thumb\" aria-hidden=\"true\" />\n </button>\n );\n}\n","'use client';\n\nimport { createContext, useContext, useId, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from './icons/index.js';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\n\n/* Accordion — vertical stack of expandable rows. Each item has a trigger\n header (label + auto-rendered trailing chevron that rotates on expand)\n and a content body that animates open below it. `type=\"single\"` allows\n one expanded item at a time; `type=\"multiple\"` allows any number. See\n schema/components/accordion/accordion.md. */\n\nconst AccordionContext = createContext(null);\n\nexport function Accordion({\n type = 'single',\n value,\n defaultValue,\n onValueChange,\n collapsible = true,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}) {\n const isControlled = value !== undefined;\n\n const normalizeInitial = () => {\n if (defaultValue == null) return type === 'multiple' ? [] : null;\n if (type === 'multiple') return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n return defaultValue;\n };\n\n const [internal, setInternal] = useState(normalizeInitial);\n const current = isControlled ? value : internal;\n\n const setValue = (next) => {\n if (!isControlled) setInternal(next);\n onValueChange?.(next);\n };\n\n const isOpen = (itemValue) =>\n type === 'multiple'\n ? Array.isArray(current) && current.includes(itemValue)\n : current === itemValue;\n\n const toggle = (itemValue) => {\n if (type === 'multiple') {\n const arr = Array.isArray(current) ? current : [];\n setValue(arr.includes(itemValue) ? arr.filter((v) => v !== itemValue) : [...arr, itemValue]);\n return;\n }\n if (current === itemValue) {\n if (collapsible) setValue(null);\n } else {\n setValue(itemValue);\n }\n };\n\n const ref = useRef(null);\n useFullBleedGuard(ref, 'Accordion');\n\n const ctx = useMemo(() => ({ type, isOpen, toggle }), [type, current, collapsible]);\n\n return (\n <AccordionContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"region\"\n aria-label={ariaLabel}\n className={joinClasses('chorus-accordion', className)}\n {...rest}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\nfunction AccordionItem({\n value,\n label,\n disabled = false,\n strong = false,\n forcedState,\n children,\n className,\n ...rest\n}) {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error('Accordion.Item must be rendered inside <Accordion>.');\n }\n const contentId = useId();\n const open = ctx.isOpen(value);\n\n return (\n <div\n className={joinClasses('chorus-accordion__item', className)}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? 'true' : undefined}\n data-strong={strong ? 'true' : undefined}\n {...rest}\n >\n <button\n type=\"button\"\n className=\"chorus-accordion__trigger\"\n aria-expanded={open}\n aria-controls={contentId}\n disabled={disabled}\n data-force-state={forcedState ?? undefined}\n onClick={() => {\n if (disabled) return;\n ctx.toggle(value);\n }}\n >\n <span className=\"chorus-accordion__label\">{label}</span>\n <span className=\"chorus-accordion__chevron\" aria-hidden=\"true\">\n <ChevronDownIcon size={16} />\n </span>\n </button>\n <div\n id={contentId}\n role=\"region\"\n className=\"chorus-accordion__content\"\n hidden={!open}\n >\n <div className=\"chorus-accordion__content-inner\">{children}</div>\n </div>\n </div>\n );\n}\n\nAccordion.Item = AccordionItem;\n","'use client';\n\nimport { isValidElement, useRef } from 'react';\nimport { joinClasses } from './spec-utils.js';\nimport { useFullBleedGuard } from './internal/useFullBleedGuard.js';\nimport { usePinnedBarGuard } from './internal/usePinnedBarGuard.js';\n\n/* TabBar — the bottom tab bar. A horizontal strip pinned to the bottom of\n the app surface that exposes the top-level destinations (Home / Company /\n Explore / Jobs / Notifications …) in one tap. Each item stacks a 24px\n glyph above a 10px label; the active item is signalled by the filled\n companion glyph + `onSurface` colour, inactive items render the outline\n glyph in `onSurfaceVariant`.\n\n Items are distributed with `justify-content: space-evenly`, which makes\n the row's start padding, the gap between adjacent items, and the row's\n end padding all the same visible whitespace — the optical-alignment\n rule the bar's spec calls for so the icons read as evenly placed across\n the row regardless of label width.\n\n An item may opt into `appearance=\"primary\"` to render a tile-shaped\n commit affordance (a primary-filled rounded square hosting the glyph)\n — the conventional \"Create\" / \"Compose\" entry at the trailing end of\n the bar. The label still sits below at the same 10/Regular rung so the\n item shares the row's vertical rhythm. */\n\nfunction TabBarItem({ item, isActive, onSelect }) {\n const {\n value,\n label,\n icon,\n activeIcon,\n href,\n onClick,\n appearance,\n forcedState,\n 'aria-label': ariaLabel,\n ...itemRest\n } = item;\n\n const glyph = isActive && activeIcon ? activeIcon : icon;\n const isPrimary = appearance === 'primary';\n\n const className = joinClasses(\n 'chorus-tab-bar__item',\n isPrimary && 'chorus-tab-bar__item--primary',\n isActive && !isPrimary && 'is-active',\n );\n\n const content = (\n <>\n <span className=\"chorus-tab-bar__icon\" aria-hidden={label ? 'true' : undefined}>\n {isValidElement(glyph) ? glyph : null}\n </span>\n {label ? <span className=\"chorus-tab-bar__label\">{label}</span> : null}\n </>\n );\n\n const handleClick = (event) => {\n onClick?.(event);\n /* Primary items invoke a screen-covering overlay rather than a\n sibling destination — they never own selection inside the bar,\n so suppress the selection callback for them. */\n if (!event.defaultPrevented && !isPrimary) onSelect?.(value);\n };\n\n if (href) {\n return (\n <a\n className={className}\n href={href}\n aria-current={isActive ? 'page' : undefined}\n aria-label={ariaLabel}\n data-force-state={forcedState ?? undefined}\n onClick={handleClick}\n {...itemRest}\n >\n {content}\n </a>\n );\n }\n return (\n <button\n type=\"button\"\n className={className}\n aria-current={isActive ? 'page' : undefined}\n aria-label={ariaLabel}\n data-force-state={forcedState ?? undefined}\n onClick={handleClick}\n {...itemRest}\n >\n {content}\n </button>\n );\n}\n\nexport function TabBar({\n items,\n value,\n onChange,\n 'aria-label': ariaLabel = 'Primary',\n className,\n ...rest\n}) {\n const rows = Array.isArray(items) ? items : [];\n const ref = useRef(null);\n useFullBleedGuard(ref, 'TabBar');\n usePinnedBarGuard(ref, 'TabBar');\n return (\n <nav\n ref={ref}\n className={joinClasses('chorus-tab-bar', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n {rows.map((item) => (\n <TabBarItem\n key={item.value}\n item={item}\n isActive={item.value === value}\n onSelect={onChange}\n />\n ))}\n </nav>\n );\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { joinClasses } from './spec-utils.js';\n\n/* Toast — transient confirmation strip. Inverse-toned by default so the\n message reads against any underlying page tier without per-surface\n tuning. Presentational only: the owner mounts and unmounts the toast\n on its own timer.\n\n The `trailing` slot accepts a Button node directly — typically a\n `<Button variant=\"text\" size=\"small\" appearance=\"inverse\">` for an\n action affordance (Undo, View) or a `<Button variant=\"icon\"\n size=\"medium\" appearance=\"inverse\">` for explicit dismissal. Passing\n the Button as a node (rather than a shorthand object) keeps the\n composition explicit at the call site: a reader sees the exact\n sub-component the Toast delegates to, including its `appearance`\n binding. */\nexport function Toast({\n children,\n trailing,\n className,\n ...rest\n}) {\n const trailingEl = isValidElement(trailing)\n ? cloneElement(trailing, {\n className: joinClasses('chorus-toast__trailing', trailing.props.className),\n })\n : trailing;\n return (\n <div\n className={joinClasses('chorus-toast', className)}\n role=\"status\"\n aria-live=\"polite\"\n {...rest}\n >\n <span className=\"chorus-toast__body\">{children}</span>\n {trailingEl}\n </div>\n );\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { joinClasses } from './spec-utils.js';\n\n/* Tooltip — trigger-anchored explanation bubble. Two appearances:\n `default` paints the brand-blue bubble (`primary` / `onPrimary`, both\n theme-stable) and is the canonical reach; `inverse` swaps to the\n inverse cluster (`inverseSurface` / `inverseOnSurface`) for screens\n already saturated with primary tone, where the brand-blue bubble\n would compete with the surrounding chrome.\n\n Presentational only: the owner positions the bubble relative to its\n trigger (honouring the 16-token viewport safe area and the 4-token\n trigger offset spelled out in the spec) and mounts/unmounts on\n hover/focus.\n\n The `action` slot accepts a Button node directly — bind its\n `appearance` to match the tooltip: `onPrimary` for the default\n (brand-blue) tooltip so the label stays white in both themes, or\n `inverse` for the inverse tooltip so the label flips with the host\n fill. */\nexport function Tooltip({\n children,\n appearance = 'default',\n placement = 'top',\n action,\n className,\n ...rest\n}) {\n const actionEl = isValidElement(action)\n ? cloneElement(action, {\n className: joinClasses('chorus-tooltip__action', action.props.className),\n })\n : action;\n return (\n <div\n className={joinClasses(\n 'chorus-tooltip',\n `chorus-tooltip--appearance-${appearance}`,\n className,\n )}\n data-placement={placement}\n role=\"tooltip\"\n {...rest}\n >\n <span className=\"chorus-tooltip__body\">{children}</span>\n {actionEl}\n <span className=\"chorus-tooltip__caret\" aria-hidden=\"true\" />\n </div>\n );\n}\n"]}
|