@vectoriox/iox-ui 5.30.0 → 5.31.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/composite-core/index.d.ts +270 -0
- package/composite-core/package.json +3 -0
- package/design-core/index.d.ts +870 -41
- package/fesm2022/vectoriox-iox-ui-composite-core.mjs +698 -0
- package/fesm2022/vectoriox-iox-ui-composite-core.mjs.map +1 -0
- package/fesm2022/vectoriox-iox-ui-design-core.mjs +1090 -82
- package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs +110 -30
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui.mjs +134 -31
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/generation-core/index.d.ts +35 -23
- package/index.d.ts +41 -15
- package/package.json +5 -1
- package/src/composite-core/badge.ts +103 -0
- package/src/composite-core/card.ts +524 -0
- package/src/composite-core/composite-node.ts +143 -0
- package/src/composite-core/public-api.ts +11 -0
- package/src/composite-core/structure.ts +58 -0
- package/src/design-core/contrast-audit.ts +38 -5
- package/src/design-core/flavor-fixtures.generated.ts +144 -144
- package/src/design-core/flavor-spec.generated.ts +970 -26
- package/src/design-core/node-classes.ts +16 -4
- package/src/design-core/node-links.ts +29 -0
- package/src/generation-core/compose-site.ts +55 -1
- package/src/generation-core/node-baselines.generated.ts +14 -2
- package/src/generation-core/patterns.ts +29 -2
- package/src/generation-core/serialized-node.ts +2 -0
- package/src/generation-core/site-spec.generated.ts +13 -26
- package/styles/iox-design.css +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectoriox-iox-ui-composite-core.mjs","sources":["../../../projects/iox-ui/src/composite-core/composite-node.ts","../../../projects/iox-ui/src/composite-core/badge.ts","../../../projects/iox-ui/src/composite-core/card.ts","../../../projects/iox-ui/src/composite-core/structure.ts","../../../projects/iox-ui/src/composite-core/public-api.ts","../../../projects/iox-ui/src/composite-core/vectoriox-iox-ui-composite-core.ts"],"sourcesContent":["import { ElementStyleTarget, readOwnedTrait, writeOwnedTrait } from '@vectoriox/iox-ui/design-core';\n\n/**\n * The node shape composite-core reads and writes — both a builder `ComponentNode` (values in\n * `traits[].default` / `styleTraits`) and a saved layout node (flat `props` / `styleProps`), the same\n * dual shape design-core's element styles already speak. A composite is a tree of ORDINARY nodes\n * (composite-components plan §1): this module only adds the `role` each part carries.\n */\nexport interface CompositeTrait {\n name: string;\n default?: unknown;\n}\n\nexport interface CompositeLayer {\n styleProps?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CompositeNode extends ElementStyleTarget {\n id?: string;\n /** The part this node plays in its composite (`card.title`). Additive; saved; read by the shared CSS\n * (`iox-role-<role>`), the structure guard and the composite's own editors. */\n role?: string;\n label?: string;\n props?: Record<string, unknown>;\n traits?: CompositeTrait[];\n responsive?: Partial<Record<string, CompositeLayer>>;\n children?: CompositeNode[];\n}\n\n/** What a recipe asks its consumer to create: a NEW node of `type`, the way that consumer creates one\n * (the builder's `createConfig`, generation-core's `createSerializedNode`), with these props and this\n * element style. `key` is stable per recipe node — a consumer that needs deterministic ids builds them\n * from it (generation-core: `<root id>-<key>`). */\nexport interface CompositeNodeSpec {\n key: string;\n type: string;\n props?: Readonly<Record<string, unknown>>;\n elementStyle?: string | null;\n}\n\nexport type CompositeNodeFactory = (spec: CompositeNodeSpec) => CompositeNode;\n\nconst usesTraits = (node: CompositeNode): boolean => Array.isArray(node.traits);\n\n/** A content trait's value — `traits[].default` on a builder node, `props[name]` on a saved one. */\nexport function readProp(node: CompositeNode, name: string): unknown {\n return usesTraits(node) ? node.traits!.find(t => t.name === name)?.default : node.props?.[name];\n}\n\n/** Write a content trait. False when a builder node has no such trait (the value would be dropped). */\nexport function writeProp(node: CompositeNode, name: string, value: unknown): boolean {\n if (usesTraits(node)) {\n const trait = node.traits!.find(t => t.name === name);\n if (!trait) return false;\n trait.default = value;\n return true;\n }\n node.props = { ...(node.props ?? {}), [name]: value };\n return true;\n}\n\n/** A base style value (the node's own, either shape). */\nexport function readStyle(node: CompositeNode, name: string): unknown {\n return readOwnedTrait(node, { trait: name });\n}\n\n/** Write base style values; returns the names the node has no slot for (a builder node drops them). */\nexport function writeStyles(node: CompositeNode, values: Readonly<Record<string, string>>): string[] {\n const missing: string[] = [];\n for (const [name, value] of Object.entries(values)) {\n if (!writeOwnedTrait(node, { trait: name }, value)) missing.push(name);\n }\n return missing;\n}\n\n/** Set style values in one breakpoint layer (`responsive[bp].styleProps`, the shape both renderers'\n * shared `planResponsiveRules` reads). */\nexport function writeLayerStyles(node: CompositeNode, breakpoint: string, values: Readonly<Record<string, string>>): void {\n const responsive = { ...(node.responsive ?? {}) };\n const layer: CompositeLayer = { ...(responsive[breakpoint] ?? {}) };\n layer.styleProps = { ...(layer.styleProps ?? {}), ...values };\n responsive[breakpoint] = layer;\n node.responsive = responsive;\n}\n\n/** Remove style keys from one breakpoint layer; an emptied layer (and an emptied map) is dropped. */\nexport function clearLayerStyles(node: CompositeNode, breakpoint: string, names: ReadonlyArray<string>): void {\n const layer = node.responsive?.[breakpoint];\n if (!layer?.styleProps) return;\n const styleProps = { ...layer.styleProps };\n for (const name of names) delete styleProps[name];\n const next: CompositeLayer = { ...layer };\n if (Object.keys(styleProps).length) next.styleProps = styleProps;\n else delete next.styleProps;\n const responsive = { ...(node.responsive ?? {}) };\n if (Object.keys(next).length) responsive[breakpoint] = next;\n else delete responsive[breakpoint];\n node.responsive = Object.keys(responsive).length ? responsive : undefined;\n}\n\n/** A breakpoint layer's own value for one style key. */\nexport function readLayerStyle(node: CompositeNode, breakpoint: string, name: string): unknown {\n return node.responsive?.[breakpoint]?.styleProps?.[name];\n}\n\n/** Depth-first: `node`, then every descendant. */\nexport function walkComposite(node: CompositeNode, visit: (node: CompositeNode, parent: CompositeNode | null) => void, parent: CompositeNode | null = null): void {\n visit(node, parent);\n for (const child of node.children ?? []) walkComposite(child, visit, node);\n}\n\n/**\n * The first descendant of `root` playing `role`. Never descends into a NESTED composite of the same\n * root role (a card inside a card's content keeps its own parts).\n */\nexport function findByRole(root: CompositeNode, role: string): CompositeNode | undefined {\n for (const child of root.children ?? []) {\n if (child.role === role) return child;\n if (child.role === root.role && root.role) continue;\n const hit = findByRole(child, role);\n if (hit) return hit;\n }\n return undefined;\n}\n\n/** The node's parent inside `root`, or null. */\nexport function parentInComposite(root: CompositeNode, node: CompositeNode): CompositeNode | null {\n for (const child of root.children ?? []) {\n if (child === node) return root;\n const hit = parentInComposite(child, node);\n if (hit) return hit;\n }\n return null;\n}\n\n/** Detach `node` from its parent inside `root`. True when it was found. */\nexport function removeFromComposite(root: CompositeNode, node: CompositeNode): boolean {\n const parent = parentInComposite(root, node);\n if (!parent?.children) return false;\n parent.children.splice(parent.children.indexOf(node), 1);\n return true;\n}\n","import { elementStyleById, switchElementStyle } from '@vectoriox/iox-ui/design-core';\n\nimport { CompositeNode, CompositeNodeFactory, writeStyles } from './composite-node';\n\n/**\n * BADGE + CHIP (composite T25; complex-components board 8). A Badge is a Container wearing\n * `badge-<tone>` › Icon + Text; its TONE is its element style, so Badge ▸ Tone writes the style and\n * nothing else, and a re-theme restyles every badge. A Chip is the outlined static style only (no\n * behaviour until the K5 Data view). Inside a card the badge plays `card.badge`; anywhere else it is\n * recognised by its style.\n */\n\nexport enum BadgeTone {\n Neutral = 'neutral',\n Success = 'success',\n Warning = 'warning',\n Accent = 'accent',\n}\n\nexport const BADGE_TONES: ReadonlyArray<BadgeTone> = [BadgeTone.Neutral, BadgeTone.Success, BadgeTone.Warning, BadgeTone.Accent];\n\n/** The tone's element style (`badge-<tone>`, the contract's). */\nexport function badgeStyleId(tone: BadgeTone): string {\n return `badge-${tone}`;\n}\n\nexport const CHIP_STYLE = 'chip';\n\n/** The glyph a fresh badge of each tone shows (the board's tone grid). */\nexport const BADGE_TONE_ICONS: Readonly<Record<BadgeTone, string>> = {\n [BadgeTone.Neutral]: 'ph ph-tag',\n [BadgeTone.Success]: 'ph ph-check',\n [BadgeTone.Warning]: 'ph ph-warning',\n [BadgeTone.Accent]: 'ph ph-sparkle',\n};\nexport const CHIP_ICON = 'ph ph-tag';\n\nconst TONE_BY_STYLE = new Map(BADGE_TONES.map(tone => [badgeStyleId(tone), tone]));\n\n/** The badge tone a node wears, or null when it is no badge. */\nexport function badgeToneOf(node: { elementStyle?: string | null } | null | undefined): BadgeTone | null {\n return TONE_BY_STYLE.get(node?.elementStyle ?? '') ?? null;\n}\n\n/** True for a node wearing a badge tone or the chip style — the pills (their Icon reads their ink). */\nexport function isPillNode(node: { elementStyle?: string | null } | null | undefined): boolean {\n return badgeToneOf(node) !== null || node?.elementStyle === CHIP_STYLE;\n}\n\n/**\n * Badge ▸ Tone: move the badge to another tone's element style (an edit the author made to the old\n * tone's look is kept, design-core's switch rule). Nothing else changes — not the icon, not the words.\n */\nexport function setBadgeTone(node: CompositeNode, tone: BadgeTone, baseline: Readonly<Record<string, unknown>> = {}): boolean {\n const current = node.elementStyle ?? null;\n const next = badgeStyleId(tone);\n if (!badgeToneOf(node) || current === next || !elementStyleById(next)) return false;\n const result = switchElementStyle(node, current, next, baseline);\n if (result.applied) node.elementStyle = next;\n return result.applied;\n}\n\n/** A pill's box: hugs its words, never stretches in a column. */\nconst PILL_BASE: Readonly<Record<string, string>> = {\n display: 'inline-flex', alignItems: 'center', gap: '5px', width: 'auto', minHeight: 'auto', alignSelf: 'flex-start', lineHeight: '1.4',\n};\nconst PILL_ICON: Readonly<Record<string, string>> = { fontSize: '1em' };\nconst PILL_WORDS: Readonly<Record<string, string>> = { width: 'auto', minHeight: 'auto', padding: '0px 0px 0px 0px', margin: '0px 0px 0px 0px' };\n/** The pill's words inherit the pill's type and ink (the contract's inherit-everything text style). */\nconst PILL_WORDS_STYLE = 'button-label';\n\nexport interface PillOptions {\n text?: string;\n icon?: string;\n /** Key prefix for the consumer's ids (`badge` → `badge`, `badge-icon`, `badge-text`). */\n key?: string;\n}\n\nfunction buildPill(create: CompositeNodeFactory, elementStyle: string, text: string, icon: string, key: string): CompositeNode {\n const pill = create({ key, type: 'Container', elementStyle });\n writeStyles(pill, PILL_BASE);\n const glyph = create({ key: `${key}-icon`, type: 'Icon', props: { iconClass: icon }, elementStyle: 'icon' });\n writeStyles(glyph, PILL_ICON);\n const words = create({ key: `${key}-text`, type: 'Text', props: { content: text, tag: 'span' }, elementStyle: PILL_WORDS_STYLE });\n writeStyles(words, PILL_WORDS);\n pill.children = [glyph, words];\n return pill;\n}\n\n/** A fresh Badge: Container `badge-<tone>` › Icon + Text. */\nexport function buildBadge(create: CompositeNodeFactory, options: PillOptions & { tone?: BadgeTone } = {}): CompositeNode {\n const tone = options.tone ?? BadgeTone.Accent;\n const badge = buildPill(create, badgeStyleId(tone), options.text ?? 'New', options.icon ?? BADGE_TONE_ICONS[tone], options.key ?? 'badge');\n badge.label = 'Badge';\n return badge;\n}\n\n/** A fresh Chip: Container `chip` › Icon + Text (outlined, static). */\nexport function buildChip(create: CompositeNodeFactory, options: PillOptions = {}): CompositeNode {\n const chip = buildPill(create, CHIP_STYLE, options.text ?? 'Chip', options.icon ?? CHIP_ICON, options.key ?? 'chip');\n chip.label = 'Chip';\n return chip;\n}\n","import { elementStyleById, LinkType, switchElementStyle } from '@vectoriox/iox-ui/design-core';\n\nimport { BadgeTone, buildBadge } from './badge';\nimport {\n clearLayerStyles, CompositeNode, CompositeNodeFactory, findByRole, parentInComposite, readLayerStyle, readProp, readStyle,\n removeFromComposite, writeLayerStyles, writeProp, writeStyles,\n} from './composite-node';\n\n/**\n * CARD v2 (composite T23; complex-components board 8, APPROVED 2026-10-20). Not a component: a recipe of\n * ordinary nodes, each part carrying a role, so every part is selectable on the canvas, in the layer tree\n * and the breadcrumb, wears its own element style and is edited on its own (R2). No runtime and no design\n * state — nothing is hidden at rest.\n *\n * Container `card` role card\n * ├─ Container `box` role card.media (optional: Image)\n * │ ├─ Image `media`\n * │ └─ Container `badge-accent` role card.badge (optional) › Icon + Text\n * └─ Container `box` role card.content (locked)\n * ├─ Text `eyebrow` role card.eyebrow (optional)\n * ├─ Heading h3 `h3` role card.title (locked — the card's link when linked)\n * ├─ Text `body` role card.text (optional)\n * └─ Container `box` role card.actions (optional) › ButtonBlock primary + ghost\n *\n * One recipe for every consumer: the builder's palette (its `createConfig`), generation-core's composer\n * (its `createSerializedNode`) and the site build — each passes its own node factory.\n */\n\nexport enum CardRole {\n Card = 'card',\n Media = 'card.media',\n Badge = 'card.badge',\n Content = 'card.content',\n Eyebrow = 'card.eyebrow',\n Title = 'card.title',\n Text = 'card.text',\n Actions = 'card.actions',\n}\n\n/** The optional parts — Card ▸ Parts, one switch each, in the board's order. Title and Content are locked. */\nexport enum CardPart {\n Media = 'media',\n Badge = 'badge',\n Eyebrow = 'eyebrow',\n Text = 'text',\n Actions = 'actions',\n}\n\nexport const CARD_PARTS: ReadonlyArray<CardPart> = [CardPart.Media, CardPart.Badge, CardPart.Eyebrow, CardPart.Text, CardPart.Actions];\n\nexport const CARD_PART_ROLE: Readonly<Record<CardPart, CardRole>> = {\n [CardPart.Media]: CardRole.Media,\n [CardPart.Badge]: CardRole.Badge,\n [CardPart.Eyebrow]: CardRole.Eyebrow,\n [CardPart.Text]: CardRole.Text,\n [CardPart.Actions]: CardRole.Actions,\n};\n\n/** Card ▸ Layout — a preset, never a stored trait: `applyCardLayout` writes the card's layout styles. */\nexport enum CardLayout {\n Top = 'top',\n Side = 'side',\n Overlay = 'overlay',\n Compact = 'compact',\n}\n\nexport const CARD_LAYOUTS: ReadonlyArray<CardLayout> = [CardLayout.Top, CardLayout.Side, CardLayout.Overlay, CardLayout.Compact];\n/** What Card ▸ Layout shows once the author has changed the layout styles by hand. */\nexport const CARD_LAYOUT_CUSTOM = 'custom';\nexport type CardLayoutState = CardLayout | typeof CARD_LAYOUT_CUSTOM;\n\n/** The words a fresh card starts with — the author's to replace (or a bound field's). */\nexport interface CardWords {\n eyebrow: string;\n title: string;\n text: string;\n primary: string;\n secondary: string;\n badge: string;\n}\n\nexport const CARD_WORDS: Readonly<CardWords> = {\n eyebrow: 'Category',\n title: 'Card title',\n text: 'One or two sentences about this item.',\n primary: 'Learn more',\n secondary: 'Save',\n badge: 'New',\n};\n\n/** The breakpoint whose layer stacks an \"Image side\" card (Breakpoint.Mobile, ≤767px). */\nexport const CARD_STACK_BREAKPOINT = 'mobile';\n\nenum Type {\n Container = 'Container',\n Image = 'Image',\n Heading = 'Heading',\n Text = 'Text',\n Icon = 'Icon',\n ButtonBlock = 'ButtonBlock',\n}\n\nenum Style {\n Card = 'card',\n Box = 'box',\n Media = 'media',\n Eyebrow = 'eyebrow',\n Title = 'h3',\n Body = 'body',\n Label = 'button-label',\n Primary = 'button-primary',\n Ghost = 'button-ghost',\n Icon = 'icon',\n Scrim = 'media-scrim',\n}\n\nenum Scheme {\n Default = 'default',\n Inverse = 'inverse',\n}\n\nconst COLOR_SCHEME = 'colorScheme';\nconst LINK_TYPE = 'linkType';\nconst SAVE_ICON = 'ph ph-bookmark-simple';\n\n/** A value an element style writes — read from the contract, never retyped. */\nconst styleValue = (style: string, trait: string): string => String(elementStyleById(style)?.base[trait] ?? '');\nconst CARD_PAD = styleValue(Style.Card, 'padding');\nconst IMAGE_RADIUS = styleValue(Style.Media, 'borderRadius');\nconst TITLE_SIZE = styleValue(Style.Title, 'fontSize');\nconst LEAD_SIZE = 'var(--iox-size-lead)';\nconst ZERO_BOX = '0px 0px 0px 0px';\n\n/** What every card part holds in every layout — the recipe's box. */\nconst CARD_BASE: Readonly<Record<string, Readonly<Record<string, string>>>> = {\n [CardRole.Card]: { display: 'flex', gap: '14px', width: '100%', height: '100%', minWidth: '0px', overflow: 'hidden', position: 'relative' },\n [CardRole.Media]: { display: 'block', width: '100%', minHeight: 'auto', flexGrow: '0', flexShrink: '0' },\n [CardRole.Content]: { display: 'flex', flexDirection: 'column', gap: '8px', width: '100%', minWidth: '0px', minHeight: 'auto' },\n [CardRole.Eyebrow]: { margin: ZERO_BOX, padding: ZERO_BOX, minHeight: 'auto' },\n [CardRole.Title]: { margin: ZERO_BOX },\n [CardRole.Text]: { margin: ZERO_BOX, padding: ZERO_BOX, minHeight: 'auto' },\n // Buttons pinned to the bottom (board 8 Q: equal heights + buttons pinned): the content column grows,\n // and the row's auto top margin takes the slack.\n [CardRole.Actions]: { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: '8px', margin: 'auto 0px 0px 0px', padding: '6px 0px 0px 0px', width: '100%', minHeight: 'auto' },\n};\nconst IMAGE_BASE: Readonly<Record<string, string>> = { display: 'block', width: '100%', maxWidth: '100%' };\n/** A button's label and a pill's words: inherit the type and ink of what holds them. */\nconst LABEL_BASE: Readonly<Record<string, string>> = { width: 'auto', minHeight: 'auto', padding: ZERO_BOX, margin: ZERO_BOX };\nconst INLINE_ICON: Readonly<Record<string, string>> = { fontSize: '1em' };\n\n/** One layout preset: the style values it writes per role (every layout writes the same keys, so\n * switching is clean and detection exact), where the badge sits, and what it switches off. */\ninterface CardLayoutSpec {\n card: Readonly<Record<string, string>>;\n media: Readonly<Record<string, string>>;\n image: Readonly<Record<string, string>>;\n content: Readonly<Record<string, string>>;\n contentStyle: Style;\n contentScheme: Scheme;\n title: Readonly<Record<string, string>>;\n badgeOnMedia: boolean;\n /** The stacking layer (Image side only); every other layout clears these keys from it. */\n stack?: { card: Readonly<Record<string, string>>; media: Readonly<Record<string, string>>; image: Readonly<Record<string, string>> };\n partsOff?: ReadonlyArray<CardPart>;\n}\n\nconst IN_FLOW = { position: 'relative', top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };\nconst GROWING_CONTENT = { position: 'static', flexGrow: '1', flexShrink: '1', flexBasis: '0%', padding: ZERO_BOX };\n\nconst LAYOUTS: Readonly<Record<CardLayout, CardLayoutSpec>> = {\n [CardLayout.Top]: {\n card: { flexDirection: 'column', alignItems: 'stretch', justifyContent: 'flex-start', minHeight: 'auto', padding: CARD_PAD },\n media: { ...IN_FLOW, flexBasis: 'auto' },\n image: { aspectRatio: '4 / 3', height: 'auto', minHeight: 'auto', borderRadius: IMAGE_RADIUS },\n content: GROWING_CONTENT, contentStyle: Style.Box, contentScheme: Scheme.Default,\n title: { fontSize: TITLE_SIZE },\n badgeOnMedia: true,\n },\n [CardLayout.Side]: {\n card: { flexDirection: 'row', alignItems: 'stretch', justifyContent: 'flex-start', minHeight: 'auto', padding: CARD_PAD },\n media: { ...IN_FLOW, flexBasis: '42%' },\n image: { aspectRatio: 'auto', height: '100%', minHeight: '180px', borderRadius: IMAGE_RADIUS },\n content: GROWING_CONTENT, contentStyle: Style.Box, contentScheme: Scheme.Default,\n title: { fontSize: TITLE_SIZE },\n badgeOnMedia: true,\n stack: {\n card: { flexDirection: 'column' },\n media: { flexBasis: 'auto' },\n image: { aspectRatio: '4 / 3', height: 'auto', minHeight: 'auto' },\n },\n },\n [CardLayout.Overlay]: {\n card: { flexDirection: 'column', alignItems: 'stretch', justifyContent: 'flex-end', minHeight: '340px', padding: ZERO_BOX },\n media: { position: 'absolute', top: '0px', right: '0px', bottom: '0px', left: '0px', flexBasis: 'auto' },\n image: { aspectRatio: 'auto', height: '100%', minHeight: 'auto', borderRadius: '0px' },\n content: { position: 'relative', flexGrow: '0', flexShrink: '0', flexBasis: 'auto', padding: `72px ${CARD_PAD} ${CARD_PAD} ${CARD_PAD}` },\n contentStyle: Style.Scrim, contentScheme: Scheme.Inverse,\n title: { fontSize: TITLE_SIZE },\n badgeOnMedia: false,\n },\n [CardLayout.Compact]: {\n card: { flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start', minHeight: 'auto', padding: CARD_PAD },\n media: { ...IN_FLOW, flexBasis: '72px' },\n image: { aspectRatio: '1 / 1', height: 'auto', minHeight: 'auto', borderRadius: IMAGE_RADIUS },\n content: GROWING_CONTENT, contentStyle: Style.Box, contentScheme: Scheme.Default,\n title: { fontSize: LEAD_SIZE },\n badgeOnMedia: false,\n partsOff: [CardPart.Text, CardPart.Actions],\n },\n};\n\nconst STACK_KEYS = {\n card: Object.keys(LAYOUTS[CardLayout.Side].stack!.card),\n media: Object.keys(LAYOUTS[CardLayout.Side].stack!.media),\n image: Object.keys(LAYOUTS[CardLayout.Side].stack!.image),\n};\n\n/** What a type's UNSTYLED node holds — passed so a style switch (Content ⇄ the scrim) hands the old\n * style's values back to the type, never to `undefined`. */\nexport type BaselineStyles = (type: string) => Readonly<Record<string, unknown>>;\n\nexport interface CardEditOptions {\n baselineStyles?: BaselineStyles;\n}\n\nexport interface CardOptions extends CardEditOptions {\n layout?: CardLayout;\n /** Which optional parts the card starts with (all, by default). */\n parts?: Partial<Record<CardPart, boolean>>;\n words?: Partial<CardWords>;\n badgeTone?: BadgeTone;\n}\n\n\nfunction make(create: CompositeNodeFactory, key: string, type: string, role: CardRole | null, elementStyle: string | null,\n props: Record<string, unknown> = {}, label?: string): CompositeNode {\n const node = create({ key, type, props, elementStyle });\n if (role) node.role = role;\n if (label) node.label = label;\n writeStyles(node, role ? CARD_BASE[role] ?? {} : {});\n return node;\n}\n\nfunction buttonLabel(create: CompositeNodeFactory, key: string, words: string): CompositeNode {\n const label = make(create, key, Type.Text, null, Style.Label, { content: words, tag: 'span' });\n writeStyles(label, LABEL_BASE);\n return label;\n}\n\n/** Each optional part (and the locked title) as the recipe builds it. */\nconst PART_BUILDERS: Readonly<Record<CardPart, (create: CompositeNodeFactory, words: CardWords, tone: BadgeTone) => CompositeNode>> = {\n [CardPart.Media]: (create) => {\n const media = make(create, 'media', Type.Container, CardRole.Media, Style.Box, {}, 'Media');\n const image = make(create, 'image', Type.Image, null, Style.Media, { src: '', alt: '' });\n writeStyles(image, IMAGE_BASE);\n media.children = [image];\n return media;\n },\n [CardPart.Badge]: (create, words, tone) => {\n const badge = buildBadge(create, { tone, text: words.badge, key: 'badge' });\n badge.role = CardRole.Badge;\n badge.label = 'Badge';\n return badge;\n },\n [CardPart.Eyebrow]: (create, words) => make(create, 'eyebrow', Type.Text, CardRole.Eyebrow, Style.Eyebrow, { content: words.eyebrow, tag: 'p' }, 'Eyebrow'),\n [CardPart.Text]: (create, words) => make(create, 'text', Type.Text, CardRole.Text, Style.Body, { content: words.text, tag: 'p' }, 'Text'),\n [CardPart.Actions]: (create, words) => {\n const actions = make(create, 'actions', Type.Container, CardRole.Actions, Style.Box, {}, 'Buttons');\n const primary = make(create, 'primary', Type.ButtonBlock, null, Style.Primary);\n primary.children = [buttonLabel(create, 'primary-label', words.primary)];\n const ghost = make(create, 'secondary', Type.ButtonBlock, null, Style.Ghost);\n const icon = make(create, 'secondary-icon', Type.Icon, null, Style.Icon, { iconClass: SAVE_ICON });\n writeStyles(icon, INLINE_ICON);\n ghost.children = [icon, buttonLabel(create, 'secondary-label', words.secondary)];\n actions.children = [primary, ghost];\n return actions;\n },\n};\n\nfunction buildTitle(create: CompositeNodeFactory, words: CardWords): CompositeNode {\n return make(create, 'title', Type.Heading, CardRole.Title, Style.Title, { content: words.title, level: 'h3', [LINK_TYPE]: LinkType.None }, 'Title');\n}\n\n/** A fresh Card v2: every part a node with its role and element style, laid out by `options.layout`. */\nexport function buildCardRecipe(create: CompositeNodeFactory, options: CardOptions = {}): CompositeNode {\n const words: CardWords = { ...CARD_WORDS, ...(options.words ?? {}) };\n const tone = options.badgeTone ?? BadgeTone.Accent;\n const on = (part: CardPart) => options.parts?.[part] !== false;\n const card = make(create, 'card', Type.Container, CardRole.Card, Style.Card, {}, 'Card');\n const content = make(create, 'content', Type.Container, CardRole.Content, Style.Box, {}, 'Content');\n content.children = [\n ...(on(CardPart.Eyebrow) ? [PART_BUILDERS[CardPart.Eyebrow](create, words, tone)] : []),\n buildTitle(create, words),\n ...(on(CardPart.Text) ? [PART_BUILDERS[CardPart.Text](create, words, tone)] : []),\n ...(on(CardPart.Actions) ? [PART_BUILDERS[CardPart.Actions](create, words, tone)] : []),\n ];\n card.children = [...(on(CardPart.Media) ? [PART_BUILDERS[CardPart.Media](create, words, tone)] : []), content];\n if (on(CardPart.Badge)) placeBadge(card, PART_BUILDERS[CardPart.Badge](create, words, tone), true);\n applyCardLayout(card, options.layout ?? CardLayout.Top, options);\n return card;\n}\n\n/** True when `node` is a Card v2 root. */\nexport function isCardRoot(node: CompositeNode | null | undefined): boolean {\n return node?.role === CardRole.Card;\n}\n\n/** The Card a part belongs to: the nearest ancestor (or the node itself) playing `card`. `path` = the\n * node's ancestors, root first. */\nexport function cardRootOf(node: CompositeNode, path: ReadonlyArray<CompositeNode>): CompositeNode | null {\n if (isCardRoot(node)) return node;\n for (let i = path.length - 1; i >= 0; i--) if (isCardRoot(path[i])) return path[i];\n return null;\n}\n\n/** Card ▸ Parts: which optional parts the card holds now. */\nexport function cardPartsOf(card: CompositeNode): Record<CardPart, boolean> {\n return Object.fromEntries(CARD_PARTS.map(part => [part, !!findByRole(card, CARD_PART_ROLE[part])])) as Record<CardPart, boolean>;\n}\n\nconst imageOf = (media: CompositeNode | undefined): CompositeNode | undefined => media?.children?.find(c => c.type === Type.Image);\n\n/** Put the badge where the layout says: the Media's top corner, or the head of the content column\n * (Image behind text, Compact, or no Media at all). */\nfunction placeBadge(card: CompositeNode, badge: CompositeNode, onMedia: boolean): void {\n const media = findByRole(card, CardRole.Media);\n const content = findByRole(card, CardRole.Content);\n removeFromComposite(card, badge);\n if (onMedia && media) media.children = [...(media.children ?? []), badge];\n else if (content) content.children = [badge, ...(content.children ?? [])];\n}\n\nfunction writeScheme(node: CompositeNode, scheme: Scheme): void {\n writeProp(node, COLOR_SCHEME, scheme);\n}\n\n/** Write one role's layout values from a spec (base + layers). */\nfunction applyPartLayout(card: CompositeNode, spec: CardLayoutSpec, part: CompositeNode, baseline: BaselineStyles): void {\n switch (part.role) {\n case CardRole.Card:\n writeStyles(part, { ...CARD_BASE[CardRole.Card], ...spec.card });\n setStack(part, spec.stack?.card, STACK_KEYS.card);\n return;\n case CardRole.Media: {\n writeStyles(part, { ...CARD_BASE[CardRole.Media], ...spec.media });\n setStack(part, spec.stack?.media, STACK_KEYS.media);\n const image = imageOf(part);\n if (image) {\n writeStyles(image, { ...IMAGE_BASE, ...spec.image });\n setStack(image, spec.stack?.image, STACK_KEYS.image);\n }\n return;\n }\n case CardRole.Content: {\n const current = part.elementStyle;\n if (current !== spec.contentStyle) {\n switchElementStyle(part, current, spec.contentStyle, baseline(part.type));\n part.elementStyle = spec.contentStyle;\n }\n writeStyles(part, { ...CARD_BASE[CardRole.Content], ...spec.content });\n writeScheme(part, spec.contentScheme);\n return;\n }\n case CardRole.Title:\n writeStyles(part, spec.title);\n return;\n default:\n return;\n }\n}\n\nfunction setStack(node: CompositeNode, values: Readonly<Record<string, string>> | undefined, keys: ReadonlyArray<string>): void {\n if (values) writeLayerStyles(node, CARD_STACK_BREAKPOINT, values);\n else clearLayerStyles(node, CARD_STACK_BREAKPOINT, keys);\n}\n\nexport interface CardLayoutResult {\n layout: CardLayout;\n /** Parts the preset switched off (Compact: Text and Buttons). */\n removed: CardPart[];\n}\n\n/**\n * Card ▸ Layout. Rewrites the card's LAYOUT styles for `layout` — the card's direction and box, the\n * Media's placement, the Image's aspect, the content block (Image behind text: the `media-scrim` style +\n * the Inverse scheme), the title size (Compact) and, for Image side, a Mobile layer that stacks it — and\n * moves the badge to where the layout puts it. Nothing else on any part. One undo step for the caller.\n */\nexport function applyCardLayout(card: CompositeNode, layout: CardLayout, options: CardEditOptions = {}): CardLayoutResult {\n const spec = LAYOUTS[layout];\n const baseline = options.baselineStyles ?? (() => ({}));\n const removed: CardPart[] = [];\n for (const part of spec.partsOff ?? []) if (setCardPart(card, part, false)) removed.push(part);\n applyPartLayout(card, spec, card, baseline);\n for (const role of [CardRole.Media, CardRole.Content, CardRole.Title]) {\n const part = findByRole(card, role);\n if (part) applyPartLayout(card, spec, part, baseline);\n }\n const badge = findByRole(card, CardRole.Badge);\n if (badge) placeBadge(card, badge, spec.badgeOnMedia);\n return { layout, removed };\n}\n\nconst same = (a: unknown, b: unknown) => String(a ?? '').trim() === String(b ?? '').trim();\nconst holds = (node: CompositeNode, values: Readonly<Record<string, string>>) => Object.entries(values).every(([k, v]) => same(readStyle(node, k), v));\nconst holdsLayer = (node: CompositeNode, values: Readonly<Record<string, string>> | undefined, keys: ReadonlyArray<string>) =>\n values ? Object.entries(values).every(([k, v]) => same(readLayerStyle(node, CARD_STACK_BREAKPOINT, k), v))\n : keys.every(k => readLayerStyle(node, CARD_STACK_BREAKPOINT, k) === undefined);\n\nfunction matches(card: CompositeNode, spec: CardLayoutSpec): boolean {\n if (!holds(card, spec.card) || !holdsLayer(card, spec.stack?.card, STACK_KEYS.card)) return false;\n const media = findByRole(card, CardRole.Media);\n if (media) {\n if (!holds(media, spec.media) || !holdsLayer(media, spec.stack?.media, STACK_KEYS.media)) return false;\n const image = imageOf(media);\n if (image && (!holds(image, spec.image) || !holdsLayer(image, spec.stack?.image, STACK_KEYS.image))) return false;\n }\n const content = findByRole(card, CardRole.Content);\n if (content) {\n if (content.elementStyle !== spec.contentStyle || !holds(content, spec.content)) return false;\n if (!same(readProp(content, COLOR_SCHEME) ?? Scheme.Default, spec.contentScheme)) return false;\n }\n const title = findByRole(card, CardRole.Title);\n if (title && !holds(title, spec.title)) return false;\n const badge = findByRole(card, CardRole.Badge);\n if (badge && media) {\n const onMedia = parentInComposite(card, badge) === media;\n if (onMedia !== spec.badgeOnMedia) return false;\n }\n return true;\n}\n\n/** The layout the card's styles hold now, or `custom` once they were changed by hand (Card ▸ Layout). */\nexport function detectCardLayout(card: CompositeNode): CardLayoutState {\n return CARD_LAYOUTS.find(layout => matches(card, LAYOUTS[layout])) ?? CARD_LAYOUT_CUSTOM;\n}\n\nexport interface CardPartChange {\n part: CardPart;\n /** The node removed (off) or stamped (on); null when there was nothing to do. */\n node: CompositeNode | null;\n}\n\n/**\n * Card ▸ Parts. Off removes the part (the badge first moves out of a removed Media); on stamps it back\n * from the recipe into its role's slot, wearing its element style and laid out like the rest of the card\n * (the card's current layout; Image top when it is Custom). Returns the node touched, or null when the\n * card already was that way. Title and Content are not parts: they are locked (structure guard).\n */\nexport function setCardPart(card: CompositeNode, part: CardPart, on: boolean, create?: CompositeNodeFactory, options: CardOptions = {}): CompositeNode | null {\n const role = CARD_PART_ROLE[part];\n const existing = findByRole(card, role);\n if (!on) {\n if (!existing) return null;\n if (part === CardPart.Media) {\n const badge = findByRole(existing, CardRole.Badge);\n if (badge) placeBadge(card, badge, false);\n }\n removeFromComposite(card, existing);\n return existing;\n }\n if (existing || !create) return null;\n const layout = detectCardLayout(card);\n const spec = LAYOUTS[layout === CARD_LAYOUT_CUSTOM ? CardLayout.Top : layout];\n const words: CardWords = { ...CARD_WORDS, ...(options.words ?? {}) };\n const node = PART_BUILDERS[part](create, words, options.badgeTone ?? BadgeTone.Accent);\n const content = findByRole(card, CardRole.Content);\n switch (part) {\n case CardPart.Media: {\n card.children = [node, ...(card.children ?? [])];\n applyPartLayout(card, spec, node, () => ({}));\n const badge = findByRole(card, CardRole.Badge);\n if (badge) placeBadge(card, badge, spec.badgeOnMedia);\n break;\n }\n case CardPart.Badge:\n placeBadge(card, node, spec.badgeOnMedia);\n break;\n default:\n if (content) insertInContent(content, part, node);\n break;\n }\n return node;\n}\n\n/** The content column's order: [badge], eyebrow, title, text, buttons. */\nconst CONTENT_ORDER: ReadonlyArray<string> = [CardRole.Badge, CardRole.Eyebrow, CardRole.Title, CardRole.Text, CardRole.Actions];\n\nfunction insertInContent(content: CompositeNode, part: CardPart, node: CompositeNode): void {\n const rank = (n: CompositeNode) => { const i = CONTENT_ORDER.indexOf(n.role ?? ''); return i < 0 ? CONTENT_ORDER.length : i; };\n const children = [...(content.children ?? [])];\n const own = rank(node);\n const at = children.findIndex(c => rank(c) > own);\n children.splice(at < 0 ? children.length : at, 0, node);\n content.children = children;\n}\n\n// ── Link the whole card ──────────────────────────────────────────────────────────────────────\n\n/** The card's title — what \"Link the whole card\" makes the link (its words are the link's name). */\nexport function cardTitleOf(card: CompositeNode): CompositeNode | undefined {\n return findByRole(card, CardRole.Title);\n}\n\n/** True when the card links as a whole: its title carries a link (the stretched link renders from it). */\nexport function isCardLinked(card: CompositeNode): boolean {\n const title = cardTitleOf(card);\n if (!title) return false;\n const type = readProp(title, LINK_TYPE);\n return type === LinkType.Page || type === LinkType.External;\n}\n\n/**\n * Card ▸ Link ▸ \"Link the whole card\". On: the title links (to a website page, unless it already pointed\n * at a URL — the target it held is kept); off: the title links nowhere (its target is kept for the next\n * time). The stretched link itself is the shared CSS (iox-design.css), keyed on the title's anchor.\n */\nexport function setCardLinked(card: CompositeNode, on: boolean): boolean {\n const title = cardTitleOf(card);\n if (!title) return false;\n const current = readProp(title, LINK_TYPE);\n const next = on ? (current === LinkType.External ? LinkType.External : LinkType.Page) : LinkType.None;\n return writeProp(title, LINK_TYPE, next);\n}\n","import { CardPart, CardRole } from './card';\n\n/**\n * The structure every composite declares (composite-components plan §3a `RoleSpec`): where a role may\n * live and whether it is LOCKED (a structural part that cannot be deleted or moved out — a card always\n * has its content column and its title). Optional parts carry the Parts switch that re-adds them.\n * The builder's delete paths and its drop/paste rule ask `structureRefusal` — ONE answer for all of them.\n */\nexport interface CompositeRoleSpec {\n /** The role of the part's parent; null for a composite root. */\n readonly parent: string | null;\n readonly locked?: boolean;\n readonly part?: CardPart;\n}\n\nexport const COMPOSITE_ROLE_SPECS: Readonly<Record<string, CompositeRoleSpec>> = {\n [CardRole.Card]: { parent: null },\n [CardRole.Media]: { parent: CardRole.Card, part: CardPart.Media },\n [CardRole.Badge]: { parent: null, part: CardPart.Badge },\n [CardRole.Content]: { parent: CardRole.Card, locked: true },\n [CardRole.Eyebrow]: { parent: CardRole.Content, part: CardPart.Eyebrow },\n [CardRole.Title]: { parent: CardRole.Content, locked: true },\n [CardRole.Text]: { parent: CardRole.Content, part: CardPart.Text },\n [CardRole.Actions]: { parent: CardRole.Content, part: CardPart.Actions },\n};\n\nexport enum StructureEdit {\n Delete = 'delete',\n /** A drop, paste or wrap that would put the node somewhere new. */\n Move = 'move',\n}\n\nexport enum StructureRefusal {\n /** A locked part cannot be deleted (the card's Content and Title). */\n LockedPart = 'locked-part',\n /** A locked part can only live directly inside its own parent role. */\n LockedPlacement = 'locked-placement',\n}\n\ninterface RoleLike { role?: string | null }\n\n/**\n * Why the structure guard refuses `edit` on `node`, or null when it is allowed. `ancestors` (Move only) =\n * the new parent chain, root first, the direct parent last.\n */\nexport function structureRefusal(node: RoleLike | null | undefined, edit: StructureEdit, ancestors: ReadonlyArray<RoleLike> = []): StructureRefusal | null {\n const spec = node?.role ? COMPOSITE_ROLE_SPECS[node.role] : undefined;\n if (!spec?.locked) return null;\n if (edit === StructureEdit.Delete) return StructureRefusal.LockedPart;\n const parent = ancestors[ancestors.length - 1];\n return parent?.role === spec.parent ? null : StructureRefusal.LockedPlacement;\n}\n\n/** True when `node` is a locked part (shown with a lock and no delete in the layer tree). Deleting a whole\n * composite is always allowed — only its locked parts are refused. */\nexport function isLockedPart(node: RoleLike | null | undefined): boolean {\n return !!(node?.role && COMPOSITE_ROLE_SPECS[node.role]?.locked);\n}\n","/**\n * @vectoriox/iox-ui/composite-core — composites built from the builder's own parts (composite-components\n * plan §3a). FRAMEWORK-FREE: the builder, the SSR engine and iox-cms (generation-core's composer, the site\n * build) read the same recipes, roles and structure rules. Card v2 + Badge / Chip (T23 / T25) are the\n * first; Accordion and Tabs join with their own phases.\n * ⚠️ Consumers wire the usual trio — ng-package raw-ts assets, jest moduleNameMapper, tsconfig paths.\n */\nexport * from './composite-node';\nexport * from './badge';\nexport * from './card';\nexport * from './structure';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|