@onereach/idw-ui-components 0.2.1-beta.32.0 → 0.3.0-beta.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -51
- package/dist/cjs/index.js +239 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1963 -837
- package/dist/esm/index.js.map +1 -1
- package/dist/idw-ui-components.css +1 -1
- package/dist/types/components/Feeds/FeedItemBase/FeedItemBase.vue.d.ts +29 -11
- package/dist/types/components/Feeds/FeedItemBase/FeedItemBase.vue.d.ts.map +1 -1
- package/dist/types/components/Feeds/FeedItemBase/index.d.ts +1 -1
- package/dist/types/components/Feeds/FeedItemBase/index.d.ts.map +1 -1
- package/dist/types/components/Feeds/FeedItemBase/types.d.ts +50 -10
- package/dist/types/components/Feeds/FeedItemBase/types.d.ts.map +1 -1
- package/dist/types/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue.d.ts.map +1 -1
- package/dist/types/components/Feeds/FeedList/FeedList.vue.d.ts +5 -4
- package/dist/types/components/Feeds/FeedList/FeedList.vue.d.ts.map +1 -1
- package/dist/types/components/Feeds/FeedList/types.d.ts +1 -1
- package/dist/types/components/Feeds/FeedList/types.d.ts.map +1 -1
- package/dist/types/components/SkillCard/SkillCard.vue.d.ts.map +1 -1
- package/dist/types/idw-card/host/hostConfig.d.ts +2 -0
- package/dist/types/idw-card/host/hostConfig.d.ts.map +1 -1
- package/dist/types/idw-card/host/index.d.ts +1 -1
- package/dist/types/idw-card/host/index.d.ts.map +1 -1
- package/dist/types/idw-card/index.d.ts +2 -2
- package/dist/types/idw-card/index.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/CardRenderer.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/IdwCardActionBar.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/IdwCardElementView.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/actionStyle.d.ts +5 -10
- package/dist/types/idw-card/renderer/actionStyle.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/ColumnSetElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/ContainerElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/FactSetElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/FileElement.vue.d.ts +0 -2
- package/dist/types/idw-card/renderer/elements/FileElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/ImageElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/ImageSetElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/InputElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/MediaAudio.vue.d.ts +7 -0
- package/dist/types/idw-card/renderer/elements/MediaAudio.vue.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/elements/MediaElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/MediaVideo.vue.d.ts +8 -0
- package/dist/types/idw-card/renderer/elements/MediaVideo.vue.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/elements/MediaVolume.vue.d.ts +12 -0
- package/dist/types/idw-card/renderer/elements/MediaVolume.vue.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/elements/NoteElement.vue.d.ts +7 -0
- package/dist/types/idw-card/renderer/elements/NoteElement.vue.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/elements/NotificationElement.vue.d.ts +7 -0
- package/dist/types/idw-card/renderer/elements/NotificationElement.vue.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/elements/ProgressElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/SkillElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/elements/TableElement.vue.d.ts.map +1 -1
- package/dist/types/idw-card/renderer/frameBorder.d.ts +3 -0
- package/dist/types/idw-card/renderer/frameBorder.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/mediaChrome.d.ts +3 -0
- package/dist/types/idw-card/renderer/mediaChrome.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/mediaControls.d.ts +21 -0
- package/dist/types/idw-card/renderer/mediaControls.d.ts.map +1 -0
- package/dist/types/idw-card/renderer/sliderSpacing.d.ts +3 -0
- package/dist/types/idw-card/renderer/sliderSpacing.d.ts.map +1 -0
- package/dist/types/idw-card/schema/index.d.ts +1 -1
- package/dist/types/idw-card/schema/index.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/esm/index.js.map
CHANGED
|
@@ -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/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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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/format-idw-summary.ts","../../src/assets/skill-card-background.png","../../src/components/SkillCard/types.ts","../../src/components/SkillCard/SkillCard.vue","../../src/components/Feeds/feedEmbed.ts","../../src/components/Feeds/formatFeedReadingTime.ts","../../src/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue","../../src/components/Feeds/FeedItemBase/FeedItemBase.vue","../../src/components/Feeds/FeedMarkdownContent/FeedMarkdownContent.vue","../../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/frameBorder.ts","../../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/sliderSpacing.ts","../../src/idw-card/renderer/elements/InputElement.vue","../../src/idw-card/renderer/mediaChrome.ts","../../src/idw-card/renderer/mediaControls.ts","../../src/idw-card/renderer/elements/MediaVolume.vue","../../src/idw-card/renderer/elements/MediaAudio.vue","../../src/idw-card/renderer/elements/MediaVideo.vue","../../src/idw-card/renderer/elements/MediaElement.vue","../../src/idw-card/renderer/elements/NoteElement.vue","../../src/idw-card/renderer/elements/NotificationElement.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","export default \"data:image/png;base64,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\"","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 defaultSkillCardBackground from '../../assets/skill-card-background.png';\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 if (props.disabled) {\n return undefined;\n }\n\n return {\n backgroundImage: `url(${defaultSkillCardBackground})`,\n backgroundPosition: 'center',\n backgroundSize: 'cover',\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 { 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=\"inline-flex cursor-pointer items-center gap-xs border-0 bg-transparent p-0 typography-caption-regular text-outline dark:text-outline-dark\"\n @click=\"emit('open-reactions')\"\n >\n <span\n v-if=\"reactionEmojis.length\"\n class=\"inline-flex items-center gap-xs text-on-background dark:text-on-background-dark\"\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=\"typography-caption-regular text-outline dark:text-outline-dark\"\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 { OrIconButtonV3, OrIconV3 as OrIcon } from '@onereach/ui-components';\nimport { computed, ref, useSlots, watch } from 'vue';\n\nimport FeedItemMetaFooter from '../FeedItemMetaFooter/FeedItemMetaFooter.vue';\nimport type { FeedItemEngagement } from '../FeedItemMetaFooter/types';\nimport {\n type FeedItemBaseProps,\n type FeedItemControl,\n type FeedStatusTone,\n} from './types';\n\ndefineOptions({\n name: 'FeedItemBase',\n});\n\nconst DEFAULT_CONTROL_LABELS = {\n mention: 'Mention',\n share: 'Share',\n more: 'More',\n fullscreen: 'Fullscreen',\n showMore: 'Show more',\n showLess: 'Show less',\n} as const;\n\nconst STATUS_DOT_CLASS: Record<FeedStatusTone, string> = {\n primary: 'bg-primary dark:bg-primary-dark',\n success: 'bg-success dark:bg-success-dark',\n warning: 'bg-warning dark:bg-warning-dark',\n error: 'bg-error dark:bg-error-dark',\n neutral: 'bg-outline dark:bg-outline-dark',\n secondary: 'bg-secondary dark:bg-secondary-dark',\n};\n\nconst props = withDefaults(defineProps<FeedItemBaseProps & {\n engagement?: FeedItemEngagement;\n}>(), {\n shortContent: undefined,\n timestamp: undefined,\n timestampDatetime: undefined,\n source: undefined,\n authorPrefix: 'By',\n typeLabel: undefined,\n status: undefined,\n mediaSrc: undefined,\n mediaAlt: '',\n summary: undefined,\n summaryLabel: 'Summary:',\n expandable: true,\n view: 'list',\n fullscreenControl: false,\n mentionControl: true,\n shareControl: true,\n moreControl: true,\n isNew: false,\n highlighted: false,\n controlLabels: undefined,\n engagement: 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);\nconst isFullscreen = computed(() => props.view === 'fullscreen');\n\n/** Non-expandable and fullscreen items always expose their body. */\nconst isBodyVisible = computed(() => isFullscreen.value || !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 || props.highlighted) {\n return 'bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-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 hasBody = computed(() => Boolean(slots.body));\nconst showItemActions = computed(() => Boolean(slots.actions) && isBodyVisible.value);\nconst showExpandControl = computed(() => !isFullscreen.value && props.expandable && hasBody.value);\nconst hasSummary = computed(() => {\n const summary = props.summary;\n if (!summary) {\n return false;\n }\n return Boolean(summary.text) || Boolean(summary.choices?.length);\n});\nconst showSummary = computed(() => hasSummary.value && !isBodyVisible.value);\nconst showMedia = computed(() => !isFullscreen.value && (Boolean(props.mediaSrc) || Boolean(slots.media)));\nconst authorLabel = computed(() => {\n const source = props.source?.trim();\n if (!source) {\n return undefined;\n }\n if (/^by\\s/i.test(source)) {\n return source;\n }\n return `${props.authorPrefix} ${source}`;\n});\nconst statusDotClass = computed(() => STATUS_DOT_CLASS[props.status?.tone ?? 'primary']);\nconst showEngagement = computed(() => Boolean(props.engagement));\nconst showFooter = computed(() => Boolean(slots.footer) && isBodyVisible.value && !isFullscreen.value);\n\nfunction setExpanded(next: boolean) {\n if (!props.expandable || isFullscreen.value || 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 overflow-hidden rounded-md border border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark\"\n :class=\"shellClass\"\n :aria-labelledby=\"titleId\"\n >\n <header\n class=\"flex w-full min-w-0 items-center gap-md px-md\"\n :class=\"isFullscreen ? 'justify-end py-sm' : 'pt-md pb-sm'\"\n >\n <div\n v-if=\"!isFullscreen\"\n class=\"flex min-w-0 flex-1 flex-wrap items-center gap-x-md gap-y-sm\"\n >\n <span\n v-if=\"typeLabel\"\n class=\"inline-flex shrink-0 items-center rounded-sm bg-primary px-sm typography-caption-regular text-on-primary dark:bg-primary-dark dark:text-on-primary-dark\"\n >\n {{ typeLabel }}\n </span>\n\n <span\n v-if=\"status\"\n class=\"inline-flex shrink-0 items-center gap-xs\"\n >\n <span\n class=\"size-2 shrink-0 rounded-full\"\n :class=\"statusDotClass\"\n aria-hidden=\"true\"\n />\n <span class=\"typography-caption-regular text-outline dark:text-outline-dark\">\n {{ status.label }}\n </span>\n </span>\n\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=\"authorLabel\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ authorLabel }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-md text-outline dark:text-outline-dark\">\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 <OrIconButtonV3\n v-if=\"shareControl && !isFullscreen\"\n icon=\"share\"\n :tooltip=\"resolvedControlLabels.share\"\n @click=\"onControlClick('share')\"\n />\n <OrIconButtonV3\n v-if=\"moreControl\"\n icon=\"more_vert\"\n :tooltip=\"resolvedControlLabels.more\"\n @click=\"onControlClick('more')\"\n />\n </slot>\n </div>\n </header>\n\n <div :class=\"isFullscreen ? 'mx-auto w-full max-w-[50rem] px-md pb-sm' : 'px-md py-sm'\">\n <div class=\"flex w-full min-w-0 items-center gap-md\">\n <div\n v-if=\"showMedia\"\n class=\"size-16 shrink-0 overflow-hidden rounded-md bg-surface-1 dark:bg-surface-1-dark\"\n >\n <slot name=\"media\">\n <img\n v-if=\"mediaSrc\"\n class=\"size-full object-cover\"\n :src=\"mediaSrc\"\n :alt=\"mediaAlt\"\n >\n </slot>\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col items-start\">\n <h3\n :id=\"titleId\"\n class=\"m-0 w-full text-on-background dark:text-on-background-dark\"\n :class=\"isFullscreen ? 'typography-headline-1' : 'overflow-hidden text-ellipsis typography-headline-3'\"\n >\n {{ title }}\n </h3>\n <p\n v-if=\"shortContent && !isFullscreen\"\n class=\"m-0 line-clamp-2 w-full 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=\"isFullscreen\"\n class=\"mt-sm flex w-full min-w-0 flex-wrap items-center justify-between gap-md\"\n >\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-x-md gap-y-sm\">\n <span\n v-if=\"typeLabel\"\n class=\"inline-flex shrink-0 items-center rounded-sm bg-primary px-sm typography-caption-regular text-on-primary dark:bg-primary-dark dark:text-on-primary-dark\"\n >\n {{ typeLabel }}\n </span>\n <span\n v-if=\"status\"\n class=\"inline-flex shrink-0 items-center gap-xs\"\n >\n <span\n class=\"size-2 shrink-0 rounded-full\"\n :class=\"statusDotClass\"\n aria-hidden=\"true\"\n />\n <span class=\"typography-caption-regular text-outline dark:text-outline-dark\">\n {{ status.label }}\n </span>\n </span>\n <span\n v-if=\"authorLabel\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ authorLabel }}\n </span>\n <time\n v-if=\"timestamp\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n :datetime=\"timestampDatetime || undefined\"\n >\n {{ timestamp }}\n </time>\n </div>\n\n <button\n v-if=\"shareControl\"\n type=\"button\"\n class=\"inline-flex shrink-0 items-center gap-xs rounded-full border-0 bg-surface-1 px-sm py-xs typography-body-2-regular text-on-background dark:bg-surface-1-dark dark:text-on-background-dark\"\n @click=\"onControlClick('share')\"\n >\n <OrIcon\n icon=\"share\"\n class=\"size-4\"\n />\n {{ resolvedControlLabels.share }}\n </button>\n </div>\n </div>\n\n <div\n v-if=\"hasMountedBody\"\n v-show=\"isBodyVisible\"\n :id=\"bodyId\"\n class=\"feed-item-base__body w-full min-w-0\"\n :class=\"isFullscreen ? '' : 'max-h-[37.875rem] overflow-y-auto'\"\n role=\"region\"\n :aria-label=\"title\"\n :aria-hidden=\"!isBodyVisible\"\n >\n <div :class=\"isFullscreen ? 'mx-auto w-full max-w-[50rem] px-md' : 'px-md'\">\n <slot name=\"body\" />\n <div\n v-if=\"showItemActions\"\n class=\"mt-sm flex flex-wrap items-center gap-sm empty:hidden\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n\n <div\n v-if=\"!isFullscreen && (showSummary || showEngagement || showFooter || showExpandControl)\"\n class=\"flex w-full min-w-0 flex-col gap-sm px-md pb-sm+ pt-sm\"\n >\n <div\n v-if=\"showSummary\"\n class=\"flex w-full flex-col gap-xs rounded-md bg-surface-1 px-sm+ py-sm dark:bg-surface-1-dark\"\n >\n <p class=\"m-0 typography-caption-regular text-outline dark:text-outline-dark\">\n {{ summaryLabel }}\n </p>\n <p\n v-if=\"summary?.text\"\n class=\"m-0 typography-body-2-regular text-on-background dark:text-on-background-dark\"\n >\n {{ summary.text }}\n </p>\n <div\n v-if=\"summary?.choices?.length\"\n class=\"flex flex-wrap items-center gap-md\"\n >\n <span\n v-for=\"choice in summary.choices\"\n :key=\"choice\"\n class=\"inline-flex items-center gap-xs typography-body-2-bold text-on-background dark:text-on-background-dark\"\n >\n <OrIcon\n icon=\"check\"\n class=\"size-4\"\n />\n {{ choice }}\n </span>\n </div>\n </div>\n\n <FeedItemMetaFooter\n v-if=\"showEngagement && engagement\"\n :engagement=\"engagement\"\n />\n\n <footer\n v-if=\"showFooter\"\n class=\"w-full min-w-0 empty:hidden\"\n >\n <slot name=\"footer\" />\n </footer>\n\n <button\n v-if=\"showExpandControl\"\n type=\"button\"\n class=\"inline-flex w-fit items-center gap-xs border-0 bg-transparent p-0 typography-body-2-bold text-primary dark:text-primary-dark\"\n :aria-expanded=\"isBodyVisible\"\n :aria-controls=\"bodyId\"\n @click=\"toggleExpanded\"\n >\n {{ isBodyVisible ? resolvedControlLabels.showLess : resolvedControlLabels.showMore }}\n <OrIcon\n icon=\"keyboard_arrow_down\"\n class=\"size-4 transition-transform\"\n :class=\"isBodyVisible ? 'rotate-180' : ''\"\n />\n </button>\n </div>\n </article>\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","<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\n/** Sibling gap when an element omits `spacing`. The first item in a stack stays flush. */\nexport const DEFAULT_ELEMENT_SPACING: IdwSpacing = 'md';\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 { IdwButtonColor, IdwButtonVariant, IdwCardAction } from '../schema';\n\nconst STYLE_PROPS: Record<NonNullable<IdwCardAction['style']>, {\n variant: IdwButtonVariant;\n color: IdwButtonColor;\n}> = {\n primary: {\n variant: 'contained',\n color: 'primary',\n },\n destructive: {\n variant: 'outlined',\n color: 'danger',\n },\n default: {\n variant: 'outlined',\n color: 'primary',\n },\n};\n\nexport function idwCardActionButtonProps(action: IdwCardAction) {\n const fromStyle = STYLE_PROPS[action.style ?? 'default'];\n return {\n variant: action.variant ?? fromStyle.variant,\n color: action.color ?? fromStyle.color,\n disabled: action.disabled,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3, OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwCardAction } from '../schema';\n\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 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)\"\n type=\"button\"\n @click=\"onClick(action)\"\n >\n <OrIconV3\n v-if=\"action.icon\"\n :icon=\"action.icon\"\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 { computed } from 'vue';\n\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwCardElement, IdwColumnSetElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardColumnSetElement',\n});\n\nconst props = defineProps<{\n element: IdwColumnSetElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst sharesRows = computed(() => {\n const counts = props.element.columns.map((column) => column.items.length);\n const count = counts[0] ?? 0;\n return count > 0 && counts.every((itemCount) => itemCount === count);\n});\n\nconst gridStyle = computed(() => {\n if (!sharesRows.value) {\n return undefined;\n }\n return {\n display: 'grid',\n gridTemplateColumns: props.element.columns\n .map((column) => (column.width === 'auto' ? 'max-content' : 'minmax(0, 1fr)'))\n .join(' '),\n gridTemplateRows: `repeat(${props.element.columns[0]?.items.length ?? 0}, auto)`,\n rowGap: '0',\n };\n});\n\nconst columnGridStyle = {\n display: 'grid',\n gridRow: '1 / -1',\n gridTemplateRows: 'subgrid',\n};\n\nfunction columnClass(width?: 'auto' | 'stretch') {\n return width === 'auto' ? 'min-w-0 shrink' : 'min-w-0 flex-1';\n}\n\nfunction itemStyle(element: IdwCardElement) {\n if (!sharesRows.value) {\n return undefined;\n }\n if (element.type === 'Input.Toggle' || element.type === 'Input.Checkbox') {\n return { alignSelf: 'center' };\n }\n return undefined;\n}\n</script>\n\n<template>\n <div\n class=\"idw-card-column-set min-w-0 gap-sm\"\n :class=\"sharesRows ? undefined : 'flex flex-wrap items-stretch'\"\n :style=\"gridStyle\"\n >\n <div\n v-for=\"(column, columnIndex) in element.columns\"\n :key=\"columnIndex\"\n :class=\"sharesRows ? 'min-w-0' : ['flex flex-col', columnClass(column.width)]\"\n :style=\"sharesRows ? columnGridStyle : undefined\"\n >\n <IdwCardElementView\n v-for=\"(child, index) in column.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n :style=\"itemStyle(child)\"\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-h-0 min-w-0 flex-1 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","const STYLE_ID = 'idw-card-frame-border';\n\nconst CSS = `\n.idw-card-frame {\n border: 1px solid var(--or-c-disabled-light);\n border-radius: 8px;\n}\n.dark .idw-card-frame,\n[data-theme='dark'] .idw-card-frame {\n border-color: var(--or-c-disabled-dark);\n}\n.idw-card-frame-line {\n border-bottom: 1px solid var(--or-c-disabled-light);\n}\n.dark .idw-card-frame-line,\n[data-theme='dark'] .idw-card-frame-line {\n border-bottom-color: var(--or-c-disabled-dark);\n}\n.idw-card-frame-line-top {\n border-top: 1px solid var(--or-c-disabled-light);\n}\n.dark .idw-card-frame-line-top,\n[data-theme='dark'] .idw-card-frame-line-top {\n border-top-color: var(--or-c-disabled-dark);\n}\n`;\n\n/** Host Tailwind does not always emit library-only border utilities. */\nexport function installIdwCardFrameBorder(): void {\n if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = CSS;\n document.head.appendChild(style);\n}\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\n\nimport type { IdwFactSetElement, IdwProgressColor, IdwProgressVariant } from '../../schema';\nimport { installIdwCardFrameBorder } from '../frameBorder';\n\ndefineOptions({\n name: 'IdwCardFactSetElement',\n});\n\ndefineProps<{\n element: IdwFactSetElement;\n}>();\n\ninstallIdwCardFrameBorder();\n\nconst progressColor: Record<IdwProgressColor, ProgressColor> = {\n auto: ProgressColor.Auto,\n primary: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n error: ProgressColor.Error,\n};\n\nconst progressType: Record<IdwProgressVariant, ProgressType> = {\n linear: ProgressType.Linear,\n circle: ProgressType.Circle,\n};\n\nfunction factTitle(title: string) {\n return title.endsWith(':') ? title : `${title}:`;\n}\n\nfunction progressMax(progress: NonNullable<IdwFactSetElement['progress']>) {\n return progress.maxValue ?? progress.max ?? 100;\n}\n</script>\n\n<template>\n <div\n v-if=\"element.facts.length || element.progress\"\n class=\"idw-card-fact-set idw-card-frame overflow-hidden\"\n >\n <div\n v-if=\"element.facts.length\"\n class=\"idw-card-fact-set__facts\"\n style=\"display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: 16px; row-gap: 8px; padding: 16px;\"\n >\n <template\n v-for=\"(fact, index) in element.facts\"\n :key=\"`${fact.title}-${index}`\"\n >\n <p\n class=\"idw-card-fact-set__label typography-body-2-semibold text-on-background dark:text-on-background-dark\"\n style=\"margin: 0; white-space: nowrap;\"\n >\n {{ factTitle(fact.title) }}\n </p>\n <p\n class=\"idw-card-fact-set__value typography-body-2-regular text-on-background dark:text-on-background-dark\"\n style=\"margin: 0; min-width: 0; overflow-wrap: break-word;\"\n >\n {{ fact.value }}\n </p>\n </template>\n </div>\n <div\n v-if=\"element.progress\"\n class=\"idw-card-fact-set__progress idw-card-frame-line-top flex flex-col gap-xs px-md pb-sm+ pt-md\"\n >\n <p\n v-if=\"element.progress.label\"\n class=\"idw-card-fact-set__progress-label typography-caption-bold text-on-background dark:text-on-background-dark\"\n style=\"margin: 0;\"\n >\n {{ element.progress.label }}\n </p>\n <OrProgressV3\n :class=\"(element.progress.variant ?? 'linear') === 'circle' ? undefined : 'w-full'\"\n :style=\"(element.progress.variant ?? 'linear') === 'circle' ? { display: 'inline-block', width: 'fit-content' } : undefined\"\n :value=\"element.progress.value\"\n :max-value=\"progressMax(element.progress)\"\n :type=\"progressType[element.progress.variant ?? 'linear']\"\n :color=\"progressColor[element.progress.color ?? 'success']\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconButtonV3, OrIconV3, OrMenuItemV3, OrMenuV3 } from '@onereach/ui-components';\nimport { ref } from 'vue';\n\nimport type { IdwFileElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFileElement',\n});\n\nconst props = defineProps<{\n element: IdwFileElement;\n}>();\n\nconst menuButton = ref<{ root?: HTMLElement }>();\nconst menuOpen = ref(false);\n\nfunction openFile() {\n menuOpen.value = false;\n window.open(props.element.src, '_blank', 'noopener,noreferrer');\n}\n\nfunction downloadFile() {\n menuOpen.value = false;\n const link = document.createElement('a');\n link.href = props.element.src;\n link.download = props.element.title;\n link.rel = 'noopener noreferrer';\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n link.remove();\n}\n</script>\n\n<template>\n <div\n class=\"idw-card-file flex w-full min-w-0 items-center gap-md rounded-lg bg-primary-opacity-0-08 py-sm pl-sm pr-md text-on-background dark:bg-primary-opacity-0-08-dark dark:text-on-background-dark\"\n >\n <span class=\"flex size-2xl shrink-0 items-center justify-center rounded-md bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark\">\n <OrIconV3\n icon=\"description\"\n size=\"xl\"\n />\n </span>\n <span class=\"flex min-w-0 flex-1 flex-col\">\n <span class=\"truncate typography-body-2-regular\">{{ element.title }}</span>\n <span\n v-if=\"element.size\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ element.size }}\n </span>\n </span>\n <OrIconButtonV3\n ref=\"menuButton\"\n class=\"shrink-0\"\n icon=\"more_vert\"\n size=\"m\"\n tooltip=\"File actions\"\n @click.stop=\"menuOpen = !menuOpen\"\n />\n </div>\n <OrMenuV3\n :is-open=\"menuOpen\"\n :trigger=\"menuButton?.root\"\n placement=\"bottom-end\"\n @close=\"menuOpen = false\"\n >\n <OrMenuItemV3\n icon=\"open_in_new\"\n @click=\"openFile\"\n >\n Open\n </OrMenuItemV3>\n <OrMenuItemV3\n icon=\"download\"\n @click=\"downloadFile\"\n >\n Download\n </OrMenuItemV3>\n </OrMenuV3>\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 { computed } from 'vue';\n\nimport type { IdwImageElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageElement',\n});\n\nconst props = defineProps<{\n element: IdwImageElement;\n}>();\n\nconst aspectClass = computed(() => (\n props.element.aspect === 'square' ? 'aspect-square' : 'aspect-video'\n));\n</script>\n\n<template>\n <img\n class=\"idw-card-image w-full rounded-xl bg-surface-1 object-cover dark:bg-surface-1-dark\"\n :class=\"aspectClass\"\n :src=\"element.url\"\n :alt=\"element.alt\"\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwImageSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageSetElement',\n});\n\nconst props = defineProps<{\n element: IdwImageSetElement;\n}>();\n\nconst gridClass = computed(() => (\n props.element.images.length <= 1 ? 'grid-cols-1' : 'grid-cols-2'\n));\n\nfunction spansWidth(index: number) {\n const count = props.element.images.length;\n if (count === 3) {\n return index === 0;\n }\n if (count === 5) {\n return index === 2;\n }\n return false;\n}\n</script>\n\n<template>\n <div\n class=\"idw-card-image-set grid min-w-0 gap-sm\"\n :class=\"gridClass\"\n >\n <img\n v-for=\"(image, index) in element.images\"\n :key=\"`${image.url}-${index}`\"\n class=\"w-full bg-surface-1 object-cover dark:bg-surface-1-dark\"\n :class=\"spansWidth(index) ? 'col-span-2 aspect-[2/1] rounded-xl' : 'aspect-square rounded-xl'\"\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","const STYLE_ID = 'idw-card-slider-spacing';\n\nconst CSS = `\n.idw-card-slider {\n padding-bottom: 8px;\n}\n@media (min-width: 768px) {\n .idw-card-slider {\n padding-bottom: 16px;\n }\n}\n`;\n\n/** Value labels sit outside the slider. Desktop grouping leaves 16px under them. */\nexport function installIdwCardSliderSpacing(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const style = document.getElementById(STYLE_ID) ?? document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = CSS;\n if (!style.parentNode) {\n document.head.appendChild(style);\n }\n}\n","<script setup lang=\"ts\">\nimport {\n OrCheckboxGroupV3,\n OrCheckboxV3,\n OrDatePickerV3,\n OrDateTimePickerV3,\n OrInputV3,\n OrRadioGroupV3,\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 { installIdwCardSliderSpacing } from '../sliderSpacing';\nimport type {\n IdwCardInputElement,\n IdwChoice,\n IdwInputCheckboxGroupElement,\n IdwInputChoiceSetElement,\n IdwInputRadioGroupElement,\n IdwInputRangeElement,\n IdwInputSelectElement,\n IdwInputSliderElement,\n IdwLocationValue,\n IdwOption,\n} from '../../schema';\n\ndefineOptions({\n name: 'IdwCardInputElement',\n});\n\nconst props = defineProps<{\n element: IdwCardInputElement;\n}>();\n\ninstallIdwCardSliderSpacing();\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 numberValue = computed(() => (\n typeof model.value === 'number' || typeof model.value === 'string' ? model.value : undefined\n));\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\nfunction optionLabel(option: IdwChoice | IdwOption) {\n return ('title' in option ? option.label || option.title : option.label) || option.value;\n}\n\nfunction elementOptions(element: IdwInputSelectElement\n | IdwInputRadioGroupElement\n | IdwInputCheckboxGroupElement\n | IdwInputChoiceSetElement) {\n return element.type === 'Input.ChoiceSet' ? element.choices : element.options;\n}\n\nfunction isChoiceElement(\n element: IdwCardInputElement,\n): element is IdwInputSelectElement\n | IdwInputRadioGroupElement\n | IdwInputCheckboxGroupElement\n | IdwInputChoiceSetElement {\n return element.type === 'Input.Select'\n || element.type === 'Input.RadioGroup'\n || element.type === 'Input.CheckboxGroup'\n || element.type === 'Input.ChoiceSet';\n}\n\nconst selectOptions = computed(() => {\n if (!isChoiceElement(props.element)) {\n return [];\n }\n return elementOptions(props.element).map((option) => ({\n label: optionLabel(option),\n value: option.value,\n disabled: option.disabled,\n }));\n});\n\nconst selectMultiple = computed(() => {\n if (props.element.type === 'Input.Select') {\n return Boolean(props.element.multiple);\n }\n if (props.element.type === 'Input.ChoiceSet') {\n return Boolean(props.element.multiple ?? props.element.multi);\n }\n return false;\n});\n\nconst selectSearch = computed(() => {\n if (props.element.type === 'Input.Select') {\n return Boolean(props.element.enableSearch);\n }\n return props.element.type === 'Input.ChoiceSet'\n && Boolean(props.element.enableSearch || props.element.style === 'filtered');\n});\n\nconst groupDirection = computed(() => (\n props.element.type === 'Input.RadioGroup' || props.element.type === 'Input.CheckboxGroup'\n ? props.element.direction\n : undefined\n));\n\nconst groupReadonly = computed(() => (\n props.element.type === 'Input.RadioGroup' || props.element.type === 'Input.CheckboxGroup'\n ? props.element.readonly\n : undefined\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 setLocation(patch: IdwLocationValue) {\n set({\n ...location.value,\n ...patch,\n });\n}\n\nfunction sliderProps(element: IdwInputSliderElement | IdwInputRangeElement) {\n return {\n minValue: element.minValue ?? element.min,\n maxValue: element.maxValue ?? element.max,\n ...(element.step != null ? { step: element.step } : {}),\n ...(element.breakpoints ? { breakpoints: element.breakpoints } : {}),\n ...(element.color ? { color: element.color } : {}),\n ...(element.orientation ? { orientation: element.orientation } : {}),\n disabled: element.disabled,\n };\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.Textarea' || (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=\"numberValue\"\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.Select' || (element.type === 'Input.ChoiceSet' && element.style !== 'expanded')\"\n :model-value=\"selectValue\"\n :options=\"selectOptions\"\n :multiple=\"selectMultiple\"\n :enable-search=\"selectSearch\"\n :enable-clear=\"element.type === 'Input.Select' ? element.enableClear : undefined\"\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 <OrCheckboxGroupV3\n v-else-if=\"element.type === 'Input.CheckboxGroup' || (element.type === 'Input.ChoiceSet' && element.style === 'expanded' && selectMultiple)\"\n :model-value=\"Array.isArray(model) ? model : []\"\n :options=\"selectOptions\"\n :direction=\"groupDirection\"\n :readonly=\"groupReadonly\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrRadioGroupV3\n v-else-if=\"element.type === 'Input.RadioGroup' || element.type === 'Input.ChoiceSet'\"\n :model-value=\"radioValue\"\n :options=\"selectOptions\"\n :direction=\"groupDirection\"\n :readonly=\"groupReadonly\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\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=\"idw-card-slider\"\n >\n <OrSliderV3\n v-bind=\"sliderProps(element)\"\n :model-value=\"Number(model ?? element.minValue ?? element.min ?? 0)\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Range'\"\n class=\"idw-card-slider\"\n >\n <OrRangeSliderV3\n v-bind=\"sliderProps(element)\"\n :model-value=\"(Array.isArray(model) ? model : [\n element.minValue ?? element.min ?? 0,\n element.maxValue ?? element.max ?? 100,\n ]) as [number, number]\"\n @update:model-value=\"set\"\n />\n </div>\n <OrRatingV3\n v-else-if=\"element.type === 'Input.Rating'\"\n :model-value=\"Number(model ?? 0)\"\n :variant=\"element.variant\"\n :readonly=\"element.readonly\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\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","const STYLE_ID = 'idw-card-media-chrome';\n\nconst CSS = `\n.idw-card-media button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n appearance: none;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n color: inherit;\n line-height: 0;\n cursor: pointer;\n}\n.idw-card-media button:focus {\n outline: none;\n}\n.idw-card-media button:focus-visible {\n outline: 2px solid var(--or-c-primary-light);\n outline-offset: 2px;\n}\n.idw-card-media .or-icon-v3 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n font-size: 16px;\n line-height: 1;\n color: inherit;\n}\n.idw-card-media .idw-card-video-play {\n width: 36px;\n height: 36px;\n border-radius: 999px;\n background: var(--or-c-background-light);\n color: var(--or-c-on-background-light);\n}\n.idw-card-media .idw-card-video-play:hover {\n width: 40px;\n height: 40px;\n}\n.idw-card-video-controls {\n color: var(--or-c-background-light);\n}\n.idw-card-video-track {\n position: relative;\n height: 4px;\n width: 100%;\n border-radius: 2px;\n background: var(--or-c-outline-light);\n cursor: pointer;\n}\n.idw-card-video-track-fill {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n border-radius: 2px;\n background: var(--or-c-background-light);\n}\n.idw-card-media .idw-card-audio-play {\n width: 32px;\n height: 32px;\n border-radius: 999px;\n background: var(--or-c-on-background-light);\n color: var(--or-c-background-light);\n}\n.dark .idw-card-media .idw-card-audio-play,\n[data-theme='dark'] .idw-card-media .idw-card-audio-play {\n background: var(--or-c-on-background-dark);\n color: var(--or-c-background-dark);\n}\n.idw-card-media .idw-card-audio-play.is-unavailable {\n background: var(--or-c-disabled-light);\n color: var(--or-c-outline-light);\n}\n.dark .idw-card-media .idw-card-audio-play.is-unavailable,\n[data-theme='dark'] .idw-card-media .idw-card-audio-play.is-unavailable {\n background: var(--or-c-disabled-dark);\n color: var(--or-c-outline-dark);\n}\n.idw-card-audio-track {\n position: relative;\n height: 12px;\n min-width: 0;\n flex: 1;\n cursor: pointer;\n}\n.idw-card-audio-rail,\n.idw-card-audio-buffer,\n.idw-card-audio-fill {\n position: absolute;\n top: 50%;\n left: 0;\n height: 4px;\n border-radius: 2px;\n transform: translateY(-50%);\n}\n.idw-card-audio-rail {\n right: 0;\n background: var(--or-c-surface-1-light);\n}\n.dark .idw-card-audio-rail,\n[data-theme='dark'] .idw-card-audio-rail {\n background: var(--or-c-surface-1-dark);\n}\n.idw-card-audio-buffer {\n background: var(--or-c-secondary-container-light);\n}\n.dark .idw-card-audio-buffer,\n[data-theme='dark'] .idw-card-audio-buffer {\n background: var(--or-c-secondary-container-dark);\n}\n.idw-card-audio-fill,\n.idw-card-audio-thumb {\n background: var(--or-c-on-background-light);\n}\n.dark .idw-card-audio-fill,\n.dark .idw-card-audio-thumb,\n[data-theme='dark'] .idw-card-audio-fill,\n[data-theme='dark'] .idw-card-audio-thumb {\n background: var(--or-c-on-background-dark);\n}\n.idw-card-audio-thumb {\n position: absolute;\n top: 50%;\n width: 12px;\n height: 12px;\n border-radius: 999px;\n transform: translate(-50%, -50%);\n box-shadow: 0 1px 2px rgba(24, 28, 34, 0.15), 0 0 5px rgba(0, 0, 0, 0.05);\n}\n.idw-card-volume {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex: 0 0 16px;\n}\n.idw-card-volume-popup {\n position: absolute;\n z-index: 5;\n bottom: calc(100% + 4px);\n left: 50%;\n width: 24px;\n height: 80px;\n transform: translateX(-50%);\n border-radius: 8px;\n background: var(--or-c-surface-1-light);\n box-shadow: inset 0 0 1px rgba(255, 255, 255, 0.4), -1px 0 20px rgba(24, 28, 34, 0.05), 0 4px 4px rgba(0, 0, 0, 0.25);\n cursor: pointer;\n}\n.dark .idw-card-volume-popup,\n[data-theme='dark'] .idw-card-volume-popup {\n background: var(--or-c-surface-1-dark);\n}\n.idw-card-volume-track {\n position: absolute;\n top: 10px;\n right: 0;\n bottom: 10px;\n left: 0;\n}\n.idw-card-volume-rail,\n.idw-card-volume-fill {\n position: absolute;\n left: 50%;\n width: 4px;\n border-radius: 2px;\n transform: translateX(-50%);\n}\n.idw-card-volume-rail {\n top: 0;\n bottom: 0;\n background: var(--or-c-outline-light);\n}\n.dark .idw-card-volume-rail,\n[data-theme='dark'] .idw-card-volume-rail {\n background: var(--or-c-outline-dark);\n}\n.idw-card-volume-fill {\n bottom: 0;\n background: var(--or-c-on-background-light);\n}\n.dark .idw-card-volume-fill,\n[data-theme='dark'] .idw-card-volume-fill {\n background: var(--or-c-on-background-dark);\n}\n.idw-card-volume-thumb {\n position: absolute;\n left: 50%;\n width: 12px;\n height: 12px;\n border-radius: 999px;\n background: var(--or-c-on-background-light);\n transform: translate(-50%, 50%);\n box-shadow: 0 1px 2px rgba(24, 28, 34, 0.15), 0 0 5px rgba(0, 0, 0, 0.05);\n}\n.dark .idw-card-volume-thumb,\n[data-theme='dark'] .idw-card-volume-thumb {\n background: var(--or-c-on-background-dark);\n}\n`;\n\n/** Host Tailwind does not emit several player sizes and token colors. */\nexport function installIdwCardMediaChrome(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = CSS;\n}\n","import {\n computed,\n onBeforeUnmount,\n ref,\n watch,\n type Ref,\n} from 'vue';\n\nexport function formatMediaTime(seconds: number) {\n if (!Number.isFinite(seconds) || seconds < 0) {\n return '0:00';\n }\n\n const total = Math.floor(seconds);\n const hours = Math.floor(total / 3600);\n const minutes = Math.floor((total % 3600) / 60);\n const secs = String(total % 60).padStart(2, '0');\n\n if (hours > 0) {\n return `${hours}:${String(minutes).padStart(2, '0')}:${secs}`;\n }\n\n return `${minutes}:${secs}`;\n}\n\nexport function useMediaControls(source: Ref<string>) {\n const media = ref<HTMLMediaElement>();\n const playing = ref(false);\n const current = ref(0);\n const duration = ref(0);\n const muted = ref(false);\n const volume = ref(1);\n const unavailable = ref(!source.value);\n const buffered = ref(0);\n\n const progress = computed(() => (\n duration.value > 0 ? Math.min(1, current.value / duration.value) : 0\n ));\n\n const timeLabel = computed(() => (\n `${formatMediaTime(current.value)} / ${formatMediaTime(duration.value)}`\n ));\n\n function sync() {\n const element = media.value;\n\n if (!element) {\n return;\n }\n\n current.value = element.currentTime || 0;\n duration.value = Number.isFinite(element.duration) ? element.duration : 0;\n muted.value = element.muted || element.volume === 0;\n volume.value = element.muted ? 0 : element.volume;\n playing.value = !element.paused;\n\n if (element.buffered.length > 0 && duration.value > 0) {\n const end = element.buffered.end(element.buffered.length - 1);\n buffered.value = Math.min(1, end / duration.value);\n }\n }\n\n function toggle() {\n const element = media.value;\n\n if (!element || unavailable.value) {\n return;\n }\n\n if (element.paused) {\n void element.play().catch(() => {\n playing.value = false;\n });\n return;\n }\n\n element.pause();\n }\n\n function setVolume(ratio: number) {\n const element = media.value;\n const next = Math.min(1, Math.max(0, ratio));\n\n volume.value = next;\n muted.value = next === 0;\n\n if (!element) {\n return;\n }\n\n element.volume = next;\n element.muted = next === 0;\n }\n\n function seekRatio(ratio: number) {\n const element = media.value;\n\n if (!element || !Number.isFinite(element.duration) || element.duration <= 0) {\n return;\n }\n\n element.currentTime = Math.min(1, Math.max(0, ratio)) * element.duration;\n current.value = element.currentTime;\n }\n\n function nudge(seconds: number) {\n const element = media.value;\n\n if (!element || !Number.isFinite(element.duration)) {\n return;\n }\n\n element.currentTime = Math.min(\n element.duration,\n Math.max(0, element.currentTime + seconds),\n );\n current.value = element.currentTime;\n }\n\n function onSeek(event: PointerEvent) {\n const track = event.currentTarget as HTMLElement;\n const apply = (point: PointerEvent) => {\n const rect = track.getBoundingClientRect();\n const ratio = rect.width > 0 ? (point.clientX - rect.left) / rect.width : 0;\n seekRatio(ratio);\n };\n\n apply(event);\n\n const move = (point: PointerEvent) => apply(point);\n const stop = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', stop);\n };\n\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', stop);\n }\n\n function onError() {\n unavailable.value = true;\n playing.value = false;\n }\n\n watch(source, (url) => {\n unavailable.value = !url;\n current.value = 0;\n duration.value = 0;\n buffered.value = 0;\n playing.value = false;\n });\n\n onBeforeUnmount(() => {\n media.value?.pause();\n });\n\n return {\n media,\n playing,\n current,\n duration,\n muted,\n volume,\n unavailable,\n buffered,\n progress,\n timeLabel,\n sync,\n toggle,\n setVolume,\n nudge,\n onSeek,\n onError,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\nimport { computed, onBeforeUnmount, ref, watch } from 'vue';\n\ndefineOptions({\n name: 'IdwCardMediaVolume',\n});\n\nconst props = defineProps<{\n volume: number;\n muted: boolean;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits<{\n volume: [ratio: number];\n}>();\n\nconst root = ref<HTMLElement>();\nconst slider = ref<HTMLElement>();\nconst open = ref(false);\nconst level = computed(() => (props.muted ? 0 : props.volume));\nconst fill = computed(() => `${level.value * 100}%`);\nconst icon = computed(() => (level.value === 0 ? 'volume_off' : 'volume_up'));\n\nfunction applyPointer(point: PointerEvent) {\n const track = slider.value;\n\n if (!track) {\n return;\n }\n\n const rect = track.getBoundingClientRect();\n const ratio = rect.height > 0 ? (rect.bottom - point.clientY) / rect.height : 0;\n emit('volume', ratio);\n}\n\nfunction onPointerDown(event: PointerEvent) {\n applyPointer(event);\n\n const move = (point: PointerEvent) => applyPointer(point);\n const stop = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', stop);\n };\n\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', stop);\n}\n\nfunction onDocumentPointerDown(event: PointerEvent) {\n if (!root.value?.contains(event.target as Node)) {\n open.value = false;\n }\n}\n\nwatch(open, (isOpen) => {\n if (isOpen) {\n document.addEventListener('pointerdown', onDocumentPointerDown);\n return;\n }\n\n document.removeEventListener('pointerdown', onDocumentPointerDown);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('pointerdown', onDocumentPointerDown);\n});\n</script>\n\n<template>\n <div\n ref=\"root\"\n class=\"idw-card-volume\"\n >\n <button\n type=\"button\"\n aria-label=\"Volume\"\n :aria-expanded=\"open\"\n :disabled=\"disabled\"\n @click=\"open = !open\"\n >\n <OrIconV3\n :icon=\"icon\"\n size=\"m\"\n variant=\"inherit\"\n />\n </button>\n <div\n v-if=\"open\"\n class=\"idw-card-volume-popup\"\n @pointerdown=\"onPointerDown\"\n >\n <div\n ref=\"slider\"\n class=\"idw-card-volume-track\"\n role=\"slider\"\n tabindex=\"0\"\n aria-label=\"Volume level\"\n aria-orientation=\"vertical\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"100\"\n :aria-valuenow=\"Math.round(level * 100)\"\n @keydown.up.prevent=\"emit('volume', level + 0.05)\"\n @keydown.down.prevent=\"emit('volume', level - 0.05)\"\n >\n <span class=\"idw-card-volume-rail\" />\n <span\n class=\"idw-card-volume-fill\"\n :style=\"{ height: fill }\"\n />\n <span\n class=\"idw-card-volume-thumb\"\n :style=\"{ bottom: fill }\"\n />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\nimport { computed, toRef } from 'vue';\n\nimport { useMediaControls } from '../mediaControls';\n\nimport MediaVolume from './MediaVolume.vue';\n\ndefineOptions({\n name: 'IdwCardMediaAudio',\n});\n\nconst props = defineProps<{\n url: string;\n title?: string;\n}>();\n\nconst {\n media,\n playing,\n current,\n duration,\n muted,\n volume,\n unavailable,\n progress,\n buffered: bufferedRatio,\n timeLabel,\n sync,\n toggle,\n setVolume,\n nudge,\n onSeek,\n onError,\n} = useMediaControls(toRef(props, 'url'));\nconst played = computed(() => `${progress.value * 100}%`);\nconst buffered = computed(() => `${bufferedRatio.value * 100}%`);\nconst playIcon = computed(() => {\n if (unavailable.value) {\n return 'play_disabled';\n }\n\n return playing.value ? 'pause' : 'play_arrow';\n});\n</script>\n\n<template>\n <div\n class=\"idw-card-media idw-card-audio flex items-center rounded-lg bg-primary-opacity-0-08 py-sm pl-sm pr-md dark:bg-primary-opacity-0-08-dark\"\n style=\"column-gap: 10px;\"\n >\n <audio\n ref=\"media\"\n class=\"hidden\"\n :src=\"url\"\n :title=\"title\"\n @timeupdate=\"sync\"\n @loadedmetadata=\"sync\"\n @progress=\"sync\"\n @play=\"sync\"\n @pause=\"sync\"\n @ended=\"sync\"\n @volumechange=\"sync\"\n @error=\"onError\"\n />\n <button\n type=\"button\"\n class=\"idw-card-audio-play flex shrink-0 items-center justify-center\"\n :class=\"{ 'is-unavailable': unavailable }\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n :disabled=\"unavailable\"\n @click=\"toggle\"\n >\n <OrIconV3\n :icon=\"playIcon\"\n size=\"m\"\n variant=\"filled\"\n />\n </button>\n <p\n v-if=\"unavailable\"\n class=\"typography-caption-regular min-w-0 flex-1 text-center text-on-background dark:text-on-background-dark\"\n >\n No audio available\n </p>\n <div\n v-else\n class=\"flex min-w-0 flex-1 items-center gap-md\"\n >\n <div class=\"flex min-w-0 flex-1 items-center gap-sm\">\n <p class=\"typography-caption-regular shrink-0 text-on-background dark:text-on-background-dark\">\n {{ timeLabel }}\n </p>\n <div\n role=\"slider\"\n tabindex=\"0\"\n class=\"idw-card-audio-track\"\n aria-label=\"Seek\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"Math.round(duration)\"\n :aria-valuenow=\"Math.round(current)\"\n @pointerdown=\"onSeek\"\n @keydown.left.prevent=\"nudge(-5)\"\n @keydown.right.prevent=\"nudge(5)\"\n >\n <span class=\"idw-card-audio-rail\" />\n <span\n class=\"idw-card-audio-buffer\"\n :style=\"{ width: buffered }\"\n />\n <span\n class=\"idw-card-audio-fill\"\n :style=\"{ width: played }\"\n />\n <span\n class=\"idw-card-audio-thumb\"\n :style=\"{ left: played }\"\n />\n </div>\n </div>\n <MediaVolume\n class=\"shrink-0 text-on-background dark:text-on-background-dark\"\n :volume=\"volume\"\n :muted=\"muted\"\n @volume=\"setVolume\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\nimport { computed, onBeforeUnmount, onMounted, ref, toRef } from 'vue';\n\nimport { useMediaControls } from '../mediaControls';\n\nimport MediaVolume from './MediaVolume.vue';\n\ndefineOptions({\n name: 'IdwCardMediaVideo',\n});\n\nconst props = defineProps<{\n url: string;\n poster?: string;\n title?: string;\n}>();\n\nconst frame = ref<HTMLElement>();\nconst fullscreen = ref(false);\nconst {\n media,\n playing,\n current,\n duration,\n muted,\n volume,\n unavailable,\n progress,\n timeLabel,\n sync,\n toggle,\n setVolume,\n nudge,\n onSeek,\n onError,\n} = useMediaControls(toRef(props, 'url'));\nconst played = computed(() => `${progress.value * 100}%`);\n\nfunction toggleFullscreen() {\n const element = frame.value;\n\n if (!element?.requestFullscreen) {\n return;\n }\n\n if (document.fullscreenElement === element) {\n void document.exitFullscreen?.();\n return;\n }\n\n void element.requestFullscreen();\n}\n\nfunction onFullscreenChange() {\n fullscreen.value = document.fullscreenElement === frame.value;\n}\n\nonMounted(() => {\n document.addEventListener('fullscreenchange', onFullscreenChange);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('fullscreenchange', onFullscreenChange);\n});\n</script>\n\n<template>\n <div\n ref=\"frame\"\n class=\"idw-card-media idw-card-video relative w-full overflow-hidden rounded-xl bg-surface-1 dark:bg-surface-1-dark\"\n :class=\"fullscreen ? 'h-full' : 'aspect-video'\"\n >\n <video\n ref=\"media\"\n class=\"absolute inset-0 size-full object-cover\"\n :src=\"url\"\n :poster=\"poster\"\n :title=\"title\"\n playsinline\n @click=\"toggle\"\n @timeupdate=\"sync\"\n @loadedmetadata=\"sync\"\n @play=\"sync\"\n @pause=\"sync\"\n @ended=\"sync\"\n @volumechange=\"sync\"\n @error=\"onError\"\n />\n <div class=\"pointer-events-none absolute inset-0 bg-on-background opacity-50\" />\n <div\n class=\"absolute inset-x-0 bottom-0 flex flex-col justify-end px-md\"\n style=\"height: 100px; padding-bottom: 10px; background-image: linear-gradient(to bottom, transparent, rgba(30, 35, 43, 0.8));\"\n >\n <div class=\"flex flex-col gap-sm\">\n <div class=\"flex items-center justify-between\">\n <div class=\"idw-card-video-controls flex items-center gap-sm\">\n <button\n type=\"button\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n :disabled=\"unavailable\"\n @click=\"toggle\"\n >\n <OrIconV3\n :icon=\"playing ? 'pause' : 'play_arrow'\"\n size=\"m\"\n variant=\"filled\"\n />\n </button>\n <p class=\"typography-caption-regular\">\n {{ timeLabel }}\n </p>\n </div>\n <div class=\"idw-card-video-controls flex items-center gap-md\">\n <MediaVolume\n :volume=\"volume\"\n :muted=\"muted\"\n :disabled=\"unavailable\"\n @volume=\"setVolume\"\n />\n <button\n type=\"button\"\n :aria-label=\"fullscreen ? 'Exit full screen' : 'Full screen'\"\n @click=\"toggleFullscreen\"\n >\n <OrIconV3\n :icon=\"fullscreen ? 'fullscreen_exit' : 'fullscreen'\"\n size=\"m\"\n variant=\"inherit\"\n />\n </button>\n </div>\n </div>\n <div\n role=\"slider\"\n tabindex=\"0\"\n class=\"idw-card-video-track\"\n aria-label=\"Seek\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"Math.round(duration)\"\n :aria-valuenow=\"Math.round(current)\"\n :aria-disabled=\"unavailable\"\n @pointerdown=\"onSeek\"\n @keydown.left.prevent=\"nudge(-5)\"\n @keydown.right.prevent=\"nudge(5)\"\n >\n <span\n class=\"idw-card-video-track-fill\"\n :style=\"{ width: played }\"\n />\n </div>\n </div>\n </div>\n <p\n v-if=\"unavailable\"\n class=\"typography-caption-regular pointer-events-none absolute inset-0 flex items-center justify-center text-background\"\n >\n No video available\n </p>\n <button\n v-else\n type=\"button\"\n class=\"idw-card-video-play absolute left-1/2 top-1/2 z-10 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n @click=\"toggle\"\n >\n <OrIconV3\n :icon=\"playing ? 'pause' : 'play_arrow'\"\n size=\"m\"\n variant=\"filled\"\n />\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwMediaElement } from '../../schema';\nimport { installIdwCardMediaChrome } from '../mediaChrome';\n\nimport MediaAudio from './MediaAudio.vue';\nimport MediaVideo from './MediaVideo.vue';\n\ndefineOptions({\n name: 'IdwCardMediaElement',\n});\n\ninstallIdwCardMediaChrome();\n\nconst props = defineProps<{\n element: IdwMediaElement;\n}>();\n</script>\n\n<template>\n <MediaVideo\n v-if=\"(props.element.mediaType || 'video') === 'video'\"\n :url=\"props.element.url\"\n :poster=\"props.element.poster\"\n :title=\"props.element.title\"\n />\n <MediaAudio\n v-else\n :url=\"props.element.url\"\n :title=\"props.element.title\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwNoteElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardNoteElement',\n});\n\ndefineProps<{\n element: IdwNoteElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-note flex items-start gap-sm rounded-xl bg-primary-opacity-0-08 p-md dark:bg-primary-opacity-0-08-dark\">\n <OrIconV3\n :icon=\"element.icon || 'sticky_note_2'\"\n class=\"shrink-0 text-on-background dark:text-on-background-dark\"\n />\n <p class=\"m-0 min-w-0 flex-1 typography-body-2-regular text-on-background dark:text-on-background-dark\">\n <span class=\"typography-body-2-semibold\">{{ element.label || 'Notes:' }}</span>\n {{ element.text }}\n </p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrNotificationV3 } from '@onereach/ui-components';\nimport { ref } from 'vue';\n\nimport type { IdwNotificationElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardNotificationElement',\n});\n\ndefineProps<{\n element: IdwNotificationElement;\n}>();\n\nconst closed = ref(false);\n</script>\n\n<template>\n <OrNotificationV3\n v-if=\"!closed\"\n class=\"idw-card-notification\"\n :variant=\"element.variant ?? 'info'\"\n :message=\"element.message\"\n :disable-close=\"element.disableClose ?? false\"\n @close=\"closed = true\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport type { IdwProgressColor, 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 progressColor: Record<IdwProgressColor, ProgressColor> = {\n auto: ProgressColor.Auto,\n primary: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n error: ProgressColor.Error,\n};\n\nconst color = computed(() => (\n props.element.color\n ? progressColor[props.element.color]\n : toneColor[props.element.tone ?? 'default']\n));\nconst type = computed(() => (\n props.element.variant === 'circle' ? ProgressType.Circle : ProgressType.Linear\n));\nconst maxValue = computed(() => props.element.maxValue ?? props.element.max ?? 100);\nconst progressAttrs = computed(() => ({\n ...(props.element.precision != null ? { precision: props.element.precision } : {}),\n ...(props.element.loading ? { loading: true } : {}),\n}));\n</script>\n\n<template>\n <OrProgressV3\n class=\"idw-card-progress\"\n :class=\"element.variant === 'circle' ? undefined : 'w-full'\"\n :style=\"element.variant === 'circle' ? { display: 'inline-block', width: 'fit-content' } : undefined\"\n :value=\"element.value\"\n :max-value=\"maxValue\"\n :type=\"type\"\n :color=\"color\"\n v-bind=\"progressAttrs\"\n >\n <template\n v-if=\"element.label\"\n #label\n >\n {{ element.label }}\n </template>\n </OrProgressV3>\n</template>\n","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\n\nimport defaultSkillBandUrl from '../../../assets/skill-card-background.png';\nimport { FeedMarkdownContent } from '../../../components/Feeds/FeedMarkdownContent';\nimport { CardSize, SkillCard } from '../../../components/SkillCard';\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\nconst bandStyle = {\n backgroundImage: `url(${defaultSkillBandUrl})`,\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 <div class=\"idw-card-skill flex flex-col gap-md\">\n <div\n v-if=\"element.skill\"\n class=\"flex h-[12.5rem] w-full items-center justify-center overflow-hidden rounded-xl bg-cover bg-center\"\n :style=\"bandStyle\"\n >\n <SkillCard\n :skill=\"element.skill\"\n :size=\"CardSize.S\"\n @click=\"emit('skill-click')\"\n />\n </div>\n <FeedMarkdownContent\n v-if=\"element.text\"\n :text=\"element.text\"\n />\n <OrButtonV3\n v-if=\"element.startSkillLabel\"\n class=\"w-full md:w-auto\"\n variant=\"outlined\"\n color=\"primary\"\n @click=\"onStartSkill\"\n >\n {{ element.startSkillLabel }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwTableElement } from '../../schema';\nimport { installIdwCardFrameBorder } from '../frameBorder';\n\ndefineOptions({\n name: 'IdwCardTableElement',\n});\n\ndefineProps<{\n element: IdwTableElement;\n}>();\n\ninstallIdwCardFrameBorder();\n</script>\n\n<template>\n <div class=\"idw-card-table idw-card-frame w-full min-w-0 overflow-auto\">\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=\"idw-card-frame-line text-left typography-body-2-bold text-on-background dark:text-on-background-dark\"\n style=\"padding: 12px;\"\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 >\n <td\n v-for=\"(cell, cellIndex) in row\"\n :key=\"cellIndex\"\n class=\"typography-body-2-regular text-on-background dark:text-on-background-dark\"\n :class=\"{ 'idw-card-frame-line': rowIndex < element.rows.length - 1 }\"\n style=\"padding: 12px;\"\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 {\n DEFAULT_ELEMENT_SPACING,\n IDW_SPACING_CLASS,\n IDW_TONE_SURFACE_CLASS,\n type IdwCardHostConfig,\n} from '../host';\nimport { isIdwCardInputElement, type IdwAlignment, type IdwCardElement } from '../schema';\n\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 NoteElement from './elements/NoteElement.vue';\nimport NotificationElement from './elements/NotificationElement.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 { installIdwCardFrameBorder } from './frameBorder';\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 ?? DEFAULT_ELEMENT_SPACING;\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\nconst HORIZONTAL_CLASS: Record<Exclude<IdwAlignment, 'start'>, string> = {\n center: 'justify-center',\n end: 'justify-end',\n};\n\nconst VERTICAL_CLASS: Record<Exclude<IdwAlignment, 'start'>, string> = {\n center: 'justify-center',\n end: 'justify-end',\n};\n\nconst fillsHost = computed(() => (\n props.element.type === 'Html' && props.hostConfig.embedSize === 'fill'\n));\n\nconst alignmentClass = computed(() => {\n if (fillsHost.value) {\n return 'min-h-0 flex-1 flex-col';\n }\n\n const horizontal = props.element.horizontalAlignment ?? 'start';\n const vertical = props.element.verticalAlignment ?? 'start';\n\n if (vertical === 'center' || vertical === 'end') {\n const crossAxis = horizontal === 'center'\n ? 'items-center'\n : horizontal === 'end'\n ? 'items-end'\n : '';\n\n return ['flex flex-1 flex-col', VERTICAL_CLASS[vertical], crossAxis];\n }\n\n if (horizontal === 'center' || horizontal === 'end') {\n return ['flex', HORIZONTAL_CLASS[horizontal]];\n }\n\n return '';\n});\n\ninstallIdwCardFrameBorder();\n\nconst separatorClass = 'idw-card-frame-line-top pt-md';\n</script>\n\n<template>\n <div\n v-if=\"!isHidden\"\n class=\"idw-card-element w-full min-w-0\"\n :class=\"[\n spacingClass,\n 'first:mt-0',\n toneClass,\n element.separator ? separatorClass : '',\n alignmentClass,\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 />\n <NoteElement\n v-else-if=\"element.type === 'Note'\"\n :element=\"element\"\n />\n <NotificationElement\n v-else-if=\"element.type === 'Notification'\"\n :element=\"element\"\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 class=\"mt-md\"\n :actions=\"card.actions\"\n @action=\"onAction\"\n />\n <CardRenderer\n v-for=\"(nestedCard, title) in openShowCards\"\n :key=\"`show-${title}`\"\n class=\"mt-md\"\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 itemMediaSrc(item: FeedListItem): string | undefined {\n if (item.mediaSrc) {\n return item.mediaSrc;\n }\n if (item.type === 'skill' && item.skill?.image) {\n return item.skill.image;\n }\n return undefined;\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 :author-prefix=\"item.authorPrefix\"\n :type-label=\"item.typeLabel\"\n :status=\"item.status\"\n :media-src=\"itemMediaSrc(item)\"\n :media-alt=\"item.mediaAlt\"\n :summary=\"item.summary\"\n :summary-label=\"item.summaryLabel\"\n :engagement=\"item.engagement\"\n :is-new=\"item.isNew\"\n :highlighted=\"item.highlighted\"\n :expandable=\"item.expandable !== false\"\n :fullscreen-control=\"itemFullscreenControl(item)\"\n :mention-control=\"item.mentionControl !== false\"\n :share-control=\"item.shareControl !== false\"\n :more-control=\"item.moreControl !== 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","defaultSkillBandUrl","CardSize","CARD_SIZE","props","__props","sizeClasses","computed","cardImageStyles","defaultSkillCardBackground","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","emit","__emit","reactionCount","reactionEmojis","commentsCount","commentsLabel","readingTime","hasContent","_hoisted_1","_Fragment","_renderList","emoji","index","_createTextVNode","DEFAULT_CONTROL_LABELS","STATUS_DOT_CLASS","slots","useSlots","isExpanded","ref","hasMountedBody","isFullscreen","isBodyVisible","watch","visible","titleId","bodyId","shellClass","resolvedControlLabels","hasBody","showItemActions","showExpandControl","hasSummary","_a","showSummary","showMedia","authorLabel","source","statusDotClass","showEngagement","showFooter","setExpanded","next","toggleExpanded","onControlClick","control","onFullscreenClick","_hoisted_6","_hoisted_7","_hoisted_8","_createBlock","OrIconButtonV3","_hoisted_9","_hoisted_10","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","OrIcon","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_c","_b","_hoisted_28","choice","FeedItemMetaFooter","_hoisted_29","OrWebMarkdownRender","hasCustomSkillSlot","showSkillBand","showStartSkillButton","skillBandStyle","onStartSkill","onSkillClick","SkillCard","FeedMarkdownContent","OrButtonV3","iframeClass","hasSource","FeedEmbed","DEFAULT_IDW_CARD_HOST_CONFIG","DEFAULT_ELEMENT_SPACING","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","cardFromMarkdown","MARKDOWN_TEMPLATE_ID","cardFromHtml","title","content","HTML_TEMPLATE_ID","cardFromFile","src","FILE_TEMPLATE_ID","cardFromSkill","input","SKILL_TEMPLATE_ID","STYLE_PROPS","idwCardActionButtonProps","action","fromStyle","onClick","_mergeProps","$event","OrIconV3","IdwCardActionBar","_cache","toneClass","badgeClass","sharesRows","counts","column","count","itemCount","gridStyle","columnGridStyle","columnClass","width","itemStyle","element","columnIndex","_normalizeStyle","child","IdwCardElementView","STYLE_ID","CSS","installIdwCardFrameBorder","style","progressColor","ProgressColor","progressType","ProgressType","factTitle","progressMax","progress","fact","OrProgressV3","menuButton","menuOpen","openFile","downloadFile","link","_withModifiers","OrMenuV3","OrMenuItemV3","FeedHtmlContent","aspectClass","gridClass","spansWidth","image","parseCardDate","value","parsed","pad","toDateValue","toTimeValue","toDateTimeValue","installIdwCardSliderSpacing","error","model","textType","textInputMode","stringValue","numberValue","selectValue","radioValue","optionLabel","option","elementOptions","isChoiceElement","selectOptions","selectMultiple","selectSearch","groupDirection","groupReadonly","location","set","setLocation","patch","sliderProps","OrTextareaV3","OrInputV3","OrSwitchV3","OrCheckboxV3","OrSelectV3","OrCheckboxGroupV3","OrRadioGroupV3","OrDatePickerV3","OrTimePickerV3","OrDateTimePickerV3","OrSliderV3","OrRangeSliderV3","OrRatingV3","installIdwCardMediaChrome","formatMediaTime","seconds","total","secs","useMediaControls","media","playing","current","duration","muted","volume","unavailable","buffered","timeLabel","sync","end","toggle","setVolume","ratio","seekRatio","nudge","onSeek","event","track","apply","point","rect","move","stop","onError","url","onBeforeUnmount","root","slider","open","level","fill","icon","applyPointer","onPointerDown","onDocumentPointerDown","isOpen","_withKeys","bufferedRatio","toRef","played","playIcon","args","MediaVolume","frame","fullscreen","toggleFullscreen","onFullscreenChange","onMounted","_hoisted_11","MediaVideo","MediaAudio","closed","OrNotificationV3","toneColor","color","type","maxValue","progressAttrs","_createSlots","bandStyle","row","rowIndex","cell","cellIndex","contentClass","textStyle","tone","separatorClass","isHidden","spacingClass","spacing","inputElement","isIdwCardInputElement","HORIZONTAL_CLASS","VERTICAL_CLASS","fillsHost","alignmentClass","horizontal","vertical","crossAxis","InputElement","TextElement","ImageElement","FactSetElement","ContainerElement","ColumnSetElement","HtmlElement","FileElement","NoteElement","NotificationElement","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","nestedCard","_component_CardRenderer","CardRenderer","FeedFileContent","FeedSkillContent","hasHeader","hasEmptySlot","showEmpty","wasNearBottom","isHtmlOrFile","item","itemFullscreenControl","itemMediaSrc","itemClassFor","unconstrained","onScroll","el","nearBottom","FeedItemBase","expanded","FeedListItemBody","$slots"],"mappings":"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"}
|