@hjmds/react 1.33.1 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/display.d.ts +2 -0
- package/dist/display.d.ts.map +1 -1
- package/dist/display.js +2 -2
- package/dist/display.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/internal/initial-focus.d.ts.map +1 -1
- package/dist/internal/initial-focus.js +9 -3
- package/dist/internal/initial-focus.js.map +1 -1
- package/dist/screen-flows.d.ts +1 -1
- package/dist/screen-flows.d.ts.map +1 -1
- package/dist/screen-flows.js +2 -2
- package/dist/screen-flows.js.map +1 -1
- package/dist/screens.d.ts +1 -1
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js.map +1 -1
- package/dist/styles.css +23 -16
- package/dist/styles.layered.css +23 -16
- package/package.json +3 -3
package/dist/screens.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export type ScreenLayoutProps = Readonly<{
|
|
|
21
21
|
* named by `title` (2026-10-18: yajalal team detail and Utilverse tool headers rebuilt the header to get this).
|
|
22
22
|
*/
|
|
23
23
|
titleLeading?: ReactNode;
|
|
24
|
-
/** Hide
|
|
24
|
+
/** Hide duplicate route names; retain titles that identify a subject or a task. */
|
|
25
25
|
titleVisibility?: "visible" | "hidden";
|
|
26
26
|
/** Centered by default (2026-10-17 user rule); `start` remains available. Extra actions sit at the trailing edge. */
|
|
27
27
|
headerAlignment?: "start" | "center";
|
package/dist/screens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqF,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGtP,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE1G,OAAO,EAA8B,KAAK,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AACjI,OAAO,EAAqF,KAAK,iBAAiB,EAA+B,MAAM,iCAAiC,CAAC;AACzL,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEhG,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,OAAO,EAA4C,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3F,OAAO,EAA6G,KAAK,2BAA2B,EAAqL,KAAK,mBAAmB,EAA0F,KAAK,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAGzlB,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,
|
|
1
|
+
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"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"}
|
package/dist/screens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"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","sourcesContent":["import { iconTileRecipe, notificationRowRecipe as notificationRecipe, initialFocusDefaults, type ScreenInitialFocus, type IconTileArtwork, type IconTileFrame, type IconTileShape, type IconTileSize } from \"@hjmds/design-contracts/screen-patterns\";\nimport { InitialFocusScope } from \"./internal/initial-focus.js\";\nimport { iconButtonRecipe, listRowRecipe } from \"@hjmds/design-contracts/recipes\";\nimport { resolveComposerLimit, type ComposerLengthFeedback } from \"@hjmds/design-contracts/communication\";\nimport { Progress } from \"./feedback.js\";\nimport { resolveDesignProfileScreen, type DesignProfileScreenPresentation } from \"@hjmds/design-contracts/design-profile-layout\";\nimport { MessageReactions, ReactionSummaryButton, ReactionSummaryText, omitReactionSummary, type MessageMenuAction, type MessageReactionsHandle } from \"./internal/message-reactions.js\";\nimport { MediaAlbumView, useMediaAlbumIndex, type MediaAlbum } from \"./internal/media-album.js\";\nimport { validateMediaSetChoice } from \"@hjmds/design-contracts/screen-patterns\";\nexport type { MediaAlbum, MediaAlbumPageStatusProps } from \"./internal/media-album.js\";\n// Loading/failed page rendered inside `mediaAlbum.renderPage` (2026-10-18); comment rows use the same component.\nexport { MediaAlbumPageStatus } from \"./internal/media-album.js\";\nimport type { ReactionPickerProps } from \"./reaction-picker.js\";\nimport { Button, IconButton } from \"./actions.js\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { TextArea } from \"./forms.js\";\nimport { useId, useLayoutEffect, useRef, useState, type Ref, type ReactNode } from \"react\";\nimport { isReplySwipe, timestampRevealOffset, shouldSubmitMessageKey, canSubmitMessage, validateMessageAttachments, type MessageAttachmentDescriptor, resolveScreenContentState, screenPatternRecipe, chatMessageRecipe, composerQuickInsertRecipe, resolveChatMessageGroupDisplay, resolveChatMediaColumns, resolveChatReactionSummary, type ChatReactionSummary, typingIndicatorRecipe, chatDateSeparatorRecipe, screenHeaderRecipe, validateScreenExit, type ChatMessageDescriptor, type MessageComposerDescriptor, type ScreenContentState, type ScreenContentInset } from \"@hjmds/design-contracts/screen-patterns\";\nimport { Heading } from \"./heading.js\";\nimport { Spinner } from \"./internal/spinner.js\";\nimport { ScreenExitButton, type ScreenExit } from \"./internal/screen-exit.js\";\nimport { ScreenFooterContext } from \"./internal/screen-footer.js\";\nimport { Section, Stack, Text, VisuallyHidden } from \"./layout.js\";\nimport { ListRow, type ListRowProps } from \"./display.js\";\nimport { classNames, useDesignProfileDefaults } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type ScreenLayoutProps = Readonly<{\n title: string;\n /** The shared header owns badge placement; the product supplies its meaning and label. */\n titleBadge?: ReactNode;\n /**\n * Identity mark or artwork before the title (team logo, tool artwork). Decorative: the title stays the heading and\n * the accessible name. With `titleVisibility=\"hidden\"` the mark stands alone in the title slot as the heading,\n * named by `title` (2026-10-18: yajalal team detail and Utilverse tool headers rebuilt the header to get this).\n */\n titleLeading?: ReactNode;\n /** Hide redundant route names while retaining a named screen. */\n titleVisibility?: \"visible\" | \"hidden\";\n /** Centered by default (2026-10-17 user rule); `start` remains available. Extra actions sit at the trailing edge. */\n headerAlignment?: \"start\" | \"center\";\n /** Preserve host navigation while the shared shell owns content and state. */\n header?: ReactNode;\n /**\n * `none`: host owns every inset. `body-edge`: only the body drops its inline padding so list rows own their inset.\n * `body-bleed`: the body drops every padding (header, notice and footer keep theirs) for an edge-to-edge map or canvas.\n */\n contentInset?: ScreenContentInset;\n /** Center a product prompt in the available body without inventing a query state. */\n contentAlignment?: \"start\" | \"center\";\n /** Keep a product wallpaper supplied by the outer host visible. */\n surface?: \"default\" | \"transparent\";\n /** Explicit layout wins over the nearest design profile. */\n presentation?: DesignProfileScreenPresentation;\n /** @deprecated Screen headers no longer show supporting copy (2026-10-18). Move required guidance into body content. Retained until the next major API cleanup. */\n description?: string;\n /**\n * Leaving this screen (back, close, settings exit): icon-only button fixed at the header's leading edge.\n * The leading edge has no free slot (2026-10-17): every product use was a hand-made back button.\n */\n exit?: ScreenExit;\n actions?: ReactNode;\n notice?: ReactNode;\n footer?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /** Brand visual for `state.kind === \"loading\"`; the shared state group keeps copy, centering and announcement (as CompositionLayout). */\n loadingIndicator?: ReactNode;\n children?: ReactNode;\n /** A virtualized list must own scrolling; never nest it inside a second scroll container. */\n scroll?: \"screen\" | \"content\";\n as?: \"main\" | \"section\";\n className?: string;\n /**\n * Canonical layout-only placement on the screen root (for example `flex` or `width` in a split\n * view), matching Native ScreenLayout. Every screen built on ScreenLayout forwards it.\n */\n layoutStyle?: HjmCompositionStyleProp;\n /**\n * Focus the marked, else first enabled input once on page entry (default `first-input`). Never steals an existing\n * input's focus or focuses below an overlay. A pending entry can wait for data; after user interaction it ends.\n * Bottom sheets disable automatic focus for this screen and all nested inputs, regardless of this prop.\n */\n initialFocus?: ScreenInitialFocus;\n}>;\n\n/** Shared screen shell. Routing, data, permission checks and mutation state remain product-owned. */\nexport function ScreenLayout({ title, titleBadge, titleLeading, titleVisibility = \"visible\", headerAlignment = \"center\", header, contentInset = \"default\", contentAlignment = \"start\", surface = \"default\", presentation: suppliedPresentation, exit, actions, notice, footer, state = { kind: \"ready\" }, stateAction, loadingIndicator, children, scroll = \"screen\", as: Element = \"main\", className, layoutStyle, initialFocus = initialFocusDefaults.screen }: ScreenLayoutProps) {\n const id = useId();\n if (exit) validateScreenExit(exit, false);\n const leading = exit ? <ScreenExitButton {...exit} /> : null;\n const hasMark = titleLeading !== undefined && titleLeading !== null && titleLeading !== false;\n const showHeader = titleVisibility === \"visible\" || hasMark || !!leading || !!actions;\n // Same header band as Native (screenHeaderRecipe): a fixed 52 band (48 icon-only) so the title sits at the same\n // height with or without exit/actions buttons (2026-10-17: Web grew 58→76 when a 44 button was present).\n const compactHeader = header == null && headerAlignment === \"center\" && titleVisibility === \"hidden\" && !hasMark;\n // Screens historically work with the stylesheet alone. Optional context keeps\n // that path while inheriting profiles from an enclosing Provider when present.\n const designProfile = useDesignProfileDefaults();\n const presentation = suppliedPresentation ?? designProfile?.screens.overview;\n const profileLayout = presentation === undefined ? undefined : resolveDesignProfileScreen(presentation);\n const resolved = resolveScreenContentState(state);\n // Replacement text owns scrolling even when the ready state delegates it to\n // a virtual list. Use the rendered mode for keyboard access as well as CSS.\n const bodyScroll = resolved.replacesContent ? \"screen\" : scroll;\n const bodyRef = useRef<HTMLDivElement>(null);\n const lastBodyFocus = useRef<HTMLElement | null>(null);\n useLayoutEffect(() => {\n // Replacing a focused retry/input removes its DOM node. Keep keyboard users\n // in the same content region without stealing focus moved to another control.\n const previous = lastBodyFocus.current;\n if (previous && !previous.isConnected && document.activeElement === document.body) {\n bodyRef.current?.focus({ preventScroll: true });\n }\n if (previous && !previous.isConnected) lastBodyFocus.current = null;\n });\n const recipe = screenPatternRecipe;\n // The mark is decorative beside a visible title; standing alone it becomes the heading, named by `title`.\n const mark = hasMark ? <span className=\"hjm-screen__title-leading\" aria-hidden=\"true\">{titleLeading}</span> : null;\n const titleRow = (level: typeof screenHeaderRecipe.titleLevel | typeof screenHeaderRecipe.centeredTitleLevel, justify: \"center\" | \"start\") => titleVisibility === \"visible\"\n ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" justify={justify} wrap>{mark}<Heading level={level} semanticLevel={1} id={id}>{title}</Heading>{titleBadge}</Stack>\n : mark ? <div role=\"heading\" aria-level={1} aria-label={title} style={{ display: \"flex\", justifyContent: justify === \"center\" ? \"center\" : \"flex-start\" }}>{mark}</div> : null;\n return <Element aria-labelledby={header || titleVisibility === \"hidden\" ? undefined : id} aria-label={header || titleVisibility === \"hidden\" ? title : undefined} data-content-inset={contentInset} data-presentation={presentation} className={classNames(\"hjm-screen\", className)}\n style={{ backgroundColor: surface === \"transparent\" || designProfile?.material.canvas ? \"transparent\" : undefined, \"--hjm-screen-width\": `${profileLayout?.maxWidth ?? recipe.maxWidth}px`, \"--hjm-screen-padding\": `${contentInset === \"none\" ? 0 : recipe.padding}px`, \"--hjm-screen-gap\": `${profileLayout?.gap ?? recipe.sectionGap}px`, \"--hjm-screen-item-gap\": `${recipe.itemGap}px`, \"--hjm-screen-state-gap\": `${recipe.stateGap}px`, \"--hjm-screen-header-min\": `${recipe.headerMinWidth}px`, ...layoutStyle } as React.CSSProperties}><InitialFocusScope mode={initialFocus}>\n {header ?? (showHeader ? headerAlignment === \"center\" ? <header className=\"hjm-screen__header\" style={{ display: \"grid\", gridTemplateColumns: \"1fr minmax(0, auto) 1fr\", alignItems: \"center\", boxSizing: \"border-box\", minBlockSize: compactHeader ? screenHeaderRecipe.compactMinHeight : screenHeaderRecipe.minHeight, paddingBlock: compactHeader ? screenHeaderRecipe.compactPaddingVertical : screenHeaderRecipe.paddingVertical }}>\n {/* Equal side columns sized by their controls and a title-size (18) heading, matching Native's measured\n centered header (2026-10-17: the fixed 1:2:1 split with a level3 heading wrapped short titles). */}\n <div>{leading}</div><div className=\"hjm-screen__heading\" style={{ textAlign: \"center\", minWidth: 0 }}>\n {titleRow(screenHeaderRecipe.centeredTitleLevel, \"center\")}\n </div><div style={{ justifySelf: \"end\" }}>{actions}</div>\n </header> : <header className=\"hjm-screen__header\" style={profileLayout ? { flexDirection: profileLayout.headerAxis, alignItems: profileLayout.centered ? \"center\" : undefined, textAlign: profileLayout.centered ? \"center\" : undefined } : undefined}>\n {leading}<div className=\"hjm-screen__heading\">{titleRow(screenHeaderRecipe.titleLevel, profileLayout?.centered ? \"center\" : \"start\")}\n </div>{actions}\n </header> : null)}\n {notice ? <div className=\"hjm-screen__notice\">{notice}</div> : null}\n {/* Scrollable read-only screens need a named keyboard entry point, including hidden/custom headers. */}\n <div ref={bodyRef} role=\"region\" aria-label={title} tabIndex={bodyScroll === \"content\" ? -1 : 0}\n onFocusCapture={event => { lastBodyFocus.current = event.target as HTMLElement; }}\n onBlurCapture={event => {\n // A connected input blurred to the document intentionally relinquishes\n // focus too; only removal of the currently focused node needs recovery.\n if (event.relatedTarget ? !event.currentTarget.contains(event.relatedTarget as Node) : (event.target as HTMLElement).isConnected) {\n lastBodyFocus.current = null;\n }\n }}\n className=\"hjm-screen__body\" data-content-alignment={contentAlignment} data-scroll={bodyScroll} data-replacement={resolved.replacesContent || undefined} aria-busy={resolved.busy || undefined}>\n {state.kind === \"ready\" ? (contentAlignment === \"center\" ? <div className=\"hjm-screen__centered-content\">{children}</div> : children) : <div className=\"hjm-screen__state\">\n {/* Loading copy is an accessible name; visible copy beside the spinner\n contradicts the shared spinner-only loading contract. */}\n {/* The live role wraps only the copy: an alert around the retry action announced the button too (2026-10-17). */}\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"}>\n <Stack gap=\"sm\" align=\"center\"><Text variant={resolved.titleVariant}>{state.title}</Text>\n {state.description ? <Text tone=\"muted\">{state.description}</Text> : null}</Stack>\n </div>}\n {stateAction}\n </div>}\n </div>\n {/* Same rule as Native: with contentInset=\"none\" the host owns the insets, so BottomCTA keeps its own bar. */}\n {footer ? <footer className=\"hjm-screen__footer\"><ScreenFooterContext.Provider value={contentInset !== \"none\"}>{footer}</ScreenFooterContext.Provider></footer> : null}\n </InitialFocusScope>\n </Element>;\n}\n\n/**\n * Style for a product scroller that owns the body with `scroll=\"content\"`: it reaches across the body gutter\n * (`--hjm-screen-body-inline`) and pads it back, so items stay on the gutter while the clip moves to the screen edges and\n * a bleeding CollectionRail inside scrolls edge to edge (same name and shape as Native; spint home 2026-10-17).\n * Outside a screen body the variable is unset and the room is 0; CSS resolves the distance, so no context is read.\n */\nexport function useScreenBodyScrollRoom(): Readonly<{ style: React.CSSProperties }> {\n return { style: { marginInline: \"calc(-1 * var(--hjm-screen-body-inline, 0px))\", paddingInline: \"var(--hjm-screen-body-inline, 0px)\" } };\n}\n\nexport type SettingsScreenSection = Readonly<{ id: string; title: string; description?: string; children: ReactNode }>;\nexport type SettingsScreenProps = Omit<ScreenLayoutProps, \"children\" | \"scroll\"> & Readonly<{ profile?: ReactNode; sections: readonly SettingsScreenSection[] }>;\nexport function SettingsScreen({ profile, sections, ...props }: SettingsScreenProps) {\n // Keep semantic section headings while using the smaller settings label role.\n return <ScreenLayout {...props}><Stack gap=\"md\">{profile}{sections.map(section =>\n <Section className=\"hjm-settings-section\" key={section.id} title={<Text variant=\"label\" emphasis=\"strong\" tone=\"muted\">{section.title}</Text>} description={section.description}>{section.children}</Section>)}</Stack></ScreenLayout>;\n}\n\nexport type NotificationInboxScreenProps = Omit<ScreenLayoutProps, \"children\"> & Readonly<{\n filters?: ReactNode;\n children: ReactNode;\n}>;\nexport function NotificationInboxScreen({ filters, children, notice, ...props }: NotificationInboxScreenProps) {\n return <ScreenLayout {...props} notice={<Stack gap=\"sm\">{notice}{filters}</Stack>}>{children}</ScreenLayout>;\n}\n\n/** Read/unread is announced in localized copy as well as emphasis; rendering never marks an item read. */\nexport type NotificationItemProps = Omit<ListRowProps, \"description\" | \"selected\"> & Readonly<{\n read: boolean;\n statusLabel: string;\n timestamp: string;\n description?: ReactNode;\n}>;\nexport function NotificationItem({ read, statusLabel, timestamp, description, title, className, ...props }: NotificationItemProps) {\n return <ListRow {...props} className={classNames(\"hjm-notification-item\", className)} data-unread={!read || undefined} title={<Text variant={listRowRecipe.title.textVariant} emphasis={read ? \"regular\" : \"strong\"}>{title}</Text>}\n description={<Stack gap=\"xxs\">{description}<Text variant=\"caption\" tone=\"muted\">{statusLabel} · {timestamp}</Text></Stack>} />;\n}\n\nexport type ChatScreenProps = Omit<ScreenLayoutProps, \"footer\" | \"titleLeading\"> & Readonly<{\n composer: ReactNode;\n /** Shown while the reader is away from the latest message; the host owns scroll position and visibility. */\n jumpToLatest?: Readonly<{ label: string; icon: ReactNode; onPress(): void }>;\n /** Peer or room photo beside the centered title; group rooms add the member count through `titleBadge`. */\n avatar?: ReactNode;\n}>;\n/** Caller supplies a virtualized timeline and keyboard-aware composer; no implicit auto-scroll or send. */\nexport function ChatScreen({ composer, jumpToLatest, avatar, scroll = \"content\", ...props }: ChatScreenProps) {\n // An empty conversation must still allow its first message; unavailable states hide input.\n const showComposer = !props.state || props.state.kind === \"ready\" || props.state.kind === \"empty\";\n // Anchor the jump control to the composer edge so it floats over the timeline without measuring the footer.\n // Conversations center the peer between back and tools and use the measured 10px timeline gutter (2026-10-16).\n return <ScreenLayout {...props} className={classNames(\"hjm-chat-screen\", props.className) ?? \"hjm-chat-screen\"} titleLeading={avatar} scroll={scroll} footer={showComposer ? <div className=\"hjm-chat-screen__footer\">\n {jumpToLatest ? <div className=\"hjm-chat-screen__jump\"><IconButton label={jumpToLatest.label} size=\"small\" shape=\"circle\" tone=\"secondary\" onClick={jumpToLatest.onPress}>{jumpToLatest.icon}</IconButton></div> : null}\n {composer}</div> : null} />;\n}\n\nexport type MessageComposerProps = Omit<MessageComposerDescriptor, \"attachmentCount\"> & Readonly<{\n maxLength?: number;\n /** Opt-in count/ring appears only near the actual maxLength; never trims drafts. */\n lengthFeedback?: ComposerLengthFeedback;\n sendDisabled?: boolean;\n additionalContent?: boolean;\n leadingAction?: ReactNode;\n inputRef?: Ref<HTMLTextAreaElement>;\n /** Release typing presence when the host input loses focus. */\n onBlur?: () => void;\n onValueChange(value: string): void;\n onSend(value: string): void;\n /** Emoji row above the input; a tap appends the emoji to the draft (measured comment sheet, 2026-10-16). */\n /** Outside the field, beside the input row (e.g. the writer's avatar); the quick-insert row stays full width. */\n leading?: ReactNode;\n quickInserts?: Readonly<{ label: string; items: readonly Readonly<{ id: string; emoji: string; label: string }>[] }>;\n context?: ReactNode;\n replyTo?: Readonly<{ author: string; excerpt: string; cancelLabel: string; onCancel(): void }>;\n /** Icon mode puts the send/attachment action inside the growing field. */\n sendIcon?: ReactNode;\n /** Reference comment layout: a filled circular send action inside the field. */\n sendPresentation?: \"inline\" | \"circle\";\n attachmentAction?: Readonly<{ label: string; icon: ReactNode; onPress(): void; disabled?: boolean }>;\n attachments?: readonly (MessageAttachmentDescriptor & Readonly<{ preview: ReactNode }>)[];\n onRemoveAttachment?: (id: string) => void;\n /** Canonical layout-only placement on the composer root. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder = label, description, error, invalid = false, submitMode = \"newline\", onBlur, disabled = false, pending = false, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled = false, additionalContent = false, leadingAction, inputRef, context, replyTo, sendIcon, sendPresentation = \"inline\", attachmentAction, attachments = [], onRemoveAttachment, layoutStyle }: MessageComposerProps) {\n validateMessageAttachments(attachments);\n if (attachments.length && !onRemoveAttachment) throw new TypeError(\"Attachments require a removal callback\");\n if (lengthFeedback && maxLength === undefined) throw new TypeError(\"Composer length feedback requires maxLength\");\n const limit = !lengthFeedback ? null : resolveComposerLimit(value, maxLength!, lengthFeedback.threshold);\n const canSend = !sendDisabled && !limit?.exceeded && canSubmitMessage({ value, label, sendLabel, disabled, pending, attachmentCount: attachments.length + (additionalContent ? 1 : 0) });\n const locked = disabled || pending;\n const sendDiameter = iconButtonRecipe.sizes[sendPresentation === \"circle\" ? \"small\" : \"medium\"].diameter;\n // A bounded corner radius keeps multiline/large-text content inside the field instead of a tall pill.\n const hasContent = !!value.trim() || attachments.length > 0 || additionalContent;\n const attach = attachmentAction ? <IconButton label={attachmentAction.label} tone=\"ghost\" disabled={locked || attachmentAction.disabled} onClick={attachmentAction.onPress}>{attachmentAction.icon}</IconButton> : null;\n const send = sendIcon ? <IconButton label={sendLabel} size={sendPresentation === \"circle\" ? \"small\" : \"medium\"} shape=\"circle\" tone={sendPresentation === \"circle\" ? \"primary\" : \"ghost\"} disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendIcon}</IconButton> : <Button disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendLabel}</Button>;\n // Readonly pending input preserves the keyboard/focus for receipt failure recovery; disabling it would blur desktop chat.\n // Enter is opt-in and IME-safe; receipt-driven clearing and failed-send recovery belong to the host.\n const composerBody = <>{attachments.length ? <div className=\"hjm-message-composer__attachments\">{attachments.map(item => <div key={item.id} className=\"hjm-message-composer__attachment\"><div className=\"hjm-message-composer__preview\">{item.preview}</div><span className=\"hjm-message-composer__remove\"><IconButton label={item.removeLabel} tone=\"ghost\" size=\"small\" disabled={locked || item.disabled} onClick={() => { if (!locked && !item.disabled) onRemoveAttachment?.(item.id); }}><span className=\"hjm-message-composer__remove-glyph\" aria-hidden=\"true\">×</span></IconButton></span></div>)}{attach}</div> : null}\n <div className=\"hjm-message-composer__row\">{leading ? <span className=\"hjm-message-composer__leading\">{leading}</span> : null}<TextArea ref={inputRef} maxLength={maxLength} leadingAction={leadingAction} shape=\"large\" rows={screenPatternRecipe.composerMinLines} aria-label={label} placeholder={placeholder} description={description} error={error} aria-invalid={invalid || undefined} onBlur={onBlur} value={value} disabled={disabled} readOnly={pending} aria-busy={pending || undefined}\n onKeyDown={event => { if (shouldSubmitMessageKey({key:event.key, shiftKey:event.shiftKey, isComposing:event.nativeEvent.isComposing, keyCode:event.nativeEvent.keyCode}, submitMode)) { event.preventDefault(); if (canSend) onSend(value); } }}\n onChange={event => { if (!locked) onValueChange(event.currentTarget.value); }} minVisibleLines={screenPatternRecipe.composerMinLines} maxVisibleLines={screenPatternRecipe.composerMaxLines}\n {...(sendIcon ? { trailing: <span className=\"hjm-message-composer__trailing\" style={{ minInlineSize: sendDiameter, minBlockSize: sendDiameter }}>{/* Reserve the send diameter so typing never resizes the field; a hidden duplicate made two \"send\" buttons. */}<span className=\"hjm-message-composer__visible\">{hasContent || pending ? send : attach}</span></span> } : {})} />\n {sendIcon ? null : send}\n </div></>;\n const quickRow = quickInserts?.items.length ? <div className=\"hjm-message-composer__quick\" role=\"group\" aria-label={quickInserts.label} style={{ \"--hjm-quick-size\": `${composerQuickInsertRecipe.itemSize}px`, \"--hjm-quick-emoji\": `${composerQuickInsertRecipe.emojiSize}px` } as React.CSSProperties}>\n {quickInserts.items.map(item => <button key={item.id} type=\"button\" className=\"hjm-message-composer__quick-item\" aria-label={item.label} disabled={locked} onClick={() => onValueChange(value + item.emoji)}>{item.emoji}</button>)}\n </div> : null;\n // The error is announced by TextArea's shared Field error region (internal/field-error.tsx); no composer-only copy.\n return <div className=\"hjm-message-composer\" data-send-presentation={sendPresentation} style={{\"--hjm-message-composer-gap\": `${screenPatternRecipe.itemGap}px`, \"--hjm-attachment-size\": `${screenPatternRecipe.attachmentSize}px`, \"--hjm-attachment-remove-size\": `${screenPatternRecipe.attachmentRemoveSize}px`, ...layoutStyle} as React.CSSProperties}>{context}{quickRow}{/* Replying wraps target, attachments and input in one card (2026-10-16 reference). */}{/* One stable wrapper whether or not replying, so the textarea is never remounted (focus stays). */}<div className=\"hjm-message-composer__reply-card\" data-replying={replyTo ? true : undefined}>{replyTo ? <div className=\"hjm-message-composer__reply\"><div className=\"hjm-message-composer__reply-text\"><Text emphasis=\"strong\">{replyTo.author}</Text><Text variant=\"caption\" tone=\"muted\" className=\"hjm-message-composer__reply-excerpt\">{replyTo.excerpt}</Text></div><IconButton label={replyTo.cancelLabel} tone=\"secondary\" size=\"small\" shape=\"circle\" disabled={locked} onClick={replyTo.onCancel}><Text>×</Text></IconButton></div> : null}{composerBody}</div>{lengthFeedback && limit?.near ? <Progress shape=\"circular\" label={lengthFeedback.label} value={Math.min(limit.used, limit.max)} max={limit.max} valueText={lengthFeedback.formatCount(limit.used, limit.max)}><Text variant=\"caption\">{lengthFeedback.formatCount(limit.used, limit.max)}</Text></Progress> : null}</div>;\n}\n\nexport type ChatMessageProps = ChatMessageDescriptor & Readonly<{ children: ReactNode; interactiveContent?: boolean; avatar?: ReactNode; reply?: ReactNode; actions?: ReactNode; replyAction?: Readonly<{label:string; onPress():void; disabled?:boolean; icon?:ReactNode}>; replyLink?: Readonly<{label:string; onPress():void}>; /** HJM-drawn quote (\"Replying to X\" + one-line excerpt) heading the bubble; preferred over a custom `reply` node. */ replyQuote?: Readonly<{ title: string; excerpt: string }>; /** Photos sent in the message. Products own the image source, viewer and upload; HJM owns the layout. */ media?: readonly Readonly<{ id: string; label: string; preview: ReactNode; aspectRatio?: number; onPress?(): void }>[]; reactions?: ReactionPickerProps & Readonly<{ closeLabel: string; menuAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean }>; menuActions?: readonly MessageMenuAction[]; reportAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean; icon?: ReactNode }>; summary?: ChatMessageReactionSummary }>;\n /** Canonical layout-only placement on the message row. The swipe offset still owns `transform`. */\n layoutStyle?: HjmCompositionStyleProp }> & Readonly<{\n /**\n * Paged alternative to `media` (2026-10-18, Utilverse): HJM mounts only the shown photo, so a product that authorizes\n * each image fetches one page at a time. Exclusive with `media` (validated at render): one message has one photo set.\n */\n mediaAlbum?: MediaAlbum }>;\n/**\n * Current reactions drawn beside the time as one button that opens the same hold menu (2026-10-18 BurnTok DM, which\n * showed counts as status tags because the menu could not be opened from outside). Counts and the localized\n * accessible name (\"Reactions: heart 2. Open menu\") come from the product; `items` in display order.\n */\nexport type ChatMessageReactionSummary = ChatReactionSummary;\nexport function ChatMessage({ direction, author, timestamp, timestampPresentation = \"always\", bubbleTail = true, groupPosition = \"single\", deliveryLabel, avatar, reply, replyQuote, media = [], mediaAlbum, actions, replyAction, replyLink, reactions, children, interactiveContent=false, layoutStyle }: ChatMessageProps) {\n const theme = useOptionalHjmTheme();\n const display = resolveChatMessageGroupDisplay(groupPosition);\n // A run shows its time once, beside its last bubble; delivery state stays on every bubble.\n const visibleTime = display.showTimestamp ? timestamp : \"\";\n const quote = replyQuote ? <><Text emphasis=\"strong\">{replyQuote.title}</Text><Text tone=\"muted\" className=\"hjm-chat-message__quote-excerpt\">{replyQuote.excerpt}</Text></> : reply;\n // The quote stays inside the bubble; with replyLink a click on it jumps to the original (2026-10-16 reference).\n validateMediaSetChoice(media.length > 0, mediaAlbum !== undefined);\n const [albumIndex, setAlbumIndex] = useMediaAlbumIndex(mediaAlbum);\n const mediaBlock = mediaAlbum ? <MediaAlbumView album={mediaAlbum} index={albumIndex} onIndexChange={setAlbumIndex} width={chatMessageRecipe.mediaWidth} radius={chatMessageRecipe.bubbleRadius} />\n : media.length ? <div className=\"hjm-chat-message__media\" style={{ inlineSize: chatMessageRecipe.mediaWidth, gap: chatMessageRecipe.mediaGap, gridTemplateColumns: `repeat(${resolveChatMediaColumns(media.length)}, minmax(0, 1fr))` } as React.CSSProperties}>\n {media.map(item => { const style = { aspectRatio: media.length > 1 ? 1 : item.aspectRatio ?? 1 }; return item.onPress ? <button key={item.id} type=\"button\" className=\"hjm-chat-message__media-item\" aria-label={item.label} style={style} onClick={item.onPress}>{item.preview}</button> : <div key={item.id} role=\"img\" aria-label={item.label} className=\"hjm-chat-message__media-item\" style={style}>{item.preview}</div>; })}\n </div> : null;\n // A photo-only message drops the bubble surface so the photo itself is the message.\n const photoOnly = (media.length > 0 || mediaAlbum !== undefined) && !reply && !replyQuote && (children === null || children === undefined || children === false || children === \"\");\n const quoteBlock = quote ? (replyLink ? <button type=\"button\" className=\"hjm-chat-message__reply hjm-chat-message__quote\" aria-label={replyLink.label} onClick={replyLink.onPress}>{quote}</button> : <div className=\"hjm-chat-message__reply\">{quote}</div>) : null;\n const revealTime = timestampPresentation === \"swipe\" && !!timestamp;\n // Only the pointer that began a drag can finish it; another touch must not reply or cancel it.\n const start = useRef<{x:number;y:number;pointerId:number} | null>(null);\n const [offset, setOffset] = useState(0);\n const finish = () => { start.current = null; setOffset(0); };\n const menu = useRef<MessageReactionsHandle>(null);\n const summary = reactions?.summary;\n const reactionMenu = reactions ? omitReactionSummary(reactions) : undefined;\n const summaryItems = summary ? resolveChatReactionSummary(summary) : [];\n const summaryButton = reactions && summary && summaryItems.length ? (summary.readOnly ? <ReactionSummaryText label={summary.label} items={summaryItems} /> : <ReactionSummaryButton label={summary.label} items={summaryItems} selected={reactions.value} disabled={reactions.disabled ?? false} onPress={() => menu.current?.open()} />) : null;\n return <article tabIndex={replyAction && !replyAction.disabled ? 0 : undefined}\n aria-keyshortcuts={replyAction ? \"Alt+ArrowLeft Alt+ArrowRight\" : undefined} aria-description={replyAction?.label}\n onKeyDown={event => { if (event.target === event.currentTarget && event.altKey && (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") && replyAction && !replyAction.disabled) { event.preventDefault(); replyAction.onPress(); } }}\n onPointerDown={event => { if (start.current || (!revealTime && (!replyAction || replyAction.disabled)) || event.button !== 0 || (event.target as HTMLElement).closest(\"button,a,input,textarea\")) return; start.current = {x:event.clientX,y:event.clientY,pointerId:event.pointerId}; }}\n onPointerMove={event => { if (!start.current || start.current.pointerId !== event.pointerId) return; const dx=event.clientX-start.current.x,dy=event.clientY-start.current.y; if (Math.abs(dy)>10 && Math.abs(dy)>Math.abs(dx)) {finish();return;} if (revealTime) setOffset((direction === \"outgoing\" ? -1 : 1) * timestampRevealOffset(direction === \"outgoing\" ? -dx : dx,dy)); else if (Math.abs(dx)>Math.abs(dy)*2) setOffset(Math.max(-72,Math.min(72,dx))); }}\n onPointerUp={event => { if (start.current?.pointerId !== event.pointerId) return; if (!revealTime && start.current && replyAction && !replyAction.disabled && isReplySwipe(event.clientX-start.current.x,event.clientY-start.current.y)) replyAction.onPress(); finish(); }} onPointerCancel={event => { if (start.current?.pointerId === event.pointerId) finish(); }} onPointerLeave={event => { if (start.current?.pointerId === event.pointerId) finish(); }}\n style={{ ...layoutStyle, position: \"relative\", overflow: \"hidden\", marginBlockStart: display.spacingBefore,\n // Reserve tip room only where it protrudes (own trailing edge, or leading edge without an avatar column).\n ...(bubbleTail ? (direction === \"outgoing\" ? { paddingInlineEnd: chatMessageRecipe.tailWidth } : avatar ? {} : { paddingInlineStart: chatMessageRecipe.tailWidth }) : {}), touchAction: revealTime || replyAction ? \"pan-y\" : undefined }} aria-label={author}>\n {revealTime ? <time style={{ position: \"absolute\", ...(direction === \"outgoing\" ? { right: 0, justifyContent: \"flex-end\" } : { left: 0 }), top: 0, bottom: 0, width: 80, display: \"flex\", alignItems: \"center\", opacity: offset !== 0 ? 1 : 0, pointerEvents: \"none\" }}><Text variant=\"caption\" tone=\"muted\">{timestamp}</Text></time> : null}\n <div className=\"hjm-chat-message\" style={{ transform: `translateX(${offset}px)`, transition: start.current || theme?.environment.reducedMotion ? \"none\" : \"transform var(--hjm-motion-normal, 200ms) ease-out\", \"--hjm-message-max-width\": screenPatternRecipe.messageMaxWidth, \"--hjm-chat-avatar-size\": `${chatMessageRecipe.avatarSize}px` } as React.CSSProperties} data-direction={direction} data-tail={(bubbleTail && display.showTail) || undefined}>\n {/* Later bubbles of a run keep the avatar column so their edges line up under the first bubble. */}\n {avatar ? <div className=\"hjm-chat-message__avatar\" aria-hidden={display.showAvatar ? undefined : true}>{display.showAvatar ? avatar : null}</div> : null}\n <div className=\"hjm-chat-message__content\">{author && display.showAuthor && direction !== \"outgoing\"?<Text variant=\"caption\" tone=\"muted\">{author}</Text>:null}\n {/* Time and delivery sit beside the bubble's bottom edge, on the side facing the open space. */}\n <div className=\"hjm-chat-message__body\">\n {reactionMenu ? <MessageReactions {...reactionMenu} menuRef={menu} interactiveContent={interactiveContent || mediaAlbum !== undefined} {...(timestamp ? { menuTitle: timestamp } : {})} {...(replyAction && !replyAction.disabled ? {replyAction} : {})}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</MessageReactions> : <div className=\"hjm-chat-message__bubble\" data-photo-only={photoOnly || undefined}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</div>}\n {(!revealTime && visibleTime)||deliveryLabel||actions||summaryButton?<div className=\"hjm-chat-message__meta\">{summaryButton}{(!revealTime && visibleTime)||deliveryLabel?<Text variant=\"caption\" tone=\"muted\">{[revealTime ? \"\" : visibleTime, deliveryLabel].filter(Boolean).join(\" · \")}</Text>:null}{actions}</div>:null}\n </div>\n </div>\n </div>\n </article>;\n}\n\n/** Shared structure for embedded compositions. The parent supplies size; this never creates a second scroller. */\nexport type CompositionLayoutProps = Readonly<{\n title?: string;\n /** Document heading level; visual treatment remains the shared composition title. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n description?: string;\n badge?: ReactNode;\n leading?: ReactNode;\n actions?: ReactNode;\n notice?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /** Brand visual only; the shared state group owns copy, centering and announcement. */\n loadingIndicator?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function CompositionLayout({title, headingLevel = 3, description, badge, leading, actions, notice, children, footer, state = {kind: \"ready\"}, stateAction, loadingIndicator, layoutStyle}: CompositionLayoutProps) {\n const resolved = resolveScreenContentState(state);\n return <Stack gap=\"md\" {...(layoutStyle === undefined ? {} : {layoutStyle})}>\n {title || description || badge || leading || actions ? <Stack axis=\"inline\" gap=\"sm\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>\n {leading}<Stack gap=\"xxs\" layoutStyle={{flex: 1, minWidth: 0}}>\n <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>{title ? <Heading level=\"level3\" semanticLevel={headingLevel}>{title}</Heading> : null}{badge}</Stack>\n {description ? <Text tone=\"muted\">{description}</Text> : null}\n </Stack>{actions}\n </Stack> : null}\n {notice}\n {state.kind === \"ready\" ? children : <Stack gap=\"sm\" align=\"center\" justify=\"center\" layoutStyle={{flex: 1}}>\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"} style={{ textAlign: \"center\" }}>{/* Block, centered lines as Native; the live role covers the copy only, not stateAction. */}<Text as=\"p\" variant={resolved.titleVariant}>{state.title}</Text>{state.description ? <Text as=\"p\" tone=\"muted\">{state.description}</Text> : null}</div>}\n {stateAction}\n </Stack>}\n {footer}\n </Stack>;\n}\n\nexport type NotificationRowProps = Readonly<{\n /** Text and inline emphasis only; interactive content belongs outside the row. */\n preview: ReactNode;\n metadata: string;\n avatar: ReactNode;\n avatarBadge?: ReactNode;\n thumbnail?: ReactNode;\n unread?: boolean;\n}>;\n\n/** Router host owns the sole target and localized accessible name, as with ConversationRow. */\nexport function NotificationRow({ preview, metadata, avatar, avatarBadge, thumbnail, unread = false }: NotificationRowProps) {\n const r = notificationRecipe;\n return <span aria-hidden=\"true\" data-hjm-notification-row=\"true\" style={{ display: \"flex\", alignItems: \"center\", gap: r.gap, padding: `${r.paddingBlock}px ${r.paddingInline}px`, width: \"100%\", minWidth: 0, boxSizing: \"border-box\" }}>\n <span style={{ position: \"relative\", width: r.avatarSize, height: r.avatarSize, flexShrink: 0 }}>\n <span style={{ display: \"flex\", width: \"100%\", height: \"100%\", overflow: \"hidden\", borderRadius: \"50%\" }}>{avatar}</span>\n {avatarBadge ? <span style={{ position: \"absolute\", bottom: 0, right: 0, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: r.avatarBadgeSize, height: r.avatarBadgeSize, borderRadius: \"50%\", background: \"var(--hjm-color-surface)\", border: \"2px solid var(--hjm-color-surface)\", boxSizing: \"border-box\" }}>{avatarBadge}</span> : null}\n </span>\n <span style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: r.contentGap }}>\n <Text style={{ display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: r.previewLines, overflow: \"hidden\" }}>{preview}</Text>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: r.contentGap }}><Text variant=\"caption\" tone=\"muted\">{metadata}</Text>{unread ? <span data-hjm-unread-dot=\"true\" style={{ width: r.unreadSize, height: r.unreadSize, borderRadius: \"50%\", flexShrink: 0, background: \"var(--hjm-color-content-brand)\" }} /> : null}</span>\n </span>\n {thumbnail ? <span style={{ width: r.thumbnailSize, height: r.thumbnailSize, flexShrink: 0, overflow: \"hidden\", borderRadius: \"var(--hjm-radius-sm)\" }}>{thumbnail}</span> : null}\n </span>;\n}\n\nexport type IconTileProps = Readonly<{\n /**\n * Icon artwork. A function receives the rendered edge (`IconTileArtwork`) so fixed-size artwork such as an image\n * sizes itself to a `size=\"fill\"` icon without the product re-computing the cell clamp.\n */\n icon: ReactNode | ((artwork: IconTileArtwork) => ReactNode); label: string; overlay?: ReactNode; labelLines?: 1 | 2; ghost?: boolean;\n /** `none`: the icon is complete product artwork, so no frame fill or hairline is drawn. */\n frame?: IconTileFrame;\n /** Frame (and ghost outline) corner shape from the product's icon theme. */\n shape?: IconTileShape;\n /** `fill`: the icon spans the grid cell between iconTileRecipe.fillMinSize and fillMaxSize. */\n size?: IconTileSize }>;\n/** Presentation shared by launcher and profile grids; the host owns navigation or drag behavior. */\nexport function IconTile({icon, label, overlay, labelLines = 1, ghost = false, frame = iconTileRecipe.defaults.frame, shape = iconTileRecipe.defaults.shape, size = iconTileRecipe.defaults.size}: IconTileProps) {\n const r = iconTileRecipe;\n const framed = frame === \"surface\";\n // Percent radius follows the rendered size, so a filling icon keeps its shape at every cell width.\n const dimensions = size === \"fill\" ? {width: \"100%\", minWidth: r.fillMinSize, maxWidth: r.fillMaxSize, aspectRatio: \"1\"} : {width: r.iconSize, height: r.iconSize};\n // A render-function icon needs the filling edge as a number. It is read before paint and on every resize; the\n // computed width ignores transforms (a host's press scale) and keeps fractional cell widths.\n const frameRef = useRef<HTMLSpanElement>(null);\n const measureEdge = size === \"fill\" && typeof icon === \"function\";\n const [fillEdge, setFillEdge] = useState<number>(r.fillMinSize);\n useLayoutEffect(() => {\n const element = frameRef.current;\n if (!measureEdge || !element) return;\n setFillEdge(Number.parseFloat(getComputedStyle(element).width) || r.fillMinSize);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(([entry]) => { const width = entry?.borderBoxSize?.[0]?.inlineSize; if (width) setFillEdge(width); });\n observer.observe(element);\n return () => observer.disconnect();\n }, [measureEdge, r.fillMinSize]);\n const edge = size === \"fill\" ? fillEdge : r.iconSize;\n return <span data-hjm-icon-tile=\"true\" data-frame={frame} data-shape={shape} data-size={size} style={{display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: r.gap, minWidth: 0, width: \"100%\", overflow: \"visible\"}}>\n <span ref={frameRef} style={{position: \"relative\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", ...dimensions, boxSizing: \"border-box\", flexShrink: 0, borderRadius: `${Math.round(r.shapes[shape] * 100)}%`, background: framed ? \"var(--hjm-color-surface-alt)\" : undefined, color: \"var(--hjm-color-text)\", boxShadow: ghost || !framed ? undefined : \"0 0 0 1px var(--hjm-color-border)\", outline: ghost ? \"1px dashed var(--hjm-color-text-muted)\" : undefined, opacity: ghost ? r.ghostOpacity : 1, fontSize: 32}}>{typeof icon === \"function\" ? icon({edge}) : icon}{overlay}</span>\n <Text variant=\"caption\" style={{display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: labelLines, width: \"100%\", maxWidth: labelLines === 2 ? r.multilineLabelMaxWidth : r.labelMaxWidth, minHeight: labelLines === 2 ? r.multilineLabelMinHeight : undefined, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"normal\", overflowWrap: \"anywhere\", textAlign: \"center\", fontWeight: 500}}>{label}</Text>\n </span>;\n}\n\nexport type TypingIndicatorProps = Readonly<{\n /** Localized status read by assistive tech (\"Seoyeon is typing\"); the visible row shows only the dots. */\n label: string;\n /** Typer's photo in a group room, sized like ChatMessage avatars (`chatMessageRecipe.avatarSize`). */\n avatar?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Incoming \"is typing\" row for a ChatScreen timeline (2026-10-18 BurnTok DM drew its own). The host shows it only while\n * presence says someone is typing and places it after the last message; HJM owns the bubble, dots and announcement.\n */\nexport function TypingIndicator({ label, avatar, layoutStyle }: TypingIndicatorProps) {\n if (!label.trim()) throw new TypeError(\"TypingIndicator requires a localized label\");\n const theme = useOptionalHjmTheme();\n const r = typingIndicatorRecipe, m = chatMessageRecipe;\n // A polite status: appearing is announced once without interrupting, and the dots stay hidden from assistive tech.\n return <div role=\"status\" className=\"hjm-typing-indicator\" data-reduced-motion={theme?.environment.reducedMotion || undefined}\n style={{ display: \"flex\", alignItems: \"flex-start\", gap: m.avatarGap, marginBlockStart: m.groupGap, paddingInlineStart: avatar ? 0 : m.tailWidth, ...layoutStyle, \"--hjm-typing-dot\": `${r.dotSize}px`, \"--hjm-typing-cycle\": `${r.cycleMs}ms`, \"--hjm-typing-rest\": r.restOpacity } as React.CSSProperties}>\n {avatar ? <span aria-hidden=\"true\" style={{ display: \"flex\", justifyContent: \"center\", flex: `0 0 ${m.avatarSize}px`, inlineSize: m.avatarSize }}>{avatar}</span> : null}\n <span aria-hidden=\"true\" className=\"hjm-typing-indicator__bubble\" style={{ display: \"inline-flex\", alignItems: \"center\", gap: r.dotGap, boxSizing: \"border-box\", minBlockSize: `calc(var(--hjm-type-body-line-height) + ${m.bubblePaddingBlock * 2}px)`, paddingBlock: m.bubblePaddingBlock, paddingInline: m.bubblePaddingInline, borderRadius: m.bubbleRadius, background: \"var(--hjm-color-surface)\" }}>\n {[0, 1, 2].map(index => <span key={index} className=\"hjm-typing-indicator__dot\" style={{ animationDelay: `${index * r.staggerMs}ms` }} />)}\n </span>\n <VisuallyHidden>{label}</VisuallyHidden>\n </div>;\n}\n\nexport type ChatDateSeparatorProps = Readonly<{\n /** Product-formatted date or time (\"Today\", \"Oct 18\", \"3:04 PM\"). */\n label: string;\n /** Machine-readable value for the Web `<time>` element; Native ignores it. */\n dateTime?: string;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Centered date (or time) row between ChatScreen timeline groups (2026-10-18 Utilverse chat drew a caption). Grouping\n * rules stay with the product; the next message keeps its own group gap, so this row adds only the space before it.\n */\nexport function ChatDateSeparator({ label, dateTime, layoutStyle }: ChatDateSeparatorProps) {\n if (!label.trim()) throw new TypeError(\"ChatDateSeparator requires a localized label\");\n const r = chatDateSeparatorRecipe;\n return <div className=\"hjm-chat-date-separator\" style={{ display: \"flex\", justifyContent: \"center\", textAlign: \"center\", paddingBlockStart: r.paddingTop, paddingBlockEnd: r.paddingBottom, ...layoutStyle }}>\n <Text variant={r.textVariant} tone={r.tone}>{dateTime ? <time dateTime={dateTime}>{label}</time> : label}</Text>\n </div>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,qBAAqB,IAAI,kBAAkB,EAAE,oBAAoB,EAA4G,MAAM,yCAAyC,CAAC;AACtP,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uCAAuC,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAwC,MAAM,+CAA+C,CAAC;AACjI,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAuD,MAAM,iCAAiC,CAAC;AACzL,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAmB,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,iHAAiH;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAA4B,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,0BAA0B,EAAoC,yBAAyB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,0BAA0B,EAA4B,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,kBAAkB,EAAgH,MAAM,yCAAyC,CAAC;AACzlB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AA8DrE,qGAAqG;AACrG,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,GAAG,SAAS,EAAE,eAAe,GAAG,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,gBAAgB,GAAG,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAqB;IACjd,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,IAAI;QAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAC,gBAAgB,OAAK,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,MAAM,OAAO,GAAG,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC;IAC9F,MAAM,UAAU,GAAG,eAAe,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;IACtF,gHAAgH;IAChH,yGAAyG;IACzG,MAAM,aAAa,GAAG,MAAM,IAAI,IAAI,IAAI,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC;IACjH,8EAA8E;IAC9E,+EAA+E;IAC/E,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,oBAAoB,IAAI,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC7E,MAAM,aAAa,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACxG,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAClD,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IACvD,eAAe,CAAC,GAAG,EAAE;QACnB,4EAA4E;QAC5E,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;QACvC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClF,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW;YAAE,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,mBAAmB,CAAC;IACnC,0GAA0G;IAC1G,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,2BAA2B,iBAAa,MAAM,YAAE,YAAY,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACnH,MAAM,QAAQ,GAAG,CAAC,KAA0F,EAAE,OAA2B,EAAE,EAAE,CAAC,eAAe,KAAK,SAAS;QACzK,CAAC,CAAC,MAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,mBAAE,IAAI,EAAC,KAAC,OAAO,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,YAAG,KAAK,GAAW,EAAC,UAAU,IAAS;QAClK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,IAAI,EAAC,SAAS,gBAAa,CAAC,gBAAc,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,YAAG,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACjL,OAAO,KAAC,OAAO,uBAAkB,MAAM,IAAI,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAc,MAAM,IAAI,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,wBAAsB,YAAY,uBAAqB,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,EACjR,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,KAAK,aAAa,IAAI,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,aAAa,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,sBAAsB,EAAE,GAAG,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,kBAAkB,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,yBAAyB,EAAE,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,GAAG,WAAW,EAAyB,YAAE,MAAC,iBAAiB,IAAC,IAAI,EAAE,YAAY,aACrjB,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAQ,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,CAAC,eAAe,EAAE,aAGta,wBAAM,OAAO,GAAO,EAAA,cAAK,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,YACjG,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GACpD,EAAA,cAAK,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,YAAG,OAAO,GAAO,IACpD,CAAC,CAAC,CAAC,kBAAQ,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,aACnP,OAAO,EAAC,cAAK,SAAS,EAAC,qBAAqB,YAAE,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAC5H,EAAC,OAAO,IACT,CAAC,CAAC,CAAC,IAAI,CAAC,EAChB,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,oBAAoB,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,EAEnE,cAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,gBAAa,KAAK,EAAE,QAAQ,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,cAAc,EAAE,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,MAAqB,CAAC,CAAC,CAAC,EACjF,aAAa,EAAE,KAAK,CAAC,EAAE;wBACrB,uEAAuE;wBACvE,wEAAwE;wBACxE,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAqB,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,MAAsB,CAAC,WAAW,EAAE,CAAC;4BACjI,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC/B,CAAC;oBACH,CAAC,EACD,SAAS,EAAC,kBAAkB,4BAAyB,gBAAgB,iBAAe,UAAU,sBAAoB,QAAQ,CAAC,eAAe,IAAI,SAAS,eAAa,QAAQ,CAAC,IAAI,IAAI,SAAS,YAC7L,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,mBAAmB,aAIvK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAK,IAAI,EAAC,QAAQ,eAAW,MAAM,gBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAE,6BAAiB,MAAM,YAAE,gBAAgB,GAAO,GAAM,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,CAAC,CAAC,cAAK,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,YAClV,MAAC,KAAK,IAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,aAAC,KAAC,IAAI,IAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,YAAG,KAAK,CAAC,KAAK,GAAQ,EACtF,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YAAE,KAAK,CAAC,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IAAS,GAChF,EACL,WAAW,IACR,GACF,EAEL,MAAM,CAAC,CAAC,CAAC,iBAAQ,SAAS,EAAC,oBAAoB,YAAC,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,KAAK,MAAM,YAAG,MAAM,GAAgC,GAAS,CAAC,CAAC,CAAC,IAAI,IAClJ,GACZ,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,+CAA+C,EAAE,aAAa,EAAE,oCAAoC,EAAE,EAAE,CAAC;AAC3I,CAAC;AAID,MAAM,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAuB;IACjF,8EAA8E;IAC9E,OAAO,KAAC,YAAY,OAAK,KAAK,YAAE,MAAC,KAAK,IAAC,GAAG,EAAC,IAAI,aAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAC/E,KAAC,OAAO,IAAC,SAAS,EAAC,sBAAsB,EAAkB,KAAK,EAAE,KAAC,IAAI,IAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,YAAE,OAAO,CAAC,KAAK,GAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,YAAG,OAAO,CAAC,QAAQ,IAAnJ,OAAO,CAAC,EAAE,CAAoJ,CAAC,IAAS,GAAe,CAAC;AAC3O,CAAC;AAMD,MAAM,UAAU,uBAAuB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAgC;IAC3G,OAAO,KAAC,YAAY,OAAK,KAAK,EAAE,MAAM,EAAE,MAAC,KAAK,IAAC,GAAG,EAAC,IAAI,aAAE,MAAM,EAAE,OAAO,IAAS,YAAG,QAAQ,GAAgB,CAAC;AAC/G,CAAC;AASD,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyB;IAC/H,OAAO,KAAC,OAAO,OAAK,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,uBAAuB,EAAE,SAAS,CAAC,iBAAe,CAAC,IAAI,IAAI,SAAS,EAAE,KAAK,EAAE,KAAC,IAAI,IAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,YAAG,KAAK,GAAQ,EACjO,WAAW,EAAE,MAAC,KAAK,IAAC,GAAG,EAAC,KAAK,aAAE,WAAW,EAAC,MAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,aAAE,WAAW,cAAK,SAAS,IAAQ,IAAQ,GAAI,CAAC;AACnI,CAAC;AASD,2GAA2G;AAC3G,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,KAAK,EAAmB;IAC1G,2FAA2F;IAC3F,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;IAClG,4GAA4G;IAC5G,+GAA+G;IAC/G,OAAO,KAAC,YAAY,OAAK,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,yBAAyB,aAClN,YAAY,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,uBAAuB,YAAC,KAAC,UAAU,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,OAAO,EAAE,YAAY,CAAC,OAAO,YAAG,YAAY,CAAC,IAAI,GAAc,GAAM,CAAC,CAAC,CAAC,IAAI,EACtN,QAAQ,IAAO,CAAC,CAAC,CAAC,IAAI,GAAI,CAAC;AAChC,CAAC;AA8BD,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,GAAG,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,EAAE,gBAAgB,EAAE,WAAW,GAAG,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAwB;IAC7d,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,kBAAkB;QAAE,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAC7G,IAAI,cAAc,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IAClH,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAU,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzL,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC;IACnC,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;IACzG,sGAAsG;IACtG,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC;IACjF,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,YAAG,gBAAgB,CAAC,IAAI,GAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IACxN,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAE,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAG,QAAQ,GAAc,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAG,SAAS,GAAU,CAAC;IAC7Z,0HAA0H;IAC1H,qGAAqG;IACrG,MAAM,YAAY,GAAG,8BAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,mCAAmC,aAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAmB,SAAS,EAAC,kCAAkC,aAAC,cAAK,SAAS,EAAC,+BAA+B,YAAE,IAAI,CAAC,OAAO,GAAO,EAAA,eAAM,SAAS,EAAC,8BAA8B,YAAC,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;wCAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAE,eAAM,SAAS,EAAC,oCAAoC,iBAAa,MAAM,uBAAS,GAAa,GAAO,KAAhc,IAAI,CAAC,EAAE,CAA+b,CAAC,EAAE,MAAM,IAAO,CAAC,CAAC,CAAC,IAAI,EAC9lB,eAAK,SAAS,EAAC,2BAA2B,aAAE,OAAO,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,+BAA+B,YAAE,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,EAAC,KAAC,QAAQ,IAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,mBAAmB,CAAC,gBAAgB,gBAAc,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,kBAAgB,OAAO,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,eAAa,OAAO,IAAI,SAAS,EAChe,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,sBAAsB,CAAC,EAAC,GAAG,EAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAC,EAAE,UAAU,CAAC,EAAE,CAAC;4BAAC,KAAK,CAAC,cAAc,EAAE,CAAC;4BAAC,IAAI,OAAO;gCAAE,MAAM,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC,CAAC,CAAC,EAC/O,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM;4BAAE,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,CAAC,gBAAgB,KACvL,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAM,SAAS,EAAC,gCAAgC,EAAC,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAkH,eAAM,SAAS,EAAC,+BAA+B,YAAE,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAQ,GAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EACjX,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IACnB,IAAG,CAAC;IACZ,MAAM,QAAQ,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,6BAA6B,EAAC,IAAI,EAAC,OAAO,gBAAa,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,GAAG,yBAAyB,CAAC,QAAQ,IAAI,EAAE,mBAAmB,EAAE,GAAG,yBAAyB,CAAC,SAAS,IAAI,EAAyB,YACrS,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAsB,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,kCAAkC,gBAAa,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAG,IAAI,CAAC,KAAK,IAA3K,IAAI,CAAC,EAAE,CAA8K,CAAC,GAC/N,CAAC,CAAC,CAAC,IAAI,CAAC;IACd,oHAAoH;IACpH,OAAO,eAAK,SAAS,EAAC,sBAAsB,4BAAyB,gBAAgB,EAAE,KAAK,EAAE,EAAC,4BAA4B,EAAE,GAAG,mBAAmB,CAAC,OAAO,IAAI,EAAE,uBAAuB,EAAE,GAAG,mBAAmB,CAAC,cAAc,IAAI,EAAE,8BAA8B,EAAE,GAAG,mBAAmB,CAAC,oBAAoB,IAAI,EAAE,GAAG,WAAW,EAAwB,aAAG,OAAO,EAAE,QAAQ,EAA8L,eAAK,SAAS,EAAC,kCAAkC,mBAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,aAAG,OAAO,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,6BAA6B,aAAC,eAAK,SAAS,EAAC,kCAAkC,aAAC,KAAC,IAAI,IAAC,QAAQ,EAAC,QAAQ,YAAE,OAAO,CAAC,MAAM,GAAQ,EAAA,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,qCAAqC,YAAE,OAAO,CAAC,OAAO,GAAQ,IAAM,EAAA,KAAC,UAAU,IAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,YAAE,KAAC,IAAI,yBAAS,GAAa,IAAM,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,IAAO,EAAC,cAAc,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,YAAE,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,YAAE,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAQ,GAAW,CAAC,CAAC,CAAC,IAAI,IAAO,CAAC;AACn5C,CAAC;AAgBD,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,GAAG,QAAQ,EAAE,UAAU,GAAG,IAAI,EAAE,aAAa,GAAG,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,GAAC,KAAK,EAAE,WAAW,EAAoB;IAC1T,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;IAC9D,2FAA2F;IAC3F,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,8BAAE,KAAC,IAAI,IAAC,QAAQ,EAAC,QAAQ,YAAE,UAAU,CAAC,KAAK,GAAQ,EAAA,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,iCAAiC,YAAE,UAAU,CAAC,OAAO,GAAQ,IAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACpL,gHAAgH;IAChH,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC;IACnE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,KAAC,cAAc,IAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,YAAY,GAAI;QACjM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,yBAAyB,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,UAAU,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAyB,YAC7P,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAsB,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,8BAA8B,gBAAa,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,YAAG,IAAI,CAAC,OAAO,IAA1I,IAAI,CAAC,EAAE,CAA6I,CAAC,CAAC,CAAC,cAAmB,IAAI,EAAC,KAAK,gBAAa,IAAI,CAAC,KAAK,EAAE,SAAS,EAAC,8BAA8B,EAAC,KAAK,EAAE,KAAK,YAAG,IAAI,CAAC,OAAO,IAAhH,IAAI,CAAC,EAAE,CAAgH,CAAC,CAAC,CAAC,CAAC,GAC7Z,CAAC,CAAC,CAAC,IAAI,CAAC;IACd,oFAAoF;IACpF,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;IACpL,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iDAAiD,gBAAa,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,YAAG,KAAK,GAAU,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrQ,MAAM,UAAU,GAAG,qBAAqB,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC;IACpE,+FAA+F;IAC/F,MAAM,KAAK,GAAG,MAAM,CAA8C,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,CAAC;IACnC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,aAAa,GAAG,SAAS,IAAI,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAC,mBAAmB,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,GAAI,CAAC,CAAC,CAAC,KAAC,qBAAqB,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjV,OAAO,mBAAS,QAAQ,EAAE,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,uBACzD,WAAW,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS,sBAAoB,WAAW,EAAE,KAAK,EACjH,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC,CAAC,CAAC,EACzO,aAAa,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAK,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,yBAAyB,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAC,CAAC,EAAC,KAAK,CAAC,OAAO,EAAC,CAAC,EAAC,KAAK,CAAC,OAAO,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EACxR,aAAa,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,OAAO,CAAC,MAAM,EAAE,GAAC,KAAK,CAAC,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAC,EAAE,GAAC,KAAK,CAAC,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAA,MAAM,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC,CAAC,IAAI,UAAU;YAAE,SAAS,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAC,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpc,WAAW,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,CAAC,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAChc,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,aAAa;YAC1G,0GAA0G;YAC1G,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,gBAAc,MAAM,aAC5P,UAAU,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,YAAE,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,YAAE,SAAS,GAAQ,GAAO,CAAC,CAAC,CAAC,IAAI,EAC7U,eAAK,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,MAAM,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oDAAoD,EAAE,yBAAyB,EAAE,mBAAmB,CAAC,eAAe,EAAE,wBAAwB,EAAE,GAAG,iBAAiB,CAAC,UAAU,IAAI,EAAyB,oBAAkB,SAAS,eAAa,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,SAAS,aAE1b,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,0BAA0B,iBAAc,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,YAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,EACzJ,eAAK,SAAS,EAAC,2BAA2B,aAAE,MAAM,IAAI,OAAO,CAAC,UAAU,IAAI,SAAS,KAAK,UAAU,CAAA,CAAC,CAAA,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,YAAE,MAAM,GAAQ,CAAA,CAAC,CAAA,IAAI,EAE5J,eAAK,SAAS,EAAC,wBAAwB,aACtC,YAAY,CAAC,CAAC,CAAC,MAAC,gBAAgB,OAAK,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,IAAI,UAAU,KAAK,SAAS,KAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAM,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAG,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAoB,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,0BAA0B,qBAAkB,SAAS,IAAI,SAAS,aAAG,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAO,EACjd,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC,IAAE,aAAa,IAAE,OAAO,IAAE,aAAa,CAAA,CAAC,CAAA,eAAK,SAAS,EAAC,wBAAwB,aAAE,aAAa,EAAE,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC,IAAE,aAAa,CAAA,CAAC,CAAA,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,CAAA,CAAC,CAAA,IAAI,EAAE,OAAO,IAAO,CAAA,CAAC,CAAA,IAAI,IACrT,IACF,IACA,IACE,CAAC;AACb,CAAC;AAoBD,MAAM,UAAU,iBAAiB,CAAC,EAAC,KAAK,EAAE,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAyB;IACtN,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,MAAC,KAAK,IAAC,GAAG,EAAC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,WAAW,EAAC,CAAC,aACxE,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,MAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,aAChI,OAAO,EAAC,MAAC,KAAK,IAAC,GAAG,EAAC,KAAK,EAAC,WAAW,EAAE,EAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,aAC3D,MAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,aAAG,KAAK,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,KAAK,EAAC,QAAQ,EAAC,aAAa,EAAE,YAAY,YAAG,KAAK,GAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAS,EACnL,WAAW,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YAAE,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IACvD,EAAC,OAAO,IACV,CAAC,CAAC,CAAC,IAAI,EACd,MAAM,EACN,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAC,KAAK,IAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAC,WAAW,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,aACxG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAK,IAAI,EAAC,QAAQ,eAAW,MAAM,gBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAE,6BAAiB,MAAM,YAAE,gBAAgB,GAAO,GAAM,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,CAAC,CAAC,eAAK,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAA+F,KAAC,IAAI,IAAC,EAAE,EAAC,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,YAAG,KAAK,CAAC,KAAK,GAAQ,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,OAAO,YAAE,KAAK,CAAC,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IAAO,EAC1mB,WAAW,IACN,EACP,MAAM,IACD,CAAC;AACX,CAAC;AAYD,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAwB;IACzH,MAAM,CAAC,GAAG,kBAAkB,CAAC;IAC7B,OAAO,+BAAkB,MAAM,+BAA2B,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,aAAa,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,aACrO,gBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,aAC7F,eAAM,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAG,MAAM,GAAQ,EACxH,WAAW,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,oCAAoC,EAAE,SAAS,EAAE,YAAY,EAAE,YAAG,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC3V,EACP,gBAAM,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,aAChG,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAG,OAAO,GAAQ,EAC3I,gBAAM,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,aAAE,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,YAAE,QAAQ,GAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,sCAA0B,MAAM,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,gCAAgC,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,IAAQ,IAChU,EACN,SAAS,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,sBAAsB,EAAE,YAAG,SAAS,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC5K,CAAC;AACV,CAAC;AAcD,oGAAoG;AACpG,MAAM,UAAU,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAgB;IAC9M,MAAM,CAAC,GAAG,cAAc,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC;IACnC,mGAAmG;IACnG,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC;IACnK,8GAA8G;IAC9G,6FAA6F;IAC7F,MAAM,QAAQ,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC;IAClE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,WAAW,CAAC,CAAC;IAChE,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO;YAAE,OAAO;QACrC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;QACjF,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QAClD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,MAAM,KAAK,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,KAAK;YAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1I,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrD,OAAO,sCAAyB,MAAM,gBAAa,KAAK,gBAAc,KAAK,eAAa,IAAI,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAC,aAChO,gBAAM,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAC,aAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,IAAQ,EAC/kB,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAC,YAAG,KAAK,GAAQ,IAC7Z,CAAC;AACV,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAwB;IAClF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;IACpC,MAAM,CAAC,GAAG,qBAAqB,EAAE,CAAC,GAAG,iBAAiB,CAAC;IACvD,mHAAmH;IACnH,OAAO,eAAK,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,sBAAsB,yBAAsB,KAAK,EAAE,WAAW,CAAC,aAAa,IAAI,SAAS,EAC3H,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,WAAW,EAAyB,aAC1S,MAAM,CAAC,CAAC,CAAC,8BAAkB,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,YAAG,MAAM,GAAQ,CAAC,CAAC,CAAC,IAAI,EACxK,8BAAkB,MAAM,EAAC,SAAS,EAAC,8BAA8B,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,2CAA2C,CAAC,CAAC,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,kBAAkB,EAAE,aAAa,EAAE,CAAC,CAAC,mBAAmB,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,0BAA0B,EAAE,YACtY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAkB,SAAS,EAAC,2BAA2B,EAAC,KAAK,EAAE,EAAE,cAAc,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,IAAlG,KAAK,CAAiG,CAAC,GACrI,EACP,KAAC,cAAc,cAAE,KAAK,GAAkB,IACpC,CAAC;AACT,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAA0B;IACxF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACvF,MAAM,CAAC,GAAG,uBAAuB,CAAC;IAClC,OAAO,cAAK,SAAS,EAAC,yBAAyB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,WAAW,EAAE,YAC1M,KAAC,IAAI,IAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,QAAQ,CAAC,CAAC,CAAC,eAAM,QAAQ,EAAE,QAAQ,YAAG,KAAK,GAAQ,CAAC,CAAC,CAAC,KAAK,GAAQ,GAC5G,CAAC;AACT,CAAC","sourcesContent":["import { iconTileRecipe, notificationRowRecipe as notificationRecipe, initialFocusDefaults, type ScreenInitialFocus, type IconTileArtwork, type IconTileFrame, type IconTileShape, type IconTileSize } from \"@hjmds/design-contracts/screen-patterns\";\nimport { InitialFocusScope } from \"./internal/initial-focus.js\";\nimport { iconButtonRecipe, listRowRecipe } from \"@hjmds/design-contracts/recipes\";\nimport { resolveComposerLimit, type ComposerLengthFeedback } from \"@hjmds/design-contracts/communication\";\nimport { Progress } from \"./feedback.js\";\nimport { resolveDesignProfileScreen, type DesignProfileScreenPresentation } from \"@hjmds/design-contracts/design-profile-layout\";\nimport { MessageReactions, ReactionSummaryButton, ReactionSummaryText, omitReactionSummary, type MessageMenuAction, type MessageReactionsHandle } from \"./internal/message-reactions.js\";\nimport { MediaAlbumView, useMediaAlbumIndex, type MediaAlbum } from \"./internal/media-album.js\";\nimport { validateMediaSetChoice } from \"@hjmds/design-contracts/screen-patterns\";\nexport type { MediaAlbum, MediaAlbumPageStatusProps } from \"./internal/media-album.js\";\n// Loading/failed page rendered inside `mediaAlbum.renderPage` (2026-10-18); comment rows use the same component.\nexport { MediaAlbumPageStatus } from \"./internal/media-album.js\";\nimport type { ReactionPickerProps } from \"./reaction-picker.js\";\nimport { Button, IconButton } from \"./actions.js\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { TextArea } from \"./forms.js\";\nimport { useId, useLayoutEffect, useRef, useState, type Ref, type ReactNode } from \"react\";\nimport { isReplySwipe, timestampRevealOffset, shouldSubmitMessageKey, canSubmitMessage, validateMessageAttachments, type MessageAttachmentDescriptor, resolveScreenContentState, screenPatternRecipe, chatMessageRecipe, composerQuickInsertRecipe, resolveChatMessageGroupDisplay, resolveChatMediaColumns, resolveChatReactionSummary, type ChatReactionSummary, typingIndicatorRecipe, chatDateSeparatorRecipe, screenHeaderRecipe, validateScreenExit, type ChatMessageDescriptor, type MessageComposerDescriptor, type ScreenContentState, type ScreenContentInset } from \"@hjmds/design-contracts/screen-patterns\";\nimport { Heading } from \"./heading.js\";\nimport { Spinner } from \"./internal/spinner.js\";\nimport { ScreenExitButton, type ScreenExit } from \"./internal/screen-exit.js\";\nimport { ScreenFooterContext } from \"./internal/screen-footer.js\";\nimport { Section, Stack, Text, VisuallyHidden } from \"./layout.js\";\nimport { ListRow, type ListRowProps } from \"./display.js\";\nimport { classNames, useDesignProfileDefaults } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type ScreenLayoutProps = Readonly<{\n title: string;\n /** The shared header owns badge placement; the product supplies its meaning and label. */\n titleBadge?: ReactNode;\n /**\n * Identity mark or artwork before the title (team logo, tool artwork). Decorative: the title stays the heading and\n * the accessible name. With `titleVisibility=\"hidden\"` the mark stands alone in the title slot as the heading,\n * named by `title` (2026-10-18: yajalal team detail and Utilverse tool headers rebuilt the header to get this).\n */\n titleLeading?: ReactNode;\n /** Hide duplicate route names; retain titles that identify a subject or a task. */\n titleVisibility?: \"visible\" | \"hidden\";\n /** Centered by default (2026-10-17 user rule); `start` remains available. Extra actions sit at the trailing edge. */\n headerAlignment?: \"start\" | \"center\";\n /** Preserve host navigation while the shared shell owns content and state. */\n header?: ReactNode;\n /**\n * `none`: host owns every inset. `body-edge`: only the body drops its inline padding so list rows own their inset.\n * `body-bleed`: the body drops every padding (header, notice and footer keep theirs) for an edge-to-edge map or canvas.\n */\n contentInset?: ScreenContentInset;\n /** Center a product prompt in the available body without inventing a query state. */\n contentAlignment?: \"start\" | \"center\";\n /** Keep a product wallpaper supplied by the outer host visible. */\n surface?: \"default\" | \"transparent\";\n /** Explicit layout wins over the nearest design profile. */\n presentation?: DesignProfileScreenPresentation;\n /** @deprecated Screen headers no longer show supporting copy (2026-10-18). Move required guidance into body content. Retained until the next major API cleanup. */\n description?: string;\n /**\n * Leaving this screen (back, close, settings exit): icon-only button fixed at the header's leading edge.\n * The leading edge has no free slot (2026-10-17): every product use was a hand-made back button.\n */\n exit?: ScreenExit;\n actions?: ReactNode;\n notice?: ReactNode;\n footer?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /** Brand visual for `state.kind === \"loading\"`; the shared state group keeps copy, centering and announcement (as CompositionLayout). */\n loadingIndicator?: ReactNode;\n children?: ReactNode;\n /** A virtualized list must own scrolling; never nest it inside a second scroll container. */\n scroll?: \"screen\" | \"content\";\n as?: \"main\" | \"section\";\n className?: string;\n /**\n * Canonical layout-only placement on the screen root (for example `flex` or `width` in a split\n * view), matching Native ScreenLayout. Every screen built on ScreenLayout forwards it.\n */\n layoutStyle?: HjmCompositionStyleProp;\n /**\n * Focus the marked, else first enabled input once on page entry (default `first-input`). Never steals an existing\n * input's focus or focuses below an overlay. A pending entry can wait for data; after user interaction it ends.\n * Bottom sheets disable automatic focus for this screen and all nested inputs, regardless of this prop.\n */\n initialFocus?: ScreenInitialFocus;\n}>;\n\n/** Shared screen shell. Routing, data, permission checks and mutation state remain product-owned. */\nexport function ScreenLayout({ title, titleBadge, titleLeading, titleVisibility = \"visible\", headerAlignment = \"center\", header, contentInset = \"default\", contentAlignment = \"start\", surface = \"default\", presentation: suppliedPresentation, exit, actions, notice, footer, state = { kind: \"ready\" }, stateAction, loadingIndicator, children, scroll = \"screen\", as: Element = \"main\", className, layoutStyle, initialFocus = initialFocusDefaults.screen }: ScreenLayoutProps) {\n const id = useId();\n if (exit) validateScreenExit(exit, false);\n const leading = exit ? <ScreenExitButton {...exit} /> : null;\n const hasMark = titleLeading !== undefined && titleLeading !== null && titleLeading !== false;\n const showHeader = titleVisibility === \"visible\" || hasMark || !!leading || !!actions;\n // Same header band as Native (screenHeaderRecipe): a fixed 52 band (48 icon-only) so the title sits at the same\n // height with or without exit/actions buttons (2026-10-17: Web grew 58→76 when a 44 button was present).\n const compactHeader = header == null && headerAlignment === \"center\" && titleVisibility === \"hidden\" && !hasMark;\n // Screens historically work with the stylesheet alone. Optional context keeps\n // that path while inheriting profiles from an enclosing Provider when present.\n const designProfile = useDesignProfileDefaults();\n const presentation = suppliedPresentation ?? designProfile?.screens.overview;\n const profileLayout = presentation === undefined ? undefined : resolveDesignProfileScreen(presentation);\n const resolved = resolveScreenContentState(state);\n // Replacement text owns scrolling even when the ready state delegates it to\n // a virtual list. Use the rendered mode for keyboard access as well as CSS.\n const bodyScroll = resolved.replacesContent ? \"screen\" : scroll;\n const bodyRef = useRef<HTMLDivElement>(null);\n const lastBodyFocus = useRef<HTMLElement | null>(null);\n useLayoutEffect(() => {\n // Replacing a focused retry/input removes its DOM node. Keep keyboard users\n // in the same content region without stealing focus moved to another control.\n const previous = lastBodyFocus.current;\n if (previous && !previous.isConnected && document.activeElement === document.body) {\n bodyRef.current?.focus({ preventScroll: true });\n }\n if (previous && !previous.isConnected) lastBodyFocus.current = null;\n });\n const recipe = screenPatternRecipe;\n // The mark is decorative beside a visible title; standing alone it becomes the heading, named by `title`.\n const mark = hasMark ? <span className=\"hjm-screen__title-leading\" aria-hidden=\"true\">{titleLeading}</span> : null;\n const titleRow = (level: typeof screenHeaderRecipe.titleLevel | typeof screenHeaderRecipe.centeredTitleLevel, justify: \"center\" | \"start\") => titleVisibility === \"visible\"\n ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" justify={justify} wrap>{mark}<Heading level={level} semanticLevel={1} id={id}>{title}</Heading>{titleBadge}</Stack>\n : mark ? <div role=\"heading\" aria-level={1} aria-label={title} style={{ display: \"flex\", justifyContent: justify === \"center\" ? \"center\" : \"flex-start\" }}>{mark}</div> : null;\n return <Element aria-labelledby={header || titleVisibility === \"hidden\" ? undefined : id} aria-label={header || titleVisibility === \"hidden\" ? title : undefined} data-content-inset={contentInset} data-presentation={presentation} className={classNames(\"hjm-screen\", className)}\n style={{ backgroundColor: surface === \"transparent\" || designProfile?.material.canvas ? \"transparent\" : undefined, \"--hjm-screen-width\": `${profileLayout?.maxWidth ?? recipe.maxWidth}px`, \"--hjm-screen-padding\": `${contentInset === \"none\" ? 0 : recipe.padding}px`, \"--hjm-screen-gap\": `${profileLayout?.gap ?? recipe.sectionGap}px`, \"--hjm-screen-item-gap\": `${recipe.itemGap}px`, \"--hjm-screen-state-gap\": `${recipe.stateGap}px`, \"--hjm-screen-header-min\": `${recipe.headerMinWidth}px`, ...layoutStyle } as React.CSSProperties}><InitialFocusScope mode={initialFocus}>\n {header ?? (showHeader ? headerAlignment === \"center\" ? <header className=\"hjm-screen__header\" style={{ display: \"grid\", gridTemplateColumns: \"1fr minmax(0, auto) 1fr\", alignItems: \"center\", boxSizing: \"border-box\", minBlockSize: compactHeader ? screenHeaderRecipe.compactMinHeight : screenHeaderRecipe.minHeight, paddingBlock: compactHeader ? screenHeaderRecipe.compactPaddingVertical : screenHeaderRecipe.paddingVertical }}>\n {/* Equal side columns sized by their controls and a title-size (18) heading, matching Native's measured\n centered header (2026-10-17: the fixed 1:2:1 split with a level3 heading wrapped short titles). */}\n <div>{leading}</div><div className=\"hjm-screen__heading\" style={{ textAlign: \"center\", minWidth: 0 }}>\n {titleRow(screenHeaderRecipe.centeredTitleLevel, \"center\")}\n </div><div style={{ justifySelf: \"end\" }}>{actions}</div>\n </header> : <header className=\"hjm-screen__header\" style={profileLayout ? { flexDirection: profileLayout.headerAxis, alignItems: profileLayout.centered ? \"center\" : undefined, textAlign: profileLayout.centered ? \"center\" : undefined } : undefined}>\n {leading}<div className=\"hjm-screen__heading\">{titleRow(screenHeaderRecipe.titleLevel, profileLayout?.centered ? \"center\" : \"start\")}\n </div>{actions}\n </header> : null)}\n {notice ? <div className=\"hjm-screen__notice\">{notice}</div> : null}\n {/* Scrollable read-only screens need a named keyboard entry point, including hidden/custom headers. */}\n <div ref={bodyRef} role=\"region\" aria-label={title} tabIndex={bodyScroll === \"content\" ? -1 : 0}\n onFocusCapture={event => { lastBodyFocus.current = event.target as HTMLElement; }}\n onBlurCapture={event => {\n // A connected input blurred to the document intentionally relinquishes\n // focus too; only removal of the currently focused node needs recovery.\n if (event.relatedTarget ? !event.currentTarget.contains(event.relatedTarget as Node) : (event.target as HTMLElement).isConnected) {\n lastBodyFocus.current = null;\n }\n }}\n className=\"hjm-screen__body\" data-content-alignment={contentAlignment} data-scroll={bodyScroll} data-replacement={resolved.replacesContent || undefined} aria-busy={resolved.busy || undefined}>\n {state.kind === \"ready\" ? (contentAlignment === \"center\" ? <div className=\"hjm-screen__centered-content\">{children}</div> : children) : <div className=\"hjm-screen__state\">\n {/* Loading copy is an accessible name; visible copy beside the spinner\n contradicts the shared spinner-only loading contract. */}\n {/* The live role wraps only the copy: an alert around the retry action announced the button too (2026-10-17). */}\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"}>\n <Stack gap=\"sm\" align=\"center\"><Text variant={resolved.titleVariant}>{state.title}</Text>\n {state.description ? <Text tone=\"muted\">{state.description}</Text> : null}</Stack>\n </div>}\n {stateAction}\n </div>}\n </div>\n {/* Same rule as Native: with contentInset=\"none\" the host owns the insets, so BottomCTA keeps its own bar. */}\n {footer ? <footer className=\"hjm-screen__footer\"><ScreenFooterContext.Provider value={contentInset !== \"none\"}>{footer}</ScreenFooterContext.Provider></footer> : null}\n </InitialFocusScope>\n </Element>;\n}\n\n/**\n * Style for a product scroller that owns the body with `scroll=\"content\"`: it reaches across the body gutter\n * (`--hjm-screen-body-inline`) and pads it back, so items stay on the gutter while the clip moves to the screen edges and\n * a bleeding CollectionRail inside scrolls edge to edge (same name and shape as Native; spint home 2026-10-17).\n * Outside a screen body the variable is unset and the room is 0; CSS resolves the distance, so no context is read.\n */\nexport function useScreenBodyScrollRoom(): Readonly<{ style: React.CSSProperties }> {\n return { style: { marginInline: \"calc(-1 * var(--hjm-screen-body-inline, 0px))\", paddingInline: \"var(--hjm-screen-body-inline, 0px)\" } };\n}\n\nexport type SettingsScreenSection = Readonly<{ id: string; title: string; description?: string; children: ReactNode }>;\nexport type SettingsScreenProps = Omit<ScreenLayoutProps, \"children\" | \"scroll\"> & Readonly<{ profile?: ReactNode; sections: readonly SettingsScreenSection[] }>;\nexport function SettingsScreen({ profile, sections, ...props }: SettingsScreenProps) {\n // Keep semantic section headings while using the smaller settings label role.\n return <ScreenLayout {...props}><Stack gap=\"md\">{profile}{sections.map(section =>\n <Section className=\"hjm-settings-section\" key={section.id} title={<Text variant=\"label\" emphasis=\"strong\" tone=\"muted\">{section.title}</Text>} description={section.description}>{section.children}</Section>)}</Stack></ScreenLayout>;\n}\n\nexport type NotificationInboxScreenProps = Omit<ScreenLayoutProps, \"children\"> & Readonly<{\n filters?: ReactNode;\n children: ReactNode;\n}>;\nexport function NotificationInboxScreen({ filters, children, notice, ...props }: NotificationInboxScreenProps) {\n return <ScreenLayout {...props} notice={<Stack gap=\"sm\">{notice}{filters}</Stack>}>{children}</ScreenLayout>;\n}\n\n/** Read/unread is announced in localized copy as well as emphasis; rendering never marks an item read. */\nexport type NotificationItemProps = Omit<ListRowProps, \"description\" | \"selected\"> & Readonly<{\n read: boolean;\n statusLabel: string;\n timestamp: string;\n description?: ReactNode;\n}>;\nexport function NotificationItem({ read, statusLabel, timestamp, description, title, className, ...props }: NotificationItemProps) {\n return <ListRow {...props} className={classNames(\"hjm-notification-item\", className)} data-unread={!read || undefined} title={<Text variant={listRowRecipe.title.textVariant} emphasis={read ? \"regular\" : \"strong\"}>{title}</Text>}\n description={<Stack gap=\"xxs\">{description}<Text variant=\"caption\" tone=\"muted\">{statusLabel} · {timestamp}</Text></Stack>} />;\n}\n\nexport type ChatScreenProps = Omit<ScreenLayoutProps, \"footer\" | \"titleLeading\"> & Readonly<{\n composer: ReactNode;\n /** Shown while the reader is away from the latest message; the host owns scroll position and visibility. */\n jumpToLatest?: Readonly<{ label: string; icon: ReactNode; onPress(): void }>;\n /** Peer or room photo beside the centered title; group rooms add the member count through `titleBadge`. */\n avatar?: ReactNode;\n}>;\n/** Caller supplies a virtualized timeline and keyboard-aware composer; no implicit auto-scroll or send. */\nexport function ChatScreen({ composer, jumpToLatest, avatar, scroll = \"content\", ...props }: ChatScreenProps) {\n // An empty conversation must still allow its first message; unavailable states hide input.\n const showComposer = !props.state || props.state.kind === \"ready\" || props.state.kind === \"empty\";\n // Anchor the jump control to the composer edge so it floats over the timeline without measuring the footer.\n // Conversations center the peer between back and tools and use the measured 10px timeline gutter (2026-10-16).\n return <ScreenLayout {...props} className={classNames(\"hjm-chat-screen\", props.className) ?? \"hjm-chat-screen\"} titleLeading={avatar} scroll={scroll} footer={showComposer ? <div className=\"hjm-chat-screen__footer\">\n {jumpToLatest ? <div className=\"hjm-chat-screen__jump\"><IconButton label={jumpToLatest.label} size=\"small\" shape=\"circle\" tone=\"secondary\" onClick={jumpToLatest.onPress}>{jumpToLatest.icon}</IconButton></div> : null}\n {composer}</div> : null} />;\n}\n\nexport type MessageComposerProps = Omit<MessageComposerDescriptor, \"attachmentCount\"> & Readonly<{\n maxLength?: number;\n /** Opt-in count/ring appears only near the actual maxLength; never trims drafts. */\n lengthFeedback?: ComposerLengthFeedback;\n sendDisabled?: boolean;\n additionalContent?: boolean;\n leadingAction?: ReactNode;\n inputRef?: Ref<HTMLTextAreaElement>;\n /** Release typing presence when the host input loses focus. */\n onBlur?: () => void;\n onValueChange(value: string): void;\n onSend(value: string): void;\n /** Emoji row above the input; a tap appends the emoji to the draft (measured comment sheet, 2026-10-16). */\n /** Outside the field, beside the input row (e.g. the writer's avatar); the quick-insert row stays full width. */\n leading?: ReactNode;\n quickInserts?: Readonly<{ label: string; items: readonly Readonly<{ id: string; emoji: string; label: string }>[] }>;\n context?: ReactNode;\n replyTo?: Readonly<{ author: string; excerpt: string; cancelLabel: string; onCancel(): void }>;\n /** Icon mode puts the send/attachment action inside the growing field. */\n sendIcon?: ReactNode;\n /** Reference comment layout: a filled circular send action inside the field. */\n sendPresentation?: \"inline\" | \"circle\";\n attachmentAction?: Readonly<{ label: string; icon: ReactNode; onPress(): void; disabled?: boolean }>;\n attachments?: readonly (MessageAttachmentDescriptor & Readonly<{ preview: ReactNode }>)[];\n onRemoveAttachment?: (id: string) => void;\n /** Canonical layout-only placement on the composer root. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder = label, description, error, invalid = false, submitMode = \"newline\", onBlur, disabled = false, pending = false, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled = false, additionalContent = false, leadingAction, inputRef, context, replyTo, sendIcon, sendPresentation = \"inline\", attachmentAction, attachments = [], onRemoveAttachment, layoutStyle }: MessageComposerProps) {\n validateMessageAttachments(attachments);\n if (attachments.length && !onRemoveAttachment) throw new TypeError(\"Attachments require a removal callback\");\n if (lengthFeedback && maxLength === undefined) throw new TypeError(\"Composer length feedback requires maxLength\");\n const limit = !lengthFeedback ? null : resolveComposerLimit(value, maxLength!, lengthFeedback.threshold);\n const canSend = !sendDisabled && !limit?.exceeded && canSubmitMessage({ value, label, sendLabel, disabled, pending, attachmentCount: attachments.length + (additionalContent ? 1 : 0) });\n const locked = disabled || pending;\n const sendDiameter = iconButtonRecipe.sizes[sendPresentation === \"circle\" ? \"small\" : \"medium\"].diameter;\n // A bounded corner radius keeps multiline/large-text content inside the field instead of a tall pill.\n const hasContent = !!value.trim() || attachments.length > 0 || additionalContent;\n const attach = attachmentAction ? <IconButton label={attachmentAction.label} tone=\"ghost\" disabled={locked || attachmentAction.disabled} onClick={attachmentAction.onPress}>{attachmentAction.icon}</IconButton> : null;\n const send = sendIcon ? <IconButton label={sendLabel} size={sendPresentation === \"circle\" ? \"small\" : \"medium\"} shape=\"circle\" tone={sendPresentation === \"circle\" ? \"primary\" : \"ghost\"} disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendIcon}</IconButton> : <Button disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendLabel}</Button>;\n // Readonly pending input preserves the keyboard/focus for receipt failure recovery; disabling it would blur desktop chat.\n // Enter is opt-in and IME-safe; receipt-driven clearing and failed-send recovery belong to the host.\n const composerBody = <>{attachments.length ? <div className=\"hjm-message-composer__attachments\">{attachments.map(item => <div key={item.id} className=\"hjm-message-composer__attachment\"><div className=\"hjm-message-composer__preview\">{item.preview}</div><span className=\"hjm-message-composer__remove\"><IconButton label={item.removeLabel} tone=\"ghost\" size=\"small\" disabled={locked || item.disabled} onClick={() => { if (!locked && !item.disabled) onRemoveAttachment?.(item.id); }}><span className=\"hjm-message-composer__remove-glyph\" aria-hidden=\"true\">×</span></IconButton></span></div>)}{attach}</div> : null}\n <div className=\"hjm-message-composer__row\">{leading ? <span className=\"hjm-message-composer__leading\">{leading}</span> : null}<TextArea ref={inputRef} maxLength={maxLength} leadingAction={leadingAction} shape=\"large\" rows={screenPatternRecipe.composerMinLines} aria-label={label} placeholder={placeholder} description={description} error={error} aria-invalid={invalid || undefined} onBlur={onBlur} value={value} disabled={disabled} readOnly={pending} aria-busy={pending || undefined}\n onKeyDown={event => { if (shouldSubmitMessageKey({key:event.key, shiftKey:event.shiftKey, isComposing:event.nativeEvent.isComposing, keyCode:event.nativeEvent.keyCode}, submitMode)) { event.preventDefault(); if (canSend) onSend(value); } }}\n onChange={event => { if (!locked) onValueChange(event.currentTarget.value); }} minVisibleLines={screenPatternRecipe.composerMinLines} maxVisibleLines={screenPatternRecipe.composerMaxLines}\n {...(sendIcon ? { trailing: <span className=\"hjm-message-composer__trailing\" style={{ minInlineSize: sendDiameter, minBlockSize: sendDiameter }}>{/* Reserve the send diameter so typing never resizes the field; a hidden duplicate made two \"send\" buttons. */}<span className=\"hjm-message-composer__visible\">{hasContent || pending ? send : attach}</span></span> } : {})} />\n {sendIcon ? null : send}\n </div></>;\n const quickRow = quickInserts?.items.length ? <div className=\"hjm-message-composer__quick\" role=\"group\" aria-label={quickInserts.label} style={{ \"--hjm-quick-size\": `${composerQuickInsertRecipe.itemSize}px`, \"--hjm-quick-emoji\": `${composerQuickInsertRecipe.emojiSize}px` } as React.CSSProperties}>\n {quickInserts.items.map(item => <button key={item.id} type=\"button\" className=\"hjm-message-composer__quick-item\" aria-label={item.label} disabled={locked} onClick={() => onValueChange(value + item.emoji)}>{item.emoji}</button>)}\n </div> : null;\n // The error is announced by TextArea's shared Field error region (internal/field-error.tsx); no composer-only copy.\n return <div className=\"hjm-message-composer\" data-send-presentation={sendPresentation} style={{\"--hjm-message-composer-gap\": `${screenPatternRecipe.itemGap}px`, \"--hjm-attachment-size\": `${screenPatternRecipe.attachmentSize}px`, \"--hjm-attachment-remove-size\": `${screenPatternRecipe.attachmentRemoveSize}px`, ...layoutStyle} as React.CSSProperties}>{context}{quickRow}{/* Replying wraps target, attachments and input in one card (2026-10-16 reference). */}{/* One stable wrapper whether or not replying, so the textarea is never remounted (focus stays). */}<div className=\"hjm-message-composer__reply-card\" data-replying={replyTo ? true : undefined}>{replyTo ? <div className=\"hjm-message-composer__reply\"><div className=\"hjm-message-composer__reply-text\"><Text emphasis=\"strong\">{replyTo.author}</Text><Text variant=\"caption\" tone=\"muted\" className=\"hjm-message-composer__reply-excerpt\">{replyTo.excerpt}</Text></div><IconButton label={replyTo.cancelLabel} tone=\"secondary\" size=\"small\" shape=\"circle\" disabled={locked} onClick={replyTo.onCancel}><Text>×</Text></IconButton></div> : null}{composerBody}</div>{lengthFeedback && limit?.near ? <Progress shape=\"circular\" label={lengthFeedback.label} value={Math.min(limit.used, limit.max)} max={limit.max} valueText={lengthFeedback.formatCount(limit.used, limit.max)}><Text variant=\"caption\">{lengthFeedback.formatCount(limit.used, limit.max)}</Text></Progress> : null}</div>;\n}\n\nexport type ChatMessageProps = ChatMessageDescriptor & Readonly<{ children: ReactNode; interactiveContent?: boolean; avatar?: ReactNode; reply?: ReactNode; actions?: ReactNode; replyAction?: Readonly<{label:string; onPress():void; disabled?:boolean; icon?:ReactNode}>; replyLink?: Readonly<{label:string; onPress():void}>; /** HJM-drawn quote (\"Replying to X\" + one-line excerpt) heading the bubble; preferred over a custom `reply` node. */ replyQuote?: Readonly<{ title: string; excerpt: string }>; /** Photos sent in the message. Products own the image source, viewer and upload; HJM owns the layout. */ media?: readonly Readonly<{ id: string; label: string; preview: ReactNode; aspectRatio?: number; onPress?(): void }>[]; reactions?: ReactionPickerProps & Readonly<{ closeLabel: string; menuAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean }>; menuActions?: readonly MessageMenuAction[]; reportAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean; icon?: ReactNode }>; summary?: ChatMessageReactionSummary }>;\n /** Canonical layout-only placement on the message row. The swipe offset still owns `transform`. */\n layoutStyle?: HjmCompositionStyleProp }> & Readonly<{\n /**\n * Paged alternative to `media` (2026-10-18, Utilverse): HJM mounts only the shown photo, so a product that authorizes\n * each image fetches one page at a time. Exclusive with `media` (validated at render): one message has one photo set.\n */\n mediaAlbum?: MediaAlbum }>;\n/**\n * Current reactions drawn beside the time as one button that opens the same hold menu (2026-10-18 BurnTok DM, which\n * showed counts as status tags because the menu could not be opened from outside). Counts and the localized\n * accessible name (\"Reactions: heart 2. Open menu\") come from the product; `items` in display order.\n */\nexport type ChatMessageReactionSummary = ChatReactionSummary;\nexport function ChatMessage({ direction, author, timestamp, timestampPresentation = \"always\", bubbleTail = true, groupPosition = \"single\", deliveryLabel, avatar, reply, replyQuote, media = [], mediaAlbum, actions, replyAction, replyLink, reactions, children, interactiveContent=false, layoutStyle }: ChatMessageProps) {\n const theme = useOptionalHjmTheme();\n const display = resolveChatMessageGroupDisplay(groupPosition);\n // A run shows its time once, beside its last bubble; delivery state stays on every bubble.\n const visibleTime = display.showTimestamp ? timestamp : \"\";\n const quote = replyQuote ? <><Text emphasis=\"strong\">{replyQuote.title}</Text><Text tone=\"muted\" className=\"hjm-chat-message__quote-excerpt\">{replyQuote.excerpt}</Text></> : reply;\n // The quote stays inside the bubble; with replyLink a click on it jumps to the original (2026-10-16 reference).\n validateMediaSetChoice(media.length > 0, mediaAlbum !== undefined);\n const [albumIndex, setAlbumIndex] = useMediaAlbumIndex(mediaAlbum);\n const mediaBlock = mediaAlbum ? <MediaAlbumView album={mediaAlbum} index={albumIndex} onIndexChange={setAlbumIndex} width={chatMessageRecipe.mediaWidth} radius={chatMessageRecipe.bubbleRadius} />\n : media.length ? <div className=\"hjm-chat-message__media\" style={{ inlineSize: chatMessageRecipe.mediaWidth, gap: chatMessageRecipe.mediaGap, gridTemplateColumns: `repeat(${resolveChatMediaColumns(media.length)}, minmax(0, 1fr))` } as React.CSSProperties}>\n {media.map(item => { const style = { aspectRatio: media.length > 1 ? 1 : item.aspectRatio ?? 1 }; return item.onPress ? <button key={item.id} type=\"button\" className=\"hjm-chat-message__media-item\" aria-label={item.label} style={style} onClick={item.onPress}>{item.preview}</button> : <div key={item.id} role=\"img\" aria-label={item.label} className=\"hjm-chat-message__media-item\" style={style}>{item.preview}</div>; })}\n </div> : null;\n // A photo-only message drops the bubble surface so the photo itself is the message.\n const photoOnly = (media.length > 0 || mediaAlbum !== undefined) && !reply && !replyQuote && (children === null || children === undefined || children === false || children === \"\");\n const quoteBlock = quote ? (replyLink ? <button type=\"button\" className=\"hjm-chat-message__reply hjm-chat-message__quote\" aria-label={replyLink.label} onClick={replyLink.onPress}>{quote}</button> : <div className=\"hjm-chat-message__reply\">{quote}</div>) : null;\n const revealTime = timestampPresentation === \"swipe\" && !!timestamp;\n // Only the pointer that began a drag can finish it; another touch must not reply or cancel it.\n const start = useRef<{x:number;y:number;pointerId:number} | null>(null);\n const [offset, setOffset] = useState(0);\n const finish = () => { start.current = null; setOffset(0); };\n const menu = useRef<MessageReactionsHandle>(null);\n const summary = reactions?.summary;\n const reactionMenu = reactions ? omitReactionSummary(reactions) : undefined;\n const summaryItems = summary ? resolveChatReactionSummary(summary) : [];\n const summaryButton = reactions && summary && summaryItems.length ? (summary.readOnly ? <ReactionSummaryText label={summary.label} items={summaryItems} /> : <ReactionSummaryButton label={summary.label} items={summaryItems} selected={reactions.value} disabled={reactions.disabled ?? false} onPress={() => menu.current?.open()} />) : null;\n return <article tabIndex={replyAction && !replyAction.disabled ? 0 : undefined}\n aria-keyshortcuts={replyAction ? \"Alt+ArrowLeft Alt+ArrowRight\" : undefined} aria-description={replyAction?.label}\n onKeyDown={event => { if (event.target === event.currentTarget && event.altKey && (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") && replyAction && !replyAction.disabled) { event.preventDefault(); replyAction.onPress(); } }}\n onPointerDown={event => { if (start.current || (!revealTime && (!replyAction || replyAction.disabled)) || event.button !== 0 || (event.target as HTMLElement).closest(\"button,a,input,textarea\")) return; start.current = {x:event.clientX,y:event.clientY,pointerId:event.pointerId}; }}\n onPointerMove={event => { if (!start.current || start.current.pointerId !== event.pointerId) return; const dx=event.clientX-start.current.x,dy=event.clientY-start.current.y; if (Math.abs(dy)>10 && Math.abs(dy)>Math.abs(dx)) {finish();return;} if (revealTime) setOffset((direction === \"outgoing\" ? -1 : 1) * timestampRevealOffset(direction === \"outgoing\" ? -dx : dx,dy)); else if (Math.abs(dx)>Math.abs(dy)*2) setOffset(Math.max(-72,Math.min(72,dx))); }}\n onPointerUp={event => { if (start.current?.pointerId !== event.pointerId) return; if (!revealTime && start.current && replyAction && !replyAction.disabled && isReplySwipe(event.clientX-start.current.x,event.clientY-start.current.y)) replyAction.onPress(); finish(); }} onPointerCancel={event => { if (start.current?.pointerId === event.pointerId) finish(); }} onPointerLeave={event => { if (start.current?.pointerId === event.pointerId) finish(); }}\n style={{ ...layoutStyle, position: \"relative\", overflow: \"hidden\", marginBlockStart: display.spacingBefore,\n // Reserve tip room only where it protrudes (own trailing edge, or leading edge without an avatar column).\n ...(bubbleTail ? (direction === \"outgoing\" ? { paddingInlineEnd: chatMessageRecipe.tailWidth } : avatar ? {} : { paddingInlineStart: chatMessageRecipe.tailWidth }) : {}), touchAction: revealTime || replyAction ? \"pan-y\" : undefined }} aria-label={author}>\n {revealTime ? <time style={{ position: \"absolute\", ...(direction === \"outgoing\" ? { right: 0, justifyContent: \"flex-end\" } : { left: 0 }), top: 0, bottom: 0, width: 80, display: \"flex\", alignItems: \"center\", opacity: offset !== 0 ? 1 : 0, pointerEvents: \"none\" }}><Text variant=\"caption\" tone=\"muted\">{timestamp}</Text></time> : null}\n <div className=\"hjm-chat-message\" style={{ transform: `translateX(${offset}px)`, transition: start.current || theme?.environment.reducedMotion ? \"none\" : \"transform var(--hjm-motion-normal, 200ms) ease-out\", \"--hjm-message-max-width\": screenPatternRecipe.messageMaxWidth, \"--hjm-chat-avatar-size\": `${chatMessageRecipe.avatarSize}px` } as React.CSSProperties} data-direction={direction} data-tail={(bubbleTail && display.showTail) || undefined}>\n {/* Later bubbles of a run keep the avatar column so their edges line up under the first bubble. */}\n {avatar ? <div className=\"hjm-chat-message__avatar\" aria-hidden={display.showAvatar ? undefined : true}>{display.showAvatar ? avatar : null}</div> : null}\n <div className=\"hjm-chat-message__content\">{author && display.showAuthor && direction !== \"outgoing\"?<Text variant=\"caption\" tone=\"muted\">{author}</Text>:null}\n {/* Time and delivery sit beside the bubble's bottom edge, on the side facing the open space. */}\n <div className=\"hjm-chat-message__body\">\n {reactionMenu ? <MessageReactions {...reactionMenu} menuRef={menu} interactiveContent={interactiveContent || mediaAlbum !== undefined} {...(timestamp ? { menuTitle: timestamp } : {})} {...(replyAction && !replyAction.disabled ? {replyAction} : {})}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</MessageReactions> : <div className=\"hjm-chat-message__bubble\" data-photo-only={photoOnly || undefined}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</div>}\n {(!revealTime && visibleTime)||deliveryLabel||actions||summaryButton?<div className=\"hjm-chat-message__meta\">{summaryButton}{(!revealTime && visibleTime)||deliveryLabel?<Text variant=\"caption\" tone=\"muted\">{[revealTime ? \"\" : visibleTime, deliveryLabel].filter(Boolean).join(\" · \")}</Text>:null}{actions}</div>:null}\n </div>\n </div>\n </div>\n </article>;\n}\n\n/** Shared structure for embedded compositions. The parent supplies size; this never creates a second scroller. */\nexport type CompositionLayoutProps = Readonly<{\n title?: string;\n /** Document heading level; visual treatment remains the shared composition title. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n description?: string;\n badge?: ReactNode;\n leading?: ReactNode;\n actions?: ReactNode;\n notice?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /** Brand visual only; the shared state group owns copy, centering and announcement. */\n loadingIndicator?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function CompositionLayout({title, headingLevel = 3, description, badge, leading, actions, notice, children, footer, state = {kind: \"ready\"}, stateAction, loadingIndicator, layoutStyle}: CompositionLayoutProps) {\n const resolved = resolveScreenContentState(state);\n return <Stack gap=\"md\" {...(layoutStyle === undefined ? {} : {layoutStyle})}>\n {title || description || badge || leading || actions ? <Stack axis=\"inline\" gap=\"sm\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>\n {leading}<Stack gap=\"xxs\" layoutStyle={{flex: 1, minWidth: 0}}>\n <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>{title ? <Heading level=\"level3\" semanticLevel={headingLevel}>{title}</Heading> : null}{badge}</Stack>\n {description ? <Text tone=\"muted\">{description}</Text> : null}\n </Stack>{actions}\n </Stack> : null}\n {notice}\n {state.kind === \"ready\" ? children : <Stack gap=\"sm\" align=\"center\" justify=\"center\" layoutStyle={{flex: 1}}>\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"} style={{ textAlign: \"center\" }}>{/* Block, centered lines as Native; the live role covers the copy only, not stateAction. */}<Text as=\"p\" variant={resolved.titleVariant}>{state.title}</Text>{state.description ? <Text as=\"p\" tone=\"muted\">{state.description}</Text> : null}</div>}\n {stateAction}\n </Stack>}\n {footer}\n </Stack>;\n}\n\nexport type NotificationRowProps = Readonly<{\n /** Text and inline emphasis only; interactive content belongs outside the row. */\n preview: ReactNode;\n metadata: string;\n avatar: ReactNode;\n avatarBadge?: ReactNode;\n thumbnail?: ReactNode;\n unread?: boolean;\n}>;\n\n/** Router host owns the sole target and localized accessible name, as with ConversationRow. */\nexport function NotificationRow({ preview, metadata, avatar, avatarBadge, thumbnail, unread = false }: NotificationRowProps) {\n const r = notificationRecipe;\n return <span aria-hidden=\"true\" data-hjm-notification-row=\"true\" style={{ display: \"flex\", alignItems: \"center\", gap: r.gap, padding: `${r.paddingBlock}px ${r.paddingInline}px`, width: \"100%\", minWidth: 0, boxSizing: \"border-box\" }}>\n <span style={{ position: \"relative\", width: r.avatarSize, height: r.avatarSize, flexShrink: 0 }}>\n <span style={{ display: \"flex\", width: \"100%\", height: \"100%\", overflow: \"hidden\", borderRadius: \"50%\" }}>{avatar}</span>\n {avatarBadge ? <span style={{ position: \"absolute\", bottom: 0, right: 0, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: r.avatarBadgeSize, height: r.avatarBadgeSize, borderRadius: \"50%\", background: \"var(--hjm-color-surface)\", border: \"2px solid var(--hjm-color-surface)\", boxSizing: \"border-box\" }}>{avatarBadge}</span> : null}\n </span>\n <span style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: r.contentGap }}>\n <Text style={{ display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: r.previewLines, overflow: \"hidden\" }}>{preview}</Text>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: r.contentGap }}><Text variant=\"caption\" tone=\"muted\">{metadata}</Text>{unread ? <span data-hjm-unread-dot=\"true\" style={{ width: r.unreadSize, height: r.unreadSize, borderRadius: \"50%\", flexShrink: 0, background: \"var(--hjm-color-content-brand)\" }} /> : null}</span>\n </span>\n {thumbnail ? <span style={{ width: r.thumbnailSize, height: r.thumbnailSize, flexShrink: 0, overflow: \"hidden\", borderRadius: \"var(--hjm-radius-sm)\" }}>{thumbnail}</span> : null}\n </span>;\n}\n\nexport type IconTileProps = Readonly<{\n /**\n * Icon artwork. A function receives the rendered edge (`IconTileArtwork`) so fixed-size artwork such as an image\n * sizes itself to a `size=\"fill\"` icon without the product re-computing the cell clamp.\n */\n icon: ReactNode | ((artwork: IconTileArtwork) => ReactNode); label: string; overlay?: ReactNode; labelLines?: 1 | 2; ghost?: boolean;\n /** `none`: the icon is complete product artwork, so no frame fill or hairline is drawn. */\n frame?: IconTileFrame;\n /** Frame (and ghost outline) corner shape from the product's icon theme. */\n shape?: IconTileShape;\n /** `fill`: the icon spans the grid cell between iconTileRecipe.fillMinSize and fillMaxSize. */\n size?: IconTileSize }>;\n/** Presentation shared by launcher and profile grids; the host owns navigation or drag behavior. */\nexport function IconTile({icon, label, overlay, labelLines = 1, ghost = false, frame = iconTileRecipe.defaults.frame, shape = iconTileRecipe.defaults.shape, size = iconTileRecipe.defaults.size}: IconTileProps) {\n const r = iconTileRecipe;\n const framed = frame === \"surface\";\n // Percent radius follows the rendered size, so a filling icon keeps its shape at every cell width.\n const dimensions = size === \"fill\" ? {width: \"100%\", minWidth: r.fillMinSize, maxWidth: r.fillMaxSize, aspectRatio: \"1\"} : {width: r.iconSize, height: r.iconSize};\n // A render-function icon needs the filling edge as a number. It is read before paint and on every resize; the\n // computed width ignores transforms (a host's press scale) and keeps fractional cell widths.\n const frameRef = useRef<HTMLSpanElement>(null);\n const measureEdge = size === \"fill\" && typeof icon === \"function\";\n const [fillEdge, setFillEdge] = useState<number>(r.fillMinSize);\n useLayoutEffect(() => {\n const element = frameRef.current;\n if (!measureEdge || !element) return;\n setFillEdge(Number.parseFloat(getComputedStyle(element).width) || r.fillMinSize);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(([entry]) => { const width = entry?.borderBoxSize?.[0]?.inlineSize; if (width) setFillEdge(width); });\n observer.observe(element);\n return () => observer.disconnect();\n }, [measureEdge, r.fillMinSize]);\n const edge = size === \"fill\" ? fillEdge : r.iconSize;\n return <span data-hjm-icon-tile=\"true\" data-frame={frame} data-shape={shape} data-size={size} style={{display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: r.gap, minWidth: 0, width: \"100%\", overflow: \"visible\"}}>\n <span ref={frameRef} style={{position: \"relative\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", ...dimensions, boxSizing: \"border-box\", flexShrink: 0, borderRadius: `${Math.round(r.shapes[shape] * 100)}%`, background: framed ? \"var(--hjm-color-surface-alt)\" : undefined, color: \"var(--hjm-color-text)\", boxShadow: ghost || !framed ? undefined : \"0 0 0 1px var(--hjm-color-border)\", outline: ghost ? \"1px dashed var(--hjm-color-text-muted)\" : undefined, opacity: ghost ? r.ghostOpacity : 1, fontSize: 32}}>{typeof icon === \"function\" ? icon({edge}) : icon}{overlay}</span>\n <Text variant=\"caption\" style={{display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: labelLines, width: \"100%\", maxWidth: labelLines === 2 ? r.multilineLabelMaxWidth : r.labelMaxWidth, minHeight: labelLines === 2 ? r.multilineLabelMinHeight : undefined, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"normal\", overflowWrap: \"anywhere\", textAlign: \"center\", fontWeight: 500}}>{label}</Text>\n </span>;\n}\n\nexport type TypingIndicatorProps = Readonly<{\n /** Localized status read by assistive tech (\"Seoyeon is typing\"); the visible row shows only the dots. */\n label: string;\n /** Typer's photo in a group room, sized like ChatMessage avatars (`chatMessageRecipe.avatarSize`). */\n avatar?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Incoming \"is typing\" row for a ChatScreen timeline (2026-10-18 BurnTok DM drew its own). The host shows it only while\n * presence says someone is typing and places it after the last message; HJM owns the bubble, dots and announcement.\n */\nexport function TypingIndicator({ label, avatar, layoutStyle }: TypingIndicatorProps) {\n if (!label.trim()) throw new TypeError(\"TypingIndicator requires a localized label\");\n const theme = useOptionalHjmTheme();\n const r = typingIndicatorRecipe, m = chatMessageRecipe;\n // A polite status: appearing is announced once without interrupting, and the dots stay hidden from assistive tech.\n return <div role=\"status\" className=\"hjm-typing-indicator\" data-reduced-motion={theme?.environment.reducedMotion || undefined}\n style={{ display: \"flex\", alignItems: \"flex-start\", gap: m.avatarGap, marginBlockStart: m.groupGap, paddingInlineStart: avatar ? 0 : m.tailWidth, ...layoutStyle, \"--hjm-typing-dot\": `${r.dotSize}px`, \"--hjm-typing-cycle\": `${r.cycleMs}ms`, \"--hjm-typing-rest\": r.restOpacity } as React.CSSProperties}>\n {avatar ? <span aria-hidden=\"true\" style={{ display: \"flex\", justifyContent: \"center\", flex: `0 0 ${m.avatarSize}px`, inlineSize: m.avatarSize }}>{avatar}</span> : null}\n <span aria-hidden=\"true\" className=\"hjm-typing-indicator__bubble\" style={{ display: \"inline-flex\", alignItems: \"center\", gap: r.dotGap, boxSizing: \"border-box\", minBlockSize: `calc(var(--hjm-type-body-line-height) + ${m.bubblePaddingBlock * 2}px)`, paddingBlock: m.bubblePaddingBlock, paddingInline: m.bubblePaddingInline, borderRadius: m.bubbleRadius, background: \"var(--hjm-color-surface)\" }}>\n {[0, 1, 2].map(index => <span key={index} className=\"hjm-typing-indicator__dot\" style={{ animationDelay: `${index * r.staggerMs}ms` }} />)}\n </span>\n <VisuallyHidden>{label}</VisuallyHidden>\n </div>;\n}\n\nexport type ChatDateSeparatorProps = Readonly<{\n /** Product-formatted date or time (\"Today\", \"Oct 18\", \"3:04 PM\"). */\n label: string;\n /** Machine-readable value for the Web `<time>` element; Native ignores it. */\n dateTime?: string;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Centered date (or time) row between ChatScreen timeline groups (2026-10-18 Utilverse chat drew a caption). Grouping\n * rules stay with the product; the next message keeps its own group gap, so this row adds only the space before it.\n */\nexport function ChatDateSeparator({ label, dateTime, layoutStyle }: ChatDateSeparatorProps) {\n if (!label.trim()) throw new TypeError(\"ChatDateSeparator requires a localized label\");\n const r = chatDateSeparatorRecipe;\n return <div className=\"hjm-chat-date-separator\" style={{ display: \"flex\", justifyContent: \"center\", textAlign: \"center\", paddingBlockStart: r.paddingTop, paddingBlockEnd: r.paddingBottom, ...layoutStyle }}>\n <Text variant={r.textVariant} tone={r.tone}>{dateTime ? <time dateTime={dateTime}>{label}</time> : label}</Text>\n </div>;\n}\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -923,22 +923,28 @@
|
|
|
923
923
|
.hjm-tabs[data-orientation="vertical"] .hjm-tabs__tab[data-state="selected"]::after { inset-block: 0; inset-inline-start: auto; inset-inline-end: 0; inline-size: 2px; block-size: auto; }
|
|
924
924
|
|
|
925
925
|
.hjm-badge, .hjm-tag { display: inline-flex; align-items: center; gap: var(--hjm-space-xxs); max-inline-size: 100%; overflow-wrap: anywhere; }
|
|
926
|
-
|
|
927
|
-
.hjm-badge
|
|
928
|
-
.hjm-badge[data-
|
|
929
|
-
.hjm-badge[data-tone="
|
|
930
|
-
.hjm-badge[data-tone="
|
|
931
|
-
.hjm-badge[data-tone="
|
|
932
|
-
.hjm-
|
|
933
|
-
.hjm-badge[data-
|
|
934
|
-
.hjm-badge[data-tone="danger"] { color: var(--hjm-color-danger); background: color-mix(in srgb, var(--hjm-color-danger) 14%, transparent); border-color: color-mix(in srgb, var(--hjm-color-danger) 30%, transparent); }
|
|
935
|
-
.hjm-badge[data-variant="outline"] { background: transparent; border-color: var(--hjm-color-border); }
|
|
926
|
+
/* Solid status plates mirror badgeRecipe; Tag keeps its independent tint treatment. */
|
|
927
|
+
.hjm-badge { min-block-size: 24px; padding: 2px var(--hjm-space-xs); border: 0; border-radius: var(--hjm-radius-sm); color: var(--hjm-color-on-primary); background: var(--hjm-color-neutral-fill); font-size: var(--hjm-type-caption-size); line-height: var(--hjm-type-caption-line-height); font-weight: var(--hjm-font-weight-bold); }
|
|
928
|
+
.hjm-badge[data-size="small"] { min-block-size: 20px; }
|
|
929
|
+
.hjm-badge[data-tone="strong"] { background: var(--hjm-color-strong-fill); }
|
|
930
|
+
.hjm-badge[data-tone="brand"] { background: var(--hjm-color-primary); }
|
|
931
|
+
.hjm-badge[data-tone="danger"] { color: var(--hjm-color-on-danger); background: var(--hjm-color-danger-fill); }
|
|
932
|
+
.hjm-badge__icon { display: inline-flex; align-items: center; flex: 0 0 auto; }
|
|
933
|
+
.hjm-badge[data-variant="outline"] { background: transparent; border: 1px solid var(--hjm-color-border); color: var(--hjm-color-text-muted); }
|
|
936
934
|
.hjm-badge[data-variant="outline"][data-tone="strong"] { color: var(--hjm-color-text); }
|
|
937
|
-
.hjm-badge[data-variant="outline"][data-tone="
|
|
938
|
-
.hjm-badge[data-variant="outline"][data-tone="
|
|
939
|
-
.hjm-badge[data-
|
|
940
|
-
.hjm-badge[data-variant="outline"][data-tone="
|
|
941
|
-
.hjm-badge[data-
|
|
935
|
+
.hjm-badge[data-variant="outline"][data-tone="brand"] { color: var(--hjm-color-content-brand); }
|
|
936
|
+
.hjm-badge[data-variant="outline"][data-tone="danger"] { color: var(--hjm-color-danger); }
|
|
937
|
+
.hjm-badge[data-tone="info"] { background: var(--hjm-accent-fill-info); }
|
|
938
|
+
.hjm-badge[data-variant="outline"][data-tone="info"] { background: transparent; color: var(--hjm-accent-info); border-color: color-mix(in srgb, var(--hjm-accent-info) 30%, transparent); }
|
|
939
|
+
.hjm-badge[data-tone="success"] { background: var(--hjm-accent-fill-success); }
|
|
940
|
+
.hjm-badge[data-variant="outline"][data-tone="success"] { background: transparent; color: var(--hjm-accent-success); border-color: color-mix(in srgb, var(--hjm-accent-success) 30%, transparent); }
|
|
941
|
+
.hjm-badge[data-tone="warning"] { background: var(--hjm-accent-fill-warning); }
|
|
942
|
+
.hjm-badge[data-variant="outline"][data-tone="warning"] { background: transparent; color: var(--hjm-accent-warning); border-color: color-mix(in srgb, var(--hjm-accent-warning) 30%, transparent); }
|
|
943
|
+
.hjm-badge[data-tone="attention"] { background: var(--hjm-accent-fill-attention); }
|
|
944
|
+
.hjm-badge[data-variant="outline"][data-tone="attention"] { background: transparent; color: var(--hjm-accent-attention); border-color: color-mix(in srgb, var(--hjm-accent-attention) 30%, transparent); }
|
|
945
|
+
.hjm-tag[data-tone="info"] { color: var(--hjm-accent-info); background: color-mix(in srgb, var(--hjm-accent-info) 14%, transparent); border-color: color-mix(in srgb, var(--hjm-accent-info) 30%, transparent); }
|
|
946
|
+
.hjm-tag[data-tone="success"] { color: var(--hjm-accent-success); background: color-mix(in srgb, var(--hjm-accent-success) 14%, transparent); border-color: color-mix(in srgb, var(--hjm-accent-success) 30%, transparent); }
|
|
947
|
+
.hjm-tag[data-tone="attention"] { color: var(--hjm-accent-attention); background: color-mix(in srgb, var(--hjm-accent-attention) 14%, transparent); border-color: color-mix(in srgb, var(--hjm-accent-attention) 30%, transparent); }
|
|
942
948
|
.hjm-tag { min-block-size: 20px; padding-inline: var(--hjm-space-xxs); border: 1px solid var(--hjm-color-border); border-radius: var(--hjm-radius-sm); color: var(--hjm-color-text-muted); background: var(--hjm-color-bg); font-size: var(--hjm-type-caption-size); line-height: var(--hjm-type-caption-line-height); font-weight: var(--hjm-text-emphasis-medium); }
|
|
943
949
|
.hjm-tag[data-tone="brand"] { color: var(--hjm-color-content-brand); background: var(--hjm-color-bg); }
|
|
944
950
|
.hjm-tag[data-tone="info"] { background: var(--hjm-color-bg); }
|
|
@@ -1125,7 +1131,8 @@ button.hjm-list-row, a.hjm-list-row { cursor: pointer; }
|
|
|
1125
1131
|
|
|
1126
1132
|
/* emptyStateRecipe.density.regular paddingVertical xxxl 40 (2026-10-06; Web had xxl 32, Native read the recipe). */
|
|
1127
1133
|
/* Like Native, a regular empty state fills the rest of a flex host and centers in it; compact (cards, sheets) stays content-high. */
|
|
1128
|
-
|
|
1134
|
+
/* Empty copy uses body size even inside a title-sized host (2026-10-18 user rule). */
|
|
1135
|
+
.hjm-empty-state { font-size: var(--hjm-type-body-size); line-height: var(--hjm-type-body-line-height); display: grid; flex-grow: 1; align-content: center; justify-items: center; gap: var(--hjm-space-xs); padding: var(--hjm-space-xxxl) var(--hjm-space-xl); color: var(--hjm-color-text-muted); text-align: center; }
|
|
1129
1136
|
.hjm-empty-state[data-density="compact"] { flex-grow: 0; padding-block: var(--hjm-space-xl); }
|
|
1130
1137
|
.hjm-empty-state__title { color: var(--hjm-color-text); font-weight: var(--hjm-type-title-weight); }
|
|
1131
1138
|
.hjm-result { display: grid; justify-items: center; gap: var(--hjm-space-sm); padding: var(--hjm-space-xxxl) var(--hjm-space-xl); text-align: center; }
|