@flamingo-stack/openframe-frontend-core 0.0.212 → 0.0.213-snapshot.20260528174436
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-QKFBZLIR.js → chunk-5OWDOFKK.js} +2 -2
- package/dist/chunk-CZR7ARBA.js +698 -0
- package/dist/chunk-CZR7ARBA.js.map +1 -0
- package/dist/{chunk-UYQOPC57.js → chunk-HICZPTRR.js} +4 -351
- package/dist/chunk-HICZPTRR.js.map +1 -0
- package/dist/{chunk-5BNWGK6D.js → chunk-HWY35EAK.js} +3 -3
- package/dist/{chunk-VTUIMMHO.cjs → chunk-IZL2KEH6.cjs} +26 -26
- package/dist/{chunk-VTUIMMHO.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
- package/dist/{chunk-ZFBLC5GV.cjs → chunk-KDNGUYZM.cjs} +17 -17
- package/dist/{chunk-ZFBLC5GV.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
- package/dist/chunk-OZ3GH6OQ.cjs +698 -0
- package/dist/chunk-OZ3GH6OQ.cjs.map +1 -0
- package/dist/{chunk-3E5ANY55.js → chunk-UKND27XC.js} +410 -544
- package/dist/chunk-UKND27XC.js.map +1 -0
- package/dist/{chunk-EH3RWVF3.cjs → chunk-WT5JV2GS.cjs} +8 -355
- package/dist/chunk-WT5JV2GS.cjs.map +1 -0
- package/dist/{chunk-WI76ZUBE.cjs → chunk-YZUUFTIK.cjs} +545 -679
- package/dist/chunk-YZUUFTIK.cjs.map +1 -0
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts +0 -9
- package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +5 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +4 -3
- package/dist/components/contact/index.cjs +6 -5
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +5 -4
- package/dist/components/features/index.cjs +5 -4
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +4 -3
- package/dist/components/features/notifications/index.d.ts +2 -2
- package/dist/components/features/notifications/index.d.ts.map +1 -1
- package/dist/components/features/notifications/notifications-context.d.ts +16 -1
- package/dist/components/features/notifications/notifications-context.d.ts.map +1 -1
- package/dist/components/features/notifications/types.d.ts +4 -0
- package/dist/components/features/notifications/types.d.ts.map +1 -1
- package/dist/components/index.cjs +55 -54
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +7 -6
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/app-header.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +5 -4
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +4 -3
- package/dist/components/tickets/index.cjs +66 -65
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +6 -5
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/index.cjs +5 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +4 -3
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/index.cjs.map +1 -1
- package/dist/embed-shims/index.js +4 -4
- package/dist/hooks/index.cjs +3 -2
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/index.cjs +5 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -3
- package/dist/nats/index.cjs +28 -346
- package/dist/nats/index.cjs.map +1 -1
- package/dist/nats/index.d.ts +3 -0
- package/dist/nats/index.d.ts.map +1 -1
- package/dist/nats/index.js +30 -346
- package/dist/nats/index.js.map +1 -1
- package/dist/nats/nats-provider.d.ts +28 -0
- package/dist/nats/nats-provider.d.ts.map +1 -0
- package/dist/nats/nats.d.ts +1 -0
- package/dist/nats/nats.d.ts.map +1 -1
- package/dist/nats/shared-connection.d.ts +73 -0
- package/dist/nats/shared-connection.d.ts.map +1 -0
- package/dist/nats/use-nats-subscription.d.ts +18 -0
- package/dist/nats/use-nats-subscription.d.ts.map +1 -0
- 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/hooks/use-jetstream-dialog-subscription.ts +60 -207
- package/src/components/chat/hooks/use-nats-dialog-subscription.ts +71 -214
- 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/features/notifications/index.ts +2 -1
- package/src/components/features/notifications/notifications-context.tsx +104 -6
- package/src/components/features/notifications/types.ts +5 -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/navigation/app-header.tsx +7 -9
- 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/nats/index.ts +3 -0
- package/src/nats/nats-provider.tsx +146 -0
- package/src/nats/nats.ts +2 -0
- package/src/nats/shared-connection.ts +285 -0
- package/src/nats/use-nats-subscription.ts +99 -0
- 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-3E5ANY55.js.map +0 -1
- package/dist/chunk-EH3RWVF3.cjs.map +0 -1
- package/dist/chunk-UYQOPC57.js.map +0 -1
- package/dist/chunk-WI76ZUBE.cjs.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-QKFBZLIR.js.map → chunk-5OWDOFKK.js.map} +0 -0
- /package/dist/{chunk-5BNWGK6D.js.map → chunk-HWY35EAK.js.map} +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: c5cc84322439cd96dae36a797cb9a2cb -->
|
|
2
|
+
Defines the `ContentRef` interface — the unified shape for link/embed references stored in JSONB columns across entities such as investor updates and performance baselines that surface "related content" rails.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ContentRef` Interface
|
|
7
|
+
|
|
8
|
+
| Field | Type | Required | Description |
|
|
9
|
+
|-------|------|----------|-------------|
|
|
10
|
+
| `type` | `string` | ✅ | Content type identifier (e.g., `"video"`, `"article"`) |
|
|
11
|
+
| `id` | `string` | ✅ | Unique content identifier |
|
|
12
|
+
| `slug` | `string` | ✅ | URL-friendly slug |
|
|
13
|
+
| `url` | `string` | ✅ | Canonical URL of the referenced content |
|
|
14
|
+
| `targetPlatform` | `string \| null` | ❌ | Platform hint (e.g., `"youtube"`, `"notion"`) |
|
|
15
|
+
| `title` | `string` | ✅ | Display title |
|
|
16
|
+
| `summary` | `string` | ❌ | Short description or excerpt |
|
|
17
|
+
| `image_url` | `string` | ❌ | Thumbnail or preview image URL |
|
|
18
|
+
| `image_bg_color` | `string` | ❌ | Background color for image placeholder |
|
|
19
|
+
| `visibility` | `'public' \| 'internal'` | ✅ | Access scope |
|
|
20
|
+
| `display_order` | `number` | ✅ | Sort position within its parent list |
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import type { ContentRef } from './content-ref';
|
|
26
|
+
|
|
27
|
+
const ref: ContentRef = {
|
|
28
|
+
type: 'video',
|
|
29
|
+
id: 'abc123',
|
|
30
|
+
slug: 'q1-investor-update',
|
|
31
|
+
url: 'https://www.youtube.com/watch?v=abc123',
|
|
32
|
+
targetPlatform: 'youtube',
|
|
33
|
+
title: 'Q1 2025 Investor Update',
|
|
34
|
+
summary: 'Quarterly performance highlights and roadmap preview.',
|
|
35
|
+
image_url: 'https://img.youtube.com/vi/abc123/hqdefault.jpg',
|
|
36
|
+
visibility: 'internal',
|
|
37
|
+
display_order: 1,
|
|
38
|
+
};
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
> **Note:** This type is shared across client and server. Server-side data utilities (e.g., JSONB serialization, fetch helpers) remain hub-side and should import this interface rather than redeclare it locally.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!-- source-hash: d2bea4092c5fb585f7b34695adfbf8c3 -->
|
|
2
|
+
Re-exports Customer Interview entity types from the shared lib (`@/types/customer-interview`) into the chat card consumer barrel.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `CustomerInterview` | Canonical shape for a customer interview record |
|
|
9
|
+
| `CustomerInterviewConfig` | Configuration options for a customer interview |
|
|
10
|
+
| `CustomerInterviewFilters` | Filter parameters for querying interviews |
|
|
11
|
+
| `CustomerInterviewListResponse` | Paginated/list response wrapper for interviews |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import type {
|
|
17
|
+
CustomerInterview,
|
|
18
|
+
CustomerInterviewConfig,
|
|
19
|
+
CustomerInterviewFilters,
|
|
20
|
+
CustomerInterviewListResponse,
|
|
21
|
+
} from '@/entities/chat/customer-interview';
|
|
22
|
+
|
|
23
|
+
const filters: CustomerInterviewFilters = { status: 'completed' };
|
|
24
|
+
|
|
25
|
+
const response: CustomerInterviewListResponse = await fetchInterviews(filters);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
> **Note:** This is a pure re-export barrel — no logic or competing type definitions live here. The canonical source of truth is `src/types/customer-interview.ts`.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- source-hash: 24f09ae47345f49fc8da8100c8c8644b -->
|
|
2
|
+
Defines the `DataRoomDocCardItem` wire shape used to render data-room document cards within the chat interface.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `DataRoomDocCardItem` (interface)
|
|
7
|
+
|
|
8
|
+
Covers both `data_room_documents` database rows and `openframe-docs` markdown rows. The card differentiates source type via `sourceRepo` and composes click destinations using the shared `resolveSourceRowCTA` helper.
|
|
9
|
+
|
|
10
|
+
| Field | Type | Description |
|
|
11
|
+
|-------|------|-------------|
|
|
12
|
+
| `id` | `string` | Doc UUID (`external_id` / `id` from `data_room_documents`) |
|
|
13
|
+
| `title` | `string` | Display name |
|
|
14
|
+
| `path` | `string \| null` | Path within the data room (e.g. `legal/fundraising/seed/...`) |
|
|
15
|
+
| `preview` | `string \| null` | Content snippet up to ~200 chars |
|
|
16
|
+
| `url` | `string \| null` | Resolved URL (typically `/data-room/<path>`) |
|
|
17
|
+
| `sourceRepo` | `string \| null` | `RagTableConfig.id` (e.g. `'openframe-docs'`, `'data-room-docs'`) — drives badge label via `SOURCE_LABELS_BY_TABLE` |
|
|
18
|
+
| `baseRoute` | `string` | Chat shell base route (e.g. `/data-room`, `/knowledge-base`) — threaded down to `resolveSourceRowCTA` |
|
|
19
|
+
| `chipBasePlatform` | `string` | Cross-platform target (e.g. `'flamingo'`) — composes an absolute cross-origin URL for new-tab navigation |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
const doc: DataRoomDocCardItem = {
|
|
25
|
+
id: "a1b2c3d4-...",
|
|
26
|
+
title: "Vertex VII SAFE Agreement",
|
|
27
|
+
path: "legal/fundraising/seed/executed/vertex-vii-3.5m-safe",
|
|
28
|
+
preview: "This Simple Agreement for Future Equity...",
|
|
29
|
+
url: "/data-room/legal/fundraising/seed/executed/vertex-vii-3.5m-safe",
|
|
30
|
+
sourceRepo: "data-room-docs",
|
|
31
|
+
baseRoute: "/data-room",
|
|
32
|
+
chipBasePlatform: "flamingo",
|
|
33
|
+
};
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> **Note:** When `chipBasePlatform` is set, `resolveSourceRowCTA` composes an absolute URL and the card renders a plain `<a>` tag (new tab). Without it, middleware may redirect `/knowledge-base/<path>` to `/` if the route is not in `allowedRoutes`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- source-hash: 191ada0d5f9c1c69293935f38aeafd78 -->
|
|
2
|
+
Defines TypeScript entity types for GitHub activity data used in chat card rendering across the Flamingo/OpenFrame platform.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`GitHubActivityKind`** — Union type discriminating between `'commit'`, `'pull_request'`, and `'pr_review'` activity variants
|
|
7
|
+
- **`PrReviewState`** — Union type for PR review states (`APPROVED`, `CHANGES_REQUESTED`, `COMMENTED`, `DISMISSED`, `PENDING`); drives color/badge rendering in `GitHubActivityCard`
|
|
8
|
+
- **`GitHubActivityItem`** — Core interface representing a single GitHub activity row passed to `GitHubActivityCard`
|
|
9
|
+
|
|
10
|
+
| Field | Type | Description |
|
|
11
|
+
|-------|------|-------------|
|
|
12
|
+
| `id` | `string` | Commit SHA, PR number, or review ID |
|
|
13
|
+
| `title` | `string` | Commit message, PR title, or review state label |
|
|
14
|
+
| `repo` | `string?` | `"owner/repo"` format, derived from URL if omitted |
|
|
15
|
+
| `dateUpdated` | `string \| number \| null` | ISO timestamp or ms epoch |
|
|
16
|
+
| `url` | `string \| null` | GitHub URL used as link target |
|
|
17
|
+
| `kind` | `GitHubActivityKind?` | Defaults to `'commit'` when not supplied |
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import type { GitHubActivityItem, PrReviewState } from '@/lib/types/github-activity';
|
|
23
|
+
|
|
24
|
+
const commitActivity: GitHubActivityItem = {
|
|
25
|
+
id: 'a1b2c3d',
|
|
26
|
+
title: 'fix: resolve ticket sync edge case',
|
|
27
|
+
repo: 'flamingo-run/openframe',
|
|
28
|
+
dateUpdated: '2024-11-01T10:30:00Z',
|
|
29
|
+
url: 'https://github.com/flamingo-run/openframe/commit/a1b2c3d',
|
|
30
|
+
kind: 'commit',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const reviewActivity: GitHubActivityItem = {
|
|
34
|
+
id: 'review-42',
|
|
35
|
+
title: 'APPROVED',
|
|
36
|
+
repo: 'flamingo-run/openframe',
|
|
37
|
+
dateUpdated: Date.now(),
|
|
38
|
+
url: 'https://github.com/flamingo-run/openframe/pull/42#pullrequestreview',
|
|
39
|
+
kind: 'pr_review',
|
|
40
|
+
};
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
This type is intentionally decoupled from `GitHubActivityCard` so clients can construct, pass, or extend activity data without importing UI components.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 487eacc5608879f64c680c5b15f48203 -->
|
|
2
|
+
Defines the wire-shape contract for HubSpot ticket data surfaced in chat card components, supporting three display variants (FULL, ANON, SELF) with field-level redaction handled server-side before delivery to the client.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `HubspotTicketItem` Interface
|
|
7
|
+
|
|
8
|
+
The single export — a typed shape consumed by `hubspot-ticket-card.tsx` across all three rendering variants:
|
|
9
|
+
|
|
10
|
+
| Field | Type | Notes |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `id` | `string` | Maps to `external_id` on `hubspot_tickets` table |
|
|
13
|
+
| `title` | `string` | Ticket subject/title |
|
|
14
|
+
| `preview` | `string?` | Sanitized body snippet via mapper's `buildPreview` |
|
|
15
|
+
| `status` | `string \| null` | Canonical: `NEW \| IN_PROGRESS \| WAITING \| CLOSED` — drives badge color |
|
|
16
|
+
| `statusLabel` | `string \| null` | Human-readable pipeline stage label; falls back to `status` |
|
|
17
|
+
| `priority` | `string \| null` | `LOW \| MEDIUM \| HIGH \| URGENT` |
|
|
18
|
+
| `customerCompany` | `string \| null` | **FULL variant only** — redacted to `null` for ANON |
|
|
19
|
+
| `customerEmail` | `string \| null` | Submitter address; visible for proxy-auth surfaces |
|
|
20
|
+
| `dateUpdated` | `string \| number \| null` | ISO timestamp or epoch |
|
|
21
|
+
| `url` | `string \| null` | **FULL variant only** — HubSpot UI deep link |
|
|
22
|
+
|
|
23
|
+
## Variant Redaction Model
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Variant │ customerCompany │ url
|
|
27
|
+
────────┼─────────────────┼──────
|
|
28
|
+
FULL │ ✅ visible │ ✅ visible
|
|
29
|
+
ANON │ ❌ null │ ❌ null
|
|
30
|
+
SELF │ ✅ visible │ ❌ null
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Redaction happens in the **indexer**, not the client — the shape is identical across variants.
|
|
34
|
+
|
|
35
|
+
## Usage Example
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import type { HubspotTicketItem } from './hubspot-ticket';
|
|
39
|
+
|
|
40
|
+
const ticket: HubspotTicketItem = {
|
|
41
|
+
id: '12345',
|
|
42
|
+
title: 'VPN access not working',
|
|
43
|
+
preview: 'Unable to connect since the latest Windows update...',
|
|
44
|
+
status: 'IN_PROGRESS',
|
|
45
|
+
statusLabel: 'Code review',
|
|
46
|
+
priority: 'HIGH',
|
|
47
|
+
customerEmail: 'user@example.com',
|
|
48
|
+
dateUpdated: '2024-03-15T10:30:00Z',
|
|
49
|
+
// FULL variant — url and customerCompany populated by indexer
|
|
50
|
+
url: 'https://app.hubspot.com/contacts/123/ticket/12345',
|
|
51
|
+
customerCompany: 'Acme Corp',
|
|
52
|
+
};
|
|
53
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!-- source-hash: c776921bad26d5ec08d70dc63e9ff5b7 -->
|
|
2
|
+
Barrel export file that centralises all **chat entity row types** — the canonical wire shapes consumed by chat cards across the Flamingo/OpenFrame platform.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
Re-exports types from the following entity modules:
|
|
7
|
+
|
|
8
|
+
| Module | Entity |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `blog` | Blog post wire shape |
|
|
11
|
+
| `case-study` | Case study wire shape |
|
|
12
|
+
| `content-ref` | Generic content reference |
|
|
13
|
+
| `customer-interview` | Customer interview wire shape |
|
|
14
|
+
| `data-room-doc` | Data room document wire shape |
|
|
15
|
+
| `github-activity` | Commit / PR / review wire shape |
|
|
16
|
+
| `hubspot-ticket` | HubSpot ticket wire shape |
|
|
17
|
+
| `investor-update` | Investor update wire shape |
|
|
18
|
+
| `onboarding-guide` | Onboarding guide wire shape |
|
|
19
|
+
| `program-types` | Program item wire shapes |
|
|
20
|
+
| `roadmap-item` | Roadmap item wire shape |
|
|
21
|
+
| `slack-message` | Slack message wire shape |
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Import any chat entity type directly from the barrel
|
|
27
|
+
import type {
|
|
28
|
+
GithubActivityRow,
|
|
29
|
+
SlackMessageRow,
|
|
30
|
+
HubspotTicketRow,
|
|
31
|
+
} from '@lib/chat/entities';
|
|
32
|
+
|
|
33
|
+
function renderCard(entity: GithubActivityRow | SlackMessageRow) {
|
|
34
|
+
// consume canonical wire shape — no hub-tree imports needed
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Architecture Notes
|
|
39
|
+
|
|
40
|
+
- **Types only** — pure wire shapes and formatters that operate on them live here; no DAL functions, RAG mappers, or sync engine logic.
|
|
41
|
+
- **Hub isolation** — server-side utilities that *produce* these shapes remain in the hub; this package is the single source of truth for *consuming* them.
|
|
42
|
+
- **Chat card contract** — any chat card component should import entity types from this barrel rather than reaching into hub internals.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: cd90c6466cd8d12a5c8765efbf35dcb1 -->
|
|
2
|
+
Defines the wire-shape types and a pure formatter for investor update entities, used across chat cards and `/api/investor-updates` API reads.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
| Interface | Purpose |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `MetricEntry` | A single financial or KPI metric with current/previous values and visibility scope |
|
|
11
|
+
| `HighlightEntry` | A titled highlight item (milestone, note, etc.) with optional description and visibility |
|
|
12
|
+
| `InvestorUpdateHighlights` | Grouped collections of `HighlightEntry` items by category |
|
|
13
|
+
| `InvestorUpdate` | Full wire shape for an investor update — covers content, media, SEO, HubSpot, authorship, and visibility |
|
|
14
|
+
|
|
15
|
+
### Functions
|
|
16
|
+
|
|
17
|
+
- **`formatInvestorUpdatePeriod`** — Pure formatter that converts `period_start` / `period_end` ISO strings into a human-readable range (e.g. `Mar 2025 - May 2025`). Falls back to `?` for missing endpoints.
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import type { InvestorUpdate, MetricEntry } from './investor-update';
|
|
23
|
+
import { formatInvestorUpdatePeriod } from './investor-update';
|
|
24
|
+
|
|
25
|
+
// Format a period range for display
|
|
26
|
+
const label = formatInvestorUpdatePeriod('2025-03-01', '2025-05-31');
|
|
27
|
+
// → "Mar 2025 - May 2025"
|
|
28
|
+
|
|
29
|
+
const labelLong = formatInvestorUpdatePeriod('2025-03-01', null, { monthFormat: 'long' });
|
|
30
|
+
// → "March 2025 - ?"
|
|
31
|
+
|
|
32
|
+
// Type-safe metric entry
|
|
33
|
+
const mrr: MetricEntry = {
|
|
34
|
+
current: 42000,
|
|
35
|
+
previous: 38000,
|
|
36
|
+
change_pct: 10.5,
|
|
37
|
+
visibility: 'internal',
|
|
38
|
+
};
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
|
|
43
|
+
- Visibility fields (`'public' | 'internal'`) control what surfaces in public-facing vs. internal views — filtering logic stays hub-side.
|
|
44
|
+
- `section_visibility` is a freeform record allowing per-section overrides on any `InvestorUpdate`.
|
|
45
|
+
- Server-side data utilities and DB access remain in `lib/data/investor-update-utils-shared.ts`; this file exports types and pure functions only.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- source-hash: 5421df27f5f23a658e7a9769d35c1b32 -->
|
|
2
|
+
Brief description of the file's purpose in 1-2 sentences.
|
|
3
|
+
|
|
4
|
+
Defines the shared TypeScript wire types for the onboarding guide feature, covering the full row shape returned by `/api/onboarding-guides` and the chat onboarding-guide card. These types are intentionally client-safe — DAL mutations stay hub-side.
|
|
5
|
+
|
|
6
|
+
## Key Components
|
|
7
|
+
|
|
8
|
+
| Export | Type | Description |
|
|
9
|
+
|--------|------|-------------|
|
|
10
|
+
| `OnboardingGuide` | `interface` | Full row shape: identity, ordering, body content, video pipeline, images, SEO, workflow, and audit fields |
|
|
11
|
+
| `OnboardingGuideFilters` | `interface` | Query parameters for list endpoints (`status`, `search`, `section`, `platform`, pagination, `ids`) |
|
|
12
|
+
| `OnboardingGuideListResponse` | `interface` | Paginated list response wrapping `OnboardingGuide[]` with a total `count` |
|
|
13
|
+
| `OnboardingGuideSectionSummary` | `interface` | Lightweight section rollup: name, ordering, and guide count |
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import type {
|
|
19
|
+
OnboardingGuide,
|
|
20
|
+
OnboardingGuideFilters,
|
|
21
|
+
OnboardingGuideListResponse,
|
|
22
|
+
} from './onboarding-guide';
|
|
23
|
+
|
|
24
|
+
// Fetch guides for a specific platform section
|
|
25
|
+
async function fetchGuides(
|
|
26
|
+
filters: OnboardingGuideFilters
|
|
27
|
+
): Promise<OnboardingGuideListResponse> {
|
|
28
|
+
const params = new URLSearchParams({
|
|
29
|
+
...(filters.status && { status: filters.status }),
|
|
30
|
+
...(filters.platform && { platform: filters.platform }),
|
|
31
|
+
...(filters.section && { section: filters.section }),
|
|
32
|
+
limit: String(filters.limit ?? 20),
|
|
33
|
+
offset: String(filters.offset ?? 0),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const res = await fetch(`/api/onboarding-guides?${params}`);
|
|
37
|
+
return res.json() as Promise<OnboardingGuideListResponse>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Resolve video source (Mux/MP4 preferred, YouTube as fallback)
|
|
41
|
+
function resolveVideoUrl(guide: OnboardingGuide): string | null {
|
|
42
|
+
return guide.main_video_url ?? guide.youtube_url ?? null;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Notes
|
|
47
|
+
|
|
48
|
+
- **Video pipeline**: `main_video_url` (Mux/MP4) and `youtube_url` are independent columns — consumers should use whichever is populated, matching the `<VideoSourceSelector>` admin toggle.
|
|
49
|
+
- **Multi-platform**: `onboarding_guide_platforms` is a junction array; a single guide can be featured across multiple platforms with independent `featured_order` values.
|
|
50
|
+
- **Ordering**: Use `section_order` + `step_order` together for deterministic sort within a section.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- source-hash: a31da27a1da7444bbcbd4a8716703941 -->
|
|
2
|
+
Defines the Unified Program System's TypeScript type hierarchy, providing base interfaces, database row types, program-specific extensions, configuration objects, and pure transform utilities for events, podcasts, and webinars across a single set of generic components.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Kind | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `ProgramHost` | Interface | Host/speaker info (name, avatar, role, etc.) |
|
|
9
|
+
| `LumaEventRow` / `PodcastEpisodeRow` / `WebinarRow` | Interfaces | Raw DB row shapes for each program source table |
|
|
10
|
+
| `BaseProgramItem` | Interface | Shared contract all program items must satisfy |
|
|
11
|
+
| `EventItem` / `PodcastItem` / `WebinarItem` | Interfaces | Extended shapes with program-specific fields |
|
|
12
|
+
| `ProgramType` | Type | `'event' \| 'podcast' \| 'webinar'` discriminant |
|
|
13
|
+
| `ProgramConfig<T>` | Interface | Configuration object that drives generic component behavior (labels, routing, icons, sort order) |
|
|
14
|
+
| `ProgramLabels` | Interface | Display strings (singular, plural, archive, empty, etc.) |
|
|
15
|
+
| `ProgramListResponse<T>` / `ProgramItemResponse<T>` | Interfaces | Generic API response wrappers |
|
|
16
|
+
| `ProgramFilter` / `AdminProgramFilter` | Interfaces | Query/filter option shapes |
|
|
17
|
+
| `transformEventToProgram` | Function | Maps `LumaEventRow` → `EventItem` |
|
|
18
|
+
| `transformPodcastToProgram` | Function | Maps `PodcastEpisodeRow` → `PodcastItem` |
|
|
19
|
+
| `transformWebinarToProgram` | Function | Maps `WebinarRow` → `WebinarItem` |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import type {
|
|
25
|
+
ProgramConfig,
|
|
26
|
+
EventItem,
|
|
27
|
+
ProgramLabels,
|
|
28
|
+
} from './program-types';
|
|
29
|
+
import { transformEventToProgram } from './program-types';
|
|
30
|
+
import { CalendarDays } from 'lucide-react';
|
|
31
|
+
|
|
32
|
+
// Define a typed config for events
|
|
33
|
+
const eventConfig: ProgramConfig<EventItem> = {
|
|
34
|
+
type: 'event',
|
|
35
|
+
table: 'luma_events',
|
|
36
|
+
apiEndpoint: '/api/events',
|
|
37
|
+
dateField: 'start_at',
|
|
38
|
+
detailRoute: '/events',
|
|
39
|
+
externalLinkLabel: 'View on Luma',
|
|
40
|
+
icon: <CalendarDays />,
|
|
41
|
+
sortOrder: 'asc',
|
|
42
|
+
labels: {
|
|
43
|
+
singular: 'Event',
|
|
44
|
+
plural: 'Events',
|
|
45
|
+
upcoming: 'Next Event',
|
|
46
|
+
upcomingSection: 'Upcoming Events',
|
|
47
|
+
archive: 'Past Events',
|
|
48
|
+
empty: 'No events yet',
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Transform a raw DB row into a typed EventItem
|
|
53
|
+
const row = await db.from('luma_events').select('*').single();
|
|
54
|
+
const eventItem: EventItem = transformEventToProgram(row);
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> `BaseProgramItem` is the generic constraint used throughout — any new program type only needs to extend it and supply a matching `ProgramConfig` to plug into all shared components automatically.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: ad455db496eef8ee2c54f68792ebfef2 -->
|
|
2
|
+
Defines the canonical wire-shape interfaces for roadmap items consumed by the chat roadmap card and the public `/api/roadmap` endpoint.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `RoadmapItem`
|
|
7
|
+
Strongly-typed entity mirroring the `roadmap_items` projection produced by `transformTask()` in `clickup-sync-utils.ts`. Represents a single ClickUp task surfaced as a public roadmap entry.
|
|
8
|
+
|
|
9
|
+
| Field | Type | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `id` | `string` | Unique identifier |
|
|
12
|
+
| `status` / `statusColor` | `string` | Display status and its hex/named color |
|
|
13
|
+
| `icon` | `string \| null` | Optional icon URL |
|
|
14
|
+
| `figmaUrl` | `string \| null` | Linked Figma design |
|
|
15
|
+
| `screenshots` | `string[]` | Attached screenshot URLs |
|
|
16
|
+
| `targetVersion` | `string \| null` | Planned release version |
|
|
17
|
+
| `upvotes` / `downvotes` | `number` | Community voting counts |
|
|
18
|
+
| `quarter` | `string` | Planning quarter label |
|
|
19
|
+
| `clickupUrl` | `string` | Canonical ClickUp task URL |
|
|
20
|
+
| `customItemId` | `number \| null` | ClickUp task-type taxonomy ID (e.g. `1008`=Bug, `1009`=Request, `1010`=Feature) — drives type icons via `getTaskTypeIcon` |
|
|
21
|
+
|
|
22
|
+
### `RoadmapStaleness`
|
|
23
|
+
Tracks cache freshness for roadmap data synced from ClickUp.
|
|
24
|
+
|
|
25
|
+
| Field | Type | Description |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| `lastSyncedAt` | `string \| null` | ISO timestamp of last successful sync |
|
|
28
|
+
| `staleSinceMs` | `number` | Milliseconds elapsed since last sync |
|
|
29
|
+
|
|
30
|
+
## Usage Example
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import type { RoadmapItem, RoadmapStaleness } from '@/components/chat/types/entities/roadmap-item';
|
|
34
|
+
|
|
35
|
+
const item: RoadmapItem = {
|
|
36
|
+
id: 'task_abc123',
|
|
37
|
+
title: 'Dark mode support',
|
|
38
|
+
description: 'Add system-level dark mode across all views',
|
|
39
|
+
status: 'In Progress',
|
|
40
|
+
statusColor: '#f5a623',
|
|
41
|
+
icon: null,
|
|
42
|
+
figmaUrl: 'https://figma.com/file/...',
|
|
43
|
+
screenshots: [],
|
|
44
|
+
targetVersion: 'v2.4.0',
|
|
45
|
+
upvotes: 42,
|
|
46
|
+
downvotes: 3,
|
|
47
|
+
quarter: 'Q3 2025',
|
|
48
|
+
clickupUrl: 'https://app.clickup.com/t/abc123',
|
|
49
|
+
customItemId: 1010, // Feature
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const staleness: RoadmapStaleness = {
|
|
53
|
+
lastSyncedAt: '2025-07-01T12:00:00Z',
|
|
54
|
+
staleSinceMs: 3600000, // 1 hour
|
|
55
|
+
};
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Import note:** Always import from `@/components/chat/types/entities/roadmap-item` for the strongly-typed shape. The legacy `RoadmapItem` stub in `product-release/release-detail-page.tsx` is untyped (`{ id: string; [key: string]: unknown }`) and will be reconciled in a follow-up.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- source-hash: 5dd665815decf79ecf870dd4eb652947 -->
|
|
2
|
+
Defines the minimal wire shape for Slack message data as displayed in the chat RAG result card, representing a post-retrieval projection stripped of community-feature fields like reactions and threading.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `SlackMessageItem` interface
|
|
7
|
+
|
|
8
|
+
A lean projection of a `slack_messages` RAG table row containing only the fields required to render the `slack-message-card` UI component.
|
|
9
|
+
|
|
10
|
+
| Field | Type | Description |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `id` | `string` | Slack message ID (`ts` or URL-derived) |
|
|
13
|
+
| `title` | `string` | Display title — typically `"author · channel"` |
|
|
14
|
+
| `preview` | `string?` | PII-sanitized message body preview |
|
|
15
|
+
| `channel` | `string?` | Channel name parsed from URL or stored row |
|
|
16
|
+
| `dateUpdated` | `string \| number \| null?` | ISO timestamp or millisecond epoch |
|
|
17
|
+
| `url` | `string \| null?` | Full Slack permalink (`https://*.slack.com/archives/...`) |
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import { SlackMessageItem } from '@/types/slack-message';
|
|
23
|
+
|
|
24
|
+
// Mapping a RAG table row to the card's wire shape
|
|
25
|
+
const item: SlackMessageItem = {
|
|
26
|
+
id: '1712345678.000100',
|
|
27
|
+
title: 'jane.doe · #support',
|
|
28
|
+
preview: 'Has anyone seen the ticket for the VPN issue?',
|
|
29
|
+
channel: 'support',
|
|
30
|
+
dateUpdated: '2024-04-05T14:22:00.000Z',
|
|
31
|
+
url: 'https://acme.slack.com/archives/C01AB2CD3EF/p1712345678000100',
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> **Naming note:** This interface is intentionally distinct from the broader `SlackMessage` type in `src/types/slack.ts`, which covers the full Slack Community feature shape including reactions, threading, and user objects.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 75abfd053b43306b990d3311c7dd4813 -->
|
|
2
|
+
Resolves a status string to an abstract color scheme name for use in `StatusBadge` components across job, ClickUp task, and log-level status surfaces.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `ColorScheme` | `type` | Union type: `'success' \| 'error' \| 'warning' \| 'cyan' \| 'default'` |
|
|
9
|
+
| `getStatusColorScheme` | `function` | Maps a status string to a `ColorScheme` value |
|
|
10
|
+
|
|
11
|
+
### Resolution Strategy
|
|
12
|
+
|
|
13
|
+
`getStatusColorScheme` applies a two-pass lookup:
|
|
14
|
+
|
|
15
|
+
1. **Exact match** — case-sensitive switch on common statuses
|
|
16
|
+
2. **Partial match** — lowercase substring checks for ClickUp-style freeform statuses (e.g. `"In Progress"`, `"Complete"`)
|
|
17
|
+
|
|
18
|
+
| ColorScheme | Matched statuses |
|
|
19
|
+
|-------------|-----------------|
|
|
20
|
+
| `success` | `completed`, `success`, `active`, `*complete*`, `*done*` |
|
|
21
|
+
| `error` | `failed`, `failure`, `cancelled`, `error`, `*blocked*`, `*failed*` |
|
|
22
|
+
| `cyan` | `running`, `processing`, `closed`, `*review*` |
|
|
23
|
+
| `warning` | `pending`, `warning`, `*working*`, `*progress*` |
|
|
24
|
+
| `default` | `draft`, `info`, or any unmatched value |
|
|
25
|
+
|
|
26
|
+
## Usage Example
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { getStatusColorScheme } from './agent-status-message'
|
|
30
|
+
|
|
31
|
+
// Exact match
|
|
32
|
+
getStatusColorScheme('completed') // → 'success'
|
|
33
|
+
getStatusColorScheme('failed') // → 'error'
|
|
34
|
+
getStatusColorScheme('running') // → 'cyan'
|
|
35
|
+
|
|
36
|
+
// Partial match (ClickUp-style)
|
|
37
|
+
getStatusColorScheme('In Progress') // → 'warning'
|
|
38
|
+
getStatusColorScheme('Done') // → 'success'
|
|
39
|
+
getStatusColorScheme('Code Review') // → 'cyan'
|
|
40
|
+
|
|
41
|
+
// Consumed by StatusBadge
|
|
42
|
+
<StatusBadge colorScheme={getStatusColorScheme(task.status)} label={task.status} />
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
> **Note:** This is the lib-side subset of the hub's `agent-status-message.ts`. CSS class resolvers and the `AgentStatusMessage` SSE builder live hub-side, as they reference hub-only ODS class names.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: 202df1de78269679793058f2735da78c -->
|
|
2
|
+
Brief description of the file's purpose and what it does.
|
|
3
|
+
|
|
4
|
+
Defines the shared cross-process contract for the post-approval auto-continuation directive, providing a single source of truth for both server-side routing and client-side message construction.
|
|
5
|
+
|
|
6
|
+
## Key Components
|
|
7
|
+
|
|
8
|
+
| Export | Type | Description |
|
|
9
|
+
|--------|------|-------------|
|
|
10
|
+
| `AUTO_CONTINUATION_DIRECTIVE_PREFIX` | `const string` | Sentinel prefix used by both `decideRoute` (server) and `autoContinueRef` (client) to identify hidden directive messages |
|
|
11
|
+
| `BuildAutoContinuationOptions` | `interface` | Options bag for `ticketId` and `status` to branch directive logic |
|
|
12
|
+
| `buildAutoContinuationDirective` | `function` | Builds the hidden synthetic user message injected after every successful tool approval |
|
|
13
|
+
|
|
14
|
+
## Directive Branches
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
graph TD
|
|
18
|
+
A["buildAutoContinuationDirective(toolName, opts)"] --> B{"toolName?"}
|
|
19
|
+
B -->|"create_ticket"| C["§1a — Ask 2-4 diagnostic\nfollow-up questions"]
|
|
20
|
+
B -->|"update_ticket + CLOSED"| D["§1b — Ask ONE closing\nresolution question"]
|
|
21
|
+
B -->|"update_ticket (other)"| E["Acknowledge change,\nask if anything else needed"]
|
|
22
|
+
C --> F["Prefix + prose only\nNo tool call this turn"]
|
|
23
|
+
D --> F
|
|
24
|
+
E --> F
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage Example
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import {
|
|
31
|
+
AUTO_CONTINUATION_DIRECTIVE_PREFIX,
|
|
32
|
+
buildAutoContinuationDirective,
|
|
33
|
+
} from './auto-continuation-directive'
|
|
34
|
+
|
|
35
|
+
// After a create_ticket approval — injects diagnostic follow-up Qs
|
|
36
|
+
const directive = buildAutoContinuationDirective('create_ticket', {
|
|
37
|
+
ticketId: '4821',
|
|
38
|
+
})
|
|
39
|
+
// → "[internal-auto-continuation] The user just approved create_ticket (ticket #4821). ..."
|
|
40
|
+
|
|
41
|
+
// After closing a ticket
|
|
42
|
+
const closeDirective = buildAutoContinuationDirective('update_ticket', {
|
|
43
|
+
ticketId: '4821',
|
|
44
|
+
status: 'CLOSED',
|
|
45
|
+
})
|
|
46
|
+
// → "[internal-auto-continuation] The user just approved closing ticket #4821. ..."
|
|
47
|
+
|
|
48
|
+
// Server-side route guard — tools disabled for directive turns
|
|
49
|
+
if (rawUserQuery.startsWith(AUTO_CONTINUATION_DIRECTIVE_PREFIX)) {
|
|
50
|
+
disableTools()
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Important Constraints
|
|
55
|
+
|
|
56
|
+
- **Never drift the prefix** — server `decideRoute` and client `autoContinueRef` must both import from this file. A mismatched literal silently re-enables tools, causing the LLM to duplicate the just-approved tool call.
|
|
57
|
+
- **Tools are hard-disabled** on the directive turn — all branches instruct the LLM to respond with prose only.
|
|
58
|
+
- `toolName` is typed as `string` (not a const-union) intentionally, keeping the module generic across hub deployments.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<!-- source-hash: 3113ae48366d1440e4d993a3e0404da3 -->
|
|
2
|
+
Shared utility providing a single source of truth for formatting and parsing chat attachment markdown between the host-side bubble renderer and server-side LLM input cleaner, preventing drift between the two systems.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `CHAT_ATTACHMENT_VIEW_URL_PREFIX` | `const` | Hub-default proxy URL prefix for attachment view routes |
|
|
9
|
+
| `CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM` | `const` | Query param name (`t`) for the HMAC view token |
|
|
10
|
+
| `ANTHROPIC_SUPPORTED_IMAGE_MIME` | `const` | Image MIME types renderable as Anthropic image blocks |
|
|
11
|
+
| `ChatAttachment` | `interface` | Wire shape for a single chat attachment |
|
|
12
|
+
| `buildChatAttachmentViewUrl` | `function` | Constructs the signed proxy URL for an attachment |
|
|
13
|
+
| `escapeMarkdownInline` | `function` | Sanitizes filenames against markdown injection attacks |
|
|
14
|
+
| `formatChatAttachmentMarkdownForBubble` | `function` | Produces the `![]()` or `[Attached: ...]` markdown line |
|
|
15
|
+
| `CHAT_ATTACHMENT_MARKDOWN_PATTERN` | `RegExp` | Anchored regex matching both image and link attachment forms |
|
|
16
|
+
| `stripChatAttachmentMarkdown` | `function` | Strips attachment markdown from text and extracts storage paths |
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import {
|
|
22
|
+
CHAT_ATTACHMENT_VIEW_URL_PREFIX,
|
|
23
|
+
formatChatAttachmentMarkdownForBubble,
|
|
24
|
+
stripChatAttachmentMarkdown,
|
|
25
|
+
} from './chat-attachment-markdown'
|
|
26
|
+
|
|
27
|
+
// Host-side: format attachment for user bubble (pass runtime prefix)
|
|
28
|
+
const attachment: ChatAttachment = {
|
|
29
|
+
storagePath: 'org-123/chat/screenshot.png',
|
|
30
|
+
viewToken: 'hmac-signed-token',
|
|
31
|
+
contentType: 'image/png',
|
|
32
|
+
fileName: 'screenshot.png',
|
|
33
|
+
size: 204800,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Embedded app overrides prefix; hub uses the constant directly
|
|
37
|
+
const markdown = formatChatAttachmentMarkdownForBubble(
|
|
38
|
+
attachment,
|
|
39
|
+
'https://hub.example.com/api/storage/view/chat-attachments/',
|
|
40
|
+
)
|
|
41
|
+
// → "\n\n"
|
|
42
|
+
|
|
43
|
+
// Server-side: strip attachment lines before sending to LLM
|
|
44
|
+
const userMessage = `Please review this\n\n`
|
|
45
|
+
const { stripped, storagePaths } = stripChatAttachmentMarkdown(userMessage)
|
|
46
|
+
// stripped → "Please review this"
|
|
47
|
+
// storagePaths → ["org-123/chat/screenshot.png"]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Security Notes
|
|
51
|
+
|
|
52
|
+
- **Markdown injection**: `escapeMarkdownInline` escapes `[`, `]`, `(`, `)`, `\`, `<`, `>`, and `"` from filenames — preventing a crafted name like `screenshot](https://evil.com).png` from hijacking the image URL.
|
|
53
|
+
- **Anthropic image blocks**: raw Supabase signed URLs are used (not the proxy) because Anthropic's fetcher does not reliably follow `302` redirects.
|
|
54
|
+
- **View tokens**: HMAC-signed server-side; the client never generates them.
|