@onereach/idw-ui-components 0.2.0-beta.27.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/format-idw-summary.ts","../../src/components/SkillCard/types.ts","../../src/components/SkillCard/SkillCard.vue","../../src/components/Feeds/feedEmbed.ts","../../src/components/Feeds/formatFeedReadingTime.ts","../../src/components/Feeds/FeedItemBase/FeedItemBase.vue","../../src/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue","../../src/components/Feeds/FeedMarkdownContent/FeedMarkdownContent.vue","../../src/assets/skill-card-background.png","../../src/components/Feeds/FeedSkillContent/FeedSkillContent.vue","../../src/components/Feeds/FeedEmbed/FeedEmbed.vue","../../src/components/Feeds/FeedHtmlContent/FeedHtmlContent.vue","../../src/components/Feeds/FeedFileContent/FeedFileContent.vue","../../src/idw-card/bind/bindIdwCard.ts","../../src/idw-card/host/hostConfig.ts","../../src/idw-card/form/formContext.ts","../../src/idw-card/templates/approval.ts","../../src/idw-card/templates/compile.ts","../../src/idw-card/templates/registry.ts","../../src/idw-card/renderer/actionStyle.ts","../../src/idw-card/renderer/IdwCardActionBar.vue","../../src/idw-card/renderer/elements/ActionSetElement.vue","../../src/idw-card/renderer/elements/BadgeElement.vue","../../src/idw-card/renderer/elements/ColumnSetElement.vue","../../src/idw-card/renderer/elements/ContainerElement.vue","../../src/idw-card/renderer/elements/FactSetElement.vue","../../src/idw-card/renderer/elements/FileElement.vue","../../src/idw-card/renderer/elements/HtmlElement.vue","../../src/idw-card/renderer/elements/IconElement.vue","../../src/idw-card/renderer/elements/ImageElement.vue","../../src/idw-card/renderer/elements/ImageSetElement.vue","../../src/idw-card/form/dates.ts","../../src/idw-card/renderer/elements/InputElement.vue","../../src/idw-card/renderer/elements/MediaElement.vue","../../src/idw-card/renderer/elements/ProgressElement.vue","../../src/idw-card/renderer/elements/SkillElement.vue","../../src/idw-card/renderer/elements/TableElement.vue","../../src/idw-card/renderer/elements/TextElement.vue","../../src/idw-card/renderer/IdwCardElementView.vue","../../src/idw-card/renderer/CardRenderer.vue","../../src/components/Feeds/FeedList/FeedListItemBody.vue","../../src/components/Feeds/FeedList/FeedList.vue"],"sourcesContent":["import type { IdwSummary } from '@onereach/idw-contracts';\n\n/**\n * Formats an IDW summary for display in the UI.\n * Replace with real component exports as the library grows.\n */\nexport function formatIdwSummary(summary: IdwSummary): string {\n return `${summary.name} (${summary.id})`;\n}\n","import type { IdwCardSkillData } from '@onereach/idw-contracts';\n\nexport enum CardSize {\n XS = 'xs',\n S = 's',\n L = 'l',\n}\n\n/** Minimal skill fields required to render {@link SkillCard}. */\nexport type SkillCardData = IdwCardSkillData;\n\nexport type SkillCardProps = {\n skill: SkillCardData;\n selected?: boolean;\n disabled?: boolean;\n loading?: boolean;\n size?: CardSize;\n interactive?: boolean;\n};\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport {\n CardSize,\n type SkillCardProps,\n} from './types';\n\ndefineOptions({\n name: 'SkillCard',\n});\n\nconst CARD_SIZE = {\n [CardSize.XS]: {\n container: ['w-[128px]', 'h-[128px]', 'p-md+', 'gap-[17px]'],\n domain: ['text-[12px] leading-[16px]'],\n title: ['text-[16px] leading-[20px] line-clamp-3'],\n },\n [CardSize.S]: {\n container: ['w-[163px]', 'h-[163px]', 'p-md+', 'gap-[17px]'],\n domain: ['typography-caption-regular'],\n title: ['text-[20px] leading-[24px] line-clamp-4'],\n },\n [CardSize.L]: {\n container: ['w-[240px]', 'h-[240px]', 'p-lg', 'gap-md+'],\n domain: ['typography-body-2-regular'],\n title: ['text-[30px] leading-[36px] line-clamp-5'],\n },\n};\n\nconst props = withDefaults(defineProps<SkillCardProps>(), {\n selected: false,\n disabled: false,\n loading: false,\n size: CardSize.L,\n interactive: true,\n});\n\nconst sizeClasses = computed(() => {\n return CARD_SIZE[props.size] || CARD_SIZE[CardSize.L];\n});\n\nconst cardImageStyles = computed(() => {\n return {\n backgroundImage: props.disabled ? undefined : `url(${props.skill.image})`,\n backgroundPosition: '15px 15px',\n backgroundSize: '200%',\n };\n});\n\nconst rootClasses = computed(() => {\n const classes = [\n 'idw-skill-card overflow-hidden',\n 'bg-surface-1 dark:bg-surface-1-dark',\n 'shadow-card dark:shadow-card-dark',\n\n 'rounded-[24px]',\n ...sizeClasses.value.container,\n ];\n\n if (props.disabled) {\n classes.push(\n 'text-outline dark:text-outline-dark',\n 'select-none',\n );\n } else {\n classes.push(\n 'text-black dark:text-white',\n );\n\n if (props.interactive) {\n classes.push('cursor-pointer');\n }\n }\n\n return classes;\n});\n</script>\n\n<template>\n <div\n :class=\"rootClasses\"\n :data-interactive=\"props.interactive\"\n :data-disabled=\"props.disabled\"\n :data-selected=\"props.selected\"\n :style=\"cardImageStyles\"\n >\n <div\n v-if=\"props.loading\"\n class=\"absolute left-0 top-0 w-full h-full z-10 flex items-center justify-center bg-on-disabled-dark\"\n >\n <OrLoaderV3 type=\"circle\" />\n </div>\n\n <div class=\"layout-column justify-between h-full w-full relative z-[2]\">\n <div class=\"grid grid-cols-[1fr_auto] items-start gap-xs\">\n <span\n class=\"truncate idw-skill-card__domain\"\n :class=\"sizeClasses.domain\"\n >\n {{ skill.domain }}\n </span>\n <div class=\"idw-skill-card__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <span\n class=\"idw-skill-card__title\"\n :class=\"sizeClasses.title\"\n >\n {{ skill.name }}\n </span>\n </div>\n </div>\n</template>\n\n<style>\n@import 'https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap';\n</style>\n\n<style scoped lang=\"scss\">\n.idw-skill-card {\n position: relative;\n z-index: 0;\n\n &__title,\n &__domain {\n font-family: Outfit, sans-serif !important;\n }\n\n &__title {\n font-weight: 700;\n }\n\n &::before {\n position: absolute;\n inset: 0;\n content: '';\n // stylelint-disable-next-line\n background: linear-gradient(to bottom, rgba(#000, 0.3), rgba(#000, 0));\n\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n\n &:not([data-disabled=true]):not([data-interactive=false]) {\n &.selected::before,\n &[data-selected=true]::before,\n &:hover::before {\n opacity: 1;\n }\n\n &.selected::before,\n &[data-selected=true]::before {\n // stylelint-disable-next-line\n background: rgba(#000, 0.3);\n }\n\n &::after {\n position: absolute;\n inset: 0;\n content: '';\n\n border: 3px solid transparent;\n border-radius: 24px;\n transition: border-color 0.3s ease-in-out;\n }\n\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary, #5b8def);\n }\n\n :global(.dark) &,\n :global([data-theme='dark']) & {\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary-dark, #5b8def);\n }\n }\n }\n}\n</style>\n","/** Shared sandbox for feed HTML/file embeds (scripts + same-origin for app shells). */\nexport const FEED_EMBED_SANDBOX = 'allow-scripts allow-same-origin' as const;\n\n/**\n * Layout size for embed iframes.\n * - `list` — usable height inside a feed list card (viewport-based)\n * - `fill` — grow with a flex parent (detail / fullscreen panes)\n */\nexport type FeedEmbedSize = 'list' | 'fill';\n\nexport const FEED_EMBED_SIZE_CLASS: Record<FeedEmbedSize, string> = {\n /** Matches prior feed html/file iframe height in idw-ui (`h-[720px]`). */\n list: 'block w-full h-[720px] max-h-[720px] border-none',\n fill: 'block w-full h-full min-h-0 flex-1 border-none',\n};\n","/** Approximate reading-time label for feed bodies (same heuristic as idw-ui). */\nexport function formatFeedReadingTime(text = ''): string {\n const wordsPerMinute = 200;\n const words = text.trim() ? text.trim().split(/\\s+/).length : 0;\n const minutes = Math.max(Math.round(words / wordsPerMinute), words > 0 ? 1 : 0);\n\n if (minutes <= 0) {\n return '';\n }\n\n if (minutes >= 60) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return remainingMinutes > 0\n ? `~${hours}h ${remainingMinutes} min`\n : `~${hours}h`;\n }\n\n return `~${minutes} min`;\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3, OrIconButtonV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots, watch } from 'vue';\n\nimport {\n type FeedItemBaseProps,\n type FeedItemControl,\n} from './types';\n\ndefineOptions({\n name: 'FeedItemBase',\n});\n\nconst DEFAULT_CONTROL_LABELS = {\n mention: 'Mention',\n fullscreen: 'Fullscreen',\n} as const;\n\nconst SHOW_MORE_LABEL = 'Show more';\nconst SHOW_LESS_LABEL = 'Show less';\n\nconst props = withDefaults(defineProps<FeedItemBaseProps>(), {\n shortContent: undefined,\n timestamp: undefined,\n timestampDatetime: undefined,\n source: undefined,\n expandable: true,\n fullscreenControl: false,\n mentionControl: true,\n isNew: false,\n controlLabels: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:expanded': [expanded: boolean];\n expand: [];\n collapse: [];\n 'control-click': [control: FeedItemControl];\n fullscreen: [];\n}>();\n\nconst slots = useSlots();\n\nconst isExpanded = ref(false);\nconst hasMountedBody = ref(false);\n\n/** Non-expandable items always expose their body; expandable items follow expand state. */\nconst isBodyVisible = computed(() => !props.expandable || isExpanded.value);\n\nwatch(\n isBodyVisible,\n (visible) => {\n if (visible) {\n hasMountedBody.value = true;\n }\n },\n { immediate: true },\n);\n\nconst titleId = computed(() => `feed-item-title-${props.id}`);\nconst bodyId = computed(() => `feed-item-body-${props.id}`);\n\nconst shellClass = computed(() => {\n if (props.isNew) {\n return 'bg-primary-opacity-0-12 dark:bg-primary-opacity-0-12-dark';\n }\n return 'bg-surface-2 dark:bg-surface-2-dark';\n});\n\nconst resolvedControlLabels = computed(() => ({\n ...DEFAULT_CONTROL_LABELS,\n ...props.controlLabels,\n}));\n\nconst hasActions = computed(() => Boolean(slots.actions));\nconst hasFooter = computed(() => Boolean(slots.footer));\nconst hasBody = computed(() => Boolean(slots.body));\nconst showExpandControl = computed(() => props.expandable && hasBody.value);\nconst showItemActions = computed(() => hasActions.value && isBodyVisible.value);\nconst showActionsRow = computed(\n () => showExpandControl.value || showItemActions.value,\n);\nconst showFooter = computed(() => hasFooter.value && isBodyVisible.value);\n\nfunction setExpanded(next: boolean) {\n if (!props.expandable || next === isExpanded.value) {\n return;\n }\n\n isExpanded.value = next;\n emit('update:expanded', next);\n if (next) {\n emit('expand');\n } else {\n emit('collapse');\n }\n}\n\nfunction toggleExpanded() {\n setExpanded(!isExpanded.value);\n}\n\nfunction onControlClick(control: FeedItemControl) {\n emit('control-click', control);\n}\n\nfunction onFullscreenClick() {\n emit('fullscreen');\n}\n</script>\n\n<template>\n <article\n class=\"feed-item-base relative flex min-w-0 flex-col gap-md rounded-md border border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark p-md\"\n :class=\"shellClass\"\n :aria-labelledby=\"titleId\"\n >\n <div class=\"flex w-full min-w-0 flex-col gap-md\">\n <header class=\"flex w-full min-w-0 items-start gap-md\">\n <div class=\"flex min-w-0 flex-1 flex-wrap content-center items-center gap-md\">\n <time\n v-if=\"timestamp\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n :datetime=\"timestampDatetime || undefined\"\n >\n {{ timestamp }}\n </time>\n\n <span\n v-if=\"source\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ source }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-md\">\n <slot name=\"controls\">\n <OrIconButtonV3\n v-if=\"fullscreenControl\"\n icon=\"open_in_full\"\n :tooltip=\"resolvedControlLabels.fullscreen\"\n @click=\"onFullscreenClick\"\n />\n <OrIconButtonV3\n v-if=\"mentionControl\"\n icon=\"alternate_email\"\n :tooltip=\"resolvedControlLabels.mention\"\n @click=\"onControlClick('mention')\"\n />\n </slot>\n </div>\n </header>\n\n <div class=\"flex w-full min-w-0 items-center gap-sm\">\n <div class=\"flex min-w-0 flex-1 flex-col items-start\">\n <h3\n :id=\"titleId\"\n class=\"m-0 w-full overflow-hidden text-ellipsis typography-headline-3 text-on-background dark:text-on-background-dark\"\n >\n {{ title }}\n </h3>\n <p\n v-if=\"shortContent\"\n class=\"m-0 w-full overflow-hidden text-ellipsis typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ shortContent }}\n </p>\n </div>\n </div>\n\n <div\n v-if=\"hasMountedBody\"\n v-show=\"isBodyVisible\"\n :id=\"bodyId\"\n class=\"feed-item-base__body max-h-[37.875rem] w-full min-w-0 overflow-y-auto rounded-md\"\n role=\"region\"\n :aria-label=\"title\"\n :aria-hidden=\"!isBodyVisible\"\n >\n <slot name=\"body\" />\n </div>\n\n <div\n v-if=\"showActionsRow\"\n class=\"flex w-full min-w-0 flex-wrap content-center items-center\"\n >\n <OrButtonV3\n v-if=\"showExpandControl\"\n type=\"button\"\n variant=\"link\"\n color=\"primary\"\n class=\"min-w-[96px] mr-md\"\n :aria-expanded=\"isBodyVisible\"\n :aria-controls=\"bodyId\"\n @click=\"toggleExpanded\"\n >\n {{ isBodyVisible ? SHOW_LESS_LABEL : SHOW_MORE_LABEL }}\n </OrButtonV3>\n\n <div\n v-if=\"showItemActions\"\n class=\"flex min-w-0 flex-1 flex-wrap content-center items-center gap-sm empty:hidden\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <footer\n v-if=\"showFooter\"\n class=\"w-full min-w-0 empty:hidden\"\n >\n <slot name=\"footer\" />\n </footer>\n </div>\n </article>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { formatFeedReadingTime } from '../formatFeedReadingTime';\nimport type { FeedItemMetaFooterProps } from './types';\n\ndefineOptions({\n name: 'FeedItemMetaFooter',\n});\n\nconst props = withDefaults(defineProps<FeedItemMetaFooterProps>(), {\n readingTimeSource: undefined,\n});\n\nconst emit = defineEmits<{\n 'open-reactions': [];\n 'open-comments': [];\n}>();\n\nconst reactionCount = computed(() => props.engagement.reactionCount ?? 0);\nconst reactionEmojis = computed(() => props.engagement.reactionEmojis ?? []);\nconst commentsCount = computed(() => props.engagement.commentsCount ?? 0);\nconst commentsLabel = computed(() => props.engagement.commentsLabel);\nconst readingTime = computed(() => {\n if (props.engagement.readingTime) {\n return props.engagement.readingTime;\n }\n if (props.readingTimeSource) {\n return formatFeedReadingTime(props.readingTimeSource);\n }\n return '';\n});\n\nconst hasContent = computed(\n () => reactionCount.value > 0\n || Boolean(readingTime.value)\n || (commentsCount.value > 0 && Boolean(commentsLabel.value)),\n);\n</script>\n\n<template>\n <span\n v-if=\"hasContent\"\n class=\"feed-item-meta-footer flex items-center justify-between gap-sm typography-caption-regular text-outline dark:text-outline-dark\"\n >\n <span class=\"flex items-center gap-xs\">\n <button\n v-if=\"reactionCount > 0\"\n type=\"button\"\n class=\"flex cursor-pointer items-center text-on-background dark:text-on-background-dark bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark px-sm rounded-md border-0\"\n @click=\"emit('open-reactions')\"\n >\n <span\n v-if=\"reactionEmojis.length\"\n class=\"mr-sm inline-flex items-center gap-xs\"\n aria-hidden=\"true\"\n >\n <span\n v-for=\"(emoji, index) in reactionEmojis\"\n :key=\"`${emoji}-${index}`\"\n class=\"inline-flex size-4 items-center justify-center text-[16px] leading-none\"\n >\n {{ emoji }}\n </span>\n </span>\n {{ reactionCount }}\n </button>\n <span\n v-if=\"readingTime\"\n class=\"text-on-background dark:text-on-background-dark bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark px-sm rounded-md\"\n >\n {{ readingTime }}\n </span>\n </span>\n <button\n v-if=\"commentsCount > 0 && commentsLabel\"\n type=\"button\"\n class=\"underline cursor-pointer bg-transparent border-0 p-0 typography-caption-regular text-outline dark:text-outline-dark\"\n @click=\"emit('open-comments')\"\n >\n {{ commentsLabel }}\n </button>\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport OrWebMarkdownRender from '@onereach/idw-markdown-renderer';\n\nimport type { FeedMarkdownContentProps } from './types';\n\ndefineOptions({\n name: 'FeedMarkdownContent',\n});\n\nwithDefaults(defineProps<FeedMarkdownContentProps>(), {\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n</script>\n\n<template>\n <OrWebMarkdownRender\n class=\"feed-markdown-content styled-content typography-body-2-regular text-on-background dark:text-on-background-dark\"\n :class=\"contentClass\"\n :text=\"text\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n</template>\n\n<style scoped>\n.styled-content {\n overflow-wrap: break-word;\n}\n</style>\n","export default \"data:image/png;base64,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\"","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\nimport { computed, useSlots } from 'vue';\n\nimport defaultSkillBandUrl from '../../../assets/skill-card-background.png';\nimport { CardSize, SkillCard } from '../../SkillCard';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport type { FeedSkillContentProps } from './types';\n\ndefineOptions({\n name: 'FeedSkillContent',\n});\n\nconst props = withDefaults(defineProps<FeedSkillContentProps>(), {\n skill: undefined,\n skillBackgroundUrl: undefined,\n skillCardSize: CardSize.S,\n showStartSkill: undefined,\n startSkillLabel: undefined,\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n}>();\n\nconst slots = useSlots();\n\nconst hasCustomSkillSlot = computed(() => Boolean(slots.skill));\nconst showSkillBand = computed(\n () => hasCustomSkillSlot.value || Boolean(props.skill),\n);\nconst showStartSkillButton = computed(\n () => props.showStartSkill !== false && Boolean(props.startSkillLabel),\n);\n\nconst skillBandStyle = computed(() => {\n if (!showSkillBand.value) {\n return undefined;\n }\n const url = props.skillBackgroundUrl ?? defaultSkillBandUrl;\n return {\n backgroundImage: `url(${url})`,\n };\n});\n\nfunction onStartSkill() {\n emit('start-skill');\n}\n\nfunction onSkillClick() {\n emit('skill-click');\n}\n</script>\n\n<template>\n <div class=\"feed-skill-content flex flex-col gap-md\">\n <div\n v-if=\"showSkillBand\"\n class=\"w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :style=\"skillBandStyle\"\n >\n <slot name=\"skill\">\n <SkillCard\n v-if=\"skill\"\n :skill=\"skill\"\n :size=\"skillCardSize\"\n @click=\"onSkillClick\"\n />\n </slot>\n </div>\n\n <FeedMarkdownContent\n :text=\"text\"\n :content-class=\"contentClass\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n\n <OrButtonV3\n v-if=\"showStartSkillButton\"\n class=\"w-full md:w-auto\"\n variant=\"outlined\"\n color=\"primary\"\n @click=\"onStartSkill\"\n >\n {{ startSkillLabel }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport {\n FEED_EMBED_SANDBOX,\n FEED_EMBED_SIZE_CLASS,\n type FeedEmbedSize,\n} from '../feedEmbed';\n\ndefineOptions({\n name: 'FeedEmbed',\n});\n\nconst props = withDefaults(defineProps<{\n title: string;\n size?: FeedEmbedSize;\n /** URL for file embeds. Mutually exclusive with `srcdoc`. */\n src?: string;\n /** HTML document for html embeds. Mutually exclusive with `src`. */\n srcdoc?: string;\n}>(), {\n size: 'list',\n src: undefined,\n srcdoc: undefined,\n});\n\nconst iframeClass = computed(() => FEED_EMBED_SIZE_CLASS[props.size]);\nconst hasSource = computed(() => Boolean(props.src || props.srcdoc));\n</script>\n\n<template>\n <div\n v-if=\"hasSource\"\n class=\"feed-embed w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :class=\"size === 'fill' ? 'flex h-full min-h-0 flex-1 flex-col' : undefined\"\n >\n <iframe\n :class=\"iframeClass\"\n :title=\"title\"\n :sandbox=\"FEED_EMBED_SANDBOX\"\n :src=\"src || undefined\"\n :srcdoc=\"srcdoc || undefined\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedHtmlContentProps } from './types';\n\ndefineOptions({\n name: 'FeedHtmlContent',\n});\n\nwithDefaults(defineProps<FeedHtmlContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-html-content\"\n :title=\"title\"\n :size=\"size\"\n :srcdoc=\"content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedFileContentProps } from './types';\n\ndefineOptions({\n name: 'FeedFileContent',\n});\n\nwithDefaults(defineProps<FeedFileContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-file-content\"\n :title=\"title\"\n :size=\"size\"\n :src=\"src\"\n />\n</template>\n","const WHOLE_PLACEHOLDER = /^\\$\\{([a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z0-9_]+)*)\\}$/;\nconst INTERPOLATE = /\\$\\{([a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z0-9_]+)*)\\}/g;\n\nfunction getPath(data: unknown, path: string): unknown {\n if (data == null || typeof data !== 'object') {\n return undefined;\n }\n\n return path.split('.').reduce<unknown>((current, segment) => {\n if (current == null || typeof current !== 'object') {\n return undefined;\n }\n return (current as Record<string, unknown>)[segment];\n }, data);\n}\n\nfunction interpolateString(value: string, data: unknown): unknown {\n const whole = value.trim().match(WHOLE_PLACEHOLDER);\n if (whole) {\n return getPath(data, whole[1]);\n }\n\n return value.replace(INTERPOLATE, (_match, path: string) => {\n const resolved = getPath(data, path);\n if (resolved == null) {\n return '';\n }\n return String(resolved);\n });\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction bindNode(node: unknown, data: unknown): unknown {\n if (typeof node === 'string') {\n return interpolateString(node, data);\n }\n\n if (Array.isArray(node)) {\n return node\n .map((item) => bindNode(item, data))\n .filter((item) => item !== undefined);\n }\n\n if (!isPlainObject(node)) {\n return node;\n }\n\n if (typeof node.$when === 'string') {\n const condition = interpolateString(node.$when, data);\n if (!condition) {\n return undefined;\n }\n }\n\n const next: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (key === '$when') {\n continue;\n }\n const bound = bindNode(value, data);\n if (bound !== undefined) {\n next[key] = bound;\n }\n }\n\n return next;\n}\n\n/**\n * Bind `${path}` placeholders and `$when` conditions.\n * The input may be a template document that is not yet a valid card.\n * Validate the result with {@link validateIdwCard}.\n */\nexport function bindIdwCard<T>(card: T, data: unknown): T {\n return bindNode(card, data) as T;\n}\n","import type { FeedEmbedSize } from '../../components/Feeds/feedEmbed';\nimport type { IdwSpacing, IdwTextStyle, IdwTone } from '../schema';\n\nexport type IdwCardTheme = 'dark' | 'light';\n\nexport type IdwCardHostConfig = {\n theme: IdwCardTheme;\n embedSize: FeedEmbedSize;\n};\n\nexport const DEFAULT_IDW_CARD_HOST_CONFIG: IdwCardHostConfig = {\n theme: 'dark',\n embedSize: 'list',\n};\n\nexport const IDW_SPACING_CLASS: Record<IdwSpacing, string> = {\n none: '',\n xs: 'mt-xs',\n sm: 'mt-sm',\n md: 'mt-md',\n lg: 'mt-lg',\n xl: 'mt-xl',\n};\n\nexport const IDW_TEXT_STYLE_CLASS: Record<IdwTextStyle, string> = {\n caption: 'typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark',\n body: 'typography-body-2-regular text-on-background dark:text-on-background-dark',\n headline: 'typography-headline-3 text-on-background dark:text-on-background-dark',\n};\n\nexport const IDW_TONE_SURFACE_CLASS: Record<IdwTone, string> = {\n default: '',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark rounded-lg p-md',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark rounded-lg p-md',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark rounded-lg p-md',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark rounded-lg p-md',\n};\n\nexport function resolveIdwCardHostConfig(\n overrides?: Partial<IdwCardHostConfig>,\n): IdwCardHostConfig {\n return {\n ...DEFAULT_IDW_CARD_HOST_CONFIG,\n ...overrides,\n };\n}\n","import { inject, type InjectionKey } from 'vue';\n\nexport type IdwCardFormApi = {\n getValue: (name: string) => unknown;\n setValue: (name: string, value: unknown) => void;\n getError: (name: string) => string | undefined;\n isHidden: (id?: string, isVisible?: boolean) => boolean;\n};\n\nexport const IDW_CARD_FORM_KEY: InjectionKey<IdwCardFormApi> = Symbol('idwCardForm');\n\nexport function useIdwCardForm(): IdwCardFormApi {\n const form = inject(IDW_CARD_FORM_KEY);\n if (!form) {\n throw new Error('IdwCard form controls must be rendered inside CardRenderer');\n }\n return form;\n}\n","import { z } from 'zod';\n\nimport { IDW_CARD_SCHEMA, IDW_CARD_VERSION } from '../schema';\n\nimport type { IdwCardTemplate } from './types';\n\nexport const APPROVAL_TEMPLATE_ID = 'approval' as const;\n\nexport const approvalDataSchema = z.object({\n title: z.string(),\n summary: z.string(),\n requester: z.string(),\n dueAt: z.string().optional(),\n facts: z.array(z.object({\n title: z.string(),\n value: z.string(),\n })).optional(),\n approveLabel: z.string().default('Approve'),\n rejectLabel: z.string().default('Reject'),\n});\n\nexport type ApprovalTemplateData = z.infer<typeof approvalDataSchema>;\n\nexport const approvalTemplateCard = {\n type: 'IdwCard',\n schema: IDW_CARD_SCHEMA,\n version: IDW_CARD_VERSION,\n body: [\n {\n type: 'Text',\n text: '${title}',\n textStyle: 'headline',\n },\n {\n type: 'Text',\n text: '${summary}',\n textStyle: 'body',\n spacing: 'sm',\n },\n {\n type: 'FactSet',\n spacing: 'md',\n facts: [\n {\n title: 'Requester',\n value: '${requester}',\n },\n {\n title: 'Due',\n value: '${dueAt}',\n $when: '${dueAt}',\n },\n ],\n },\n {\n type: 'FactSet',\n spacing: 'sm',\n $when: '${facts}',\n facts: '${facts}',\n },\n ],\n actions: [\n {\n type: 'Action',\n verb: 'approve',\n title: '${approveLabel}',\n style: 'primary',\n },\n {\n type: 'Action',\n verb: 'reject',\n title: '${rejectLabel}',\n style: 'destructive',\n },\n ],\n};\n\nexport const approvalTemplate: IdwCardTemplate = {\n id: APPROVAL_TEMPLATE_ID,\n version: '1.0',\n card: approvalTemplateCard,\n dataSchema: approvalDataSchema,\n};\n","import {\n IDW_CARD_SCHEMA,\n IDW_CARD_VERSION,\n type IdwCard,\n} from '../schema';\n\nimport type { CardFromSkillInput } from './types';\n\nfunction card(body: IdwCard['body'], actions?: IdwCard['actions']): IdwCard {\n return {\n type: 'IdwCard',\n schema: IDW_CARD_SCHEMA,\n version: IDW_CARD_VERSION,\n body,\n ...(actions ? { actions } : {}),\n };\n}\n\nexport function cardFromMarkdown(text: string): IdwCard {\n return card([{\n type: 'Text',\n text,\n }]);\n}\n\nexport function cardFromHtml(title: string, content: string): IdwCard {\n return card([{\n type: 'Html',\n title,\n content,\n }]);\n}\n\nexport function cardFromFile(title: string, src: string): IdwCard {\n return card([{\n type: 'File',\n title,\n src,\n }]);\n}\n\nexport function cardFromSkill(input: CardFromSkillInput): IdwCard {\n return card([{\n type: 'Skill',\n text: input.text,\n skill: input.skill,\n startSkillLabel: input.startSkillLabel,\n }]);\n}\n","import { bindIdwCard } from '../bind';\nimport {\n getIdwCardFallbackText,\n validateIdwCard,\n type IdwCard,\n type IdwCardValidationIssue,\n} from '../schema';\n\nimport { approvalTemplate, APPROVAL_TEMPLATE_ID } from './approval';\nimport type { CardRendererSource, IdwCardTemplate } from './types';\n\nexport const IDW_CARD_TEMPLATES: Record<string, IdwCardTemplate> = {\n [APPROVAL_TEMPLATE_ID]: approvalTemplate,\n};\n\nexport function getIdwCardTemplate(id: string): IdwCardTemplate | undefined {\n return IDW_CARD_TEMPLATES[id];\n}\n\nexport type ResolveCardRendererSourceResult =\n | { success: true; card: IdwCard; issues: [] }\n | { success: false; card?: undefined; issues: IdwCardValidationIssue[]; fallbackText?: string };\n\nexport function resolveCardRendererSource(\n source: CardRendererSource,\n): ResolveCardRendererSourceResult {\n if ('card' in source) {\n const result = validateIdwCard(source.card);\n if (result.success) {\n return result;\n }\n return {\n ...result,\n fallbackText: getIdwCardFallbackText(source.card),\n };\n }\n\n const template = getIdwCardTemplate(source.templateId);\n if (!template) {\n return {\n success: false,\n issues: [{\n path: 'templateId',\n message: `Unknown template: ${source.templateId}`,\n }],\n };\n }\n\n const data = template.dataSchema.safeParse(source.data);\n if (!data.success) {\n return {\n success: false,\n issues: data.error.issues.map((issue) => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n };\n }\n\n const bound = bindIdwCard(template.card, data.data);\n return validateIdwCard(bound);\n}\n","import type { IdwCardActionStyle } from '../schema';\n\nexport function idwCardActionButtonProps(style: IdwCardActionStyle = 'default') {\n if (style === 'primary') {\n return {\n variant: 'contained' as const,\n color: 'primary' as const,\n };\n }\n if (style === 'destructive') {\n return {\n variant: 'outlined' as const,\n color: 'danger' as const,\n };\n }\n return {\n variant: 'outlined' as const,\n color: 'primary' as const,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\n\nimport type { IdwCardAction } from '../schema';\nimport { idwCardActionButtonProps } from './actionStyle';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardActionBar',\n});\n\ndefineProps<{\n actions: IdwCardAction[];\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n\nfunction onClick(action: IdwCardAction) {\n emit('action', {\n verb: action.verb,\n title: action.title,\n data: action.data,\n url: action.url,\n skillId: action.skillId,\n targetIds: action.targetIds,\n card: action.card,\n });\n}\n</script>\n\n<template>\n <div class=\"idw-card-action-bar mt-lg flex min-w-0 flex-wrap items-center gap-sm\">\n <OrButtonV3\n v-for=\"(action, index) in actions\"\n :key=\"action.title + index\"\n v-bind=\"idwCardActionButtonProps(action.style)\"\n type=\"button\"\n @click=\"onClick(action)\"\n >\n {{ action.title }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwActionSetElement } from '../../schema';\nimport IdwCardActionBar from '../IdwCardActionBar.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardActionSetElement',\n});\n\ndefineProps<{\n element: IdwActionSetElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <IdwCardActionBar\n :actions=\"element.actions\"\n @action=\"emit('action', $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwBadgeElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardBadgeElement',\n});\n\nconst props = defineProps<{\n element: IdwBadgeElement;\n}>();\n\nconst toneClass: Record<IdwTone, string> = {\n default: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark',\n};\n\nconst badgeClass = computed(() => [\n 'inline-flex w-fit items-center rounded-md px-sm py-xs typography-caption-semibold',\n toneClass[props.element.tone ?? 'emphasis'],\n]);\n</script>\n\n<template>\n <span :class=\"badgeClass\">\n {{ element.text }}\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwColumnSetElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardColumnSetElement',\n});\n\ndefineProps<{\n element: IdwColumnSetElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nfunction columnClass(width?: 'auto' | 'stretch') {\n return width === 'auto' ? 'min-w-0 shrink' : 'min-w-0 flex-1';\n}\n</script>\n\n<template>\n <div class=\"idw-card-column-set flex min-w-0 flex-wrap items-center gap-sm\">\n <div\n v-for=\"(column, columnIndex) in element.columns\"\n :key=\"columnIndex\"\n :class=\"columnClass(column.width)\"\n >\n <IdwCardElementView\n v-for=\"(child, index) in column.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwContainerElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardContainerElement',\n});\n\ndefineProps<{\n element: IdwContainerElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-container flex min-w-0 flex-col\">\n <IdwCardElementView\n v-for=\"(child, index) in element.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwFactSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFactSetElement',\n});\n\ndefineProps<{\n element: IdwFactSetElement;\n}>();\n</script>\n\n<template>\n <dl\n v-if=\"element.facts.length\"\n class=\"idw-card-fact-set m-0 grid grid-cols-[max-content_minmax(0,1fr)] gap-x-md gap-y-sm\"\n >\n <template\n v-for=\"(fact, index) in element.facts\"\n :key=\"`${fact.title}-${index}`\"\n >\n <dt class=\"m-0 typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\">\n {{ fact.title }}\n </dt>\n <dd class=\"m-0 min-w-0 typography-body-2-regular text-on-background dark:text-on-background-dark\">\n {{ fact.value }}\n </dd>\n </template>\n </dl>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedFileContent } from '../../../components/Feeds/FeedFileContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwFileElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFileElement',\n});\n\ndefineProps<{\n element: IdwFileElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedFileContent\n :title=\"element.title\"\n :src=\"element.src\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { FeedHtmlContent } from '../../../components/Feeds/FeedHtmlContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwHtmlElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardHtmlElement',\n});\n\ndefineProps<{\n element: IdwHtmlElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedHtmlContent\n :title=\"element.title\"\n :content=\"element.content\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwIconElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardIconElement',\n});\n\ndefineProps<{\n element: IdwIconElement;\n}>();\n</script>\n\n<template>\n <OrIconV3\n :icon=\"element.icon\"\n class=\"text-on-background dark:text-on-background-dark\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwImageElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageElement',\n});\n\ndefineProps<{\n element: IdwImageElement;\n}>();\n</script>\n\n<template>\n <img\n class=\"idw-card-image max-w-full rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"element.url\"\n :alt=\"element.alt\"\n >\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwImageSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageSetElement',\n});\n\ndefineProps<{\n element: IdwImageSetElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-image-set flex min-w-0 flex-wrap gap-sm\">\n <img\n v-for=\"(image, index) in element.images\"\n :key=\"`${image.url}-${index}`\"\n class=\"size-16 rounded-md object-cover bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"image.url\"\n :alt=\"image.alt\"\n >\n </div>\n</template>\n","export function parseCardDate(value: unknown): Date | undefined {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value;\n }\n if (typeof value !== 'string' || !value.trim()) {\n return undefined;\n }\n if (/^\\d{2}:\\d{2}$/.test(value)) {\n const [hours, minutes] = value.split(':').map(Number);\n const parsed = new Date();\n parsed.setHours(hours, minutes, 0, 0);\n return parsed;\n }\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction pad(value: number) {\n return String(value).padStart(2, '0');\n}\n\nexport function toDateValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${value.getFullYear()}-${pad(value.getMonth() + 1)}-${pad(value.getDate())}`;\n}\n\nexport function toTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${pad(value.getHours())}:${pad(value.getMinutes())}`;\n}\n\nexport function toDateTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return value.toISOString();\n}\n","<script setup lang=\"ts\">\nimport {\n OrCheckboxV3,\n OrDatePickerV3,\n OrDateTimePickerV3,\n OrInputV3,\n OrRadioV3,\n OrRangeSliderV3,\n OrRatingV3,\n OrSelectV3,\n OrSliderV3,\n OrSwitchV3,\n OrTextareaV3,\n OrTimePickerV3,\n} from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport { parseCardDate, toDateTimeValue, toDateValue, toTimeValue } from '../../form/dates';\nimport { useIdwCardForm } from '../../form/formContext';\nimport type { IdwCardInputElement, IdwLocationValue } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardInputElement',\n});\n\nconst props = defineProps<{\n element: IdwCardInputElement;\n}>();\n\nconst form = useIdwCardForm();\n\nconst error = computed(() => form.getError(props.element.name));\nconst model = computed(() => form.getValue(props.element.name));\n\nconst textType = computed(() => (\n props.element.type === 'Input.Text' && props.element.style === 'password' ? 'password' : 'text'\n));\n\nconst textInputMode = computed(() => {\n if (props.element.type !== 'Input.Text') {\n return undefined;\n }\n if (props.element.style === 'email') {\n return 'email';\n }\n if (props.element.style === 'url') {\n return 'url';\n }\n if (props.element.style === 'tel') {\n return 'tel';\n }\n return undefined;\n});\n\nconst stringValue = computed(() => (typeof model.value === 'string' ? model.value : ''));\nconst selectValue = computed(() => model.value as string | string[] | undefined);\nconst radioValue = computed(() => (\n typeof model.value === 'string' || typeof model.value === 'number' ? model.value : undefined\n));\n\nconst selectOptions = computed(() => {\n if (props.element.type !== 'Input.ChoiceSet') {\n return [];\n }\n return props.element.choices.map((choice) => ({\n label: choice.title,\n value: choice.value,\n disabled: choice.disabled,\n }));\n});\n\nconst location = computed<IdwLocationValue>(() => {\n const value = model.value;\n if (value && typeof value === 'object') {\n return value as IdwLocationValue;\n }\n return { address: '' };\n});\n\nfunction set(value: unknown) {\n form.setValue(props.element.name, value);\n}\n\nfunction toggleChoice(choiceValue: string, checked: boolean) {\n const current = Array.isArray(model.value) ? [...model.value as string[]] : [];\n const next = checked\n ? Array.from(new Set([...current, choiceValue]))\n : current.filter((item) => item !== choiceValue);\n set(next);\n}\n\nfunction setLocation(patch: IdwLocationValue) {\n set({ ...location.value, ...patch });\n}\n</script>\n\n<template>\n <div class=\"idw-card-input flex min-w-0 flex-col gap-xs\">\n <OrTextareaV3\n v-if=\"element.type === 'Input.Text' && element.multiline\"\n :model-value=\"stringValue\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n :rows=\"element.rows || 3\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Text'\"\n :model-value=\"stringValue\"\n :type=\"textType\"\n :inputmode=\"textInputMode\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Number'\"\n :model-value=\"model as number | string | undefined\"\n type=\"number\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set($event === '' || $event == null ? undefined : Number($event))\"\n />\n <OrSwitchV3\n v-else-if=\"element.type === 'Input.Toggle'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrCheckboxV3\n v-else-if=\"element.type === 'Input.Checkbox'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrSelectV3\n v-else-if=\"element.type === 'Input.ChoiceSet' && element.style !== 'expanded'\"\n :model-value=\"selectValue\"\n :options=\"selectOptions\"\n :multiple=\"element.multi\"\n :enable-search=\"element.style === 'filtered'\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <div\n v-else-if=\"element.type === 'Input.ChoiceSet'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <template v-if=\"element.multi\">\n <OrCheckboxV3\n v-for=\"choice in element.choices\"\n :key=\"choice.value\"\n :model-value=\"Array.isArray(model) && (model as string[]).includes(choice.value)\"\n :label=\"choice.title\"\n :disabled=\"element.disabled || choice.disabled\"\n @update:model-value=\"toggleChoice(choice.value, $event)\"\n />\n </template>\n <template v-else>\n <OrRadioV3\n v-for=\"choice in element.choices\"\n :key=\"choice.value\"\n :model-value=\"radioValue\"\n :value=\"choice.value\"\n :label=\"choice.title\"\n :disabled=\"element.disabled || choice.disabled\"\n @update:model-value=\"set\"\n />\n </template>\n <span\n v-if=\"error || element.hint\"\n class=\"typography-caption-regular\"\n :class=\"error\n ? 'text-error dark:text-error-dark'\n : 'text-on-surface-variant dark:text-on-surface-variant-dark'\"\n >\n {{ error || element.hint }}\n </span>\n </div>\n <OrDatePickerV3\n v-else-if=\"element.type === 'Input.Date'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateValue($event))\"\n />\n <OrTimePickerV3\n v-else-if=\"element.type === 'Input.Time'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toTimeValue($event))\"\n />\n <OrDateTimePickerV3\n v-else-if=\"element.type === 'Input.DateTime'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateTimeValue($event))\"\n />\n <div\n v-else-if=\"element.type === 'Input.Slider'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrSliderV3\n :model-value=\"Number(model ?? element.min ?? 0)\"\n :min-value=\"element.min\"\n :max-value=\"element.max\"\n :step=\"element.step\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Range'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrRangeSliderV3\n :model-value=\"(Array.isArray(model) ? model : [element.min ?? 0, element.max ?? 100]) as [number, number]\"\n :min-value=\"element.min\"\n :max-value=\"element.max\"\n :step=\"element.step\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Rating'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrRatingV3\n :model-value=\"Number(model ?? 0)\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Location'\"\n class=\"flex flex-col gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.address || ''\"\n :label=\"element.label || 'Location'\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ address: String($event || '') })\"\n />\n <div\n v-if=\"element.includeCoordinates\"\n class=\"grid grid-cols-2 gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.lat\"\n type=\"number\"\n label=\"Latitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lat: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n <OrInputV3\n :model-value=\"location.lng\"\n type=\"number\"\n label=\"Longitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lng: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwMediaElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardMediaElement',\n});\n\ndefineProps<{\n element: IdwMediaElement;\n}>();\n</script>\n\n<template>\n <video\n v-if=\"(element.mediaType || 'video') === 'video'\"\n class=\"idw-card-media w-full rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"element.url\"\n :poster=\"element.poster\"\n :title=\"element.title\"\n controls\n />\n <audio\n v-else\n class=\"idw-card-media w-full\"\n :src=\"element.url\"\n :title=\"element.title\"\n controls\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport type { IdwProgressElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardProgressElement',\n});\n\nconst props = defineProps<{\n element: IdwProgressElement;\n}>();\n\nconst toneColor: Record<IdwTone, ProgressColor> = {\n default: ProgressColor.Primary,\n emphasis: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n attention: ProgressColor.Error,\n};\n\nconst color = computed(() => toneColor[props.element.tone ?? 'default']);\nconst type = computed(() => (\n props.element.variant === 'circle' ? ProgressType.Circle : ProgressType.Linear\n));\n</script>\n\n<template>\n <div class=\"idw-card-progress flex min-w-0 flex-col gap-sm\">\n <span\n v-if=\"element.label\"\n class=\"typography-caption-semibold text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrProgressV3\n class=\"w-full\"\n :value=\"element.value\"\n :max-value=\"element.max ?? 100\"\n :type=\"type\"\n :color=\"color\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedSkillContent } from '../../../components/Feeds/FeedSkillContent';\nimport type { IdwSkillElement } from '../../schema';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardSkillElement',\n});\n\nconst props = defineProps<{\n element: IdwSkillElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nfunction onStartSkill() {\n emit('action', {\n verb: 'start-skill',\n title: props.element.startSkillLabel || 'Start skill',\n skillId: props.element.skill?.id,\n });\n}\n</script>\n\n<template>\n <FeedSkillContent\n :text=\"element.text\"\n :skill=\"element.skill\"\n :start-skill-label=\"element.startSkillLabel\"\n @start-skill=\"onStartSkill\"\n @skill-click=\"emit('skill-click')\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwTableElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTableElement',\n});\n\ndefineProps<{\n element: IdwTableElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-table w-full min-w-0 overflow-x-auto rounded-lg bg-surface-2 dark:bg-surface-2-dark\">\n <table class=\"w-full border-collapse\">\n <thead>\n <tr>\n <th\n v-for=\"column in element.columns\"\n :key=\"column.title\"\n class=\"px-md py-sm text-left typography-caption-semibold text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ column.title }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(row, rowIndex) in element.rows\"\n :key=\"rowIndex\"\n class=\"border-t border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark\"\n >\n <td\n v-for=\"(cell, cellIndex) in row\"\n :key=\"cellIndex\"\n class=\"px-md py-sm typography-body-2-regular text-on-background dark:text-on-background-dark\"\n >\n {{ cell }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { FeedMarkdownContent } from '../../../components/Feeds/FeedMarkdownContent';\nimport { IDW_TEXT_STYLE_CLASS, IDW_TONE_SURFACE_CLASS } from '../../host';\nimport type { IdwTextElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTextElement',\n});\n\nconst props = defineProps<{\n element: IdwTextElement;\n}>();\n\nconst contentClass = computed(() => {\n const textStyle = props.element.textStyle ?? 'body';\n const tone = props.element.tone ?? 'default';\n return [\n IDW_TEXT_STYLE_CLASS[textStyle],\n IDW_TONE_SURFACE_CLASS[tone],\n '[&_:where(p,ul,ol,h1,h2,h3,h4)]:m-0 [&_p+_p]:mt-sm',\n ].filter(Boolean).join(' ');\n});\n</script>\n\n<template>\n <FeedMarkdownContent\n :text=\"element.text\"\n :content-class=\"contentClass\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { useIdwCardForm } from '../form/formContext';\nimport { IDW_SPACING_CLASS, IDW_TONE_SURFACE_CLASS, type IdwCardHostConfig } from '../host';\nimport { isIdwCardInputElement, type IdwCardElement } from '../schema';\nimport ActionSetElement from './elements/ActionSetElement.vue';\nimport BadgeElement from './elements/BadgeElement.vue';\nimport ColumnSetElement from './elements/ColumnSetElement.vue';\nimport ContainerElement from './elements/ContainerElement.vue';\nimport FactSetElement from './elements/FactSetElement.vue';\nimport FileElement from './elements/FileElement.vue';\nimport HtmlElement from './elements/HtmlElement.vue';\nimport IconElement from './elements/IconElement.vue';\nimport ImageElement from './elements/ImageElement.vue';\nimport ImageSetElement from './elements/ImageSetElement.vue';\nimport InputElement from './elements/InputElement.vue';\nimport MediaElement from './elements/MediaElement.vue';\nimport ProgressElement from './elements/ProgressElement.vue';\nimport SkillElement from './elements/SkillElement.vue';\nimport TableElement from './elements/TableElement.vue';\nimport TextElement from './elements/TextElement.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardElementView',\n});\n\nconst props = defineProps<{\n element: IdwCardElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst form = useIdwCardForm();\n\nconst isHidden = computed(() => form.isHidden(props.element.id, props.element.isVisible));\n\nconst spacingClass = computed(() => {\n const spacing = props.element.spacing ?? 'none';\n return IDW_SPACING_CLASS[spacing];\n});\n\nconst toneClass = computed(() => {\n if (props.element.type !== 'Container') {\n return '';\n }\n return IDW_TONE_SURFACE_CLASS[props.element.tone ?? 'default'];\n});\n\nconst inputElement = computed(() => (\n isIdwCardInputElement(props.element) ? props.element : undefined\n));\n</script>\n\n<template>\n <div\n v-if=\"!isHidden\"\n class=\"idw-card-element min-w-0\"\n :class=\"[\n spacingClass,\n toneClass,\n element.separator ? 'border-t border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark pt-md' : '',\n (element.type === 'Html' || element.type === 'File') && hostConfig.embedSize === 'fill'\n ? 'flex-1 min-h-0 flex flex-col'\n : '',\n ]\"\n :data-element-type=\"element.type\"\n >\n <InputElement\n v-if=\"inputElement\"\n :element=\"inputElement\"\n />\n <TextElement\n v-else-if=\"element.type === 'Text'\"\n :element=\"element\"\n />\n <ImageElement\n v-else-if=\"element.type === 'Image'\"\n :element=\"element\"\n />\n <FactSetElement\n v-else-if=\"element.type === 'FactSet'\"\n :element=\"element\"\n />\n <ContainerElement\n v-else-if=\"element.type === 'Container'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ColumnSetElement\n v-else-if=\"element.type === 'ColumnSet'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <HtmlElement\n v-else-if=\"element.type === 'Html'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <FileElement\n v-else-if=\"element.type === 'File'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <SkillElement\n v-else-if=\"element.type === 'Skill'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ActionSetElement\n v-else-if=\"element.type === 'ActionSet'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n />\n <ProgressElement\n v-else-if=\"element.type === 'Progress'\"\n :element=\"element\"\n />\n <BadgeElement\n v-else-if=\"element.type === 'Badge'\"\n :element=\"element\"\n />\n <IconElement\n v-else-if=\"element.type === 'Icon'\"\n :element=\"element\"\n />\n <ImageSetElement\n v-else-if=\"element.type === 'ImageSet'\"\n :element=\"element\"\n />\n <MediaElement\n v-else-if=\"element.type === 'Media'\"\n :element=\"element\"\n />\n <TableElement\n v-else-if=\"element.type === 'Table'\"\n :element=\"element\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide, reactive, ref, watch } from 'vue';\n\nimport { IDW_CARD_FORM_KEY } from '../form/formContext';\nimport { resolveIdwCardHostConfig, type IdwCardHostConfig } from '../host';\nimport {\n collectInitialInputValues,\n isElementVisible,\n isInputEmpty,\n listIdwCardInputs,\n type IdwCard,\n} from '../schema';\nimport type { CardRendererSource } from '../templates';\nimport { resolveCardRendererSource } from '../templates';\nimport IdwCardActionBar from './IdwCardActionBar.vue';\nimport IdwCardElementView from './IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'CardRenderer',\n});\n\nconst props = withDefaults(defineProps<{\n source: CardRendererSource;\n hostConfig?: Partial<IdwCardHostConfig>;\n}>(), {\n hostConfig: undefined,\n});\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst resolvedHostConfig = computed(() => resolveIdwCardHostConfig(props.hostConfig));\nconst resolved = computed(() => resolveCardRendererSource(props.source));\nconst card = computed(() => (resolved.value.success ? resolved.value.card : undefined));\n\nconst values = reactive<Record<string, unknown>>({});\nconst errors = reactive<Record<string, string>>({});\nconst hiddenIds = ref(new Set<string>());\nconst openShowCards = ref<Record<string, IdwCard>>({});\n\nfunction resetForm() {\n Object.keys(values).forEach((key) => {\n delete values[key];\n });\n Object.keys(errors).forEach((key) => {\n delete errors[key];\n });\n hiddenIds.value = new Set();\n openShowCards.value = {};\n if (!card.value) {\n return;\n }\n Object.assign(values, collectInitialInputValues(card.value.body));\n}\n\nwatch(card, resetForm, { immediate: true });\n\nprovide(IDW_CARD_FORM_KEY, {\n getValue: (name) => values[name],\n setValue: (name, value) => {\n values[name] = value;\n delete errors[name];\n },\n getError: (name) => errors[name],\n isHidden: (id, isVisible) => !isElementVisible({ id, isVisible }, hiddenIds.value),\n});\n\nconst errorMessage = computed(() => {\n if (resolved.value.success) {\n return undefined;\n }\n return resolved.value.fallbackText || 'This card could not be displayed.';\n});\n\nfunction validateRequired(): boolean {\n if (!card.value) {\n return true;\n }\n let valid = true;\n for (const input of listIdwCardInputs(card.value.body, hiddenIds.value)) {\n if (!input.visible || !input.required) {\n continue;\n }\n if (isInputEmpty(values[input.name])) {\n errors[input.name] = input.errorMessage || 'This field is required.';\n valid = false;\n }\n }\n return valid;\n}\n\nfunction onAction(event: IdwCardActionEvent) {\n if (event.verb === 'toggle-visibility' && event.targetIds?.length) {\n const next = new Set(hiddenIds.value);\n for (const id of event.targetIds) {\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n hiddenIds.value = next;\n }\n\n if (event.verb === 'show-card' && event.card) {\n const next = { ...openShowCards.value };\n if (next[event.title]) {\n delete next[event.title];\n } else {\n next[event.title] = event.card;\n }\n openShowCards.value = next;\n }\n\n if (event.verb === 'submit' || event.verb === 'approve' || event.verb === 'reject') {\n if (!validateRequired()) {\n return;\n }\n }\n\n emit('action', {\n ...event,\n inputs: { ...values },\n });\n}\n</script>\n\n<template>\n <section\n class=\"idw-card flex min-w-0 flex-col bg-surface dark:bg-surface-dark text-on-surface dark:text-on-surface-dark\"\n :class=\"[\n resolvedHostConfig.theme === 'dark' ? 'dark' : undefined,\n resolvedHostConfig.embedSize === 'fill' ? 'flex-1 min-h-0' : undefined,\n ]\"\n data-testid=\"idw-card\"\n >\n <template v-if=\"card\">\n <IdwCardElementView\n v-for=\"(element, index) in card.body\"\n :key=\"element.id || index\"\n :element=\"element\"\n :host-config=\"resolvedHostConfig\"\n @action=\"onAction\"\n @skill-click=\"emit('skill-click')\"\n />\n <IdwCardActionBar\n v-if=\"card.actions?.length\"\n :actions=\"card.actions\"\n @action=\"onAction\"\n />\n <CardRenderer\n v-for=\"(nestedCard, title) in openShowCards\"\n :key=\"`show-${title}`\"\n :source=\"{ card: nestedCard }\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </template>\n <p\n v-else\n class=\"m-0 typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n data-testid=\"idw-card-fallback\"\n >\n {{ errorMessage }}\n </p>\n </section>\n</template>\n","<script setup lang=\"ts\">\nimport { CardRenderer, type IdwCardActionEvent, type IdwCardHostConfig } from '../../../idw-card';\nimport { FeedFileContent } from '../FeedFileContent';\nimport { FeedHtmlContent } from '../FeedHtmlContent';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport { FeedSkillContent } from '../FeedSkillContent';\nimport type { FeedListItem } from './types';\n\ndefineOptions({\n name: 'FeedListItemBody',\n});\n\ndefineProps<{\n item: FeedListItem;\n cardHostConfig?: Partial<IdwCardHostConfig>;\n}>();\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <CardRenderer\n v-if=\"item.type === 'card'\"\n :source=\"item.source\"\n :host-config=\"cardHostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedFileContent\n v-else-if=\"item.type === 'file'\"\n :title=\"item.title\"\n :src=\"item.fileUrl\"\n />\n <FeedHtmlContent\n v-else-if=\"item.type === 'html'\"\n :title=\"item.title\"\n :content=\"item.content\"\n />\n <FeedSkillContent\n v-else-if=\"item.type === 'skill'\"\n :text=\"item.content\"\n :skill=\"item.skill\"\n :skill-background-url=\"item.skillBackgroundUrl\"\n :skill-card-size=\"item.skillCardSize\"\n :start-skill-label=\"item.startSkillLabel\"\n @start-skill=\"emit('start-skill')\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedMarkdownContent\n v-else\n :text=\"item.content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots } from 'vue';\n\nimport { FeedItemBase } from '../FeedItemBase';\nimport type { FeedItemControl } from '../FeedItemBase/types';\nimport type { IdwCardActionEvent } from '../../../idw-card';\nimport FeedListItemBody from './FeedListItemBody.vue';\nimport type { FeedListItem, FeedListProps } from './types';\n\ndefineOptions({\n name: 'FeedList',\n});\n\nconst props = withDefaults(defineProps<FeedListProps>(), {\n loading: false,\n loadingMore: false,\n emptyLabel: 'No posts yet',\n controlLabels: undefined,\n reachBottomOffset: 500,\n itemClass: undefined,\n});\n\nconst emit = defineEmits<{\n 'reach-bottom': [];\n fullscreen: [item: FeedListItem];\n 'start-skill': [item: FeedListItem];\n 'skill-click': [item: FeedListItem];\n action: [item: FeedListItem, event: IdwCardActionEvent];\n 'control-click': [item: FeedListItem, control: FeedItemControl];\n expand: [item: FeedListItem];\n collapse: [item: FeedListItem];\n 'update:item-expanded': [item: FeedListItem, expanded: boolean];\n}>();\n\nconst slots = useSlots();\n\nconst hasHeader = computed(() => Boolean(slots.header));\nconst hasEmptySlot = computed(() => Boolean(slots.empty));\nconst showEmpty = computed(() => !props.loading && props.items.length === 0);\n\n/** Edge-trigger: only emit when crossing into the near-bottom zone. */\nconst wasNearBottom = ref(false);\n\nfunction isHtmlOrFile(item: FeedListItem): boolean {\n return item.type === 'html' || item.type === 'file';\n}\n\nfunction itemFullscreenControl(item: FeedListItem): boolean {\n if (typeof item.fullscreenControl === 'boolean') {\n return item.fullscreenControl;\n }\n return isHtmlOrFile(item);\n}\n\nfunction itemClassFor(item: FeedListItem): string | undefined {\n const unconstrained = isHtmlOrFile(item)\n ? '[&_.feed-item-base__body]:!max-h-none'\n : undefined;\n if (props.itemClass && unconstrained) {\n return `${props.itemClass} ${unconstrained}`;\n }\n return props.itemClass ?? unconstrained;\n}\n\nfunction onScroll(event: Event) {\n const el = event.target as HTMLElement | null;\n if (!el || props.loading || props.loadingMore) {\n return;\n }\n\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n const nearBottom = distanceFromBottom <= props.reachBottomOffset;\n\n if (nearBottom && !wasNearBottom.value) {\n emit('reach-bottom');\n }\n\n wasNearBottom.value = nearBottom;\n}\n</script>\n\n<template>\n <section class=\"feed-list flex h-full min-h-0 flex-col overflow-hidden\">\n <div\n v-if=\"hasHeader\"\n class=\"feed-list__header shrink-0\"\n >\n <slot name=\"header\" />\n </div>\n\n <div\n class=\"feed-list__scroll flex min-h-0 flex-1 flex-col gap-y-md overflow-y-auto\"\n @scroll.passive=\"onScroll\"\n >\n <div\n v-if=\"loading\"\n class=\"flex flex-1 items-center justify-center py-xl\"\n >\n <slot name=\"loading\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n\n <template v-else>\n <div\n v-if=\"showEmpty\"\n class=\"py-xl text-center typography-headline-4 text-on-background dark:text-on-background-dark\"\n >\n <slot\n v-if=\"hasEmptySlot\"\n name=\"empty\"\n />\n <template v-else>\n {{ emptyLabel }}\n </template>\n </div>\n\n <FeedItemBase\n v-for=\"item in items\"\n :id=\"item.id\"\n :key=\"item.id\"\n :class=\"itemClassFor(item)\"\n :title=\"item.title\"\n :short-content=\"item.shortContent\"\n :timestamp=\"item.timestamp\"\n :timestamp-datetime=\"item.timestampDatetime\"\n :source=\"item.source\"\n :is-new=\"item.isNew\"\n :expandable=\"item.expandable !== false\"\n :fullscreen-control=\"itemFullscreenControl(item)\"\n :mention-control=\"item.mentionControl !== false\"\n :control-labels=\"controlLabels\"\n @fullscreen=\"emit('fullscreen', item)\"\n @control-click=\"(control) => emit('control-click', item, control)\"\n @expand=\"emit('expand', item)\"\n @collapse=\"emit('collapse', item)\"\n @update:expanded=\"(expanded) => emit('update:item-expanded', item, expanded)\"\n >\n <template #body>\n <FeedListItemBody\n :item=\"item\"\n :card-host-config=\"cardHostConfig\"\n @start-skill=\"emit('start-skill', item)\"\n @skill-click=\"emit('skill-click', item)\"\n @action=\"(event) => emit('action', item, event)\"\n />\n </template>\n\n <template\n v-if=\"$slots.actions\"\n #actions\n >\n <slot\n name=\"actions\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.controls\"\n #controls\n >\n <slot\n name=\"controls\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.footer\"\n #footer\n >\n <slot\n name=\"footer\"\n :item=\"item\"\n />\n </template>\n </FeedItemBase>\n\n <div\n v-if=\"loadingMore\"\n class=\"flex justify-center py-md\"\n >\n <slot name=\"loading-more\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n </template>\n </div>\n </section>\n</template>\n"],"names":["formatIdwSummary","summary","CardSize","CARD_SIZE","props","__props","sizeClasses","computed","cardImageStyles","rootClasses","classes","_createElementBlock","_openBlock","_hoisted_2","_createVNode","_unref","OrLoaderV3","_createElementVNode","_hoisted_3","_hoisted_4","_normalizeClass","_toDisplayString","_hoisted_5","_renderSlot","_ctx","FEED_EMBED_SANDBOX","FEED_EMBED_SIZE_CLASS","formatFeedReadingTime","text","words","minutes","hours","remainingMinutes","SHOW_MORE_LABEL","SHOW_LESS_LABEL","DEFAULT_CONTROL_LABELS","emit","__emit","slots","useSlots","isExpanded","ref","hasMountedBody","isBodyVisible","watch","visible","titleId","bodyId","shellClass","resolvedControlLabels","hasActions","hasFooter","hasBody","showExpandControl","showItemActions","showActionsRow","showFooter","setExpanded","next","toggleExpanded","onControlClick","control","onFullscreenClick","_hoisted_6","_hoisted_7","_createBlock","OrIconButtonV3","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_13","OrButtonV3","_hoisted_14","_hoisted_15","reactionCount","reactionEmojis","commentsCount","commentsLabel","readingTime","hasContent","_hoisted_1","_Fragment","_renderList","emoji","index","_createTextVNode","OrWebMarkdownRender","defaultSkillBandUrl","hasCustomSkillSlot","showSkillBand","showStartSkillButton","skillBandStyle","onStartSkill","onSkillClick","SkillCard","FeedMarkdownContent","iframeClass","hasSource","FeedEmbed","WHOLE_PLACEHOLDER","INTERPOLATE","getPath","data","path","current","segment","interpolateString","value","whole","_match","resolved","isPlainObject","bindNode","node","item","key","bound","bindIdwCard","card","DEFAULT_IDW_CARD_HOST_CONFIG","IDW_SPACING_CLASS","IDW_TEXT_STYLE_CLASS","IDW_TONE_SURFACE_CLASS","resolveIdwCardHostConfig","overrides","IDW_CARD_FORM_KEY","useIdwCardForm","form","inject","APPROVAL_TEMPLATE_ID","approvalDataSchema","z","approvalTemplateCard","IDW_CARD_SCHEMA","IDW_CARD_VERSION","approvalTemplate","body","actions","cardFromMarkdown","cardFromHtml","title","content","cardFromFile","src","cardFromSkill","input","IDW_CARD_TEMPLATES","getIdwCardTemplate","id","resolveCardRendererSource","source","result","validateIdwCard","getIdwCardFallbackText","template","issue","idwCardActionButtonProps","style","onClick","action","_mergeProps","$event","IdwCardActionBar","_cache","toneClass","badgeClass","columnClass","width","column","columnIndex","child","IdwCardElementView","fact","FeedFileContent","FeedHtmlContent","OrIconV3","image","parseCardDate","parsed","pad","toDateValue","toTimeValue","toDateTimeValue","error","model","textType","textInputMode","stringValue","selectValue","radioValue","selectOptions","choice","location","set","toggleChoice","choiceValue","checked","setLocation","patch","OrTextareaV3","OrInputV3","OrSwitchV3","OrCheckboxV3","OrSelectV3","OrRadioV3","OrDatePickerV3","OrTimePickerV3","OrDateTimePickerV3","OrSliderV3","OrRangeSliderV3","OrRatingV3","toneColor","ProgressColor","color","type","ProgressType","OrProgressV3","_a","FeedSkillContent","row","rowIndex","cell","cellIndex","contentClass","textStyle","tone","isHidden","spacingClass","spacing","inputElement","isIdwCardInputElement","InputElement","TextElement","ImageElement","FactSetElement","ContainerElement","ColumnSetElement","HtmlElement","FileElement","SkillElement","ActionSetElement","ProgressElement","BadgeElement","IconElement","ImageSetElement","MediaElement","TableElement","resolvedHostConfig","values","reactive","errors","hiddenIds","openShowCards","resetForm","collectInitialInputValues","provide","name","isVisible","isElementVisible","errorMessage","validateRequired","valid","listIdwCardInputs","isInputEmpty","onAction","event","element","nestedCard","_component_CardRenderer","CardRenderer","hasHeader","hasEmptySlot","showEmpty","wasNearBottom","isHtmlOrFile","itemFullscreenControl","itemClassFor","unconstrained","onScroll","el","nearBottom","FeedItemBase","expanded","FeedListItemBody","$slots"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/format-idw-summary.ts","../../src/components/SkillCard/types.ts","../../src/components/SkillCard/SkillCard.vue","../../src/components/Feeds/feedEmbed.ts","../../src/components/Feeds/formatFeedReadingTime.ts","../../src/components/Feeds/FeedItemBase/FeedItemBase.vue","../../src/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue","../../src/components/Feeds/FeedMarkdownContent/FeedMarkdownContent.vue","../../src/assets/skill-card-background.png","../../src/components/Feeds/FeedSkillContent/FeedSkillContent.vue","../../src/components/Feeds/FeedEmbed/FeedEmbed.vue","../../src/components/Feeds/FeedHtmlContent/FeedHtmlContent.vue","../../src/components/Feeds/FeedFileContent/FeedFileContent.vue","../../src/idw-card/host/hostConfig.ts","../../src/idw-card/form/formContext.ts","../../src/idw-card/templates/compile.ts","../../src/idw-card/renderer/actionStyle.ts","../../src/idw-card/renderer/IdwCardActionBar.vue","../../src/idw-card/renderer/elements/ActionSetElement.vue","../../src/idw-card/renderer/elements/BadgeElement.vue","../../src/idw-card/renderer/elements/ColumnSetElement.vue","../../src/idw-card/renderer/elements/ContainerElement.vue","../../src/idw-card/renderer/elements/FactSetElement.vue","../../src/idw-card/renderer/elements/FileElement.vue","../../src/idw-card/renderer/elements/HtmlElement.vue","../../src/idw-card/renderer/elements/IconElement.vue","../../src/idw-card/renderer/elements/ImageElement.vue","../../src/idw-card/renderer/elements/ImageSetElement.vue","../../src/idw-card/form/dates.ts","../../src/idw-card/renderer/elements/InputElement.vue","../../src/idw-card/renderer/elements/MediaElement.vue","../../src/idw-card/renderer/elements/ProgressElement.vue","../../src/idw-card/renderer/elements/SkillElement.vue","../../src/idw-card/renderer/elements/TableElement.vue","../../src/idw-card/renderer/elements/TextElement.vue","../../src/idw-card/renderer/IdwCardElementView.vue","../../src/idw-card/renderer/CardRenderer.vue","../../src/components/Feeds/FeedList/FeedListItemBody.vue","../../src/components/Feeds/FeedList/FeedList.vue"],"sourcesContent":["import type { IdwSummary } from '@onereach/idw-contracts';\n\n/**\n * Formats an IDW summary for display in the UI.\n * Replace with real component exports as the library grows.\n */\nexport function formatIdwSummary(summary: IdwSummary): string {\n return `${summary.name} (${summary.id})`;\n}\n","import type { IdwCardSkillData } from '@onereach/idw-contracts';\n\nexport enum CardSize {\n XS = 'xs',\n S = 's',\n L = 'l',\n}\n\n/** Minimal skill fields required to render {@link SkillCard}. */\nexport type SkillCardData = IdwCardSkillData;\n\nexport type SkillCardProps = {\n skill: SkillCardData;\n selected?: boolean;\n disabled?: boolean;\n loading?: boolean;\n size?: CardSize;\n interactive?: boolean;\n};\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport {\n CardSize,\n type SkillCardProps,\n} from './types';\n\ndefineOptions({\n name: 'SkillCard',\n});\n\nconst CARD_SIZE = {\n [CardSize.XS]: {\n container: ['w-[128px]', 'h-[128px]', 'p-md+', 'gap-[17px]'],\n domain: ['text-[12px] leading-[16px]'],\n title: ['text-[16px] leading-[20px] line-clamp-3'],\n },\n [CardSize.S]: {\n container: ['w-[163px]', 'h-[163px]', 'p-md+', 'gap-[17px]'],\n domain: ['typography-caption-regular'],\n title: ['text-[20px] leading-[24px] line-clamp-4'],\n },\n [CardSize.L]: {\n container: ['w-[240px]', 'h-[240px]', 'p-lg', 'gap-md+'],\n domain: ['typography-body-2-regular'],\n title: ['text-[30px] leading-[36px] line-clamp-5'],\n },\n};\n\nconst props = withDefaults(defineProps<SkillCardProps>(), {\n selected: false,\n disabled: false,\n loading: false,\n size: CardSize.L,\n interactive: true,\n});\n\nconst sizeClasses = computed(() => {\n return CARD_SIZE[props.size] || CARD_SIZE[CardSize.L];\n});\n\nconst cardImageStyles = computed(() => {\n return {\n backgroundImage: props.disabled ? undefined : `url(${props.skill.image})`,\n backgroundPosition: '15px 15px',\n backgroundSize: '200%',\n };\n});\n\nconst rootClasses = computed(() => {\n const classes = [\n 'idw-skill-card overflow-hidden',\n 'bg-surface-1 dark:bg-surface-1-dark',\n 'shadow-card dark:shadow-card-dark',\n\n 'rounded-[24px]',\n ...sizeClasses.value.container,\n ];\n\n if (props.disabled) {\n classes.push(\n 'text-outline dark:text-outline-dark',\n 'select-none',\n );\n } else {\n classes.push(\n 'text-black dark:text-white',\n );\n\n if (props.interactive) {\n classes.push('cursor-pointer');\n }\n }\n\n return classes;\n});\n</script>\n\n<template>\n <div\n :class=\"rootClasses\"\n :data-interactive=\"props.interactive\"\n :data-disabled=\"props.disabled\"\n :data-selected=\"props.selected\"\n :style=\"cardImageStyles\"\n >\n <div\n v-if=\"props.loading\"\n class=\"absolute left-0 top-0 w-full h-full z-10 flex items-center justify-center bg-on-disabled-dark\"\n >\n <OrLoaderV3 type=\"circle\" />\n </div>\n\n <div class=\"layout-column justify-between h-full w-full relative z-[2]\">\n <div class=\"grid grid-cols-[1fr_auto] items-start gap-xs\">\n <span\n class=\"truncate idw-skill-card__domain\"\n :class=\"sizeClasses.domain\"\n >\n {{ skill.domain }}\n </span>\n <div class=\"idw-skill-card__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <span\n class=\"idw-skill-card__title\"\n :class=\"sizeClasses.title\"\n >\n {{ skill.name }}\n </span>\n </div>\n </div>\n</template>\n\n<style>\n@import 'https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap';\n</style>\n\n<style scoped lang=\"scss\">\n.idw-skill-card {\n position: relative;\n z-index: 0;\n\n &__title,\n &__domain {\n font-family: Outfit, sans-serif !important;\n }\n\n &__title {\n font-weight: 700;\n }\n\n &::before {\n position: absolute;\n inset: 0;\n content: '';\n // stylelint-disable-next-line\n background: linear-gradient(to bottom, rgba(#000, 0.3), rgba(#000, 0));\n\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n\n &:not([data-disabled=true]):not([data-interactive=false]) {\n &.selected::before,\n &[data-selected=true]::before,\n &:hover::before {\n opacity: 1;\n }\n\n &.selected::before,\n &[data-selected=true]::before {\n // stylelint-disable-next-line\n background: rgba(#000, 0.3);\n }\n\n &::after {\n position: absolute;\n inset: 0;\n content: '';\n\n border: 3px solid transparent;\n border-radius: 24px;\n transition: border-color 0.3s ease-in-out;\n }\n\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary, #5b8def);\n }\n\n :global(.dark) &,\n :global([data-theme='dark']) & {\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary-dark, #5b8def);\n }\n }\n }\n}\n</style>\n","/** Shared sandbox for feed HTML/file embeds (scripts + same-origin for app shells). */\nexport const FEED_EMBED_SANDBOX = 'allow-scripts allow-same-origin' as const;\n\n/**\n * Layout size for embed iframes.\n * - `list` — usable height inside a feed list card (viewport-based)\n * - `fill` — grow with a flex parent (detail / fullscreen panes)\n */\nexport type FeedEmbedSize = 'list' | 'fill';\n\nexport const FEED_EMBED_SIZE_CLASS: Record<FeedEmbedSize, string> = {\n /** Matches prior feed html/file iframe height in idw-ui (`h-[720px]`). */\n list: 'block w-full h-[720px] max-h-[720px] border-none',\n fill: 'block w-full h-full min-h-0 flex-1 border-none',\n};\n","/** Approximate reading-time label for feed bodies (same heuristic as idw-ui). */\nexport function formatFeedReadingTime(text = ''): string {\n const wordsPerMinute = 200;\n const words = text.trim() ? text.trim().split(/\\s+/).length : 0;\n const minutes = Math.max(Math.round(words / wordsPerMinute), words > 0 ? 1 : 0);\n\n if (minutes <= 0) {\n return '';\n }\n\n if (minutes >= 60) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return remainingMinutes > 0\n ? `~${hours}h ${remainingMinutes} min`\n : `~${hours}h`;\n }\n\n return `~${minutes} min`;\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3, OrIconButtonV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots, watch } from 'vue';\n\nimport {\n type FeedItemBaseProps,\n type FeedItemControl,\n} from './types';\n\ndefineOptions({\n name: 'FeedItemBase',\n});\n\nconst DEFAULT_CONTROL_LABELS = {\n mention: 'Mention',\n fullscreen: 'Fullscreen',\n} as const;\n\nconst SHOW_MORE_LABEL = 'Show more';\nconst SHOW_LESS_LABEL = 'Show less';\n\nconst props = withDefaults(defineProps<FeedItemBaseProps>(), {\n shortContent: undefined,\n timestamp: undefined,\n timestampDatetime: undefined,\n source: undefined,\n expandable: true,\n fullscreenControl: false,\n mentionControl: true,\n isNew: false,\n controlLabels: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:expanded': [expanded: boolean];\n expand: [];\n collapse: [];\n 'control-click': [control: FeedItemControl];\n fullscreen: [];\n}>();\n\nconst slots = useSlots();\n\nconst isExpanded = ref(false);\nconst hasMountedBody = ref(false);\n\n/** Non-expandable items always expose their body; expandable items follow expand state. */\nconst isBodyVisible = computed(() => !props.expandable || isExpanded.value);\n\nwatch(\n isBodyVisible,\n (visible) => {\n if (visible) {\n hasMountedBody.value = true;\n }\n },\n { immediate: true },\n);\n\nconst titleId = computed(() => `feed-item-title-${props.id}`);\nconst bodyId = computed(() => `feed-item-body-${props.id}`);\n\nconst shellClass = computed(() => {\n if (props.isNew) {\n return 'bg-primary-opacity-0-12 dark:bg-primary-opacity-0-12-dark';\n }\n return 'bg-surface-2 dark:bg-surface-2-dark';\n});\n\nconst resolvedControlLabels = computed(() => ({\n ...DEFAULT_CONTROL_LABELS,\n ...props.controlLabels,\n}));\n\nconst hasActions = computed(() => Boolean(slots.actions));\nconst hasFooter = computed(() => Boolean(slots.footer));\nconst hasBody = computed(() => Boolean(slots.body));\nconst showExpandControl = computed(() => props.expandable && hasBody.value);\nconst showItemActions = computed(() => hasActions.value && isBodyVisible.value);\nconst showActionsRow = computed(\n () => showExpandControl.value || showItemActions.value,\n);\nconst showFooter = computed(() => hasFooter.value && isBodyVisible.value);\n\nfunction setExpanded(next: boolean) {\n if (!props.expandable || next === isExpanded.value) {\n return;\n }\n\n isExpanded.value = next;\n emit('update:expanded', next);\n if (next) {\n emit('expand');\n } else {\n emit('collapse');\n }\n}\n\nfunction toggleExpanded() {\n setExpanded(!isExpanded.value);\n}\n\nfunction onControlClick(control: FeedItemControl) {\n emit('control-click', control);\n}\n\nfunction onFullscreenClick() {\n emit('fullscreen');\n}\n</script>\n\n<template>\n <article\n class=\"feed-item-base relative flex min-w-0 flex-col gap-md rounded-md border border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark p-md\"\n :class=\"shellClass\"\n :aria-labelledby=\"titleId\"\n >\n <div class=\"flex w-full min-w-0 flex-col gap-md\">\n <header class=\"flex w-full min-w-0 items-start gap-md\">\n <div class=\"flex min-w-0 flex-1 flex-wrap content-center items-center gap-md\">\n <time\n v-if=\"timestamp\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n :datetime=\"timestampDatetime || undefined\"\n >\n {{ timestamp }}\n </time>\n\n <span\n v-if=\"source\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ source }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-md\">\n <slot name=\"controls\">\n <OrIconButtonV3\n v-if=\"fullscreenControl\"\n icon=\"open_in_full\"\n :tooltip=\"resolvedControlLabels.fullscreen\"\n @click=\"onFullscreenClick\"\n />\n <OrIconButtonV3\n v-if=\"mentionControl\"\n icon=\"alternate_email\"\n :tooltip=\"resolvedControlLabels.mention\"\n @click=\"onControlClick('mention')\"\n />\n </slot>\n </div>\n </header>\n\n <div class=\"flex w-full min-w-0 items-center gap-sm\">\n <div class=\"flex min-w-0 flex-1 flex-col items-start\">\n <h3\n :id=\"titleId\"\n class=\"m-0 w-full overflow-hidden text-ellipsis typography-headline-3 text-on-background dark:text-on-background-dark\"\n >\n {{ title }}\n </h3>\n <p\n v-if=\"shortContent\"\n class=\"m-0 w-full overflow-hidden text-ellipsis typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ shortContent }}\n </p>\n </div>\n </div>\n\n <div\n v-if=\"hasMountedBody\"\n v-show=\"isBodyVisible\"\n :id=\"bodyId\"\n class=\"feed-item-base__body max-h-[37.875rem] w-full min-w-0 overflow-y-auto rounded-md\"\n role=\"region\"\n :aria-label=\"title\"\n :aria-hidden=\"!isBodyVisible\"\n >\n <slot name=\"body\" />\n </div>\n\n <div\n v-if=\"showActionsRow\"\n class=\"flex w-full min-w-0 flex-wrap content-center items-center\"\n >\n <OrButtonV3\n v-if=\"showExpandControl\"\n type=\"button\"\n variant=\"link\"\n color=\"primary\"\n class=\"min-w-[96px] mr-md\"\n :aria-expanded=\"isBodyVisible\"\n :aria-controls=\"bodyId\"\n @click=\"toggleExpanded\"\n >\n {{ isBodyVisible ? SHOW_LESS_LABEL : SHOW_MORE_LABEL }}\n </OrButtonV3>\n\n <div\n v-if=\"showItemActions\"\n class=\"flex min-w-0 flex-1 flex-wrap content-center items-center gap-sm empty:hidden\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <footer\n v-if=\"showFooter\"\n class=\"w-full min-w-0 empty:hidden\"\n >\n <slot name=\"footer\" />\n </footer>\n </div>\n </article>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { formatFeedReadingTime } from '../formatFeedReadingTime';\nimport type { FeedItemMetaFooterProps } from './types';\n\ndefineOptions({\n name: 'FeedItemMetaFooter',\n});\n\nconst props = withDefaults(defineProps<FeedItemMetaFooterProps>(), {\n readingTimeSource: undefined,\n});\n\nconst emit = defineEmits<{\n 'open-reactions': [];\n 'open-comments': [];\n}>();\n\nconst reactionCount = computed(() => props.engagement.reactionCount ?? 0);\nconst reactionEmojis = computed(() => props.engagement.reactionEmojis ?? []);\nconst commentsCount = computed(() => props.engagement.commentsCount ?? 0);\nconst commentsLabel = computed(() => props.engagement.commentsLabel);\nconst readingTime = computed(() => {\n if (props.engagement.readingTime) {\n return props.engagement.readingTime;\n }\n if (props.readingTimeSource) {\n return formatFeedReadingTime(props.readingTimeSource);\n }\n return '';\n});\n\nconst hasContent = computed(\n () => reactionCount.value > 0\n || Boolean(readingTime.value)\n || (commentsCount.value > 0 && Boolean(commentsLabel.value)),\n);\n</script>\n\n<template>\n <span\n v-if=\"hasContent\"\n class=\"feed-item-meta-footer flex items-center justify-between gap-sm typography-caption-regular text-outline dark:text-outline-dark\"\n >\n <span class=\"flex items-center gap-xs\">\n <button\n v-if=\"reactionCount > 0\"\n type=\"button\"\n class=\"flex cursor-pointer items-center text-on-background dark:text-on-background-dark bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark px-sm rounded-md border-0\"\n @click=\"emit('open-reactions')\"\n >\n <span\n v-if=\"reactionEmojis.length\"\n class=\"mr-sm inline-flex items-center gap-xs\"\n aria-hidden=\"true\"\n >\n <span\n v-for=\"(emoji, index) in reactionEmojis\"\n :key=\"`${emoji}-${index}`\"\n class=\"inline-flex size-4 items-center justify-center text-[16px] leading-none\"\n >\n {{ emoji }}\n </span>\n </span>\n {{ reactionCount }}\n </button>\n <span\n v-if=\"readingTime\"\n class=\"text-on-background dark:text-on-background-dark bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark px-sm rounded-md\"\n >\n {{ readingTime }}\n </span>\n </span>\n <button\n v-if=\"commentsCount > 0 && commentsLabel\"\n type=\"button\"\n class=\"underline cursor-pointer bg-transparent border-0 p-0 typography-caption-regular text-outline dark:text-outline-dark\"\n @click=\"emit('open-comments')\"\n >\n {{ commentsLabel }}\n </button>\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport OrWebMarkdownRender from '@onereach/idw-markdown-renderer';\n\nimport type { FeedMarkdownContentProps } from './types';\n\ndefineOptions({\n name: 'FeedMarkdownContent',\n});\n\nwithDefaults(defineProps<FeedMarkdownContentProps>(), {\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n</script>\n\n<template>\n <OrWebMarkdownRender\n class=\"feed-markdown-content styled-content typography-body-2-regular text-on-background dark:text-on-background-dark\"\n :class=\"contentClass\"\n :text=\"text\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n</template>\n\n<style scoped>\n.styled-content {\n overflow-wrap: break-word;\n}\n</style>\n","export default \"data:image/png;base64,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\"","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\nimport { computed, useSlots } from 'vue';\n\nimport defaultSkillBandUrl from '../../../assets/skill-card-background.png';\nimport { CardSize, SkillCard } from '../../SkillCard';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport type { FeedSkillContentProps } from './types';\n\ndefineOptions({\n name: 'FeedSkillContent',\n});\n\nconst props = withDefaults(defineProps<FeedSkillContentProps>(), {\n skill: undefined,\n skillBackgroundUrl: undefined,\n skillCardSize: CardSize.S,\n showStartSkill: undefined,\n startSkillLabel: undefined,\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n}>();\n\nconst slots = useSlots();\n\nconst hasCustomSkillSlot = computed(() => Boolean(slots.skill));\nconst showSkillBand = computed(\n () => hasCustomSkillSlot.value || Boolean(props.skill),\n);\nconst showStartSkillButton = computed(\n () => props.showStartSkill !== false && Boolean(props.startSkillLabel),\n);\n\nconst skillBandStyle = computed(() => {\n if (!showSkillBand.value) {\n return undefined;\n }\n const url = props.skillBackgroundUrl ?? defaultSkillBandUrl;\n return {\n backgroundImage: `url(${url})`,\n };\n});\n\nfunction onStartSkill() {\n emit('start-skill');\n}\n\nfunction onSkillClick() {\n emit('skill-click');\n}\n</script>\n\n<template>\n <div class=\"feed-skill-content flex flex-col gap-md\">\n <div\n v-if=\"showSkillBand\"\n class=\"w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :style=\"skillBandStyle\"\n >\n <slot name=\"skill\">\n <SkillCard\n v-if=\"skill\"\n :skill=\"skill\"\n :size=\"skillCardSize\"\n @click=\"onSkillClick\"\n />\n </slot>\n </div>\n\n <FeedMarkdownContent\n :text=\"text\"\n :content-class=\"contentClass\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n\n <OrButtonV3\n v-if=\"showStartSkillButton\"\n class=\"w-full md:w-auto\"\n variant=\"outlined\"\n color=\"primary\"\n @click=\"onStartSkill\"\n >\n {{ startSkillLabel }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport {\n FEED_EMBED_SANDBOX,\n FEED_EMBED_SIZE_CLASS,\n type FeedEmbedSize,\n} from '../feedEmbed';\n\ndefineOptions({\n name: 'FeedEmbed',\n});\n\nconst props = withDefaults(defineProps<{\n title: string;\n size?: FeedEmbedSize;\n /** URL for file embeds. Mutually exclusive with `srcdoc`. */\n src?: string;\n /** HTML document for html embeds. Mutually exclusive with `src`. */\n srcdoc?: string;\n}>(), {\n size: 'list',\n src: undefined,\n srcdoc: undefined,\n});\n\nconst iframeClass = computed(() => FEED_EMBED_SIZE_CLASS[props.size]);\nconst hasSource = computed(() => Boolean(props.src || props.srcdoc));\n</script>\n\n<template>\n <div\n v-if=\"hasSource\"\n class=\"feed-embed w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :class=\"size === 'fill' ? 'flex h-full min-h-0 flex-1 flex-col' : undefined\"\n >\n <iframe\n :class=\"iframeClass\"\n :title=\"title\"\n :sandbox=\"FEED_EMBED_SANDBOX\"\n :src=\"src || undefined\"\n :srcdoc=\"srcdoc || undefined\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedHtmlContentProps } from './types';\n\ndefineOptions({\n name: 'FeedHtmlContent',\n});\n\nwithDefaults(defineProps<FeedHtmlContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-html-content\"\n :title=\"title\"\n :size=\"size\"\n :srcdoc=\"content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedFileContentProps } from './types';\n\ndefineOptions({\n name: 'FeedFileContent',\n});\n\nwithDefaults(defineProps<FeedFileContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-file-content\"\n :title=\"title\"\n :size=\"size\"\n :src=\"src\"\n />\n</template>\n","import type { FeedEmbedSize } from '../../components/Feeds/feedEmbed';\nimport type { IdwSpacing, IdwTextStyle, IdwTone } from '../schema';\n\nexport type IdwCardTheme = 'dark' | 'light';\n\nexport type IdwCardHostConfig = {\n theme: IdwCardTheme;\n embedSize: FeedEmbedSize;\n};\n\nexport const DEFAULT_IDW_CARD_HOST_CONFIG: IdwCardHostConfig = {\n theme: 'dark',\n embedSize: 'list',\n};\n\nexport const IDW_SPACING_CLASS: Record<IdwSpacing, string> = {\n none: '',\n xs: 'mt-xs',\n sm: 'mt-sm',\n md: 'mt-md',\n lg: 'mt-lg',\n xl: 'mt-xl',\n};\n\nexport const IDW_TEXT_STYLE_CLASS: Record<IdwTextStyle, string> = {\n caption: 'typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark',\n body: 'typography-body-2-regular text-on-background dark:text-on-background-dark',\n headline: 'typography-headline-3 text-on-background dark:text-on-background-dark',\n};\n\nexport const IDW_TONE_SURFACE_CLASS: Record<IdwTone, string> = {\n default: '',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark rounded-lg p-md',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark rounded-lg p-md',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark rounded-lg p-md',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark rounded-lg p-md',\n};\n\nexport function resolveIdwCardHostConfig(\n overrides?: Partial<IdwCardHostConfig>,\n): IdwCardHostConfig {\n return {\n ...DEFAULT_IDW_CARD_HOST_CONFIG,\n ...overrides,\n };\n}\n","import { inject, type InjectionKey } from 'vue';\n\nexport type IdwCardFormApi = {\n getValue: (name: string) => unknown;\n setValue: (name: string, value: unknown) => void;\n getError: (name: string) => string | undefined;\n isHidden: (id?: string, isVisible?: boolean) => boolean;\n};\n\nexport const IDW_CARD_FORM_KEY: InjectionKey<IdwCardFormApi> = Symbol('idwCardForm');\n\nexport function useIdwCardForm(): IdwCardFormApi {\n const form = inject(IDW_CARD_FORM_KEY);\n if (!form) {\n throw new Error('IdwCard form controls must be rendered inside CardRenderer');\n }\n return form;\n}\n","import {\n FILE_TEMPLATE_ID,\n HTML_TEMPLATE_ID,\n MARKDOWN_TEMPLATE_ID,\n resolveIdwCardSource,\n SKILL_TEMPLATE_ID,\n type IdwCard,\n} from '@onereach/idw-contracts';\n\nimport type { CardFromSkillInput } from './types';\n\nfunction mustResolve(templateId: string, data: unknown): IdwCard {\n const result = resolveIdwCardSource({\n templateId,\n data,\n });\n if (!result.success) {\n throw new Error(result.issues[0]?.message ?? `Invalid ${templateId} template data`);\n }\n return result.card;\n}\n\nexport function cardFromMarkdown(text: string): IdwCard {\n return mustResolve(MARKDOWN_TEMPLATE_ID, { text });\n}\n\nexport function cardFromHtml(title: string, content: string): IdwCard {\n return mustResolve(HTML_TEMPLATE_ID, {\n title,\n content,\n });\n}\n\nexport function cardFromFile(title: string, src: string): IdwCard {\n return mustResolve(FILE_TEMPLATE_ID, {\n title,\n src,\n });\n}\n\nexport function cardFromSkill(input: CardFromSkillInput): IdwCard {\n return mustResolve(SKILL_TEMPLATE_ID, {\n text: input.text,\n skill: input.skill,\n startSkillLabel: input.startSkillLabel,\n });\n}\n","import type { IdwCardActionStyle } from '../schema';\n\nexport function idwCardActionButtonProps(style: IdwCardActionStyle = 'default') {\n if (style === 'primary') {\n return {\n variant: 'contained' as const,\n color: 'primary' as const,\n };\n }\n if (style === 'destructive') {\n return {\n variant: 'outlined' as const,\n color: 'danger' as const,\n };\n }\n return {\n variant: 'outlined' as const,\n color: 'primary' as const,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\n\nimport type { IdwCardAction } from '../schema';\nimport { idwCardActionButtonProps } from './actionStyle';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardActionBar',\n});\n\ndefineProps<{\n actions: IdwCardAction[];\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n\nfunction onClick(action: IdwCardAction) {\n emit('action', {\n verb: action.verb,\n title: action.title,\n data: action.data,\n url: action.url,\n skillId: action.skillId,\n targetIds: action.targetIds,\n card: action.card,\n });\n}\n</script>\n\n<template>\n <div class=\"idw-card-action-bar mt-lg flex min-w-0 flex-wrap items-center gap-sm\">\n <OrButtonV3\n v-for=\"(action, index) in actions\"\n :key=\"action.title + index\"\n v-bind=\"idwCardActionButtonProps(action.style)\"\n type=\"button\"\n @click=\"onClick(action)\"\n >\n {{ action.title }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwActionSetElement } from '../../schema';\nimport IdwCardActionBar from '../IdwCardActionBar.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardActionSetElement',\n});\n\ndefineProps<{\n element: IdwActionSetElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <IdwCardActionBar\n :actions=\"element.actions\"\n @action=\"emit('action', $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwBadgeElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardBadgeElement',\n});\n\nconst props = defineProps<{\n element: IdwBadgeElement;\n}>();\n\nconst toneClass: Record<IdwTone, string> = {\n default: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark',\n};\n\nconst badgeClass = computed(() => [\n 'inline-flex w-fit items-center rounded-md px-sm py-xs typography-caption-semibold',\n toneClass[props.element.tone ?? 'emphasis'],\n]);\n</script>\n\n<template>\n <span :class=\"badgeClass\">\n {{ element.text }}\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwColumnSetElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardColumnSetElement',\n});\n\ndefineProps<{\n element: IdwColumnSetElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nfunction columnClass(width?: 'auto' | 'stretch') {\n return width === 'auto' ? 'min-w-0 shrink' : 'min-w-0 flex-1';\n}\n</script>\n\n<template>\n <div class=\"idw-card-column-set flex min-w-0 flex-wrap items-center gap-sm\">\n <div\n v-for=\"(column, columnIndex) in element.columns\"\n :key=\"columnIndex\"\n :class=\"columnClass(column.width)\"\n >\n <IdwCardElementView\n v-for=\"(child, index) in column.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwContainerElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardContainerElement',\n});\n\ndefineProps<{\n element: IdwContainerElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-container flex min-w-0 flex-col\">\n <IdwCardElementView\n v-for=\"(child, index) in element.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwFactSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFactSetElement',\n});\n\ndefineProps<{\n element: IdwFactSetElement;\n}>();\n</script>\n\n<template>\n <dl\n v-if=\"element.facts.length\"\n class=\"idw-card-fact-set m-0 grid grid-cols-[max-content_minmax(0,1fr)] gap-x-md gap-y-sm\"\n >\n <template\n v-for=\"(fact, index) in element.facts\"\n :key=\"`${fact.title}-${index}`\"\n >\n <dt class=\"m-0 typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\">\n {{ fact.title }}\n </dt>\n <dd class=\"m-0 min-w-0 typography-body-2-regular text-on-background dark:text-on-background-dark\">\n {{ fact.value }}\n </dd>\n </template>\n </dl>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedFileContent } from '../../../components/Feeds/FeedFileContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwFileElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFileElement',\n});\n\ndefineProps<{\n element: IdwFileElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedFileContent\n :title=\"element.title\"\n :src=\"element.src\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { FeedHtmlContent } from '../../../components/Feeds/FeedHtmlContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwHtmlElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardHtmlElement',\n});\n\ndefineProps<{\n element: IdwHtmlElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedHtmlContent\n :title=\"element.title\"\n :content=\"element.content\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwIconElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardIconElement',\n});\n\ndefineProps<{\n element: IdwIconElement;\n}>();\n</script>\n\n<template>\n <OrIconV3\n :icon=\"element.icon\"\n class=\"text-on-background dark:text-on-background-dark\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwImageElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageElement',\n});\n\ndefineProps<{\n element: IdwImageElement;\n}>();\n</script>\n\n<template>\n <img\n class=\"idw-card-image max-w-full rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"element.url\"\n :alt=\"element.alt\"\n >\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwImageSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageSetElement',\n});\n\ndefineProps<{\n element: IdwImageSetElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-image-set flex min-w-0 flex-wrap gap-sm\">\n <img\n v-for=\"(image, index) in element.images\"\n :key=\"`${image.url}-${index}`\"\n class=\"size-16 rounded-md object-cover bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"image.url\"\n :alt=\"image.alt\"\n >\n </div>\n</template>\n","export function parseCardDate(value: unknown): Date | undefined {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value;\n }\n if (typeof value !== 'string' || !value.trim()) {\n return undefined;\n }\n if (/^\\d{2}:\\d{2}$/.test(value)) {\n const [hours, minutes] = value.split(':').map(Number);\n const parsed = new Date();\n parsed.setHours(hours, minutes, 0, 0);\n return parsed;\n }\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction pad(value: number) {\n return String(value).padStart(2, '0');\n}\n\nexport function toDateValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${value.getFullYear()}-${pad(value.getMonth() + 1)}-${pad(value.getDate())}`;\n}\n\nexport function toTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${pad(value.getHours())}:${pad(value.getMinutes())}`;\n}\n\nexport function toDateTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return value.toISOString();\n}\n","<script setup lang=\"ts\">\nimport {\n OrCheckboxV3,\n OrDatePickerV3,\n OrDateTimePickerV3,\n OrInputV3,\n OrRadioV3,\n OrRangeSliderV3,\n OrRatingV3,\n OrSelectV3,\n OrSliderV3,\n OrSwitchV3,\n OrTextareaV3,\n OrTimePickerV3,\n} from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport { parseCardDate, toDateTimeValue, toDateValue, toTimeValue } from '../../form/dates';\nimport { useIdwCardForm } from '../../form/formContext';\nimport type { IdwCardInputElement, IdwLocationValue } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardInputElement',\n});\n\nconst props = defineProps<{\n element: IdwCardInputElement;\n}>();\n\nconst form = useIdwCardForm();\n\nconst error = computed(() => form.getError(props.element.name));\nconst model = computed(() => form.getValue(props.element.name));\n\nconst textType = computed(() => (\n props.element.type === 'Input.Text' && props.element.style === 'password' ? 'password' : 'text'\n));\n\nconst textInputMode = computed(() => {\n if (props.element.type !== 'Input.Text') {\n return undefined;\n }\n if (props.element.style === 'email') {\n return 'email';\n }\n if (props.element.style === 'url') {\n return 'url';\n }\n if (props.element.style === 'tel') {\n return 'tel';\n }\n return undefined;\n});\n\nconst stringValue = computed(() => (typeof model.value === 'string' ? model.value : ''));\nconst selectValue = computed(() => model.value as string | string[] | undefined);\nconst radioValue = computed(() => (\n typeof model.value === 'string' || typeof model.value === 'number' ? model.value : undefined\n));\n\nconst selectOptions = computed(() => {\n if (props.element.type !== 'Input.ChoiceSet') {\n return [];\n }\n return props.element.choices.map((choice) => ({\n label: choice.title,\n value: choice.value,\n disabled: choice.disabled,\n }));\n});\n\nconst location = computed<IdwLocationValue>(() => {\n const value = model.value;\n if (value && typeof value === 'object') {\n return value as IdwLocationValue;\n }\n return { address: '' };\n});\n\nfunction set(value: unknown) {\n form.setValue(props.element.name, value);\n}\n\nfunction toggleChoice(choiceValue: string, checked: boolean) {\n const current = Array.isArray(model.value) ? [...model.value as string[]] : [];\n const next = checked\n ? Array.from(new Set([...current, choiceValue]))\n : current.filter((item) => item !== choiceValue);\n set(next);\n}\n\nfunction setLocation(patch: IdwLocationValue) {\n set({ ...location.value, ...patch });\n}\n</script>\n\n<template>\n <div class=\"idw-card-input flex min-w-0 flex-col gap-xs\">\n <OrTextareaV3\n v-if=\"element.type === 'Input.Text' && element.multiline\"\n :model-value=\"stringValue\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n :rows=\"element.rows || 3\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Text'\"\n :model-value=\"stringValue\"\n :type=\"textType\"\n :inputmode=\"textInputMode\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Number'\"\n :model-value=\"model as number | string | undefined\"\n type=\"number\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set($event === '' || $event == null ? undefined : Number($event))\"\n />\n <OrSwitchV3\n v-else-if=\"element.type === 'Input.Toggle'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrCheckboxV3\n v-else-if=\"element.type === 'Input.Checkbox'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrSelectV3\n v-else-if=\"element.type === 'Input.ChoiceSet' && element.style !== 'expanded'\"\n :model-value=\"selectValue\"\n :options=\"selectOptions\"\n :multiple=\"element.multi\"\n :enable-search=\"element.style === 'filtered'\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <div\n v-else-if=\"element.type === 'Input.ChoiceSet'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <template v-if=\"element.multi\">\n <OrCheckboxV3\n v-for=\"choice in element.choices\"\n :key=\"choice.value\"\n :model-value=\"Array.isArray(model) && (model as string[]).includes(choice.value)\"\n :label=\"choice.title\"\n :disabled=\"element.disabled || choice.disabled\"\n @update:model-value=\"toggleChoice(choice.value, $event)\"\n />\n </template>\n <template v-else>\n <OrRadioV3\n v-for=\"choice in element.choices\"\n :key=\"choice.value\"\n :model-value=\"radioValue\"\n :value=\"choice.value\"\n :label=\"choice.title\"\n :disabled=\"element.disabled || choice.disabled\"\n @update:model-value=\"set\"\n />\n </template>\n <span\n v-if=\"error || element.hint\"\n class=\"typography-caption-regular\"\n :class=\"error\n ? 'text-error dark:text-error-dark'\n : 'text-on-surface-variant dark:text-on-surface-variant-dark'\"\n >\n {{ error || element.hint }}\n </span>\n </div>\n <OrDatePickerV3\n v-else-if=\"element.type === 'Input.Date'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateValue($event))\"\n />\n <OrTimePickerV3\n v-else-if=\"element.type === 'Input.Time'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toTimeValue($event))\"\n />\n <OrDateTimePickerV3\n v-else-if=\"element.type === 'Input.DateTime'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateTimeValue($event))\"\n />\n <div\n v-else-if=\"element.type === 'Input.Slider'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrSliderV3\n :model-value=\"Number(model ?? element.min ?? 0)\"\n :min-value=\"element.min\"\n :max-value=\"element.max\"\n :step=\"element.step\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Range'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrRangeSliderV3\n :model-value=\"(Array.isArray(model) ? model : [element.min ?? 0, element.max ?? 100]) as [number, number]\"\n :min-value=\"element.min\"\n :max-value=\"element.max\"\n :step=\"element.step\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Rating'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrRatingV3\n :model-value=\"Number(model ?? 0)\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Location'\"\n class=\"flex flex-col gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.address || ''\"\n :label=\"element.label || 'Location'\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ address: String($event || '') })\"\n />\n <div\n v-if=\"element.includeCoordinates\"\n class=\"grid grid-cols-2 gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.lat\"\n type=\"number\"\n label=\"Latitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lat: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n <OrInputV3\n :model-value=\"location.lng\"\n type=\"number\"\n label=\"Longitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lng: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwMediaElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardMediaElement',\n});\n\ndefineProps<{\n element: IdwMediaElement;\n}>();\n</script>\n\n<template>\n <video\n v-if=\"(element.mediaType || 'video') === 'video'\"\n class=\"idw-card-media w-full rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"element.url\"\n :poster=\"element.poster\"\n :title=\"element.title\"\n controls\n />\n <audio\n v-else\n class=\"idw-card-media w-full\"\n :src=\"element.url\"\n :title=\"element.title\"\n controls\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport type { IdwProgressElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardProgressElement',\n});\n\nconst props = defineProps<{\n element: IdwProgressElement;\n}>();\n\nconst toneColor: Record<IdwTone, ProgressColor> = {\n default: ProgressColor.Primary,\n emphasis: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n attention: ProgressColor.Error,\n};\n\nconst color = computed(() => toneColor[props.element.tone ?? 'default']);\nconst type = computed(() => (\n props.element.variant === 'circle' ? ProgressType.Circle : ProgressType.Linear\n));\n</script>\n\n<template>\n <div class=\"idw-card-progress flex min-w-0 flex-col gap-sm\">\n <span\n v-if=\"element.label\"\n class=\"typography-caption-semibold text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrProgressV3\n class=\"w-full\"\n :value=\"element.value\"\n :max-value=\"element.max ?? 100\"\n :type=\"type\"\n :color=\"color\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedSkillContent } from '../../../components/Feeds/FeedSkillContent';\nimport type { IdwSkillElement } from '../../schema';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardSkillElement',\n});\n\nconst props = defineProps<{\n element: IdwSkillElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nfunction onStartSkill() {\n emit('action', {\n verb: 'start-skill',\n title: props.element.startSkillLabel || 'Start skill',\n skillId: props.element.skill?.id,\n });\n}\n</script>\n\n<template>\n <FeedSkillContent\n :text=\"element.text\"\n :skill=\"element.skill\"\n :start-skill-label=\"element.startSkillLabel\"\n @start-skill=\"onStartSkill\"\n @skill-click=\"emit('skill-click')\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwTableElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTableElement',\n});\n\ndefineProps<{\n element: IdwTableElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-table w-full min-w-0 overflow-x-auto rounded-lg bg-surface-2 dark:bg-surface-2-dark\">\n <table class=\"w-full border-collapse\">\n <thead>\n <tr>\n <th\n v-for=\"column in element.columns\"\n :key=\"column.title\"\n class=\"px-md py-sm text-left typography-caption-semibold text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ column.title }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(row, rowIndex) in element.rows\"\n :key=\"rowIndex\"\n class=\"border-t border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark\"\n >\n <td\n v-for=\"(cell, cellIndex) in row\"\n :key=\"cellIndex\"\n class=\"px-md py-sm typography-body-2-regular text-on-background dark:text-on-background-dark\"\n >\n {{ cell }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { FeedMarkdownContent } from '../../../components/Feeds/FeedMarkdownContent';\nimport { IDW_TEXT_STYLE_CLASS, IDW_TONE_SURFACE_CLASS } from '../../host';\nimport type { IdwTextElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTextElement',\n});\n\nconst props = defineProps<{\n element: IdwTextElement;\n}>();\n\nconst contentClass = computed(() => {\n const textStyle = props.element.textStyle ?? 'body';\n const tone = props.element.tone ?? 'default';\n return [\n IDW_TEXT_STYLE_CLASS[textStyle],\n IDW_TONE_SURFACE_CLASS[tone],\n '[&_:where(p,ul,ol,h1,h2,h3,h4)]:m-0 [&_p+_p]:mt-sm',\n ].filter(Boolean).join(' ');\n});\n</script>\n\n<template>\n <FeedMarkdownContent\n :text=\"element.text\"\n :content-class=\"contentClass\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { useIdwCardForm } from '../form/formContext';\nimport { IDW_SPACING_CLASS, IDW_TONE_SURFACE_CLASS, type IdwCardHostConfig } from '../host';\nimport { isIdwCardInputElement, type IdwCardElement } from '../schema';\nimport ActionSetElement from './elements/ActionSetElement.vue';\nimport BadgeElement from './elements/BadgeElement.vue';\nimport ColumnSetElement from './elements/ColumnSetElement.vue';\nimport ContainerElement from './elements/ContainerElement.vue';\nimport FactSetElement from './elements/FactSetElement.vue';\nimport FileElement from './elements/FileElement.vue';\nimport HtmlElement from './elements/HtmlElement.vue';\nimport IconElement from './elements/IconElement.vue';\nimport ImageElement from './elements/ImageElement.vue';\nimport ImageSetElement from './elements/ImageSetElement.vue';\nimport InputElement from './elements/InputElement.vue';\nimport MediaElement from './elements/MediaElement.vue';\nimport ProgressElement from './elements/ProgressElement.vue';\nimport SkillElement from './elements/SkillElement.vue';\nimport TableElement from './elements/TableElement.vue';\nimport TextElement from './elements/TextElement.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardElementView',\n});\n\nconst props = defineProps<{\n element: IdwCardElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst form = useIdwCardForm();\n\nconst isHidden = computed(() => form.isHidden(props.element.id, props.element.isVisible));\n\nconst spacingClass = computed(() => {\n const spacing = props.element.spacing ?? 'none';\n return IDW_SPACING_CLASS[spacing];\n});\n\nconst toneClass = computed(() => {\n if (props.element.type !== 'Container') {\n return '';\n }\n return IDW_TONE_SURFACE_CLASS[props.element.tone ?? 'default'];\n});\n\nconst inputElement = computed(() => (\n isIdwCardInputElement(props.element) ? props.element : undefined\n));\n</script>\n\n<template>\n <div\n v-if=\"!isHidden\"\n class=\"idw-card-element min-w-0\"\n :class=\"[\n spacingClass,\n toneClass,\n element.separator ? 'border-t border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark pt-md' : '',\n (element.type === 'Html' || element.type === 'File') && hostConfig.embedSize === 'fill'\n ? 'flex-1 min-h-0 flex flex-col'\n : '',\n ]\"\n :data-element-type=\"element.type\"\n >\n <InputElement\n v-if=\"inputElement\"\n :element=\"inputElement\"\n />\n <TextElement\n v-else-if=\"element.type === 'Text'\"\n :element=\"element\"\n />\n <ImageElement\n v-else-if=\"element.type === 'Image'\"\n :element=\"element\"\n />\n <FactSetElement\n v-else-if=\"element.type === 'FactSet'\"\n :element=\"element\"\n />\n <ContainerElement\n v-else-if=\"element.type === 'Container'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ColumnSetElement\n v-else-if=\"element.type === 'ColumnSet'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <HtmlElement\n v-else-if=\"element.type === 'Html'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <FileElement\n v-else-if=\"element.type === 'File'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <SkillElement\n v-else-if=\"element.type === 'Skill'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ActionSetElement\n v-else-if=\"element.type === 'ActionSet'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n />\n <ProgressElement\n v-else-if=\"element.type === 'Progress'\"\n :element=\"element\"\n />\n <BadgeElement\n v-else-if=\"element.type === 'Badge'\"\n :element=\"element\"\n />\n <IconElement\n v-else-if=\"element.type === 'Icon'\"\n :element=\"element\"\n />\n <ImageSetElement\n v-else-if=\"element.type === 'ImageSet'\"\n :element=\"element\"\n />\n <MediaElement\n v-else-if=\"element.type === 'Media'\"\n :element=\"element\"\n />\n <TableElement\n v-else-if=\"element.type === 'Table'\"\n :element=\"element\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide, reactive, ref, watch } from 'vue';\n\nimport { IDW_CARD_FORM_KEY } from '../form/formContext';\nimport { resolveIdwCardHostConfig, type IdwCardHostConfig } from '../host';\nimport {\n collectInitialInputValues,\n isElementVisible,\n isInputEmpty,\n listIdwCardInputs,\n type IdwCard,\n} from '../schema';\nimport type { CardRendererSource } from '../templates';\nimport { resolveCardRendererSource } from '../templates';\nimport IdwCardActionBar from './IdwCardActionBar.vue';\nimport IdwCardElementView from './IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'CardRenderer',\n});\n\nconst props = withDefaults(defineProps<{\n source: CardRendererSource;\n hostConfig?: Partial<IdwCardHostConfig>;\n}>(), {\n hostConfig: undefined,\n});\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst resolvedHostConfig = computed(() => resolveIdwCardHostConfig(props.hostConfig));\nconst resolved = computed(() => resolveCardRendererSource(props.source));\nconst card = computed(() => (resolved.value.success ? resolved.value.card : undefined));\n\nconst values = reactive<Record<string, unknown>>({});\nconst errors = reactive<Record<string, string>>({});\nconst hiddenIds = ref(new Set<string>());\nconst openShowCards = ref<Record<string, IdwCard>>({});\n\nfunction resetForm() {\n Object.keys(values).forEach((key) => {\n delete values[key];\n });\n Object.keys(errors).forEach((key) => {\n delete errors[key];\n });\n hiddenIds.value = new Set();\n openShowCards.value = {};\n if (!card.value) {\n return;\n }\n Object.assign(values, collectInitialInputValues(card.value.body));\n}\n\nwatch(card, resetForm, { immediate: true });\n\nprovide(IDW_CARD_FORM_KEY, {\n getValue: (name) => values[name],\n setValue: (name, value) => {\n values[name] = value;\n delete errors[name];\n },\n getError: (name) => errors[name],\n isHidden: (id, isVisible) => !isElementVisible({ id, isVisible }, hiddenIds.value),\n});\n\nconst errorMessage = computed(() => {\n if (resolved.value.success) {\n return undefined;\n }\n return resolved.value.fallbackText || 'This card could not be displayed.';\n});\n\nfunction validateRequired(): boolean {\n if (!card.value) {\n return true;\n }\n let valid = true;\n for (const input of listIdwCardInputs(card.value.body, hiddenIds.value)) {\n if (!input.visible || !input.required) {\n continue;\n }\n if (isInputEmpty(values[input.name])) {\n errors[input.name] = input.errorMessage || 'This field is required.';\n valid = false;\n }\n }\n return valid;\n}\n\nfunction onAction(event: IdwCardActionEvent) {\n if (event.verb === 'toggle-visibility' && event.targetIds?.length) {\n const next = new Set(hiddenIds.value);\n for (const id of event.targetIds) {\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n hiddenIds.value = next;\n }\n\n if (event.verb === 'show-card' && event.card) {\n const next = { ...openShowCards.value };\n if (next[event.title]) {\n delete next[event.title];\n } else {\n next[event.title] = event.card;\n }\n openShowCards.value = next;\n }\n\n if (event.verb === 'submit' || event.verb === 'approve' || event.verb === 'reject') {\n if (!validateRequired()) {\n return;\n }\n }\n\n emit('action', {\n ...event,\n inputs: { ...values },\n });\n}\n</script>\n\n<template>\n <section\n class=\"idw-card flex min-w-0 flex-col bg-surface dark:bg-surface-dark text-on-surface dark:text-on-surface-dark\"\n :class=\"[\n resolvedHostConfig.theme === 'dark' ? 'dark' : undefined,\n resolvedHostConfig.embedSize === 'fill' ? 'flex-1 min-h-0' : undefined,\n ]\"\n data-testid=\"idw-card\"\n >\n <template v-if=\"card\">\n <IdwCardElementView\n v-for=\"(element, index) in card.body\"\n :key=\"element.id || index\"\n :element=\"element\"\n :host-config=\"resolvedHostConfig\"\n @action=\"onAction\"\n @skill-click=\"emit('skill-click')\"\n />\n <IdwCardActionBar\n v-if=\"card.actions?.length\"\n :actions=\"card.actions\"\n @action=\"onAction\"\n />\n <CardRenderer\n v-for=\"(nestedCard, title) in openShowCards\"\n :key=\"`show-${title}`\"\n :source=\"{ card: nestedCard }\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </template>\n <p\n v-else\n class=\"m-0 typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n data-testid=\"idw-card-fallback\"\n >\n {{ errorMessage }}\n </p>\n </section>\n</template>\n","<script setup lang=\"ts\">\nimport { CardRenderer, type IdwCardActionEvent, type IdwCardHostConfig } from '../../../idw-card';\nimport { FeedFileContent } from '../FeedFileContent';\nimport { FeedHtmlContent } from '../FeedHtmlContent';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport { FeedSkillContent } from '../FeedSkillContent';\nimport type { FeedListItem } from './types';\n\ndefineOptions({\n name: 'FeedListItemBody',\n});\n\ndefineProps<{\n item: FeedListItem;\n cardHostConfig?: Partial<IdwCardHostConfig>;\n}>();\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <CardRenderer\n v-if=\"item.type === 'card'\"\n :source=\"item.source\"\n :host-config=\"cardHostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedFileContent\n v-else-if=\"item.type === 'file'\"\n :title=\"item.title\"\n :src=\"item.fileUrl\"\n />\n <FeedHtmlContent\n v-else-if=\"item.type === 'html'\"\n :title=\"item.title\"\n :content=\"item.content\"\n />\n <FeedSkillContent\n v-else-if=\"item.type === 'skill'\"\n :text=\"item.content\"\n :skill=\"item.skill\"\n :skill-background-url=\"item.skillBackgroundUrl\"\n :skill-card-size=\"item.skillCardSize\"\n :start-skill-label=\"item.startSkillLabel\"\n @start-skill=\"emit('start-skill')\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedMarkdownContent\n v-else\n :text=\"item.content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots } from 'vue';\n\nimport { FeedItemBase } from '../FeedItemBase';\nimport type { FeedItemControl } from '../FeedItemBase/types';\nimport type { IdwCardActionEvent } from '../../../idw-card';\nimport FeedListItemBody from './FeedListItemBody.vue';\nimport type { FeedListItem, FeedListProps } from './types';\n\ndefineOptions({\n name: 'FeedList',\n});\n\nconst props = withDefaults(defineProps<FeedListProps>(), {\n loading: false,\n loadingMore: false,\n emptyLabel: 'No posts yet',\n controlLabels: undefined,\n reachBottomOffset: 500,\n itemClass: undefined,\n});\n\nconst emit = defineEmits<{\n 'reach-bottom': [];\n fullscreen: [item: FeedListItem];\n 'start-skill': [item: FeedListItem];\n 'skill-click': [item: FeedListItem];\n action: [item: FeedListItem, event: IdwCardActionEvent];\n 'control-click': [item: FeedListItem, control: FeedItemControl];\n expand: [item: FeedListItem];\n collapse: [item: FeedListItem];\n 'update:item-expanded': [item: FeedListItem, expanded: boolean];\n}>();\n\nconst slots = useSlots();\n\nconst hasHeader = computed(() => Boolean(slots.header));\nconst hasEmptySlot = computed(() => Boolean(slots.empty));\nconst showEmpty = computed(() => !props.loading && props.items.length === 0);\n\n/** Edge-trigger: only emit when crossing into the near-bottom zone. */\nconst wasNearBottom = ref(false);\n\nfunction isHtmlOrFile(item: FeedListItem): boolean {\n return item.type === 'html' || item.type === 'file';\n}\n\nfunction itemFullscreenControl(item: FeedListItem): boolean {\n if (typeof item.fullscreenControl === 'boolean') {\n return item.fullscreenControl;\n }\n return isHtmlOrFile(item);\n}\n\nfunction itemClassFor(item: FeedListItem): string | undefined {\n const unconstrained = isHtmlOrFile(item)\n ? '[&_.feed-item-base__body]:!max-h-none'\n : undefined;\n if (props.itemClass && unconstrained) {\n return `${props.itemClass} ${unconstrained}`;\n }\n return props.itemClass ?? unconstrained;\n}\n\nfunction onScroll(event: Event) {\n const el = event.target as HTMLElement | null;\n if (!el || props.loading || props.loadingMore) {\n return;\n }\n\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n const nearBottom = distanceFromBottom <= props.reachBottomOffset;\n\n if (nearBottom && !wasNearBottom.value) {\n emit('reach-bottom');\n }\n\n wasNearBottom.value = nearBottom;\n}\n</script>\n\n<template>\n <section class=\"feed-list flex h-full min-h-0 flex-col overflow-hidden\">\n <div\n v-if=\"hasHeader\"\n class=\"feed-list__header shrink-0\"\n >\n <slot name=\"header\" />\n </div>\n\n <div\n class=\"feed-list__scroll flex min-h-0 flex-1 flex-col gap-y-md overflow-y-auto\"\n @scroll.passive=\"onScroll\"\n >\n <div\n v-if=\"loading\"\n class=\"flex flex-1 items-center justify-center py-xl\"\n >\n <slot name=\"loading\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n\n <template v-else>\n <div\n v-if=\"showEmpty\"\n class=\"py-xl text-center typography-headline-4 text-on-background dark:text-on-background-dark\"\n >\n <slot\n v-if=\"hasEmptySlot\"\n name=\"empty\"\n />\n <template v-else>\n {{ emptyLabel }}\n </template>\n </div>\n\n <FeedItemBase\n v-for=\"item in items\"\n :id=\"item.id\"\n :key=\"item.id\"\n :class=\"itemClassFor(item)\"\n :title=\"item.title\"\n :short-content=\"item.shortContent\"\n :timestamp=\"item.timestamp\"\n :timestamp-datetime=\"item.timestampDatetime\"\n :source=\"item.source\"\n :is-new=\"item.isNew\"\n :expandable=\"item.expandable !== false\"\n :fullscreen-control=\"itemFullscreenControl(item)\"\n :mention-control=\"item.mentionControl !== false\"\n :control-labels=\"controlLabels\"\n @fullscreen=\"emit('fullscreen', item)\"\n @control-click=\"(control) => emit('control-click', item, control)\"\n @expand=\"emit('expand', item)\"\n @collapse=\"emit('collapse', item)\"\n @update:expanded=\"(expanded) => emit('update:item-expanded', item, expanded)\"\n >\n <template #body>\n <FeedListItemBody\n :item=\"item\"\n :card-host-config=\"cardHostConfig\"\n @start-skill=\"emit('start-skill', item)\"\n @skill-click=\"emit('skill-click', item)\"\n @action=\"(event) => emit('action', item, event)\"\n />\n </template>\n\n <template\n v-if=\"$slots.actions\"\n #actions\n >\n <slot\n name=\"actions\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.controls\"\n #controls\n >\n <slot\n name=\"controls\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.footer\"\n #footer\n >\n <slot\n name=\"footer\"\n :item=\"item\"\n />\n </template>\n </FeedItemBase>\n\n <div\n v-if=\"loadingMore\"\n class=\"flex justify-center py-md\"\n >\n <slot name=\"loading-more\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n </template>\n </div>\n </section>\n</template>\n"],"names":["formatIdwSummary","summary","CardSize","CARD_SIZE","props","__props","sizeClasses","computed","cardImageStyles","rootClasses","classes","_createElementBlock","_openBlock","_hoisted_2","_createVNode","_unref","OrLoaderV3","_createElementVNode","_hoisted_3","_hoisted_4","_normalizeClass","_toDisplayString","_hoisted_5","_renderSlot","_ctx","FEED_EMBED_SANDBOX","FEED_EMBED_SIZE_CLASS","formatFeedReadingTime","text","words","minutes","hours","remainingMinutes","SHOW_MORE_LABEL","SHOW_LESS_LABEL","DEFAULT_CONTROL_LABELS","emit","__emit","slots","useSlots","isExpanded","ref","hasMountedBody","isBodyVisible","watch","visible","titleId","bodyId","shellClass","resolvedControlLabels","hasActions","hasFooter","hasBody","showExpandControl","showItemActions","showActionsRow","showFooter","setExpanded","next","toggleExpanded","onControlClick","control","onFullscreenClick","_hoisted_6","_hoisted_7","_createBlock","OrIconButtonV3","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_13","OrButtonV3","_hoisted_14","_hoisted_15","reactionCount","reactionEmojis","commentsCount","commentsLabel","readingTime","hasContent","_hoisted_1","_Fragment","_renderList","emoji","index","_createTextVNode","OrWebMarkdownRender","defaultSkillBandUrl","hasCustomSkillSlot","showSkillBand","showStartSkillButton","skillBandStyle","onStartSkill","onSkillClick","SkillCard","FeedMarkdownContent","iframeClass","hasSource","FeedEmbed","DEFAULT_IDW_CARD_HOST_CONFIG","IDW_SPACING_CLASS","IDW_TEXT_STYLE_CLASS","IDW_TONE_SURFACE_CLASS","resolveIdwCardHostConfig","overrides","IDW_CARD_FORM_KEY","useIdwCardForm","form","inject","mustResolve","templateId","data","result","resolveIdwCardSource","_a","cardFromMarkdown","MARKDOWN_TEMPLATE_ID","cardFromHtml","title","content","HTML_TEMPLATE_ID","cardFromFile","src","FILE_TEMPLATE_ID","cardFromSkill","input","SKILL_TEMPLATE_ID","idwCardActionButtonProps","style","onClick","action","_mergeProps","$event","IdwCardActionBar","_cache","toneClass","badgeClass","columnClass","width","column","columnIndex","child","IdwCardElementView","fact","FeedFileContent","FeedHtmlContent","OrIconV3","image","parseCardDate","value","parsed","pad","toDateValue","toTimeValue","toDateTimeValue","error","model","textType","textInputMode","stringValue","selectValue","radioValue","selectOptions","choice","location","set","toggleChoice","choiceValue","checked","current","item","setLocation","patch","OrTextareaV3","OrInputV3","OrSwitchV3","OrCheckboxV3","OrSelectV3","OrRadioV3","OrDatePickerV3","OrTimePickerV3","OrDateTimePickerV3","OrSliderV3","OrRangeSliderV3","OrRatingV3","toneColor","ProgressColor","color","type","ProgressType","OrProgressV3","FeedSkillContent","row","rowIndex","cell","cellIndex","contentClass","textStyle","tone","isHidden","spacingClass","spacing","inputElement","isIdwCardInputElement","InputElement","TextElement","ImageElement","FactSetElement","ContainerElement","ColumnSetElement","HtmlElement","FileElement","SkillElement","ActionSetElement","ProgressElement","BadgeElement","IconElement","ImageSetElement","MediaElement","TableElement","resolvedHostConfig","resolved","resolveCardRendererSource","card","values","reactive","errors","hiddenIds","openShowCards","resetForm","key","collectInitialInputValues","provide","name","id","isVisible","isElementVisible","errorMessage","validateRequired","valid","listIdwCardInputs","isInputEmpty","onAction","event","element","nestedCard","_component_CardRenderer","CardRenderer","hasHeader","hasEmptySlot","showEmpty","wasNearBottom","isHtmlOrFile","itemFullscreenControl","itemClassFor","unconstrained","onScroll","el","nearBottom","FeedItemBase","expanded","FeedListItemBody","$slots"],"mappings":"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"}