@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-3JWIJJ44.js → chunk-5OWDOFKK.js} +2 -2
- package/dist/{chunk-IK2X5YJU.js → chunk-HWY35EAK.js} +2 -2
- package/dist/{chunk-OTKJASSX.cjs → chunk-IZL2KEH6.cjs} +24 -24
- package/dist/{chunk-OTKJASSX.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
- package/dist/{chunk-35XIT2CF.cjs → chunk-KDNGUYZM.cjs} +17 -17
- package/dist/{chunk-35XIT2CF.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
- package/dist/{chunk-ZTJVRSN5.js → chunk-UKND27XC.js} +2 -2
- package/dist/chunk-UKND27XC.js.map +1 -0
- package/dist/{chunk-ZDF6F7ED.cjs → chunk-YZUUFTIK.cjs} +2 -2
- package/dist/chunk-YZUUFTIK.cjs.map +1 -0
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +49 -49
- package/dist/components/index.js +2 -2
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/tickets/index.cjs +61 -61
- package/dist/components/tickets/index.js +3 -3
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/.index.md +36 -34
- package/src/components/.alert-dialog.md +27 -23
- package/src/components/.announcement-bar.md +26 -21
- package/src/components/.breadcrumb.md +19 -15
- package/src/components/.calendar.md +24 -19
- package/src/components/.categories-cart.md +29 -24
- package/src/components/.checkbox.md +23 -25
- package/src/components/.chevron-button.md +37 -32
- package/src/components/.comment-card.md +32 -62
- package/src/components/.dialog.md +26 -26
- package/src/components/.dynamic-skeleton.md +54 -57
- package/src/components/.empty-state.md +42 -51
- package/src/components/.faq-accordion.md +27 -21
- package/src/components/.filter-chip.md +41 -24
- package/src/components/.flamingo-logo.md +20 -23
- package/src/components/.footer-waitlist-button.md +29 -22
- package/src/components/.footer.md +32 -32
- package/src/components/.icons-block.md +27 -17
- package/src/components/.image-cropper.md +41 -32
- package/src/components/.index.md +33 -39
- package/src/components/.input.md +31 -35
- package/src/components/.logs-list.md +31 -20
- package/src/components/.media-carousel.md +35 -36
- package/src/components/.open-source-features.md +33 -16
- package/src/components/.pagination.md +52 -51
- package/src/components/.provider-button.md +21 -23
- package/src/components/.select.md +31 -20
- package/src/components/.sidebar.md +34 -24
- package/src/components/.smooth-accordion.md +29 -24
- package/src/components/.social-icon-row.md +36 -32
- package/src/components/.textarea.md +25 -31
- package/src/components/.tool-icon.md +24 -26
- package/src/components/.unified-filter-logic.md +37 -30
- package/src/components/.unified-pagination.md +23 -22
- package/src/components/.user-summary-stub.md +38 -22
- package/src/components/.vendor-display-button.md +25 -25
- package/src/components/.vendor-icon.md +33 -25
- package/src/components/.why-it-matters.md +28 -25
- package/src/components/chat/.approval-batch-message.md +51 -0
- package/src/components/chat/.approval-request-message.md +35 -34
- package/src/components/chat/.chat-attachment-bar.md +64 -0
- package/src/components/chat/.chat-container.md +36 -18
- package/src/components/chat/.chat-input.md +37 -20
- package/src/components/chat/.chat-message-enhanced.md +30 -49
- package/src/components/chat/.chat-message-list.md +45 -32
- package/src/components/chat/.chat-message-skeleton.md +26 -22
- package/src/components/chat/.chat-panel-context.md +52 -0
- package/src/components/chat/.chat-ref.types.md +42 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
- package/src/components/chat/.chat-sidebar.md +31 -26
- package/src/components/chat/.chat-ticket-list.md +39 -0
- package/src/components/chat/.context-compaction-display.md +36 -0
- package/src/components/chat/.cycling-phrase.md +52 -0
- package/src/components/chat/.embeddable-chat.md +48 -0
- package/src/components/chat/.expand-chevron.md +24 -0
- package/src/components/chat/.index.md +31 -35
- package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
- package/src/components/chat/.mingo-onboarding-card.md +62 -0
- package/src/components/chat/.model-display.md +32 -30
- package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
- package/src/components/chat/.remark-card-links.md +38 -0
- package/src/components/chat/.slash-command-suggestions.md +47 -0
- package/src/components/chat/.source-action-button.md +48 -0
- package/src/components/chat/.thinking-display.md +42 -0
- package/src/components/chat/.tool-call-blocks.md +45 -0
- package/src/components/chat/.tool-execution-display.md +44 -36
- package/src/components/chat/chat-container.tsx +1 -1
- package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
- package/src/components/chat/entity-cards/.block-card.md +47 -0
- package/src/components/chat/entity-cards/.blog-card.md +52 -0
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
- package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
- package/src/components/chat/entity-cards/.case-study-card.md +58 -0
- package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
- package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
- package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
- package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
- package/src/components/chat/entity-cards/.dispatch.md +39 -0
- package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
- package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
- package/src/components/chat/entity-cards/.index.md +66 -0
- package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
- package/src/components/chat/entity-cards/.product-release-card.md +29 -0
- package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
- package/src/components/chat/entity-cards/.program-card.md +59 -0
- package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
- package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
- package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
- package/src/components/chat/hooks/.index.md +36 -21
- package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
- package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
- package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
- package/src/components/chat/hooks/.use-chat-identity.md +45 -0
- package/src/components/chat/hooks/.use-chat.md +58 -0
- package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
- package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
- package/src/components/chat/hooks/.use-collapsible.md +48 -0
- package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
- package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
- package/src/components/chat/hooks/.use-slash-commands.md +46 -0
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
- package/src/components/chat/hooks/.use-sse.md +60 -0
- package/src/components/chat/hooks/.use-unified-chat.md +57 -0
- package/src/components/chat/types/.api.types.md +52 -38
- package/src/components/chat/types/.chat.types.md +43 -34
- package/src/components/chat/types/.component.types.md +47 -48
- package/src/components/chat/types/.index.md +20 -27
- package/src/components/chat/types/.message.types.md +58 -48
- package/src/components/chat/types/.network.types.md +57 -31
- package/src/components/chat/types/.processing.types.md +49 -31
- package/src/components/chat/types/.unified-chat-state.types.md +41 -0
- package/src/components/chat/types/entities/.blog.md +43 -0
- package/src/components/chat/types/entities/.case-study.md +26 -0
- package/src/components/chat/types/entities/.content-ref.md +41 -0
- package/src/components/chat/types/entities/.customer-interview.md +28 -0
- package/src/components/chat/types/entities/.data-room-doc.md +36 -0
- package/src/components/chat/types/entities/.github-activity.md +43 -0
- package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
- package/src/components/chat/types/entities/.index.md +42 -0
- package/src/components/chat/types/entities/.investor-update.md +45 -0
- package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
- package/src/components/chat/types/entities/.program-types.md +57 -0
- package/src/components/chat/types/entities/.roadmap-item.md +58 -0
- package/src/components/chat/types/entities/.slack-message.md +35 -0
- package/src/components/chat/utils/.agent-status-message.md +45 -0
- package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
- package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
- package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
- package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
- package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
- package/src/components/chat/utils/.chip-action-class.md +34 -0
- package/src/components/chat/utils/.chip-styles.md +46 -0
- package/src/components/chat/utils/.chunk-parser.md +38 -28
- package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
- package/src/components/chat/utils/.compact-card-classes.md +62 -0
- package/src/components/chat/utils/.decide-new-tab.md +51 -0
- package/src/components/chat/utils/.external-app-urls.md +29 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
- package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
- package/src/components/chat/utils/.icon-registry.md +46 -0
- package/src/components/chat/utils/.index.md +37 -32
- package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
- package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
- package/src/components/chat/utils/.nav-anchor-props.md +44 -0
- package/src/components/chat/utils/.nav-click-handler.md +47 -0
- package/src/components/chat/utils/.onboarding-icons.md +28 -0
- package/src/components/chat/utils/.process-historical-messages.md +46 -35
- package/src/components/chat/utils/.scroll-anchor.md +40 -0
- package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
- package/src/components/chat/utils/.source-icons.md +35 -0
- package/src/components/chat/utils/.source-row-cta.md +54 -0
- package/src/components/chat/utils/.tool-call-helpers.md +42 -0
- package/src/components/contact/.contact-form.md +43 -0
- package/src/components/contact/.index.md +27 -0
- package/src/components/features/.array-entry-manager.md +36 -45
- package/src/components/features/.changelog-manager.md +47 -21
- package/src/components/features/.changelog-sections-manager.md +21 -26
- package/src/components/features/.command-box.md +31 -28
- package/src/components/features/.entity-summary-editor.md +46 -0
- package/src/components/features/.entity-video-section.md +51 -0
- package/src/components/features/.figma-prototype-viewer.md +48 -29
- package/src/components/features/.filters-dropdown.md +33 -46
- package/src/components/features/.highlight-config-section.md +42 -0
- package/src/components/features/.highlight-generation-section.md +46 -0
- package/src/components/features/.highlight-video-combined-section.md +47 -0
- package/src/components/features/.highlight-video-preview.md +44 -0
- package/src/components/features/.highlight-video-section.md +47 -0
- package/src/components/features/.index.md +40 -66
- package/src/components/features/.media-gallery-manager.md +48 -38
- package/src/components/features/.more-about-button.md +22 -19
- package/src/components/features/.og-editor-preview.md +40 -36
- package/src/components/features/.parallax-image-showcase.md +33 -26
- package/src/components/features/.paths-display.md +42 -43
- package/src/components/features/.platform-badge.md +37 -36
- package/src/components/features/.platform-filter.md +23 -16
- package/src/components/features/.policy-configuration-panel.md +48 -56
- package/src/components/features/.provider-button.md +33 -36
- package/src/components/features/.push-button-selector.md +40 -29
- package/src/components/features/.release-media-manager.md +46 -31
- package/src/components/features/.section-selector.md +26 -31
- package/src/components/features/.select-button.md +35 -25
- package/src/components/features/.seo-editor-preview.md +41 -44
- package/src/components/features/.social-links-manager.md +25 -19
- package/src/components/features/.start-with-openframe-button.md +37 -29
- package/src/components/features/.status-filter-component.md +36 -20
- package/src/components/features/.tags-selector.md +40 -24
- package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
- package/src/components/features/.transcribe-summarize-section.md +48 -0
- package/src/components/features/.transcript-summary-editor.md +53 -0
- package/src/components/features/.video-bites-display.md +46 -0
- package/src/components/features/.video-clips-section.md +41 -0
- package/src/components/features/.video-ratio-tabs.md +56 -0
- package/src/components/features/.video-source-selector.md +60 -0
- package/src/components/features/.video.md +44 -0
- package/src/components/features/.waitlist-form.md +60 -0
- package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
- package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
- package/src/components/features/board/.board-column-header.md +38 -0
- package/src/components/features/board/.board-column.md +43 -0
- package/src/components/features/board/.board.md +51 -0
- package/src/components/features/board/.color-utils.md +26 -0
- package/src/components/features/board/.index.md +56 -0
- package/src/components/features/board/.ticket-card-skeleton.md +38 -0
- package/src/components/features/board/.ticket-card.md +47 -0
- package/src/components/features/board/.types.md +45 -0
- package/src/components/features/board/.use-board-collapse.md +34 -0
- package/src/components/features/notifications/.index.md +57 -0
- package/src/components/features/notifications/.notification-drawer.md +34 -0
- package/src/components/features/notifications/.notification-tile.md +39 -0
- package/src/components/features/notifications/.notifications-context.md +73 -0
- package/src/components/features/notifications/.types.md +45 -0
- package/src/components/icons/.about-icon.md +20 -28
- package/src/components/icons/.ai-robot-icon.md +15 -17
- package/src/components/icons/.bash-icon.md +16 -23
- package/src/components/icons/.buildings-icon.md +10 -24
- package/src/components/icons/.capterra-icon.md +30 -26
- package/src/components/icons/.carta-icon.md +29 -0
- package/src/components/icons/.clickup-icon.md +26 -0
- package/src/components/icons/.cmd-icon.md +15 -22
- package/src/components/icons/.coins-icon.md +17 -25
- package/src/components/icons/.community-hub-icon.md +19 -25
- package/src/components/icons/.community-icon.md +24 -21
- package/src/components/icons/.compare-icon.md +32 -19
- package/src/components/icons/.copy-icon.md +29 -15
- package/src/components/icons/.custom-external-link-icon.md +19 -17
- package/src/components/icons/.custom-fork-icon.md +32 -21
- package/src/components/icons/.custom-license-icon.md +29 -25
- package/src/components/icons/.custom-star-icon.md +20 -28
- package/src/components/icons/.custom-time-icon.md +21 -22
- package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
- package/src/components/icons/.dashboard-icon.md +13 -18
- package/src/components/icons/.deno-icon.md +16 -23
- package/src/components/icons/.donut-icon.md +12 -23
- package/src/components/icons/.double-chevron-icon.md +28 -36
- package/src/components/icons/.elestio-logo.md +13 -23
- package/src/components/icons/.empty-vendor-icon.md +16 -18
- package/src/components/icons/.explore-categories-icon.md +18 -29
- package/src/components/icons/.eye-icon.md +16 -26
- package/src/components/icons/.facebook-icon.md +9 -20
- package/src/components/icons/.figma-icon.md +8 -17
- package/src/components/icons/.filter-icon.md +15 -17
- package/src/components/icons/.flamingo-logo.md +28 -27
- package/src/components/icons/.folder-shield-icon.md +28 -19
- package/src/components/icons/.g2-icon.md +22 -21
- package/src/components/icons/.getapp-icon.md +25 -21
- package/src/components/icons/.github-icon.md +13 -25
- package/src/components/icons/.globe-icon.md +14 -19
- package/src/components/icons/.google-gemini-icon.md +16 -19
- package/src/components/icons/.google-logo.md +15 -21
- package/src/components/icons/.grid-view-icon.md +30 -19
- package/src/components/icons/.hamburger-icon.md +22 -20
- package/src/components/icons/.hand-dollar-icon.md +24 -34
- package/src/components/icons/.hotel-icon.md +27 -21
- package/src/components/icons/.icon-utils.md +28 -29
- package/src/components/icons/.image-icon.md +15 -22
- package/src/components/icons/.index.md +25 -28
- package/src/components/icons/.info-circle-icon.md +29 -30
- package/src/components/icons/.instagram-icon.md +10 -24
- package/src/components/icons/.jump-in-icon.md +18 -18
- package/src/components/icons/.linux-icon.md +18 -18
- package/src/components/icons/.log-out-icon.md +15 -23
- package/src/components/icons/.logs-icon.md +14 -23
- package/src/components/icons/.margin-crisis-icon.md +21 -20
- package/src/components/icons/.menu-icon.md +18 -19
- package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
- package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
- package/src/components/icons/.mlg-logo.md +18 -16
- package/src/components/icons/.moon-icon.md +32 -22
- package/src/components/icons/.ms-icon.md +30 -19
- package/src/components/icons/.nushell-icon.md +7 -21
- package/src/components/icons/.open-source-icon.md +19 -23
- package/src/components/icons/.openai-icon.md +9 -24
- package/src/components/icons/.openframe-ai-icons.md +25 -26
- package/src/components/icons/.openframe-logo.md +28 -22
- package/src/components/icons/.openframe-text.md +24 -27
- package/src/components/icons/.openmsp-logo.md +26 -23
- package/src/components/icons/.pilot-icon.md +23 -0
- package/src/components/icons/.powershell-icon.md +17 -22
- package/src/components/icons/.python-icon.md +16 -23
- package/src/components/icons/.queries-icon.md +13 -21
- package/src/components/icons/.reddit-icon.md +28 -24
- package/src/components/icons/.remote-control-icon.md +13 -17
- package/src/components/icons/.script-icon.md +27 -19
- package/src/components/icons/.search-icon.md +21 -21
- package/src/components/icons/.send-icon.md +14 -16
- package/src/components/icons/.settings-icon.md +30 -19
- package/src/components/icons/.shape-circle-dash-icon.md +16 -21
- package/src/components/icons/.shell-icon.md +15 -19
- package/src/components/icons/.shield-check-icon.md +18 -31
- package/src/components/icons/.shield-key-icon.md +25 -25
- package/src/components/icons/.shield-lock-icon.md +8 -18
- package/src/components/icons/.slack-icon.md +28 -32
- package/src/components/icons/.sparkles-icon.md +18 -23
- package/src/components/icons/.sso-configuration-icon.md +29 -16
- package/src/components/icons/.sun-icon.md +20 -18
- package/src/components/icons/.table-view-icon.md +17 -19
- package/src/components/icons/.telegram-icon.md +8 -22
- package/src/components/icons/.thumbs-down-icon.md +10 -19
- package/src/components/icons/.thumbs-up-icon.md +8 -17
- package/src/components/icons/.tool-directory-icons.md +24 -28
- package/src/components/icons/.trustpilot-icon.md +25 -22
- package/src/components/icons/.user-icon.md +26 -28
- package/src/components/icons/.users-group-icon.md +28 -24
- package/src/components/icons/.vendor-showcase-icons.md +21 -29
- package/src/components/icons/.vendors-icon.md +18 -22
- package/src/components/icons/.whatsapp-icon.md +30 -14
- package/src/components/icons/.x-icon.md +18 -23
- package/src/components/icons/.x-logo.md +13 -38
- package/src/components/icons/.youtube-icon.md +8 -19
- package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
- package/src/components/icons-v2-generated/.index.md +52 -0
- package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
- package/src/components/icons-v2-generated/arrows/.index.md +39 -0
- package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
- package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
- package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
- package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
- package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
- package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
- package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
- package/src/components/icons-v2-generated/buildings/.index.md +48 -0
- package/src/components/icons-v2-generated/charts/.index.md +40 -0
- package/src/components/icons-v2-generated/clothes/.index.md +48 -0
- package/src/components/icons-v2-generated/coding/.index.md +42 -0
- package/src/components/icons-v2-generated/communication/.index.md +39 -0
- package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
- package/src/components/icons-v2-generated/design/.index.md +39 -0
- package/src/components/icons-v2-generated/devices/.index.md +38 -0
- package/src/components/icons-v2-generated/documents/.index.md +38 -0
- package/src/components/icons-v2-generated/finance/.index.md +34 -0
- package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
- package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
- package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
- package/src/components/icons-v2-generated/health/.index.md +40 -0
- package/src/components/icons-v2-generated/household/.index.md +45 -0
- package/src/components/icons-v2-generated/interface/.index.md +36 -0
- package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
- package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
- package/src/components/icons-v2-generated/number/.index.md +41 -0
- package/src/components/icons-v2-generated/school/.index.md +37 -0
- package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
- package/src/components/icons-v2-generated/security/.index.md +39 -0
- package/src/components/icons-v2-generated/shopping/.index.md +42 -0
- package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
- package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
- package/src/components/icons-v2-generated/sport/.index.md +41 -0
- package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
- package/src/components/icons-v2-generated/users/.index.md +45 -0
- package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
- package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
- package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
- package/src/components/layout/.article-detail-layout.md +43 -0
- package/src/components/layout/.back-button.md +40 -0
- package/src/components/layout/.list-page-layout.md +35 -26
- package/src/components/layout/.page-container.md +27 -38
- package/src/components/layout/.page-layout.md +50 -0
- package/src/components/layout/.title-block.md +42 -0
- package/src/components/loading/.card-skeleton.md +38 -29
- package/src/components/loading/.device-card-skeleton.md +29 -25
- package/src/components/loading/.index.md +39 -46
- package/src/components/loading/.margin-report-skeleton.md +45 -34
- package/src/components/loading/.organization-card-skeleton.md +39 -44
- package/src/components/loading/.page-layout-skeleton.md +34 -45
- package/src/components/loading/.unified-skeleton.md +62 -36
- package/src/components/navigation/.app-header.md +40 -29
- package/src/components/navigation/.app-layout.md +25 -26
- package/src/components/navigation/.header-global-search.md +34 -37
- package/src/components/navigation/.header-organization-filter.md +23 -22
- package/src/components/navigation/.header.md +31 -35
- package/src/components/navigation/.mobile-burger-menu.md +39 -47
- package/src/components/navigation/.mobile-nav-panel.md +51 -32
- package/src/components/navigation/.navigation-sidebar-header.md +36 -0
- package/src/components/navigation/.navigation-sidebar-item.md +45 -0
- package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
- package/src/components/navigation/.navigation-sidebar.md +33 -34
- package/src/components/navigation/.sliding-sidebar.md +52 -41
- package/src/components/navigation/.sticky-section-nav.md +56 -48
- package/src/components/platform/.ScriptArguments.md +39 -25
- package/src/components/platform/.ScriptInfoSection.md +30 -26
- package/src/components/platform/.ShellTypeBadge.md +18 -13
- package/src/components/platform/.SoftwareInfo.md +23 -27
- package/src/components/platform/.SoftwareSourceBadge.md +28 -19
- package/src/components/platform/.ToolBadge.md +25 -26
- package/src/components/providers/.theme-provider.md +52 -0
- package/src/components/shared/delivery/.delivery-lists.md +39 -0
- package/src/components/shared/delivery/.delivery-row.md +41 -0
- package/src/components/shared/delivery/.delivery-table.md +41 -0
- package/src/components/shared/delivery/.index.md +38 -0
- package/src/components/shared/dev-section/.dev-card-row.md +60 -0
- package/src/components/shared/dev-section/.dev-section-page.md +48 -0
- package/src/components/shared/dev-section/.dev-section-view.md +43 -0
- package/src/components/shared/dev-section/.index.md +38 -0
- package/src/components/shared/legal-document/.index.md +40 -0
- package/src/components/shared/legal-document/.legal-document-page.md +50 -0
- package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
- package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
- package/src/components/shared/product-release/.index.md +28 -30
- package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
- package/src/components/shared/product-release/.product-release-card.md +45 -27
- package/src/components/shared/product-release/.release-detail-page.md +23 -24
- package/src/components/shared/roadmap/.index.md +37 -0
- package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
- package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
- package/src/components/tickets/.help-center-card.md +51 -0
- package/src/components/tickets/.help-center-create-form.md +38 -0
- package/src/components/tickets/.help-center-list.md +40 -0
- package/src/components/tickets/.index.md +65 -0
- package/src/components/tickets/.ticket-center.md +51 -0
- package/src/components/tickets/.ticket-detail-drawer.md +48 -0
- package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
- package/src/components/tickets/.ticket-open-form.md +50 -0
- package/src/components/tickets/.ticket-row.md +30 -0
- package/src/components/tickets/.types.md +57 -0
- package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
- package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
- package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
- package/src/components/ui/.actions-menu.md +66 -41
- package/src/components/ui/.alert-dialog.md +29 -26
- package/src/components/ui/.allowed-domains-input.md +29 -21
- package/src/components/ui/.assignee-dropdown.md +45 -0
- package/src/components/ui/.autocomplete.md +47 -41
- package/src/components/ui/.benefit-card.md +51 -36
- package/src/components/ui/.brand-association-card.md +30 -27
- package/src/components/ui/.breadcrumb.md +17 -15
- package/src/components/ui/.checkbox-block.md +39 -35
- package/src/components/ui/.checkbox-with-description.md +23 -16
- package/src/components/ui/.checkbox.md +31 -23
- package/src/components/ui/.circular-progress.md +49 -19
- package/src/components/ui/.content-loader.md +32 -20
- package/src/components/ui/.cursor-pagination.md +41 -52
- package/src/components/ui/.dashboard-info-card.md +33 -26
- package/src/components/ui/.date-picker.md +27 -25
- package/src/components/ui/.device-card-compact.md +28 -29
- package/src/components/ui/.device-card.md +27 -27
- package/src/components/ui/.dialog.md +25 -16
- package/src/components/ui/.drawer.md +86 -0
- package/src/components/ui/.dropdown-button.md +45 -0
- package/src/components/ui/.entity-image.md +46 -0
- package/src/components/ui/.error-state.md +41 -28
- package/src/components/ui/.feature-card.md +35 -31
- package/src/components/ui/.feature-list.md +48 -0
- package/src/components/ui/.field-wrapper.md +47 -0
- package/src/components/ui/.file-upload.md +42 -0
- package/src/components/ui/.filter-checkbox-item.md +43 -0
- package/src/components/ui/.filter-list.md +57 -0
- package/src/components/ui/.filter-modal.md +59 -0
- package/src/components/ui/.floating-tooltip.md +43 -26
- package/src/components/ui/.hidden-tags-popup.md +49 -0
- package/src/components/ui/.hover-dropdown.md +54 -0
- package/src/components/ui/.image-gallery-modal.md +41 -34
- package/src/components/ui/.image-uploader.md +53 -0
- package/src/components/ui/.index.md +40 -34
- package/src/components/ui/.info-card.md +31 -31
- package/src/components/ui/.info-row.md +31 -27
- package/src/components/ui/.input-trigger.md +44 -0
- package/src/components/ui/.input.md +37 -31
- package/src/components/ui/.markdown-editor.md +57 -0
- package/src/components/ui/.modal-v2.md +51 -0
- package/src/components/ui/.modal.md +32 -31
- package/src/components/ui/.more-actions-menu.md +45 -38
- package/src/components/ui/.organization-card.md +31 -37
- package/src/components/ui/.page-actions.md +44 -54
- package/src/components/ui/.phone-input.md +54 -0
- package/src/components/ui/.progress-bar.md +35 -27
- package/src/components/ui/.radio-group.md +39 -27
- package/src/components/ui/.release-changelog-section.md +34 -34
- package/src/components/ui/.search-input.md +48 -0
- package/src/components/ui/.select.md +54 -34
- package/src/components/ui/.service-card.md +42 -40
- package/src/components/ui/.sheet.md +27 -18
- package/src/components/ui/.simple-markdown-renderer.md +29 -31
- package/src/components/ui/.sort-column-item.md +42 -0
- package/src/components/ui/.square-avatar.md +34 -24
- package/src/components/ui/.status-badge.md +26 -38
- package/src/components/ui/.switch.md +22 -35
- package/src/components/ui/.tab-navigation.md +56 -53
- package/src/components/ui/.tab-selector.md +40 -0
- package/src/components/ui/.tag-key-value-filter.md +56 -0
- package/src/components/ui/.tag-search-input.md +53 -0
- package/src/components/ui/.tag.md +49 -31
- package/src/components/ui/.tags-manager.md +60 -0
- package/src/components/ui/.textarea.md +44 -34
- package/src/components/ui/.ticket-attachments-list.md +45 -0
- package/src/components/ui/.ticket-detail-section.md +29 -0
- package/src/components/ui/.ticket-info-section.md +56 -0
- package/src/components/ui/.ticket-note-card.md +53 -0
- package/src/components/ui/.ticket-notes-section.md +54 -0
- package/src/components/ui/.ticket-status-tag.md +49 -0
- package/src/components/ui/.title-content-block.md +25 -26
- package/src/components/ui/.toaster.md +40 -28
- package/src/components/ui/.tooltip.md +22 -11
- package/src/components/ui/.truncate-text.md +39 -0
- package/src/components/ui/button/.button-styles.md +35 -0
- package/src/components/ui/button/.button.md +53 -0
- package/src/components/ui/button/.split-button.md +48 -0
- package/src/components/ui/data-table/.data-table-body.md +48 -0
- package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
- package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
- package/src/components/ui/data-table/.data-table-empty.md +43 -0
- package/src/components/ui/data-table/.data-table-header.md +55 -0
- package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
- package/src/components/ui/data-table/.data-table-row-count.md +43 -0
- package/src/components/ui/data-table/.data-table-row.md +47 -0
- package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
- package/src/components/ui/data-table/.data-table.md +47 -0
- package/src/components/ui/data-table/.index.md +55 -0
- package/src/components/ui/data-table/.types.md +54 -0
- package/src/components/ui/data-table/.use-data-table.md +45 -0
- package/src/components/ui/data-table/.utils.md +38 -0
- package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
- package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
- package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
- package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
- package/src/components/ui/file-manager/.file-manager.md +35 -31
- package/src/components/ui/query-report-table/.index.md +43 -0
- package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
- package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
- package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
- package/src/components/ui/query-report-table/.query-report-table.md +47 -0
- package/src/components/ui/query-report-table/.types.md +41 -0
- package/src/components/ui/query-report-table/.utils.md +35 -0
- package/src/components/ui/table/.index.md +27 -48
- package/src/components/ui/table/.table-cell.md +18 -27
- package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
- package/src/components/ui/table/.table-description-cell.md +24 -14
- package/src/components/ui/table/.table-empty-state.md +21 -22
- package/src/components/ui/table/.table-header.md +25 -40
- package/src/components/ui/table/.table-row.md +22 -40
- package/src/components/ui/table/.table-skeleton.md +33 -26
- package/src/components/ui/table/.table-timestamp-cell.md +26 -16
- package/src/components/ui/table/.table.md +39 -59
- package/src/components/ui/table/.types.md +44 -36
- package/src/components/ui/table/.utils.md +18 -20
- package/src/contexts/.chat-runtime-context.md +54 -0
- package/src/contexts/.endpoints-runtime-context.md +58 -0
- package/src/contexts/.index.md +53 -0
- package/src/contexts/.use-outer-or-default.md +36 -0
- package/src/embed-shims/.index.md +45 -0
- package/src/embed-shims/.next-dynamic.md +43 -0
- package/src/embed-shims/.next-image.md +45 -0
- package/src/embed-shims/.next-link.md +59 -0
- package/src/embed-shims/.next-navigation.md +59 -0
- package/src/hooks/.index.md +34 -29
- package/src/hooks/.use-access-code-integration.md +49 -0
- package/src/hooks/.use-contact-submission.md +37 -26
- package/src/hooks/.use-copy-to-clipboard.md +42 -0
- package/src/hooks/.use-near-viewport.md +44 -0
- package/src/hooks/.use-og-placeholder.md +51 -0
- package/src/hooks/.use-toast.md +36 -35
- package/src/hooks/state/.use-api-params.md +29 -46
- package/src/hooks/state/.use-query-params.md +37 -33
- package/src/hooks/ui/.index.md +33 -32
- package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
- package/src/hooks/ui/.use-image-edge-color.md +42 -0
- package/src/hooks/ui/.use-media-query.md +33 -25
- package/src/hooks/ui/.use-search.md +51 -0
- package/src/nats/.nats.md +49 -28
- package/src/schemas/.contact-schema.md +45 -0
- package/src/stories/.AnnouncementBar.stories.md +45 -0
- package/src/stories/.AppLayout.stories.md +20 -21
- package/src/stories/.Autocomplete.stories.md +48 -34
- package/src/stories/.Board.stories.md +35 -0
- package/src/stories/.Button.stories.md +36 -33
- package/src/stories/.ChatTicketList.stories.md +33 -0
- package/src/stories/.CheckboxBlock.stories.md +40 -28
- package/src/stories/.ContentLoader.stories.md +47 -0
- package/src/stories/.DashboardInfoCard.stories.md +57 -0
- package/src/stories/.DataTable.stories.md +41 -0
- package/src/stories/.DatePicker.stories.md +66 -52
- package/src/stories/.DeviceCard.stories.md +41 -40
- package/src/stories/.DeviceCardCompact.stories.md +41 -0
- package/src/stories/.DotsLoaderIcon.stories.md +36 -0
- package/src/stories/.Drawer.stories.md +58 -0
- package/src/stories/.EmbeddableChat.stories.md +41 -0
- package/src/stories/.FileManager.stories.md +41 -0
- package/src/stories/.FileManagerActionBar.stories.md +38 -0
- package/src/stories/.FileUpload.stories.md +53 -0
- package/src/stories/.FilterList.stories.md +54 -0
- package/src/stories/.FilterModal.stories.md +72 -0
- package/src/stories/.FiltersDropdown.stories.md +57 -0
- package/src/stories/.Header.stories.md +48 -0
- package/src/stories/.ImageUploader.stories.md +49 -0
- package/src/stories/.InfoCard.stories.md +54 -0
- package/src/stories/.Input.stories.md +48 -30
- package/src/stories/.ListPageLayout.stories.md +56 -43
- package/src/stories/.MingoOnboardingCard.stories.md +42 -0
- package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
- package/src/stories/.Modal.stories.md +40 -31
- package/src/stories/.NotificationDrawer.stories.md +55 -0
- package/src/stories/.OnboardingStepCard.stories.md +41 -0
- package/src/stories/.OrganizationCard.stories.md +61 -0
- package/src/stories/.PageActions.stories.md +52 -49
- package/src/stories/.PageContainer.stories.md +41 -35
- package/src/stories/.PageLayout.stories.md +60 -0
- package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
- package/src/stories/.PhoneInput.stories.md +53 -0
- package/src/stories/.QueryReportTable.stories.md +44 -0
- package/src/stories/.RadioGroup.stories.md +46 -0
- package/src/stories/.RadioGroupBlock.stories.md +45 -0
- package/src/stories/.Select.stories.md +29 -15
- package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
- package/src/stories/.SplitButton.stories.md +62 -0
- package/src/stories/.TabNavigation.stories.md +47 -38
- package/src/stories/.TabSelector.stories.md +65 -0
- package/src/stories/.Table.stories.md +38 -46
- package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
- package/src/stories/.Tag.stories.md +43 -32
- package/src/stories/.TagKeyValueFilter.stories.md +44 -0
- package/src/stories/.TagSearchInput.stories.md +61 -0
- package/src/stories/.Textarea.stories.md +49 -26
- package/src/stories/.Theme.stories.md +41 -0
- package/src/stories/.TicketAttachmentsList.stories.md +39 -0
- package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
- package/src/stories/.TicketInfoSection.stories.md +40 -0
- package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
- package/src/stories/.TicketNotesSection.stories.md +50 -0
- package/src/stories/.Toaster.stories.md +40 -0
- package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
- package/src/stories/.Tooltip.stories.md +41 -0
- package/src/stories/.UserSummary.stories.md +41 -0
- package/src/stories/.WaitlistForm.stories.md +42 -0
- package/src/stories/BlogCard.stories.tsx +61 -0
- package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
- package/src/stories/CaseStudyCard.stories.tsx +42 -0
- package/src/stories/ChatContainer.stories.tsx +186 -0
- package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
- package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
- package/src/stories/DataRoomDocCard.stories.tsx +52 -0
- package/src/stories/GenericEntityCard.stories.tsx +66 -0
- package/src/stories/GitHubActivityCard.stories.tsx +61 -0
- package/src/stories/HubspotTicketCard.stories.tsx +98 -0
- package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
- package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
- package/src/stories/ProductReleaseCard.stories.tsx +61 -0
- package/src/stories/ProgramCard.stories.tsx +79 -0
- package/src/stories/RoadmapCard.stories.tsx +75 -0
- package/src/stories/SlackMessageCard.stories.tsx +41 -0
- package/src/stories/__fixtures__/chat-cards.ts +604 -0
- package/src/types/.blog.md +53 -29
- package/src/types/.case-study.md +44 -27
- package/src/types/.customer-interview.md +66 -44
- package/src/types/.delivery.md +40 -0
- package/src/types/.employee.md +24 -30
- package/src/types/.index.md +33 -47
- package/src/types/.marketing.md +49 -44
- package/src/types/.navigation.md +33 -25
- package/src/types/.os.types.md +32 -27
- package/src/types/.platform.md +31 -28
- package/src/types/.product-release.md +65 -38
- package/src/types/.supabase.md +37 -29
- package/src/types/.team.md +41 -33
- package/src/types/.video-processing.md +54 -0
- package/src/types/.waitlist.md +40 -36
- package/src/utils/.access-code-client.md +37 -36
- package/src/utils/.cn.md +31 -23
- package/src/utils/.color-analysis.md +35 -0
- package/src/utils/.country-phone-utils.md +39 -0
- package/src/utils/.date-formatters.md +19 -18
- package/src/utils/.embed-authed-fetch.md +39 -0
- package/src/utils/.embed-proxy-auth-storage.md +38 -0
- package/src/utils/.fetch-priority.md +41 -0
- package/src/utils/.format.md +74 -25
- package/src/utils/.generic-domain-utils.md +42 -0
- package/src/utils/.image-proxy.md +59 -23
- package/src/utils/.index.md +42 -49
- package/src/utils/.local-storage-adapter.md +50 -0
- package/src/utils/.ods-color-utils.md +55 -38
- package/src/utils/.platform-config.md +45 -25
- package/src/utils/.scroll-into-view.md +40 -0
- package/src/utils/.source-icons.md +53 -0
- package/src/utils/.sse-decision-frame.md +46 -0
- package/src/utils/dev-sections/.index.md +34 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
- package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
- package/dist/chunk-ZTJVRSN5.js.map +0 -1
- package/src/components/.card.md +0 -42
- package/src/components/.contact-button.md +0 -30
- package/src/components/.drawer.md +0 -46
- package/src/components/.fixed-layout-container.md +0 -47
- package/src/components/.footer-waitlist-card.md +0 -29
- package/src/components/.join-waitlist-cta.md +0 -29
- package/src/components/.sheet.md +0 -47
- package/src/components/.sliding-panel.md +0 -48
- package/src/components/.tooltip.md +0 -48
- package/src/components/.use-mobile.md +0 -42
- package/src/components/.vendor-compact-card.md +0 -66
- package/src/components/.x-button.md +0 -42
- package/src/components/features/.github-repo-button.md +0 -40
- package/src/components/features/.organization-icon.md +0 -47
- package/src/components/features/.organization-selector.md +0 -45
- package/src/components/icons/.fleet-icon.md +0 -39
- package/src/components/icons/.meshcentral-icon.md +0 -35
- package/src/components/icons/.refresh-icon.md +0 -34
- package/src/components/icons/.tactical-icon.md +0 -35
- package/src/components/ui/.button.md +0 -69
- package/src/components/ui/.log-table-row.md +0 -47
- package/src/components/ui/.selectable-device-card.md +0 -46
- package/src/hooks/.api-hooks-stub.md +0 -45
- package/src/hooks/api/.use-product-releases.md +0 -53
- package/src/stories/.OrganizationSelector.stories.md +0 -42
- package/src/stories/.SelectableDeviceCard.stories.md +0 -30
- package/src/utils/.lite-youtube-embed-stub.md +0 -37
- package/src/utils/.lite-youtube-embed.md +0 -33
- /package/dist/{chunk-3JWIJJ44.js.map → chunk-5OWDOFKK.js.map} +0 -0
- /package/dist/{chunk-IK2X5YJU.js.map → chunk-HWY35EAK.js.map} +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- source-hash: 88aa76a71f078b18928be54e60fe0a71 -->
|
|
2
|
+
A clickable ticket row component for chat interfaces, rendering ticket details (title, number, category, time), a status tag, an optional linked-work chip, and a chevron affordance.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ChatTicketItemData`
|
|
7
|
+
Data interface for the ticket row:
|
|
8
|
+
- `id`, `title`, `ticketNumber` — core identifiers
|
|
9
|
+
- `status` — accepts any known format (`ACTIVE`, `active`, `ACTION_REQUIRED`, etc.)
|
|
10
|
+
- `statusLabel?` — overrides the badge text while preserving status variant/icon (e.g. HubSpot pipeline stage labels)
|
|
11
|
+
- `linkedTaskLabel?` — when set, renders a wrench-icon "linked work" chip indicating an in-flight delivery task
|
|
12
|
+
- `category?`, `timeAgo?` — optional subtitle fields joined with `•`
|
|
13
|
+
|
|
14
|
+
### `ChatTicketItemProps`
|
|
15
|
+
Extends `ButtonHTMLAttributes` (omitting `onClick`) with a typed `onClick?: (ticketId: string) => void` callback.
|
|
16
|
+
|
|
17
|
+
### `ChatTicketItem`
|
|
18
|
+
A `forwardRef` button component that:
|
|
19
|
+
- Dims the title (`text-ods-text-secondary`) when the ticket is resolved
|
|
20
|
+
- Builds a dot-separated subtitle from `ticketNumber`, `category`, and `timeAgo`
|
|
21
|
+
- Renders `Tag` with `WrenchIcon` (hidden on `sm` screens) when `linkedTaskLabel` is present
|
|
22
|
+
- Handles focus ring via `focus-visible` to prevent stray white borders after click in jsdom/Chromium
|
|
23
|
+
|
|
24
|
+
## Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
<ChatTicketItem
|
|
28
|
+
ticket={{
|
|
29
|
+
id: 'tkt-001',
|
|
30
|
+
title: 'Email not syncing after password reset',
|
|
31
|
+
ticketNumber: '#1042',
|
|
32
|
+
status: 'ACTION_REQUIRED',
|
|
33
|
+
statusLabel: 'Waiting on contact',
|
|
34
|
+
category: 'Email',
|
|
35
|
+
timeAgo: '2h ago',
|
|
36
|
+
linkedTaskLabel: 'Waiting on version release',
|
|
37
|
+
}}
|
|
38
|
+
onClick={(ticketId) => router.push(`/tickets/${ticketId}`)}
|
|
39
|
+
/>
|
|
40
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: 4a819f268fa72ed0c9baa868c023b47f -->
|
|
2
|
+
Renders a stripped-chrome video player card for entity references within the chat interface, delegating entirely to `<EntityVideoSection>` to maintain visual parity with detail pages.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ChatVideoEntityCardProps`
|
|
7
|
+
| Prop | Type | Description |
|
|
8
|
+
|------|------|-------------|
|
|
9
|
+
| `chatRef` | `ChatRef` | Entity reference containing `metadata` fields for video URL routing |
|
|
10
|
+
|
|
11
|
+
### `ChatVideoEntityCard`
|
|
12
|
+
Main export. Extracts video-related fields from `chatRef.metadata` and passes them directly to `<EntityVideoSection>`. Intentionally omits `videoSummary`, `videoBites`, and header chrome (title, date, Ask button) to preserve chat panel density — those affordances are handled by the host's inline pill.
|
|
13
|
+
|
|
14
|
+
### `readString(value)`
|
|
15
|
+
Internal guard that returns `null` for any non-string or empty-string value, preventing invalid URLs from reaching the player.
|
|
16
|
+
|
|
17
|
+
## Metadata Fields Read
|
|
18
|
+
|
|
19
|
+
| Field | Passed As |
|
|
20
|
+
|-------|-----------|
|
|
21
|
+
| `metadata.videoUrl` | `mainVideoUrl` |
|
|
22
|
+
| `metadata.youtubeUrl` | `youtubeUrl` |
|
|
23
|
+
| `metadata.videoPoster` | `mainVideoPoster` |
|
|
24
|
+
| `metadata.highlightVideoUrl` | `highlightVideoUrl` |
|
|
25
|
+
| `metadata.highlightVideoPoster` | `highlightVideoThumbnail` |
|
|
26
|
+
|
|
27
|
+
## Usage Example
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Host dispatch — only routed here when at least one video URL is present
|
|
31
|
+
<ChatVideoEntityCard
|
|
32
|
+
chatRef={{
|
|
33
|
+
title: "Q3 Investor Update",
|
|
34
|
+
metadata: {
|
|
35
|
+
youtubeUrl: "https://www.youtube.com/watch?v=abc123",
|
|
36
|
+
highlightVideoUrl: "https://stream.mux.com/highlight.m3u8",
|
|
37
|
+
highlightVideoPoster: "https://cdn.example.com/poster.jpg",
|
|
38
|
+
},
|
|
39
|
+
}}
|
|
40
|
+
/>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> **Activation contract:** The host must only render this card when at least one of `metadata.videoUrl`, `youtubeUrl`, or `highlightVideoUrl` is a non-empty string. URL sanitization is handled inside `<Video>` — no additional validation is required at the call site.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 13f9305f5b11a7a8a688986630bbf7d1 -->
|
|
2
|
+
Pure presentation component for displaying customer interview data in two density variants (`default` and `sm`), with no embedded click logic — navigation is handled entirely by the caller via `href`.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `CustomerInterviewCard`
|
|
7
|
+
Main card component rendering interview metadata, thumbnail, video indicator, and author/MSP attribution. Accepts an `href` prop for navigation and delegates all routing concerns to the caller.
|
|
8
|
+
|
|
9
|
+
### `CustomerInterviewCardSkeleton`
|
|
10
|
+
Animated loading placeholder that mirrors the layout of `CustomerInterviewCard` for both size variants, preventing layout shift during data fetching.
|
|
11
|
+
|
|
12
|
+
### `CustomerInterviewCardProps`
|
|
13
|
+
```typescript
|
|
14
|
+
interface CustomerInterviewCardProps {
|
|
15
|
+
interview: CustomerInterview // Core interview data
|
|
16
|
+
href: string // Resolved detail URL (caller-provided)
|
|
17
|
+
target?: '_blank' // Opens in new tab when set
|
|
18
|
+
rel?: 'noopener noreferrer'
|
|
19
|
+
placeholderUrl?: string | null // Fallback OG image when featured_image is absent
|
|
20
|
+
size?: 'default' | 'sm' // 'sm' = compact horizontal (chat-inline)
|
|
21
|
+
className?: string
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage Example
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
// Default card — standalone page listing
|
|
29
|
+
<CustomerInterviewCard
|
|
30
|
+
interview={interviewData}
|
|
31
|
+
href={`/interviews/${interviewData.slug}`}
|
|
32
|
+
placeholderUrl="/assets/interview-placeholder.jpg"
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
// Compact variant — inline within chat/AI responses
|
|
36
|
+
<CustomerInterviewCard
|
|
37
|
+
interview={interviewData}
|
|
38
|
+
href={`/interviews/${interviewData.slug}`}
|
|
39
|
+
target="_blank"
|
|
40
|
+
rel="noopener noreferrer"
|
|
41
|
+
size="sm"
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
// Skeleton while fetching
|
|
45
|
+
<CustomerInterviewCardSkeleton size="sm" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Size Variants
|
|
49
|
+
|
|
50
|
+
| Variant | Layout | Use Case |
|
|
51
|
+
|---------|--------|----------|
|
|
52
|
+
| `default` | Vertical card with 1200×630 aspect image, summary, and author row | Grid/list pages |
|
|
53
|
+
| `sm` | Compact horizontal row with thumbnail + text column | Chat-inline embeds (Mingo AI / Fae) |
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- source-hash: f8069e3f963f307b16a2d6ae310496d9 -->
|
|
2
|
+
Inline chat card component for rendering Data Room and OpenFrame-docs document references within the Flamingo/OpenFrame AI chat interface. Handles both `/data-room` and `/knowledge-base` route surfaces with a shared presentation layer.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `DataRoomDocCard`
|
|
7
|
+
Primary card component. Renders as an interactive `<a>` element when `anchorProps` is provided, or a static `<span>` when no link is available. Displays document title, source badge, file path, and a preview excerpt.
|
|
8
|
+
|
|
9
|
+
### `DataRoomDocCardSkeleton`
|
|
10
|
+
Loading state placeholder matching the card's layout — used while document data is being fetched.
|
|
11
|
+
|
|
12
|
+
### `DataRoomDocCardAnchorProps`
|
|
13
|
+
Prop bundle interface for pre-composed anchor attributes (`href`, `target`, `rel`, `onClick`). URL composition and routing decisions are handled by the consumer, not this component.
|
|
14
|
+
|
|
15
|
+
### `DataRoomDocCardProps`
|
|
16
|
+
| Prop | Type | Notes |
|
|
17
|
+
|------|------|-------|
|
|
18
|
+
| `item` | `DataRoomDocCardItem` | Title, path, and preview text |
|
|
19
|
+
| `badgeText` | `string` | Required. Consumer-resolved source label (e.g. "Data Room", "Knowledge Base") |
|
|
20
|
+
| `anchorProps` | `DataRoomDocCardAnchorProps?` | When omitted, card renders non-interactive |
|
|
21
|
+
| `className` | `string?` | Additional CSS classes |
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Interactive card (linked)
|
|
27
|
+
<DataRoomDocCard
|
|
28
|
+
item={{ title: 'Onboarding Guide', path: '/docs/onboarding.md', preview: 'Step-by-step...' }}
|
|
29
|
+
badgeText={getSourceLabel(item.sourceRepo)} // consumer resolves label
|
|
30
|
+
anchorProps={{
|
|
31
|
+
href: '/data-room/docs/abc123',
|
|
32
|
+
target: '_blank',
|
|
33
|
+
rel: 'noopener noreferrer',
|
|
34
|
+
}}
|
|
35
|
+
/>
|
|
36
|
+
|
|
37
|
+
// Non-interactive card (no link resolved)
|
|
38
|
+
<DataRoomDocCard
|
|
39
|
+
item={{ title: 'Policy Draft', path: null, preview: null }}
|
|
40
|
+
badgeText="Knowledge Base"
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
// Skeleton while loading
|
|
44
|
+
<DataRoomDocCardSkeleton />
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> **Design note:** `badgeText` is required (no default) to prevent silent mislabeling — a document sourced from `openframe-docs` must never display "Data Room" due to its private/internal connotation. The consumer's `getSourceLabel()` resolver is the single source of truth for provenance labels.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- source-hash: 32d71d29579661580177180e5a23c34d -->
|
|
2
|
+
Renders the correct compact card component for a given `ChatRef` by dispatching on document type, handling fetch/skeleton states, and wiring navigation props for the chat shell.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Types
|
|
7
|
+
- **`ChatCardDispatchExtras`** — Host-supplied builders for hub-specific derived props (program configs, product-release prop builder, OG placeholder URL generator)
|
|
8
|
+
- **`ChatCardRenderOptions`** — Per-render options including `baseRoute`, `chipBasePlatform`, `extras`, and the pre-computed `isNewTab` flag
|
|
9
|
+
|
|
10
|
+
### Internal Card Wrappers
|
|
11
|
+
- **`GitHubChatCard`** — Renders a compact `GitHubActivityCard` from a `ChatRef`
|
|
12
|
+
- **`HubspotTicketChatCard`** — Extracts ticket metadata (status, priority, customer) from `chatRef.metadata` and renders `HubspotTicketCard`
|
|
13
|
+
- **`SlackChatCard`** — Maps channel name from metadata and renders `SlackMessageCard`
|
|
14
|
+
- **`DataRoomDocChatCard`** — Renders `DataRoomDocCard` with provenance badge resolved via `getSourceLabel`; intentionally falls back to `"Document"` (never `"Data room"`) to avoid false sensitivity labeling
|
|
15
|
+
- **`GenericFinancialChatCard`** — Renders `GenericEntityCard` with badge, color scheme, optional facts list, and subtitle
|
|
16
|
+
- **`ChatInlineVideoPill`** — Inline pill span for video references (non-block contexts)
|
|
17
|
+
|
|
18
|
+
### Utilities Used
|
|
19
|
+
- `buildAnchorProps` / `computeIsNewTab` / `newTabAnchorAttrs` — Anchor attribute construction
|
|
20
|
+
- `resolveHrefForRuntime` / `handleChatNavClick` — Runtime-aware navigation
|
|
21
|
+
- `resolveSourceRowCTA` / `resolveSourceIcon` / `getSourceLabel` — Source chip metadata
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// In the chat shell — dispatch a compact inline card
|
|
27
|
+
const card = renderChatInlineEntityCard(chatRef, {
|
|
28
|
+
isNewTab: computeIsNewTab(chatRef.url, runtime.source),
|
|
29
|
+
baseRoute: '/app',
|
|
30
|
+
chipBasePlatform: 'hub',
|
|
31
|
+
extras: {
|
|
32
|
+
programConfigs: { podcast: myPodcastConfig },
|
|
33
|
+
buildProductReleaseCardProps: (release) => ({ iconUrl: release.icon }),
|
|
34
|
+
buildOgPlaceholderUrl: (title) => `/og?title=${encodeURIComponent(title)}`,
|
|
35
|
+
},
|
|
36
|
+
})
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
> **Adding a new card type:** Implement the `size='sm'` branch in `./<card>.tsx`, then register one entry in the `CHAT_CARD_REGISTRY` switch inside this file.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- source-hash: 7fa68fe7633e75913b75cba411a322f1 -->
|
|
2
|
+
Renders author and publication metadata as a bordered grid card, matching the visual contract of the release detail page. Supports 1–4 cells with responsive dividers.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `EntityAuthorCard` | Component | Convenience composer rendering a "Published + Author" grid. Primary public API. |
|
|
9
|
+
| `EntityMetadataValueCell` | Component | Single cell with a large uppercase value (`text-h4`) and a small secondary label. |
|
|
10
|
+
| `EntityMetadataAuthorCell` | Component | Single cell with `SquareAvatar`, name, and role/job-title label. |
|
|
11
|
+
| `EMPTY_AUTHOR_PLACEHOLDER` | Constant | Fallback author shape (`"—"` / `"Unknown"`) used when `renderEmptyAuthor` is `true`. |
|
|
12
|
+
| `EntityAuthorCardProps` | Interface | Full props contract for `EntityAuthorCard`. |
|
|
13
|
+
|
|
14
|
+
## Usage Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// Basic: author only (single-cell)
|
|
18
|
+
<EntityAuthorCard
|
|
19
|
+
author={{ full_name: 'Ada Lovelace', avatar_url: '/ada.jpg', job_title: 'Engineer' }}
|
|
20
|
+
/>
|
|
21
|
+
|
|
22
|
+
// With publication date (2-cell grid)
|
|
23
|
+
<EntityAuthorCard
|
|
24
|
+
author={{ full_name: 'Ada Lovelace', avatar_url: null, job_title: null }}
|
|
25
|
+
publishedAt="2024-06-01"
|
|
26
|
+
publishedLabel="Released"
|
|
27
|
+
roleLabel="Contributor"
|
|
28
|
+
/>
|
|
29
|
+
|
|
30
|
+
// Extra cells before the date (4-cell grid)
|
|
31
|
+
<EntityAuthorCard
|
|
32
|
+
author={author}
|
|
33
|
+
publishedAt={guide.publishedAt}
|
|
34
|
+
extraCells={[
|
|
35
|
+
{ value: 'Onboarding', label: 'Section' },
|
|
36
|
+
{ value: '3', label: 'Step' },
|
|
37
|
+
]}
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
// Skeleton-safe: render even when author is absent
|
|
41
|
+
<EntityAuthorCard
|
|
42
|
+
author={null}
|
|
43
|
+
renderEmptyAuthor
|
|
44
|
+
/>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Behavior Notes
|
|
48
|
+
|
|
49
|
+
- Returns `null` when `author.full_name` is empty **unless** `renderEmptyAuthor` is set — keeps catalog grids skeleton-aligned.
|
|
50
|
+
- Grid columns (`md:grid-cols-1` → `md:grid-cols-4`) are computed at render time so Tailwind JIT picks up the literal class strings at build.
|
|
51
|
+
- Invalid date strings from `formatDate` are silently suppressed — the Published cell is hidden rather than showing `"Invalid Date"`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!-- source-hash: 775503f0a371e047d64f92c3ad355efe -->
|
|
2
|
+
A pure-presentation React component that renders a compact, reusable entity card for chat contexts that don't require a bespoke component. Supports optional linking, status badges, key-value facts, and a skeleton loading state.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `GenericEntityCard`
|
|
7
|
+
Main card component. Renders as an `<a>` tag (clickable) or `<span>` (static) depending on whether a URL or `anchorProps` is provided. Displays an `ExternalLink` icon when a URL is present.
|
|
8
|
+
|
|
9
|
+
### `GenericEntityCardSkeleton`
|
|
10
|
+
Animated placeholder component that mirrors the layout of `GenericEntityCard` for use during loading states.
|
|
11
|
+
|
|
12
|
+
### Interfaces
|
|
13
|
+
|
|
14
|
+
| Interface | Purpose |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `GenericEntityCardItem` | Data shape for the card content |
|
|
17
|
+
| `GenericEntityCardAnchorProps` | Pre-composed anchor element props (href, target, rel, onClick) |
|
|
18
|
+
| `GenericEntityCardProps` | Combined props for the card (item + anchorProps + className) |
|
|
19
|
+
|
|
20
|
+
### `GenericEntityCardItem` Fields
|
|
21
|
+
|
|
22
|
+
| Field | Type | Description |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `title` | `string` | Primary heading |
|
|
25
|
+
| `preview` | `string \| null` | Truncated body text (2-line clamp) |
|
|
26
|
+
| `subtitle` | `string \| null` | Monospace secondary label |
|
|
27
|
+
| `badge` | `{ text, scheme? }` | Status badge with color scheme |
|
|
28
|
+
| `facts` | `Array<{ label, value }>` | Inline key-value metadata pairs |
|
|
29
|
+
| `dateUpdated` | `string \| number \| null` | Formatted UTC timestamp |
|
|
30
|
+
| `url` | `string \| null` | Optional navigation target |
|
|
31
|
+
|
|
32
|
+
## Usage Example
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { GenericEntityCard, GenericEntityCardSkeleton } from './generic-entity-card'
|
|
36
|
+
|
|
37
|
+
// Basic card with URL
|
|
38
|
+
<GenericEntityCard
|
|
39
|
+
item={{
|
|
40
|
+
id: 'ticket-42',
|
|
41
|
+
title: 'Printer offline on Floor 2',
|
|
42
|
+
subtitle: 'TKT-0042',
|
|
43
|
+
preview: 'User reports printer is unreachable since 9am.',
|
|
44
|
+
badge: { text: 'Open', scheme: 'warning' },
|
|
45
|
+
facts: [{ label: 'Priority', value: 'High' }],
|
|
46
|
+
dateUpdated: '2024-06-01T10:00:00Z',
|
|
47
|
+
url: 'https://app.example.com/tickets/42',
|
|
48
|
+
}}
|
|
49
|
+
/>
|
|
50
|
+
|
|
51
|
+
// Custom anchor props (e.g. SPA router navigation)
|
|
52
|
+
<GenericEntityCard
|
|
53
|
+
item={item}
|
|
54
|
+
anchorProps={{
|
|
55
|
+
href: '/tickets/42',
|
|
56
|
+
onClick: (e) => { e.preventDefault(); router.push('/tickets/42') },
|
|
57
|
+
}}
|
|
58
|
+
/>
|
|
59
|
+
|
|
60
|
+
// Loading state
|
|
61
|
+
<GenericEntityCardSkeleton />
|
|
62
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!-- source-hash: c0769109de52014dbb4d350262e4d01d -->
|
|
2
|
+
A pure-presentation React component that renders GitHub activity items (commits, pull requests, and PR reviews) in two layout variants: a list row and a compact inline card.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Exports
|
|
7
|
+
|
|
8
|
+
| Name | Type | Description |
|
|
9
|
+
|------|------|-------------|
|
|
10
|
+
| `GitHubActivityCard` | Component | Main card renderer supporting `row` and `compact` variants |
|
|
11
|
+
| `GitHubActivityCardSkeleton` | Component | Animated loading placeholder matching both variants |
|
|
12
|
+
| `GitHubActivityCardAnchorProps` | Interface | Pre-composed `<a>` prop bundle passed from caller navigation hooks |
|
|
13
|
+
| `GitHubActivityCardProps` | Interface | Full props shape for `GitHubActivityCard` |
|
|
14
|
+
|
|
15
|
+
### Internal Helpers
|
|
16
|
+
|
|
17
|
+
| Name | Description |
|
|
18
|
+
|------|-------------|
|
|
19
|
+
| `parseRepoFromUrl` | Extracts `owner/repo` string from a GitHub URL |
|
|
20
|
+
| `kindIcon` | Returns the appropriate Lucide/GitHub icon for `commit`, `pull_request`, or `pr_review` |
|
|
21
|
+
| `kindLabel` | Maps `GitHubActivityKind` to a short display string |
|
|
22
|
+
| `formatActivityId` | Shortens commit SHAs to 7 chars; prefixes PR/review IDs with `#` |
|
|
23
|
+
| `parseGithubTitle` | Parses bracket-prefixed tags (e.g. `[Review:APPROVED]`) from titles without regex backtracking |
|
|
24
|
+
| `ReviewStateBadge` | Renders a color-coded badge for PR review states (`APPROVED`, `CHANGES_REQUESTED`, etc.) |
|
|
25
|
+
|
|
26
|
+
## Usage Example
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { GitHubActivityCard, GitHubActivityCardSkeleton } from './github-activity-card'
|
|
30
|
+
|
|
31
|
+
// Compact inline card (default) with external link
|
|
32
|
+
<GitHubActivityCard
|
|
33
|
+
item={{
|
|
34
|
+
kind: 'pull_request',
|
|
35
|
+
id: '42',
|
|
36
|
+
title: 'Fix memory leak in worker pool',
|
|
37
|
+
url: 'https://github.com/org/repo/pull/42',
|
|
38
|
+
dateUpdated: '2024-11-01T10:00:00Z',
|
|
39
|
+
}}
|
|
40
|
+
/>
|
|
41
|
+
|
|
42
|
+
// Row variant for activity lists, with caller-composed navigation
|
|
43
|
+
<GitHubActivityCard
|
|
44
|
+
variant="row"
|
|
45
|
+
item={activityItem}
|
|
46
|
+
anchorProps={{
|
|
47
|
+
href: '/activity/commit/abc1234',
|
|
48
|
+
onClick: (e) => handleNavigation(e),
|
|
49
|
+
}}
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
// Loading state
|
|
53
|
+
<GitHubActivityCardSkeleton variant="row" />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Variants
|
|
57
|
+
|
|
58
|
+
| Variant | Use Case |
|
|
59
|
+
|---------|----------|
|
|
60
|
+
| `compact` | Chat inline markers (`[card://github_commit:<sha>]`) |
|
|
61
|
+
| `row` | Activity list rows in employee detail views |
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 526a5a2e2cd1e53b04aca51a563fe490 -->
|
|
2
|
+
Pure presentation component that renders HubSpot ticket data as a compact card or inline row, with a matching skeleton loader for loading states.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `HubspotTicketCard`
|
|
7
|
+
Main card component supporting two layout variants:
|
|
8
|
+
- **`compact`** (default) — Full card with title, priority/status badges, customer email, description preview, meta row (company + date), and optional external link icon
|
|
9
|
+
- **`row`** — Slim inline layout for use in lists/tables: title, preview snippet, status badge, and date
|
|
10
|
+
|
|
11
|
+
Accepts an `anchorProps` bundle for caller-controlled navigation (e.g. from a runtime hook), falling back to a plain `<a>` using `item.url`, or a static `<span>` if no URL is available.
|
|
12
|
+
|
|
13
|
+
### `HubspotTicketCardSkeleton`
|
|
14
|
+
Animated pulse placeholder matching the `compact` and `row` layouts, used during data fetching.
|
|
15
|
+
|
|
16
|
+
### Helper Functions
|
|
17
|
+
| Function | Purpose |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `formatToken` | Normalizes `snake_case` enum strings to `Title case` |
|
|
20
|
+
| `priorityScheme` | Maps `URGENT/HIGH/MEDIUM/LOW` → badge color scheme |
|
|
21
|
+
| `statusScheme` | Maps `CLOSED/OPEN/...` → badge color scheme |
|
|
22
|
+
|
|
23
|
+
## Interfaces
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
interface HubspotTicketCardProps {
|
|
27
|
+
item: HubspotTicketItem // Ticket data shape
|
|
28
|
+
variant?: 'row' | 'compact' // Layout mode (default: 'compact')
|
|
29
|
+
className?: string
|
|
30
|
+
anchorProps?: HubspotTicketCardAnchorProps // Caller-controlled <a> props
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Usage Example
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// Compact card with caller-supplied navigation
|
|
38
|
+
<HubspotTicketCard
|
|
39
|
+
item={ticket}
|
|
40
|
+
anchorProps={{
|
|
41
|
+
href: buildTicketHref(ticket.id),
|
|
42
|
+
target: '_blank',
|
|
43
|
+
rel: 'noopener noreferrer',
|
|
44
|
+
onClick: (e) => handleTicketClick(e, ticket.id),
|
|
45
|
+
}}
|
|
46
|
+
/>
|
|
47
|
+
|
|
48
|
+
// Inline row variant (e.g. inside a list)
|
|
49
|
+
<HubspotTicketCard item={ticket} variant="row" />
|
|
50
|
+
|
|
51
|
+
// Loading state
|
|
52
|
+
<HubspotTicketCardSkeleton variant="compact" />
|
|
53
|
+
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!-- source-hash: 153106e38c4d90f80e36ec34a77c2d0d -->
|
|
2
|
+
Barrel export file that consolidates all chat-surface entity card components under a single import path, enabling consumers to access any presentation card without knowing its subdirectory location.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Supporting Primitives
|
|
7
|
+
- **`EntityAuthorCard`** — Renders author metadata with `EMPTY_AUTHOR_PLACEHOLDER` fallback
|
|
8
|
+
- **`BlogImagePlaceholder`** — Placeholder image for blog content
|
|
9
|
+
- **`AdminContentCard`** — Admin-facing content card
|
|
10
|
+
|
|
11
|
+
### Flat Cards
|
|
12
|
+
- **`BlockCard`** — Generic block-level card
|
|
13
|
+
- **`ChatTicketItem`** — Ticket representation within chat surfaces
|
|
14
|
+
- **`ChatVideoEntityCard`** — Video entity display in chat
|
|
15
|
+
|
|
16
|
+
### Pure-Presentation Cards (with Skeleton variants)
|
|
17
|
+
| Card | Skeleton | Notes |
|
|
18
|
+
|------|----------|-------|
|
|
19
|
+
| `BlogCard` | `BlogCardSkeleton` | — |
|
|
20
|
+
| `CaseStudyCard` | `CaseStudyCardSkeleton` | — |
|
|
21
|
+
| `CustomerInterviewCard` | `CustomerInterviewCardSkeleton` | — |
|
|
22
|
+
| `InvestorUpdateCard` | `InvestorUpdateCardSkeleton` | — |
|
|
23
|
+
| `OnboardingGuideCard` | `OnboardingGuideCardSkeleton` | — |
|
|
24
|
+
| `RoadmapCard` | `RoadmapCardSkeleton` | Includes `VoteType` + `RoadmapVoteButton` |
|
|
25
|
+
| `GitHubActivityCard` | `GitHubActivityCardSkeleton` | — |
|
|
26
|
+
| `SlackMessageCard` | `SlackMessageCardSkeleton` | — |
|
|
27
|
+
| `HubspotTicketCard` | `HubspotTicketCardSkeleton` | — |
|
|
28
|
+
| `DataRoomDocCard` | `DataRoomDocCardSkeleton` | — |
|
|
29
|
+
| `ProgramCard` | `ProgramCardSkeleton` | — |
|
|
30
|
+
| `CampaignCardAdmin` | `CampaignCardAdminSkeleton` | — |
|
|
31
|
+
| `GenericEntityCard` | `GenericEntityCardSkeleton` | Fallback catch-all |
|
|
32
|
+
|
|
33
|
+
### Dispatch Layer
|
|
34
|
+
- **`renderChatInlineEntityCard`** — Renders the correct card given an entity type
|
|
35
|
+
- **`ChatCardLoader`** — Async card loader; new card types registered in `./dispatch.tsx` via `CHAT_CARD_REGISTRY`
|
|
36
|
+
|
|
37
|
+
## Usage Example
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// Single import replaces per-directory imports
|
|
41
|
+
import {
|
|
42
|
+
BlogCard,
|
|
43
|
+
BlogCardSkeleton,
|
|
44
|
+
RoadmapCard,
|
|
45
|
+
ChatCardLoader,
|
|
46
|
+
renderChatInlineEntityCard,
|
|
47
|
+
type BlogCardProps,
|
|
48
|
+
type ChatCardRenderOptions,
|
|
49
|
+
} from '@/components/entity-cards'
|
|
50
|
+
|
|
51
|
+
// Pure-presentation: consumer owns the anchor
|
|
52
|
+
function MyFeed({ post }: { post: BlogCardProps }) {
|
|
53
|
+
return (
|
|
54
|
+
<NavLinkAnchor href={post.href}>
|
|
55
|
+
<BlogCard {...post} />
|
|
56
|
+
</NavLinkAnchor>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Dynamic dispatch — resolves card type at runtime
|
|
61
|
+
function ChatEntity({ entity, options }: { entity: unknown; options: ChatCardRenderOptions }) {
|
|
62
|
+
return renderChatInlineEntityCard(entity, options)
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> **Design contract:** All cards in this directory are **pure presentation** — they accept a pre-resolved `href` and entity data as props and contain no internal navigation logic. Click handling belongs to the consumer (`NavLinkAnchor` or `NavLinkAnchorViaRuntime`).
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- source-hash: 756619c21c965403499e06eb7fef94fa -->
|
|
2
|
+
Pure presentation component for rendering investor update cards in two density modes (`default` and `sm`), with no internal click logic — callers supply the resolved `href`.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `InvestorUpdateCard`
|
|
7
|
+
Main card component. Renders differently based on the `size` prop:
|
|
8
|
+
- **`default`** — delegates to `AdminContentCard` with image, title, summary, badges, and period meta
|
|
9
|
+
- **`sm`** — compact horizontal layout using shared `COMPACT_CARD_*` utility classes
|
|
10
|
+
|
|
11
|
+
### `InvestorUpdateCardSkeleton`
|
|
12
|
+
Loading placeholder matching the visual footprint of each density mode. Uses `animate-pulse` for the default size.
|
|
13
|
+
|
|
14
|
+
### `InvestorUpdateCardProps`
|
|
15
|
+
|
|
16
|
+
| Prop | Type | Description |
|
|
17
|
+
|------|------|-------------|
|
|
18
|
+
| `update` | `InvestorUpdate` | Entity data |
|
|
19
|
+
| `href` | `string` | Resolved detail URL (caller-supplied) |
|
|
20
|
+
| `target` | `'_blank'` | Optional new-tab behavior |
|
|
21
|
+
| `placeholderUrl` | `string \| null` | OG fallback when `featured_image` is absent |
|
|
22
|
+
| `size` | `'default' \| 'sm'` | Card density (defaults to `'default'`) |
|
|
23
|
+
|
|
24
|
+
## Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
// Default density — full card
|
|
28
|
+
<InvestorUpdateCard
|
|
29
|
+
update={investorUpdate}
|
|
30
|
+
href={`/investor-updates/${investorUpdate.slug}`}
|
|
31
|
+
placeholderUrl="/images/update-placeholder.png"
|
|
32
|
+
/>
|
|
33
|
+
|
|
34
|
+
// Compact horizontal — e.g. inside a chat dispatch or sidebar list
|
|
35
|
+
<InvestorUpdateCard
|
|
36
|
+
update={investorUpdate}
|
|
37
|
+
href={`/investor-updates/${investorUpdate.slug}`}
|
|
38
|
+
target="_blank"
|
|
39
|
+
rel="noopener noreferrer"
|
|
40
|
+
size="sm"
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
// Skeleton while data loads
|
|
44
|
+
<InvestorUpdateCardSkeleton size="sm" />
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> **Design note:** The component intentionally owns zero click/navigation logic. Tab behavior (`target="_blank"`) is resolved externally (e.g. via `computeIsNewTab`) and passed in, keeping the component fully declarative.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: ecac941a52e178236e11d54fe42337ec -->
|
|
2
|
+
Pure presentation component that renders an onboarding guide card in three layout variants — `catalog`, `default`, and `sm` — plus matching skeleton states for loading UI.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `OnboardingGuideCard`
|
|
7
|
+
Main card component. Stateless and click-logic-free; the caller wraps with navigation and provides the resolved `href`.
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Description |
|
|
10
|
+
|------|------|-------------|
|
|
11
|
+
| `guide` | `OnboardingGuide` | Guide entity data |
|
|
12
|
+
| `href` | `string` | Detail URL resolved by caller |
|
|
13
|
+
| `target` | `'_blank'` | Optional new-tab behavior |
|
|
14
|
+
| `size` | `'catalog' \| 'default' \| 'sm'` | Layout variant (default: `'default'`) |
|
|
15
|
+
| `placeholderUrl` | `string \| null` | OG fallback image for catalog/sm |
|
|
16
|
+
| `className` | `string` | Additional CSS classes |
|
|
17
|
+
|
|
18
|
+
### `OnboardingGuideCardSkeleton`
|
|
19
|
+
Loading placeholder that mirrors each layout variant's structure with animated pulse states.
|
|
20
|
+
|
|
21
|
+
### `HORIZONTAL_SIZE_TOKENS`
|
|
22
|
+
Internal token map for spacing/typography in the `default` variant.
|
|
23
|
+
|
|
24
|
+
## Variants
|
|
25
|
+
|
|
26
|
+
| Variant | Layout | Use Case |
|
|
27
|
+
|---------|--------|----------|
|
|
28
|
+
| `catalog` | Hero image + author grid | Public catalog page |
|
|
29
|
+
| `default` | Horizontal step-numbered | "More in section" rail |
|
|
30
|
+
| `sm` | Compact horizontal | Chat-inline rendering |
|
|
31
|
+
|
|
32
|
+
## Usage Example
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { OnboardingGuideCard, OnboardingGuideCardSkeleton } from './onboarding-guide-card'
|
|
36
|
+
|
|
37
|
+
// Loading state
|
|
38
|
+
if (isLoading) {
|
|
39
|
+
return <OnboardingGuideCardSkeleton size="catalog" />
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Catalog variant (public listing)
|
|
43
|
+
<OnboardingGuideCard
|
|
44
|
+
guide={guide}
|
|
45
|
+
href={`/guides/${guide.slug}`}
|
|
46
|
+
size="catalog"
|
|
47
|
+
placeholderUrl={ogImageUrl}
|
|
48
|
+
/>
|
|
49
|
+
|
|
50
|
+
// Chat inline (sm variant, new tab)
|
|
51
|
+
<OnboardingGuideCard
|
|
52
|
+
guide={guide}
|
|
53
|
+
href={`/guides/${guide.slug}`}
|
|
54
|
+
size="sm"
|
|
55
|
+
target="_blank"
|
|
56
|
+
rel="noopener noreferrer"
|
|
57
|
+
/>
|
|
58
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!-- source-hash: 192500e77aad1a0a4024a9e7d8dfcfec -->
|
|
2
|
+
Provides the lib-side default implementation of `buildProductReleaseCardProps` for chat dispatch, satisfying the three fields required by the compact (`size='sm'`) `<ProductReleaseCard>` variant without requiring hub-side extras.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
- **`ReleaseLike`** — Loosely typed shape for raw API row data, covering image URLs, video URLs, and release date fields
|
|
8
|
+
- **`DerivedSmProps`** — Output shape containing only the three sm-relevant props: `coverImage`, `hasVideoCover`, and `formattedDate`
|
|
9
|
+
|
|
10
|
+
### Functions
|
|
11
|
+
- **`pickCover(item)`** — Resolves the best cover image URL by mirroring the hub's `resolveReleaseCover` precedence: video thumbnails take priority when a video is set, falling back to `featured_image` then `og_image_url`
|
|
12
|
+
- **`defaultBuildProductReleaseCardProps(item)`** — Main export; builds the `DerivedSmProps` bundle from an unknown API row, using `formatReleaseDate` for TZ-safe date formatting
|
|
13
|
+
|
|
14
|
+
## Usage Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { defaultBuildProductReleaseCardProps } from './product-release-card-defaults'
|
|
18
|
+
|
|
19
|
+
// Used as fallback when opts.extras.buildProductReleaseCardProps is not supplied
|
|
20
|
+
const props = defaultBuildProductReleaseCardProps(apiRow)
|
|
21
|
+
// → { coverImage: 'https://...', hasVideoCover: true, formattedDate: 'Jan 15, 2025' }
|
|
22
|
+
|
|
23
|
+
// Hub-side embedders override with their richer builder via extras:
|
|
24
|
+
const cardProps = (opts.extras?.buildProductReleaseCardProps ?? defaultBuildProductReleaseCardProps)(row)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- Uses `formatReleaseDate` (not `new Date().toLocaleDateString`) to avoid UTC off-by-one day shifts on date-only `YYYY-MM-DD` strings
|
|
30
|
+
- Produces an empty string for `formattedDate` when `release_date` is absent, rather than throwing
|
|
31
|
+
- lg-only fields (`changelogCounts`, badge color, view count) are intentionally omitted — hub embedders supply those via `extras`
|