@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,36 @@
|
|
|
1
|
+
<!-- source-hash: 2eebf27815f5533ea1acd099d63702ec -->
|
|
2
|
+
Storybook stories for the `TicketKnowledgeBaseList` component, providing interactive UI development and documentation for a clickable knowledge base article list used in the ticket workflow.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`Default`** — Four populated articles showcasing typical MSP knowledge base content (setup guides, migration docs, training programs, checklists)
|
|
7
|
+
- **`SingleArticle`** — Minimal single-item variant for edge case testing
|
|
8
|
+
- **`Empty`** — Zero-state render when no articles are available
|
|
9
|
+
|
|
10
|
+
## Usage Example
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { TicketKnowledgeBaseList } from '../components/ui/ticket-knowledge-base-list';
|
|
14
|
+
|
|
15
|
+
<TicketKnowledgeBaseList
|
|
16
|
+
articles={[
|
|
17
|
+
{
|
|
18
|
+
id: '1',
|
|
19
|
+
title: 'OpenFrame Initial Setup Guide',
|
|
20
|
+
description: 'Complete platform configuration including SSO integration.',
|
|
21
|
+
onClick: () => router.push(`/knowledge/${id}`),
|
|
22
|
+
},
|
|
23
|
+
]}
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Story Configuration
|
|
28
|
+
|
|
29
|
+
| Parameter | Value |
|
|
30
|
+
|-----------|-------|
|
|
31
|
+
| Storybook path | `Tickets/TicketKnowledgeBaseList` |
|
|
32
|
+
| Layout | `padded` |
|
|
33
|
+
| Viewport width | `600px` (decorator-constrained) |
|
|
34
|
+
| Auto-docs | Enabled via `autodocs` tag |
|
|
35
|
+
|
|
36
|
+
Each article item expects `id`, `title`, `description`, and an optional `onClick` handler — the component renders a chevron navigation indicator per item.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- source-hash: 60dbe61d194b4cd2145ee7d06610135a -->
|
|
2
|
+
Storybook stories for the `TicketNotesSection` component, providing visual development and testing scenarios for the ticket notes UI including note cards with author info, edit/delete actions, and note input.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Default` | Story | Renders a populated notes section with 3 mock notes (mix of own and others) |
|
|
9
|
+
| `Interactive` | Story | Fully stateful story with live add/delete note functionality |
|
|
10
|
+
| `ReadOnly` | Story | Notes list without `onAddNote` handler — hides the input field |
|
|
11
|
+
| `Empty` | Story | Zero-note state with add input available |
|
|
12
|
+
| `mockNotes` | `TicketNote[]` | Reusable fixture with 3 notes across 2 authors |
|
|
13
|
+
|
|
14
|
+
## Usage Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// Interactive story demonstrates real state management pattern
|
|
18
|
+
export const Interactive: Story = {
|
|
19
|
+
render: function InteractiveNotes() {
|
|
20
|
+
const [notes, setNotes] = useState<TicketNote[]>(mockNotes);
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<TicketNotesSection
|
|
24
|
+
notes={notes}
|
|
25
|
+
onAddNote={(text) => {
|
|
26
|
+
setNotes(prev => [...prev, {
|
|
27
|
+
id: String(Date.now()),
|
|
28
|
+
text,
|
|
29
|
+
authorName: 'You',
|
|
30
|
+
createdAt: new Date().toLocaleString(),
|
|
31
|
+
isOwn: true,
|
|
32
|
+
}]);
|
|
33
|
+
}}
|
|
34
|
+
onDeleteNote={(id) => setNotes(prev => prev.filter(n => n.id !== id))}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Story Coverage
|
|
42
|
+
|
|
43
|
+
| Scenario | `notes` | `onAddNote` | `onEditNote` / `onDeleteNote` |
|
|
44
|
+
|----------|---------|-------------|-------------------------------|
|
|
45
|
+
| `Default` | 3 mock notes | ✅ | ✅ |
|
|
46
|
+
| `Interactive` | Stateful | ✅ live | ✅ live delete |
|
|
47
|
+
| `ReadOnly` | 3 mock notes | ❌ hidden | ❌ |
|
|
48
|
+
| `Empty` | `[]` | ✅ | ❌ |
|
|
49
|
+
|
|
50
|
+
> Stories are rendered at `600px` width via a decorator, matching a typical ticket sidebar layout.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- source-hash: 8385ab6a043167836b17b6b41deb0581 -->
|
|
2
|
+
Storybook stories for the `Toaster` / `ToastCard` component system, covering static previews, interactive playground, command-approval flows, and live Sonner-powered triggers.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `AllVariants` | Story | Static grid of every `ToastVariant` (`default`, `success`, `warning`, `error`, `info`) plus edge cases (title-only, description-only, non-dismissible, persistent) |
|
|
9
|
+
| `Playground` | Story | Arg-driven interactive card — use Storybook Controls to tweak `variant`, `title`, `description`, `duration`, and `dismissible` |
|
|
10
|
+
| `CommandApprovalCollapsed` | Story | `CommandApprovalToast` in its default collapsed state |
|
|
11
|
+
| `CommandApprovalExpanded` | Story | `CommandApprovalToast` with `defaultExpanded` showing the command preview and Approve/Reject actions |
|
|
12
|
+
| `CommandApprovalPerTool` | Story | One expanded approval toast per supported tool type (`FLEET_MDM`, `TACTICAL_RMM`, `MESHCENTRAL`, `AUTHENTIK`, `OSQUERY`, `OPENFRAME`) to verify icon mapping |
|
|
13
|
+
| `CommandApprovalLive` | Story | Fires real Sonner toasts via `showCommandApprovalToast()` with `onApprove`/`onReject` callbacks |
|
|
14
|
+
| `LiveTriggers` | Story | Button panel that fires every variant as a live Sonner toast using both `toast()` and `showToast()` |
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
// Render once near your app root
|
|
20
|
+
import { Toaster } from '@/components/ui/toaster';
|
|
21
|
+
<Toaster />
|
|
22
|
+
|
|
23
|
+
// Fire a standard toast from anywhere
|
|
24
|
+
import { toast } from '@/hooks/use-toast';
|
|
25
|
+
toast({ variant: 'success', title: 'Saved', description: 'All changes committed.' });
|
|
26
|
+
|
|
27
|
+
// Fire a command-approval toast requiring tech sign-off
|
|
28
|
+
import { showCommandApprovalToast } from '@/components/ui/toaster';
|
|
29
|
+
showCommandApprovalToast({
|
|
30
|
+
title: 'Tech Required',
|
|
31
|
+
description: 'Approval is required to execute the command.',
|
|
32
|
+
command: 'fleetctl query --hosts mac-* "SELECT * FROM system_info"',
|
|
33
|
+
toolType: ToolTypeValues.FLEET_MDM,
|
|
34
|
+
approvalDescription: 'Queries system info across all macOS endpoints.',
|
|
35
|
+
onApprove: () => toast({ variant: 'success', title: 'Command approved' }),
|
|
36
|
+
onReject: () => toast({ variant: 'error', title: 'Command rejected' }),
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> **Note:** `<Toaster />` must be mounted in the render tree for live stories (`CommandApprovalLive`, `LiveTriggers`) — both stories include it inline so the Storybook canvas is self-contained.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 5d594bd4947331ddd5432015be5899f2 -->
|
|
2
|
+
Storybook stories for the `ToolExecutionDisplay` chat component, covering executing, success, and failure states in a constrained-width layout.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `CollapsedExecuting` | Spinner state while a tool (e.g. `run_script` via Tactical RMM) is in progress |
|
|
9
|
+
| `CollapsedSuccess` | Green check state after successful tool execution, with result output |
|
|
10
|
+
| `CollapsedFailure` | Red error icon state after a failed tool execution (e.g. Fleet MDM profile deploy) |
|
|
11
|
+
| `constrainedDecorator` | Helper decorator that wraps stories in a `max-width` container (default 400px) |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { ToolExecutionDisplay } from "../components/chat/tool-execution-display";
|
|
17
|
+
import type { ToolExecutionData } from "../components/chat/types";
|
|
18
|
+
|
|
19
|
+
const message: ToolExecutionData = {
|
|
20
|
+
type: "EXECUTED_TOOL",
|
|
21
|
+
integratedToolType: "TACTICAL_RMM",
|
|
22
|
+
toolFunction: "run_script",
|
|
23
|
+
parameters: { RunAsUser: "False", timeoutSeconds: 60 },
|
|
24
|
+
result: "Script output here...",
|
|
25
|
+
success: true,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
<ToolExecutionDisplay message={message} />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Story Data
|
|
32
|
+
|
|
33
|
+
Three fixture payloads cover the core display states:
|
|
34
|
+
|
|
35
|
+
| Fixture | `type` | `integratedToolType` | `success` |
|
|
36
|
+
|---------|--------|----------------------|-----------|
|
|
37
|
+
| `executingMessage` | `EXECUTING_TOOL` | `TACTICAL_RMM` | — |
|
|
38
|
+
| `executedSuccessMessage` | `EXECUTED_TOOL` | `TACTICAL_RMM` | `true` |
|
|
39
|
+
| `executedFailureMessage` | `EXECUTED_TOOL` | `FLEET_MDM` | `false` |
|
|
40
|
+
|
|
41
|
+
The component renders a collapsed card by default; clicking toggles full details including parameters and result output.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: cde6b3206d9d2b1da2994e1fb8b1fb77 -->
|
|
2
|
+
Storybook stories for the `Tooltip` UI component, demonstrating usage patterns, placement options, and interactive states.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Story | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Default` | Basic tooltip on a settings icon button |
|
|
9
|
+
| `InfoHelper` | Info icon with explanatory tooltip for forms/dashboards |
|
|
10
|
+
| `Placement` | All four tooltip positions: `top`, `bottom`, `left`, `right` |
|
|
11
|
+
| `IconToolbar` | Action bar with tooltips on Copy, Download, Share, and Delete icons |
|
|
12
|
+
| `DisabledButton` | Tooltip on a disabled button via wrapper `<span>` to preserve hover events |
|
|
13
|
+
| `TruncatedText` | Reveals full text on hover when content is visually clipped |
|
|
14
|
+
| `RichContent` | Multi-line tooltip with icon, heading, and keyboard shortcut badge |
|
|
15
|
+
| `CopyButton` | Interactive copy button that toggles tooltip text and icon on click |
|
|
16
|
+
|
|
17
|
+
## Usage Example
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// Basic tooltip
|
|
21
|
+
<TooltipProvider delayDuration={200}>
|
|
22
|
+
<Tooltip>
|
|
23
|
+
<TooltipTrigger asChild>
|
|
24
|
+
<button>Hover me</button>
|
|
25
|
+
</TooltipTrigger>
|
|
26
|
+
<TooltipContent side="top">Tooltip text</TooltipContent>
|
|
27
|
+
</Tooltip>
|
|
28
|
+
</TooltipProvider>
|
|
29
|
+
|
|
30
|
+
// Tooltip on a disabled button — wrap in span to capture hover
|
|
31
|
+
<Tooltip>
|
|
32
|
+
<TooltipTrigger asChild>
|
|
33
|
+
<span tabIndex={0} className="inline-block">
|
|
34
|
+
<Button disabled>Deploy</Button>
|
|
35
|
+
</span>
|
|
36
|
+
</TooltipTrigger>
|
|
37
|
+
<TooltipContent>You need admin permissions to deploy.</TooltipContent>
|
|
38
|
+
</Tooltip>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
> `TooltipProvider` must wrap all `Tooltip` instances. Use `delayDuration` to control hover delay in milliseconds.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 0eb9d42ebd2c94e50a4a59a1b4f5779d -->
|
|
2
|
+
Storybook stories for the `UserSummary` component, covering all display variants from minimal to fully-featured configurations.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`makeAvatar`** — Helper that generates inline SVG avatar data URIs with initials and a background color, used to produce deterministic test fixtures without external image dependencies.
|
|
7
|
+
- **`meta`** — Storybook metadata block configuring controls for `compact`, `avatarSize`, `showEditButton`, and `editablePhoto`.
|
|
8
|
+
- **Story exports** — 14 named stories grouped by feature area:
|
|
9
|
+
|
|
10
|
+
| Group | Stories |
|
|
11
|
+
|---|---|
|
|
12
|
+
| Default (Full) | `Default`, `NoAvatar`, `WithSubtitle` |
|
|
13
|
+
| Auth Providers | `WithAuthProviders` |
|
|
14
|
+
| MSP Preview | `WithMSP`, `WithMSPNoLogo` |
|
|
15
|
+
| Edit Button | `WithEditButton` |
|
|
16
|
+
| Full Featured | `FullFeatured` |
|
|
17
|
+
| Compact Variant | `Compact`, `CompactNoAvatar`, `CompactWithSubtitle`, `CompactWithMSP`, `CompactLargeAvatar` |
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// Reuse the avatar helper in other story files
|
|
23
|
+
const avatar = makeAvatar('AB', '#14b8a6')
|
|
24
|
+
|
|
25
|
+
export const MyStory: Story = {
|
|
26
|
+
args: {
|
|
27
|
+
name: 'Alice Brown',
|
|
28
|
+
email: 'alice@example.com',
|
|
29
|
+
avatarUrl: avatar,
|
|
30
|
+
compact: true,
|
|
31
|
+
mspPreview: {
|
|
32
|
+
name: 'Acme MSP',
|
|
33
|
+
seatCount: 300,
|
|
34
|
+
technicianCount: 8,
|
|
35
|
+
annualRevenue: 750_000,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The `FullFeatured` story serves as the canonical reference combining avatar, MSP badge, auth provider icons, and the edit button in a single configuration.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!-- source-hash: ceae4576eb21b2903f71a060a6972f7f -->
|
|
2
|
+
Storybook stories for the `WaitlistForm` component, covering default states, edge cases, theming, and interaction scenarios for visual and functional testing.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Default` | Base form with no pre-filled values |
|
|
9
|
+
| `WithDefaultEmail` | Form pre-filled with a business email |
|
|
10
|
+
| `GenericEmailWarning` | Triggers the consumer-domain (e.g. `gmail.com`) warning hint |
|
|
11
|
+
| `Submitting` | Button in loading/spinner state |
|
|
12
|
+
| `Success` | Post-submission success label state |
|
|
13
|
+
| `CustomLabels` | All configurable text props overridden |
|
|
14
|
+
| `NarrowContainer` | 360px constrained layout for mobile testing |
|
|
15
|
+
| `FailingRegistration` | `onRegister` throws to exercise toast error handling |
|
|
16
|
+
| `FlamingoWithCheckboxError` | Flamingo-themed variant; auto-clicks submit to expose checkbox validation error |
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
// Run a specific story in isolation
|
|
22
|
+
import { FlamingoWithCheckboxError } from './WaitlistForm.stories';
|
|
23
|
+
|
|
24
|
+
// Meta-level defaults shared across all stories
|
|
25
|
+
// - layout: 'padded', dark background
|
|
26
|
+
// - Toaster decorator for toast notifications
|
|
27
|
+
// - 1.5s simulated async onRegister
|
|
28
|
+
// - placeholder privacy/terms URLs
|
|
29
|
+
|
|
30
|
+
// Override args per-story
|
|
31
|
+
export const WithDefaultEmail: Story = {
|
|
32
|
+
args: {
|
|
33
|
+
defaultEmail: 'john@acme-msp.com',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Notes
|
|
39
|
+
|
|
40
|
+
- All stories wrap `<Story />` with `<Toaster />` via a global decorator so toast notifications render correctly.
|
|
41
|
+
- `FlamingoWithCheckboxError` uses `useRef` + `useEffect` to programmatically click the submit button on mount, simulating an immediate validation failure without manual interaction.
|
|
42
|
+
- The `data-app-type="flamingo"` attribute on the wrapper activates the pink accent theme variant.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/nextjs-vite'
|
|
2
|
+
import { BlogCard } from '../components/chat/entity-cards'
|
|
3
|
+
import { ChatColumnDecorator } from './__fixtures__/chat-card-decorator'
|
|
4
|
+
import { blogPostSummary } from './__fixtures__/chat-cards'
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof BlogCard> = {
|
|
7
|
+
title: 'Chat/EntityCards/BlogCard',
|
|
8
|
+
component: BlogCard,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: 'fullscreen',
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component:
|
|
14
|
+
'Card for the `blog_post` doc type. Has two densities — `sm` is the compact horizontal chat-inline form (~80px tall), `default` is the full vertical catalog card. The card composes its own `<a>` from `href`; callers resolve the URL via `buildContentURL` or `useNavLink`.',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
decorators: [(Story) => <ChatColumnDecorator><Story /></ChatColumnDecorator>],
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default meta
|
|
22
|
+
type Story = StoryObj<typeof meta>
|
|
23
|
+
|
|
24
|
+
export const ChatInlineSm: Story = {
|
|
25
|
+
args: {
|
|
26
|
+
post: blogPostSummary,
|
|
27
|
+
href: '/blog/' + blogPostSummary.slug,
|
|
28
|
+
size: 'sm',
|
|
29
|
+
target: '_blank',
|
|
30
|
+
rel: 'noopener noreferrer',
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const ChatInlineWithVideoBadge: Story = {
|
|
35
|
+
args: {
|
|
36
|
+
post: blogPostSummary,
|
|
37
|
+
href: '/blog/' + blogPostSummary.slug,
|
|
38
|
+
size: 'sm',
|
|
39
|
+
target: '_blank',
|
|
40
|
+
rel: 'noopener noreferrer',
|
|
41
|
+
hasEmbeddedVideo: true,
|
|
42
|
+
},
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const Default: Story = {
|
|
46
|
+
args: {
|
|
47
|
+
post: blogPostSummary,
|
|
48
|
+
href: '/blog/' + blogPostSummary.slug,
|
|
49
|
+
size: 'default',
|
|
50
|
+
target: '_blank',
|
|
51
|
+
rel: 'noopener noreferrer',
|
|
52
|
+
},
|
|
53
|
+
parameters: {
|
|
54
|
+
docs: {
|
|
55
|
+
description: {
|
|
56
|
+
story:
|
|
57
|
+
'Full vertical catalog card. Not used inline in chat (the chat dispatch always passes `size="sm"`), but the card supports it for the related-content rail.',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/nextjs-vite'
|
|
2
|
+
import { CampaignCardAdmin } from '../components/chat/entity-cards'
|
|
3
|
+
import {
|
|
4
|
+
ChatColumnDecorator,
|
|
5
|
+
makeAnchorProps,
|
|
6
|
+
} from './__fixtures__/chat-card-decorator'
|
|
7
|
+
import { campaignItem } from './__fixtures__/chat-cards'
|
|
8
|
+
|
|
9
|
+
const meta: Meta<typeof CampaignCardAdmin> = {
|
|
10
|
+
title: 'Chat/EntityCards/CampaignCardAdmin',
|
|
11
|
+
component: CampaignCardAdmin,
|
|
12
|
+
parameters: {
|
|
13
|
+
layout: 'fullscreen',
|
|
14
|
+
docs: {
|
|
15
|
+
description: {
|
|
16
|
+
component:
|
|
17
|
+
'Compact chat-inline card for the `marketing_campaign` doc type. Shows the campaign name, start date, goal count and a one-line description. The full admin card (with delete/manage buttons) lives in the hub; this is the chat-only projection.',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
decorators: [(Story) => <ChatColumnDecorator><Story /></ChatColumnDecorator>],
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default meta
|
|
25
|
+
type Story = StoryObj<typeof meta>
|
|
26
|
+
|
|
27
|
+
export const Default: Story = {
|
|
28
|
+
args: {
|
|
29
|
+
campaign: campaignItem,
|
|
30
|
+
anchorProps: makeAnchorProps('/admin/campaigns/' + campaignItem.id),
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const NoDescription: Story = {
|
|
35
|
+
args: {
|
|
36
|
+
campaign: {
|
|
37
|
+
...campaignItem,
|
|
38
|
+
description: null,
|
|
39
|
+
},
|
|
40
|
+
anchorProps: makeAnchorProps('/admin/campaigns/' + campaignItem.id),
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const NoGoals: Story = {
|
|
45
|
+
args: {
|
|
46
|
+
campaign: {
|
|
47
|
+
...campaignItem,
|
|
48
|
+
goals: [],
|
|
49
|
+
},
|
|
50
|
+
anchorProps: makeAnchorProps('/admin/campaigns/' + campaignItem.id),
|
|
51
|
+
},
|
|
52
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/nextjs-vite'
|
|
2
|
+
import { CaseStudyCard } from '../components/chat/entity-cards'
|
|
3
|
+
import { ChatColumnDecorator } from './__fixtures__/chat-card-decorator'
|
|
4
|
+
import { caseStudy } from './__fixtures__/chat-cards'
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof CaseStudyCard> = {
|
|
7
|
+
title: 'Chat/EntityCards/CaseStudyCard',
|
|
8
|
+
component: CaseStudyCard,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: 'fullscreen',
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component:
|
|
14
|
+
'Card for the `case_study` doc type. `sm` size renders the chat-inline compact card; `default` is the catalog grid card. User + MSP badge overlay is shown in both sizes.',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
decorators: [(Story) => <ChatColumnDecorator><Story /></ChatColumnDecorator>],
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default meta
|
|
22
|
+
type Story = StoryObj<typeof meta>
|
|
23
|
+
|
|
24
|
+
export const ChatInlineSm: Story = {
|
|
25
|
+
args: {
|
|
26
|
+
study: caseStudy,
|
|
27
|
+
href: '/case-studies/' + caseStudy.slug,
|
|
28
|
+
size: 'sm',
|
|
29
|
+
target: '_blank',
|
|
30
|
+
rel: 'noopener noreferrer',
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const Default: Story = {
|
|
35
|
+
args: {
|
|
36
|
+
study: caseStudy,
|
|
37
|
+
href: '/case-studies/' + caseStudy.slug,
|
|
38
|
+
size: 'default',
|
|
39
|
+
target: '_blank',
|
|
40
|
+
rel: 'noopener noreferrer',
|
|
41
|
+
},
|
|
42
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/nextjs-vite'
|
|
2
|
+
import React, { useState } from 'react'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
ChatContainer,
|
|
6
|
+
ChatContent,
|
|
7
|
+
ChatFooter,
|
|
8
|
+
ChatHeader,
|
|
9
|
+
} from '../components/chat/chat-container'
|
|
10
|
+
import { ChatInput } from '../components/chat/chat-input'
|
|
11
|
+
import { ChatMessageList } from '../components/chat/chat-message-list'
|
|
12
|
+
import type { Message } from '../components/chat/types/message.types'
|
|
13
|
+
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Mock messages — sample client-facing Fae conversation
|
|
16
|
+
// =============================================================================
|
|
17
|
+
|
|
18
|
+
const FAE_MESSAGES: Message[] = [
|
|
19
|
+
{
|
|
20
|
+
id: '1',
|
|
21
|
+
role: 'assistant',
|
|
22
|
+
name: 'Fae',
|
|
23
|
+
assistantType: 'fae',
|
|
24
|
+
content: "Hi! I'm Fae, your personal assistant. How can I help you today?",
|
|
25
|
+
timestamp: new Date('2026-05-28T10:00:00Z'),
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: '2',
|
|
29
|
+
role: 'user',
|
|
30
|
+
name: 'You',
|
|
31
|
+
content: "My printer stopped working this morning — can you open a ticket?",
|
|
32
|
+
timestamp: new Date('2026-05-28T10:00:30Z'),
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: '3',
|
|
36
|
+
role: 'assistant',
|
|
37
|
+
name: 'Fae',
|
|
38
|
+
assistantType: 'fae',
|
|
39
|
+
content:
|
|
40
|
+
"Of course — I'll get that opened right away. Could you tell me which printer it is (model or location) and what happens when you try to print?",
|
|
41
|
+
timestamp: new Date('2026-05-28T10:00:45Z'),
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: '4',
|
|
45
|
+
role: 'user',
|
|
46
|
+
name: 'You',
|
|
47
|
+
content: "It's the HP LaserJet by the front desk. It blinks orange and nothing prints.",
|
|
48
|
+
timestamp: new Date('2026-05-28T10:01:10Z'),
|
|
49
|
+
},
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// StoryShell — wires up controlled `ChatInput` and `ChatMessageList` so the
|
|
54
|
+
// story is interactive: typing & sending pushes a new user bubble into the
|
|
55
|
+
// message list. No transport — the assistant doesn't reply.
|
|
56
|
+
// =============================================================================
|
|
57
|
+
|
|
58
|
+
function FaeChatShell({
|
|
59
|
+
withTicketInfo = false,
|
|
60
|
+
bare = false,
|
|
61
|
+
fullWidth = false,
|
|
62
|
+
}: {
|
|
63
|
+
withTicketInfo?: boolean
|
|
64
|
+
bare?: boolean
|
|
65
|
+
fullWidth?: boolean
|
|
66
|
+
}) {
|
|
67
|
+
const [messages, setMessages] = useState<Message[]>(FAE_MESSAGES)
|
|
68
|
+
|
|
69
|
+
const handleSend = (text: string) => {
|
|
70
|
+
if (!text.trim()) return
|
|
71
|
+
setMessages((prev) => [
|
|
72
|
+
...prev,
|
|
73
|
+
{
|
|
74
|
+
id: `local-${prev.length + 1}`,
|
|
75
|
+
role: 'user',
|
|
76
|
+
name: 'You',
|
|
77
|
+
content: text,
|
|
78
|
+
timestamp: new Date(),
|
|
79
|
+
},
|
|
80
|
+
])
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const handleNewChat = () => setMessages([FAE_MESSAGES[0]])
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<ChatContainer>
|
|
87
|
+
<ChatHeader
|
|
88
|
+
userName='Grace "Fae" Meadows'
|
|
89
|
+
userTitle="Your Personal Assistant"
|
|
90
|
+
connectionStatus="connected"
|
|
91
|
+
serverUrl="mcp.flamingo.run"
|
|
92
|
+
showNewChat
|
|
93
|
+
onNewChat={handleNewChat}
|
|
94
|
+
onClose={() => {
|
|
95
|
+
// eslint-disable-next-line no-console
|
|
96
|
+
console.log('[story] close clicked')
|
|
97
|
+
}}
|
|
98
|
+
fullWidth={fullWidth}
|
|
99
|
+
bare={bare}
|
|
100
|
+
ticketInfo={
|
|
101
|
+
withTicketInfo
|
|
102
|
+
? {
|
|
103
|
+
title: 'Printer offline — Ticket #4821',
|
|
104
|
+
meta: 'Assigned to: J. Smith',
|
|
105
|
+
status: 'in-progress',
|
|
106
|
+
}
|
|
107
|
+
: undefined
|
|
108
|
+
}
|
|
109
|
+
/>
|
|
110
|
+
<ChatContent>
|
|
111
|
+
<ChatMessageList
|
|
112
|
+
messages={messages}
|
|
113
|
+
assistantType="fae"
|
|
114
|
+
fullWidth={fullWidth}
|
|
115
|
+
className="flex-1"
|
|
116
|
+
/>
|
|
117
|
+
</ChatContent>
|
|
118
|
+
<ChatFooter fullWidth={fullWidth}>
|
|
119
|
+
<ChatInput
|
|
120
|
+
onSend={handleSend}
|
|
121
|
+
placeholder="Message Fae..."
|
|
122
|
+
fullWidth={fullWidth}
|
|
123
|
+
/>
|
|
124
|
+
</ChatFooter>
|
|
125
|
+
</ChatContainer>
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// =============================================================================
|
|
130
|
+
// Meta
|
|
131
|
+
// =============================================================================
|
|
132
|
+
|
|
133
|
+
const meta = {
|
|
134
|
+
title: 'Chat/ChatContainer',
|
|
135
|
+
component: ChatContainer,
|
|
136
|
+
parameters: {
|
|
137
|
+
layout: 'fullscreen',
|
|
138
|
+
},
|
|
139
|
+
} satisfies Meta<typeof ChatContainer>
|
|
140
|
+
|
|
141
|
+
export default meta
|
|
142
|
+
type Story = StoryObj<typeof meta>
|
|
143
|
+
|
|
144
|
+
// =============================================================================
|
|
145
|
+
// Fae — client-facing chat shell
|
|
146
|
+
// =============================================================================
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The Fae client-app chat: the default `ChatContainer` + `ChatHeader` shell
|
|
150
|
+
* used by the OpenFrame customer-facing application. Header carries
|
|
151
|
+
* `Grace "Fae" Meadows` as the assistant persona (pink avatar via the
|
|
152
|
+
* default `bg-ods-flamingo-pink`); message list renders with
|
|
153
|
+
* `assistantType="fae"` so AI bubbles use the matching Fae styling.
|
|
154
|
+
*/
|
|
155
|
+
export const Fae: Story = {
|
|
156
|
+
render: () => <FaeChatShell />,
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Same Fae shell with `ticketInfo` populated on the header — adds a
|
|
161
|
+
* secondary row beneath the avatar/name showing the active ticket title,
|
|
162
|
+
* meta and status tag. This is the in-conversation state once a support
|
|
163
|
+
* ticket has been opened from the chat.
|
|
164
|
+
*/
|
|
165
|
+
export const FaeWithTicket: Story = {
|
|
166
|
+
render: () => <FaeChatShell withTicketInfo />,
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Full-width variant — drops the centered 600px content column on header,
|
|
171
|
+
* message list and footer. Use when embedding the Fae chat in a narrow
|
|
172
|
+
* side panel (e.g. mobile, slide-in drawer) where the centered column
|
|
173
|
+
* would float in the middle of the panel.
|
|
174
|
+
*/
|
|
175
|
+
export const FaeFullWidth: Story = {
|
|
176
|
+
render: () => <FaeChatShell fullWidth />,
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Bare header — drops the card chrome (background, border, shadow, ring)
|
|
181
|
+
* so the header blends flush with its container. Pair with a host-
|
|
182
|
+
* supplied floating card / drawer that already provides the chrome.
|
|
183
|
+
*/
|
|
184
|
+
export const FaeBareHeader: Story = {
|
|
185
|
+
render: () => <FaeChatShell bare fullWidth />,
|
|
186
|
+
}
|